What's Changed
- chore: sync geode Homebrew formula to v1.19.0 by @github-actions[bot] in #4465
- chore: sync amy Homebrew formula to v1.19.0 by @github-actions[bot] in #4466
- chore: sync winget manifests to v1.19.0 by @github-actions[bot] in #4467
- chore: sync amethyst-nostr cask to v1.19.0 by @github-actions[bot] in #4468
- feat(release): generate changelog contributors; fix translator credits by @vitorpamplona in #4464
- New Crowdin Translations by @github-actions[bot] in #4463
- fix(uploads): warn when the cancelled image compression cannot delete its temp copy by @davotoula in #4471
- feat(release): publish the Flatpak to Orchard from Docker, macOS included by @vitorpamplona in #4472
- New Crowdin Translations by @github-actions[bot] in #4469
- feat(flatpak): add a Linux desktop screenshot to the metainfo by @vitorpamplona in #4473
- feat(flatpak): a Flathub manifest that builds Amethyst from source by @vitorpamplona in #4474
- New Crowdin Translations by @github-actions[bot] in #4475
- chore(l10n): fill missing cs, de, sv, pt-BR commonsUI translations by @davotoula in #4470
- New Crowdin Translations by @github-actions[bot] in #4476
- New Crowdin Translations by @github-actions[bot] in #4477
- Improve UI Preferences search keywords and deck toolbar rendering by @vitorpamplona in #4478
- New Crowdin Translations by @github-actions[bot] in #4479
- docs(release): add Flathub to RELEASE_OPS.md by @vitorpamplona in #4480
- fix: deck hashtag columns and Marmot reset on the account scope by @vitorpamplona in #4481
- fix(desktop): sharp avatars and images; draw at fractional scale on X11 by @vitorpamplona in #4482
- feat: Show Less for expanded notes, and a back-to-top button on feeds by @vitorpamplona in #4484
- New Crowdin Translations by @github-actions[bot] in #4483
- test: opt GiftWrapPrefetchTest into ExperimentalCoroutinesApi by @vitorpamplona in #4485
- feat(browser): clear cookies and data for all sites by @vitorpamplona in #4486
- fix(desktop): let a payment no app can open be paid from another wallet by @vitorpamplona in #4487
- fix: use a Bundle-storable key for scheduled-post day headers by @vitorpamplona in #4489
- fix: stop malformed hosts from crashing the app on OkHttp's Dispatcher thread by @vitorpamplona in #4492
- fix(tor): reach NIP-46 signer relays like the user's own relays by @vitorpamplona in #4493
- fix(desktop): pause feed videos on leaving their screen unless chosen; playback fixes by @vitorpamplona in #4491
- fix(notifications): align the folded bell with the header and animate the fold by @vitorpamplona in #4494
- fix(desktop): play audio-only media on macOS and Windows by @vitorpamplona in #4495
- New Crowdin Translations by @github-actions[bot] in #4490
- feat(sno): turn 3D objects in place in the feed by @vitorpamplona in #4499
- feat: emoji picker with Unicode palette, favorites and custom emoji packs by @vitorpamplona in #4497
- fix(sno): stop refusing objects over 512 vertices or 1,024 faces by @vitorpamplona in #4498
- feat: three-tier rendering for decentralized list items, plus desktop maps by @vitorpamplona in #4501
- test: count a mid-handshake drop as the client closing in the dial-race test by @vitorpamplona in #4503
- feat: emoji panel close button, docked in the composer's view by @vitorpamplona in #4502
- feat(desktop): self-update from NIP-82 releases;
amy releases publishfor desktop, Zapstore and Orchard by @vitorpamplona in #4500 - New Crowdin Translations by @github-actions[bot] in #4504
- feat(quartz): Open Markets collections, shipping options and product reviews by @vitorpamplona in #4506
- fix(update): follow the Caskroom link with toRealPath so the cask check works on Windows by @vitorpamplona in #4507
- fix(commonsUI): resolve compiler warnings by @vitorpamplona in #4508
- feat(desktop): spell checking in composers and prose fields by @vitorpamplona in #4509
- ci: move release macOS legs off the retiring macos-14 runner by @vitorpamplona in #4511
- feat(quartz,cli): bulk ingest paths: EventIngest, publishStream, raw-JSON sends, resuming exports by @vitorpamplona in #4510
- New Crowdin Translations by @github-actions[bot] in #4512
- fix: steady the lit-frame raster benchmark and clear three compiler warnings by @vitorpamplona in #4513
- Audit fixes: relay client, store, parsing, cache, feeds and UI (+ OpenAgents kinds) by @vitorpamplona in #4514
- fix(quartz): keep relays under in-flight EVENTs, redial when the backoff ends by @vitorpamplona in #4515
- feat: Open Markets cards for collections, shipping options and product reviews by @vitorpamplona in #4516
- Add user hover card on profile names and avatars by @vitorpamplona in #4518
- Refactor EditNicknameDialog to use PromptDialog and handle saves internally by @vitorpamplona in #4520
- New Crowdin Translations by @github-actions[bot] in #4519
- fix: paged fetches lose no event when the relay hangs up mid-page by @vitorpamplona in #4517
- Relay client: replay subscriptions first, keep messages sent before a close, one OkHttp adapter for the apps; amy fetch reports partial walks by @vitorpamplona in #4521
- Relay client fixes from the API review: availableRelaysFlow, tagsAll resends, EventCache sends, walk exceptions, O(n²) flows by @vitorpamplona in #4522
- fix(concord): declutter the community channel list by @vitorpamplona in #4523
- fix(feeds): load a single relay picked in a feed's top bar by @vitorpamplona in #4524
- fix(git): drop the Git Repositories inline filter for the top bar's search by @vitorpamplona in #4526
- Review what amethyst/ and desktopApp/ can share, and fix eight Desktop gaps it found by @vitorpamplona in #4525
- Delete the dead legacy Desktop code and move misplaced tests by @vitorpamplona in #4527
- Share as image: render the note's media, bring it to desktop, and make Share a menu by @vitorpamplona in #4528
- Shared scheduled-post drain and image loader, Skia decoders to skikoMain, and audit fixes by @vitorpamplona in #4529
- New Crowdin Translations by @github-actions[bot] in #4531
- New Crowdin Translations by @github-actions[bot] in #4533
- New Crowdin Translations by @github-actions[bot] in #4535
- New Crowdin Translations by @github-actions[bot] in #4537
- New Crowdin Translations by @github-actions[bot] in #4539
- fix: coroutine cancellation, UI-thread blocking, and security hardening from an audit by @vitorpamplona in #4530
- feat(git): attach pictures and videos to a new git issue by @vitorpamplona in #4540
- fix(commonsUI): use multiplatform use() in skiko decoders so iOS compiles by @davotoula in #4538
- feat: create NIP-34 git repositories from the app by @vitorpamplona in #4541
- feat(emoji-packs): bulk import (images, .zip) in the app and
amy emojiin the CLI by @vitorpamplona in #4536 - feat: redesign the reaction choices screen around the shared emoji picker by @vitorpamplona in #4532
- New Crowdin Translations by @github-actions[bot] in #4542
- fix(commons): replace JVM-only APIs in commonMain so the metadata compile passes by @davotoula in #4544
- feat: draw by hand in the composer and post the drawing as a replay GIF by @vitorpamplona in #4543
- New Crowdin Translations by @github-actions[bot] in #4545
- feat(commonsUI): feed and thread cards for ~250 kinds that fell back to raw text by @vitorpamplona in #4534
- test(commons): pin notes in CachePrunerAddressablesTest so a GC can't drop them by @davotoula in #4546
- chore: run the lint job's KMP compiles before push, and install hooks from worktrees by @davotoula in #4547
- fix(cli): log when an emoji-import temp file can't be deleted by @davotoula in #4548
- fix(desktop): stop the reactions grid crashing on scroll by @vitorpamplona in #4549
- New Crowdin Translations by @github-actions[bot] in #4550
- New Crowdin Translations by @github-actions[bot] in #4551
- fix: keep URLs with _ * ~ whole in notes and markdown by @vitorpamplona in #4552
- perf(video): size the warm player pool by RAM and prefetch upcoming video heads by @vitorpamplona in #4554
- fix: render NIP-51 release artifact sets (kind 30063); guard kind card coverage by @vitorpamplona in #4555
- New Crowdin Translations by @github-actions[bot] in #4553
- fix(desktop): Shorts arrive shaped, quiet and pictured; cache videos and GIFs on disk by @vitorpamplona in #4557
- New Crowdin Translations by @github-actions[bot] in #4556
- fix(desktop): give each on-screen video card its own player by @vitorpamplona in #4559
- New Crowdin Translations by @github-actions[bot] in #4558
- fix(desktop): re-pause a kept video that finishes loading off screen by @vitorpamplona in #4560
- feat(pow): mine with all cores but two on desktop; estimate from the live rate by @vitorpamplona in #4561
- feat(pow): midstate SHA-256 mining with per-event hasher choice and shape-aware estimates by @vitorpamplona in #4563
- fix(desktop): give each running copy its own Tor, caches and job restore by @vitorpamplona in #4562
- fix(desktop): replay ended videos and resume every video like Android by @vitorpamplona in #4564
- fix(desktop): stop GStreamer's segfault trap from exiting the app on Linux (#4566) by @davotoula in #4567
- feat(pow): show the live hash rate in the mining banner by @vitorpamplona in #4570
- fix: clear Windows build warnings and the OutboxDispatcher timing flake by @vitorpamplona in #4571
- New Crowdin Translations by @github-actions[bot] in #4569
- Cordn: fix coordinator-key crash, open cordn.net links, tidy the groups screen by @vitorpamplona in #4573
- fix(concord): one community list entry per community (hub LazyColumn duplicate-key crash) by @vitorpamplona in #4574
- feat: NIP-46 — auth_url, switch_relays, logout, NIP-05 sign-in, and fixes by @vitorpamplona in #4568
- New Crowdin Translations by @github-actions[bot] in #4576
- refactor: consume QUIC from the quic-kmp library instead of the in-tree module by @vitorpamplona in #4572
- New Crowdin Translations by @github-actions[bot] in #4579
- Relay lists: lazy full-list screen, redesigned rows, one-tap add, interned relay URLs by @vitorpamplona in #4578
- fix(nests): keep a restarted publisher's audio after its broadcast ends by @vitorpamplona in #4580
- perf(quartz): intern event strings at cache entry, parse zap requests lazily by @vitorpamplona in #4583
- fix(desktop): play GIF banners as muted, control-less images on the profile and hover card by @vitorpamplona in #4582
- fix: render a rated D-list item (book, place) in entity-rating cards by @vitorpamplona in #4584
- New Crowdin Translations by @github-actions[bot] in #4581
- refactor(quartz): replace native crypto libraries with in-repo constant-time code by @vitorpamplona in #4586
- fix(quartz): free CommonCrypto contexts through NativePtr on Apple by @vitorpamplona in #4588
- fix(quartz): an OK, true or false, ends an event's delivery to that relay by @vitorpamplona in #4589
- feat: fallback card for event kinds Amethyst doesn't support yet by @vitorpamplona in #4592
- feat(quartz): NostrClient.keepConnected; an auth-required nobody can answer ends delivery; publishStream skips the solo first event on an open socket by @vitorpamplona in #4591
- refactor!: take crypto primitives from crypto-kmp by @vitorpamplona in #4590
- feat(devtools): in-app Nostr developer tools by @vitorpamplona in #4593
- New Crowdin Translations by @github-actions[bot] in #4587
- refactor(quartz): consume the MLS engine from mls-kmp instead of quartz/mls by @vitorpamplona in #4585
- New Crowdin Translations by @github-actions[bot] in #4594
- fix(notifications): stop re-arming the foreground-service start deadline by @vitorpamplona in #4597
- fix(wot): make awaitReady/awaitIdle wait for the sync they promise (flaky TrustNetworkSchedulingTest) by @vitorpamplona in #4596
- build: update Gradle, Kotlin and dependencies to latest by @vitorpamplona in #4598
- feat(desktop): macOS menu bar mirrors the drawer, with settings submenus by @vitorpamplona in #4602
- Kind Lookup: ask only connected + search relays, one action, JSON cards by @vitorpamplona in #4600
- chore(strings): plurals and cs/de/sv/pt-BR translations for devtools and unknown-kind strings by @davotoula in #4604
- refactor!: take quartz from vitorpamplona/quartz by @vitorpamplona in #4601
- refactor: move app modules, cli and relayBench JSON from Jackson to kotlinx by @vitorpamplona in #4599
- fix: keep pinned DM rooms on top when their newest entry is a draft by @vitorpamplona in #4608
- feat: per-account accent color by @vitorpamplona in #4609
- fix: keep glyph icons at their own weight under Android's Bold text by @vitorpamplona in #4611
- docs: drop in-repo quartz/quic module references after the library split by @davotoula in #4610
- New Crowdin Translations by @github-actions[bot] in #4603
- New Crowdin Translations by @github-actions[bot] in #4612
- feat: sync more account settings through NIP-78 by @vitorpamplona in #4613
- feat: run Quartz on Kite, its hand-written JSON engine by @vitorpamplona in #4595
- ci: install a pinned JetBrains Runtime instead of setup-java's lookup by @vitorpamplona in #4614
- New Crowdin Translations by @github-actions[bot] in #4615
- fix: show anamorphic videos at their display shape everywhere they play, and upload them that way by @vitorpamplona in #4617
- build: bump Quartz to 2.2.0, with temporary Kite diagnostics by @vitorpamplona in #4619
- New Crowdin Translations by @github-actions[bot] in #4618
- fix: never throw on long d-tags under quartz 2.2.0; faster nostr: URIs by @vitorpamplona in #4616
- chore(deps): bump okhttp, firebase BOM, datastore, webkit, snakeyaml, navigation3 by @vitorpamplona in #4622
- New Crowdin Translations by @github-actions[bot] in #4621
- refactor: take Marmot and cordn from marmot-kmp and cordn-kmp by @vitorpamplona in #4624
- build: faster pre-push and CI, no OOM kills on 16 GB; fix amy login timeout by @vitorpamplona in #4625
- perf(desktop): start the watched video first on media feeds by @vitorpamplona in #4626
- fix(cashu): give freshly logged-in accounts the durable NUT-13 counter store by @vitorpamplona in #4627
- refactor(devtools): fold Kind Lookup into the Event Kinds entry by @vitorpamplona in #4628
- fix(desktop): show a poster on Linux video cards whose paused engine draws nothing by @vitorpamplona in #4631
- New Crowdin Translations by @github-actions[bot] in #4623
- Marmot groups on MDK v0.14: polls, custom emoji, moderation, rooms; waiting-for-Tor hint by @vitorpamplona in #4630
- fix(desktop): ack a forwarded deep link before bringing the window forward by @vitorpamplona in #4632
- chore(release): v1.20.0 by @vitorpamplona in #4633
Full Changelog: v1.19.0...v1.20.0