What's Changed
- New Crowdin Translations by @github-actions[bot] in #4323
- chore: sync amethyst-nostr cask to v1.17.0 by @github-actions[bot] in #4327
- chore: sync winget manifests to v1.17.0 by @github-actions[bot] in #4326
- chore: sync geode Homebrew formula to v1.17.0 by @github-actions[bot] in #4325
- Fix MyFitnessScreen padding under disappearing scaffold bars by @vitorpamplona in #4328
- refactor: share profile, settings, Messages, Notifications, Calendars and Blossom screens by @vitorpamplona in #4329
- chore: sync amy Homebrew formula to v1.17.0 by @github-actions[bot] in #4324
- New Crowdin Translations by @github-actions[bot] in #4330
- docs(release): treat Homebrew as autobumped; cask script verifies instead of submitting by @vitorpamplona in #4332
- Consolidate platform-specific crypto to common implementation by @vitorpamplona in #4333
- New Crowdin Translations by @github-actions[bot] in #4334
- quartz: complete hint providers and NIP-50 indexing across event kinds; strict relay-hint parsing; named tag accessors by @vitorpamplona in #4335
- feat(dm): page NIP-17 history one round at a time; fix history for multi-account and DM relays by @vitorpamplona in #4338
- New Crowdin Translations by @github-actions[bot] in #4337
- refactor: share ReactionsRow and the zap dialogs and galleries by @vitorpamplona in #4339
- New Crowdin Translations by @github-actions[bot] in #4341
- feat(cli): amy social loop on the app's own code — notes show/thread/reply/quote/react/repost, delete, notifications by @vitorpamplona in #4342
- feat(fitness): goal-first My Fitness dashboard with history and charts by @vitorpamplona in #4344
- fix(uploads): GIF→MP4 in comment composers and keyboard-content permission loss by @davotoula in #4336
- New Crowdin Translations by @github-actions[bot] in #4343
- Simplify AI contribution guidelines; require human review before PR by @vitorpamplona in #4346
- Implement iOS LargeSoftCache with SortedConcurrentMap skip list by @vitorpamplona in #4347
- Move blocking I/O and CPU-bound work off Default dispatcher by @vitorpamplona in #4349
- refactor: share the DM chat room, geocaches, napplets, workouts, Cordn migrate and Buzz lists by @vitorpamplona in #4348
- fix: move lock- and cache-touching work off Dispatchers.Default by @vitorpamplona in #4350
- fix(signer): first-class web-app signing prompts (Brainstorm pass) by @vitorpamplona in #4352
- Remove per-author rate limiter from NIP-46 signer service by @vitorpamplona in #4351
- fix(embed): text fields behave as in the browser (Enter, clear, chips, paste, Next) by @vitorpamplona in #4354
- Fix reproducible builds: disable build-id to remove NDK path dependency by @vitorpamplona in #4357
- Fix image zoom animation by measuring in untransformed layer space by @vitorpamplona in #4360
- feat: render NIP-82 software releases properly; amy fetch reports relay CLOSED reasons by @vitorpamplona in #4355
- New Crowdin Translations by @github-actions[bot] in #4358
- fix(qr): scanner, QR display and zxing-cpp build fixes from audit by @vitorpamplona in #4359
- New Crowdin Translations by @github-actions[bot] in #4362
- feat: Navigation 3, with the navigation shell shared in commonsUI by @vitorpamplona in #4356
- New Crowdin Translations by @github-actions[bot] in #4363
- Fix ChatRowLabel touch target to prevent stealing taps from row by @vitorpamplona in #4364
- Show pinned DM rooms with no loaded messages as placeholders by @vitorpamplona in #4366
- New Crowdin Translations by @github-actions[bot] in #4365
- Refactor subtitle handling and modernize media3 APIs by @vitorpamplona in #4367
- feat: Messages toggles turn NIP-04/NIP-17 loading off, not just hide it by @vitorpamplona in #4368
- feat: type the event kinds found by the 2026-10-08 relay census, with cards for the render-worthy ones by @vitorpamplona in #4370
- feat(desktop): ship the shared-UI app on desktop, with Android-style video and a hardening audit by @vitorpamplona in #4372
- fix: give every relay connection a purpose in the always-on notification by @vitorpamplona in #4373
- test(quartz): check the NIP-69 bond by value, not by its spelling by @vitorpamplona in #4374
- New Crowdin Translations by @github-actions[bot] in #4369
- One UI: move Android-free code out of the app; share notification content and markdown by @vitorpamplona in #4376
- build: incremental compilation for the KMP modules by @vitorpamplona in #4377
- fix(quartz,cli): relay reads that hold up on production relays: paging, multi-filter walks, negentropy, COUNT by @vitorpamplona in #4371
- Implement Web of Trust (NIP-85) network index and trust provider integration by @vitorpamplona in #4375
- New Crowdin Translations by @github-actions[bot] in #4379
- One UI: share the PDF card and reader; render PDFs on desktop with PDFBox by @vitorpamplona in #4380
- New Crowdin Translations by @github-actions[bot] in #4381
- fix(desktop): ProGuard rules for PDFBox and commons-logging by @vitorpamplona in #4382
- Reorganize ViewModels: move feed-related VMs from ui.screen to feature packages by @vitorpamplona in #4383
- New Crowdin Translations by @github-actions[bot] in #4384
- Desktop: no crash on missing screens; title bar, text sizes and hover that fit the desktop by @vitorpamplona in #4385
- feat(desktop): a click on a background window only brings it forward by @vitorpamplona in #4386
- feat: refined error dialog and a desktop crash window that can send the report by @vitorpamplona in #4388
- Add list/detail screen support for all chat types by @vitorpamplona in #4389
- feat(broadcast): dismiss the broadcast banner once the outbox relays accept by @davotoula in #4387
- Add Brainstorm relay to search and indexer defaults by @vitorpamplona in #4392
- New Crowdin Translations by @github-actions[bot] in #4391
- Add iOS and web app plans: One-UI shims at feature parity by @vitorpamplona in #4393
- feat: resizable panes, window memory and desktop polish for wide windows by @vitorpamplona in #4394
- Flatpak: rename app ID to com.vitorpamplona.amethyst, update runtime to 26.08 by @vitorpamplona in #4395
- feat(desktop): zoom transition for the image viewer, no hover blinking, tall images stay in their slot by @vitorpamplona in #4396
- refactor: headless BaseAccountViewModel and typed user notices by @vitorpamplona in #4390
- Redesign note actions for large windows: dropdown menu + wrapped composer tools by @vitorpamplona in #4398
- Improve desktop video player layout and controls by @vitorpamplona in #4400
- feat: retire the legacy desktop app — privacy lock, custom feeds, deck, compression preview, emoji picker, relay latency by @vitorpamplona in #4399
- feat(desktop): videos zoom from their card to full screen, plus viewer and summary fixes by @vitorpamplona in #4401
- New Crowdin Translations by @github-actions[bot] in #4397
- Adjust light theme chat bubble opacity for better contrast by @vitorpamplona in #4402
- Reorder caption before reactions in video/file metadata cards by @vitorpamplona in #4403
- feat(desktop): preload the next videos in feeds, and no blink to black when one starts by @vitorpamplona in #4404
- fix: chat list/detail screens fill the pane; refresh button on the notification panel by @vitorpamplona in #4405
- fix(desktop): redesign the now-playing bar by @vitorpamplona in #4407
- fix: mute the accent tint on your own chat bubbles by @vitorpamplona in #4406
- fix(desktop): undeclared images keep their space while loading; Messages title by @vitorpamplona in #4408
- New Crowdin Translations by @github-actions[bot] in #4411
- New Crowdin Translations by @github-actions[bot] in #4412
- fix(nav): a small swipe on a tab pager no longer opens the drawer by @davotoula in #4410
- New Crowdin Translations by @github-actions[bot] in #4413
- chore(l10n): translate missing commonsUI strings into cs, de, sv and pt-BR by @davotoula in #4414
- feat: imeta tags for images pasted as links in the post composers by @vitorpamplona in #4409
- New Crowdin Translations by @github-actions[bot] in #4415
- New Crowdin Translations by @github-actions[bot] in #4416
- chore(agents): one set of rules, skills and checks for Claude Code and Codex; 33 → 14 skills; Quartz agent skill by @vitorpamplona in #4418
- Reorder Compose modifiers in MessageSetCompose for correct layout by @vitorpamplona in #4419
- New Crowdin Translations by @github-actions[bot] in #4420
- Refactor audio/music playback UI into shared platform composables by @vitorpamplona in #4417
- Add full-screen zoom comparison for media compression preview by @vitorpamplona in #4421
Full Changelog: v1.17.0...v1.18.0