What's Changed
- Keep balanced closing delimiters in URLs by @vitorpamplona in #3299
- Seed translator npub placeholders by @github-actions[bot] in #3300
- Keep NIP-82 release versions live via LocalCache observer by @vitorpamplona in #3301
- New Crowdin Translations by @github-actions[bot] in #3303
- Seed translator npub placeholders by @github-actions[bot] in #3302
- Consolidate Crowdin sync and translator seed into single PR by @vitorpamplona in #3305
- NIP-22: Reply to Amethyst threads as kind 1111 Comments by @vitorpamplona in #3306
- feat(notifications): render NIP-30 custom emoji reactions as avatar badge by @vitorpamplona in #3307
- Auto-dismiss notifications when events are read in-app by @vitorpamplona in #3310
- i18n: localize Marmot group chat strings and remove unused resources by @vitorpamplona in #3308
- New Crowdin Translations by @github-actions[bot] in #3311
- Remove unused NIP-31 alt tag surrogate code and clean up imports by @vitorpamplona in #3309
- fix: surface reply, not root, for multi-e-tag reactions in Android tray by @vitorpamplona in #3318
- feat: add Notification setting to show or hide Messages on the Notification tab by @vitorpamplona in #3320
- New Crowdin Translations by @github-actions[bot] in #3319
- feat: add a search box to the App Recommendations screen by @vitorpamplona in #3322
- Extract share options to reusable bottom sheet by @vitorpamplona in #3312
- Notify on public chat replies without p-tags by @vitorpamplona in #3314
- Add search and follow-list filtering to app recommendations by @vitorpamplona in #3313
- New Crowdin Translations by @github-actions[bot] in #3321
- New Crowdin Translations by @github-actions[bot] in #3324
- Add POWR / NIP-101e strength workout interop (read-only) by @vitorpamplona in #3323
- feat(feeds): prefetch media + pre-parse text ahead of the viewport by @vitorpamplona in #3325
- Refactor command dispatch: extract Router helper, remove Commands.kt by @vitorpamplona in #3326
- Fix disappearing bar settle logic to prevent blank bands on partial reveals by @vitorpamplona in #3327
- Add comprehensive CLI command suite and Cashu wallet support by @vitorpamplona in #3333
- MoqLiteSession: send Ended announce on publisher close race by @vitorpamplona in #3334
- Add more options button to software app note rendering by @vitorpamplona in #3336
- Show blocked/muted user indicator on profile tabs by @vitorpamplona in #3337
- Implement NIP-5A/5D napplet & nsite sandbox host with capability broker by @vitorpamplona in #3339
- fix(build): resolve :nappletHost benchmark variant via matchingFallbacks by @vitorpamplona in #3340
- New Crowdin Translations by @github-actions[bot] in #3335
- Load author relay lists for missing addressable notes by @vitorpamplona in #3342
- New Crowdin Translations by @github-actions[bot] in #3341
- New Crowdin Translations by @github-actions[bot] in #3343
- fix: render markdown when a heading/list follows a blank line by @davotoula in #3344
- New Crowdin Translations by @github-actions[bot] in #3345
- NIP-46: Add optional client metadata to connect requests by @greenart7c3 in #3346
- Add full-screen direct-WebView browser and embedded napplet/nSite tabs by @vitorpamplona in #3348
- New Crowdin Translations by @github-actions[bot] in #3347
- Fix bottom bar fallback to use default entries instead of empty list by @vitorpamplona in #3349
- Browser: add visit history, omnibox suggestions, and favicon capture by @vitorpamplona in #3350
- Implement tiered memory trimming with debug UI and feed size limits by @vitorpamplona in #3352
- Add JavaScript console logging to embedded and full-screen browsers by @vitorpamplona in #3353
- New Crowdin Translations by @github-actions[bot] in #3351
- New Crowdin Translations by @github-actions[bot] in #3355
- Fix/note grid layout issues by @davotoula in #3356
- Extract MintPickerItem composable in CashuWalletScreen by @vitorpamplona in #3354
- Add favorite toggle to web browser and embedded napplets by @vitorpamplona in #3357
- Use hollow gem icon for relay service notification by @vitorpamplona in #3358
- Add URL-scoped comment feeds by @LubuSeb in #3315
- Clean up imports: organize and remove unused declarations by @vitorpamplona in #3360
- Remove API 30+ requirement from Browser feature by @vitorpamplona in #3361
- Add theme preference support to napplet/browser WebViews by @vitorpamplona in #3359
- Reorganize navigation drawer and settings menu items by @vitorpamplona in #3363
- Fix bottom sheet grabber positioning and add console toggle state by @vitorpamplona in #3364
- New Crowdin Translations by @github-actions[bot] in #3362
- Rename web/napplet screens and controllers; introduce HostProfile by @vitorpamplona in #3366
- Extract AddRecommendationSection and WalletTypeCardContent composables by @vitorpamplona in #3365
- Add Onion-Location support for transparent Tor routing by @vitorpamplona in #3368
- Shift Cashu icon left and tint orange in nutzap displays by @vitorpamplona in #3369
- New Crowdin Translations by @github-actions[bot] in #3367
- Render single zaps/nutzaps as large cards in MultiSetCompose by @vitorpamplona in #3370
- Scale outline gem icon to match filled gem size by @vitorpamplona in #3372
- Render zap receipts as full notes in MultiSetCompose by @vitorpamplona in #3373
- Add and update translations across 50+ locales by @vitorpamplona in #3371
- Fix compiler instruction limit in AccountSettings constructor by @vitorpamplona in #3375
- feat: query zapstore's relay in the global Apps feed and keep its filter specific by @vitorpamplona in #3376
- New Crowdin Translations by @github-actions[bot] in #3374
- Add Git pull request event rendering support (NIP-34) by @vitorpamplona in #3377
- Show boosted notes as compact preview in activity cards by @vitorpamplona in #3379
- Embedded text selection: native-parity IME + selection UI + magnifier, and platform-bug fixes by @vitorpamplona in #3378
- Auto-save Cashu wallet on mint add/remove, remove manual key picker by @vitorpamplona in #3380
- Redesign service notification icon with network topology by @vitorpamplona in #3382
- Fix draft deletion by holding strong reference to draft notes by @vitorpamplona in #3383
- fix: delete per-account dir on account removal + sweep orphans at startup by @vitorpamplona in #3385
- Move browser strings to commons for shared localization by @vitorpamplona in #3386
- Show nSite/nApplet icons from bundled blobs in favorites by @vitorpamplona in #3384
- Fix activity card background propagation to embedded notes by @vitorpamplona in #3387
- Preload favorited nSites/nApplets to avoid "isn't loaded yet" toast by @vitorpamplona in #3388
- Style Git pull request clone URLs with labelMedium typography by @vitorpamplona in #3389
- docs(claude): document the ngit + GitHub PR workflow for agents by @vitorpamplona in #3391
- Add Accrescent APK set build & remove cleartext traffic flag by @vitorpamplona in #3392
- Add Open/Closed filter to Git repo Issues and Patches tabs by @vitorpamplona in #3393
- Move UI components to commons module for better code sharing by @vitorpamplona in #3394
- Make Arti native library builds reproducible by @vitorpamplona in #3396
- New Crowdin Translations by @github-actions[bot] in #3390
- Move rememberFeedContentPadding to commons.ui.layouts by @vitorpamplona in #3398
- refactor: scope account ViewModelStore with Lifecycle 2.11 rememberViewModelStoreOwner by @vitorpamplona in #3399
- Cache favorited nsite/napplet manifests for offline resolution by @vitorpamplona in #3402
- fix(video): show browser-fallback overlay when a decoder silently stalls by @vitorpamplona in #3401
- added support for more payment targets by @roguehashrate in #3400
- New Crowdin Translations by @github-actions[bot] in #3403
- fix(perf): unfreeze the cold-start "Loading account" screen in debug builds by @vitorpamplona in #3404
- New Crowdin Translations by @github-actions[bot] in #3405
- Add Git Repositories feed screen with community and author filtering by @vitorpamplona in #3406
- Align Cashu icon with reaction gallery icons in Nutzap by @vitorpamplona in #3407
- Browser: add Discover section with hardcoded web apps & followed nSites/nApplets by @vitorpamplona in #3409
- Remove network routing confirmation dialog from napplet host by @vitorpamplona in #3408
- Add loading progress bar and error logging to napplet/browser by @vitorpamplona in #3410
- New Crowdin Translations by @github-actions[bot] in #3411
- Add customizable accent colors, fonts, and font sizes by @vitorpamplona in #3412
- Add surface background color to SearchBar Column by @vitorpamplona in #3414
- New Crowdin Translations by @github-actions[bot] in #3413
- Add Nostr signer permissions & relay auth management UI by @vitorpamplona in #3395
- Add Cashu wallet find-or-create wizard with cross-relay discovery by @vitorpamplona in #3418
- New Crowdin Translations by @github-actions[bot] in #3416
- Add git smart-HTTP browser for NIP-34 repositories by @vitorpamplona in #3415
- Console panel: add visibility toggle, elevation, and state sync by @vitorpamplona in #3420
- Fix first-connect dialog suppression to allow retry after cooldown by @vitorpamplona in #3421
- feat(nip89): parse and display app-handler t/i/a/client tags by @vitorpamplona in #3422
- New Crowdin Translations by @github-actions[bot] in #3419
- feat(desktop): Follow Packs (NIP-51 kind 39089) — Discover + follow flow by @nrobi144 in #3424
- Add "Manage permissions" UI for Connected Apps detail screen by @vitorpamplona in #3426
- New Crowdin Translations by @github-actions[bot] in #3425
- docs: add per-module plans indexes and master roll-up by @vitorpamplona in #3427
- Centralize "Mine" feed filter to shared TopFilter.Mine flow by @vitorpamplona in #3428
- New Crowdin Translations by @github-actions[bot] in #3429
- feat(desktop): hashtag-spam filter with collapse-with-reveal by @nrobi144 in #3431
- Rename gzip test corpus to .json.gz to clear Sonar file-encoding warning by @davotoula in #3433
- chore(actions): bump the actions group with 4 updates by @dependabot[bot] in #3430
- Add NIP-77 negentropy sync with streaming and windowing support by @vitorpamplona in #3434
- Document Quartz utilities: hex, time, random, hashing, bech32 by @vitorpamplona in #3435
- Support Blossom URI scheme for media downloads by @vitorpamplona in #3436
- Add pre-push Spotless formatting gate by @vitorpamplona in #3437
- Add OptionalAuthPolicy for NIP-42 without requiring authentication by @vitorpamplona in #3439
- docs: Add NIP-05 identifier resolution guide and update skill by @vitorpamplona in #3442
- Escape raw NUL bytes to fix Sonar encoding warning by @davotoula in #3440
- Add type-safe DSL builder for NIP-11 relay information documents by @vitorpamplona in #3443
- Persist bottom bar defaults as blank sentinel for auto-migration by @vitorpamplona in #3444
- Add optional full-text search indexing toggle to SQLiteEventStore by @vitorpamplona in #3445
- Add podcast authoring UI and NIP-XX Podcasting 2.0 support by @vitorpamplona in #3441
- New Crowdin Translations by @github-actions[bot] in #3438
- Centralize default search relays into DefaultSearchRelayList by @vitorpamplona in #3446
- Remove elevation from bottom and top sheet surfaces by @vitorpamplona in #3447
- feat(desktop): Privacy lock for Messages column by @nrobi144 in #3432
- Add compose signature setting to auto-append custom text to posts by @vitorpamplona in #3450
- New Crowdin Translations by @github-actions[bot] in #3449
- Implement SearchableEvent interface for NIP-50 search support by @vitorpamplona in #3452
- Make Log.sink pluggable for custom logging backends by @vitorpamplona in #3453
- feat: expand the "Let's be reasonable" napplet auto-approve set by @vitorpamplona in #3455
- feat(desktop): notifications redesign — inbox UX, native OS toasts, shared filter by @nrobi144 in #3457
- Add lock-free concurrent collections and fix UDP socket threading by @vitorpamplona in #3459
- Add production benchmarks and negentropy sync optimizations by @vitorpamplona in #3458
- New Crowdin Translations by @github-actions[bot] in #3456
- New Crowdin Translations by @github-actions[bot] in #3460
- Consolidate Czech onto the base values-cs qualifier by @davotoula in #3461
- New Crowdin Translations by @github-actions[bot] in #3463
- Strip NIP-50 search extensions before querying SQLite FTS by @vitorpamplona in #3464
- Prune empty locale files and dead language-picker entries by @davotoula in #3462
- New Crowdin Translations by @github-actions[bot] in #3465
- Add relayBench: comprehensive Nostr relay benchmark suite by @vitorpamplona in #3466
- New Crowdin Translations by @github-actions[bot] in #3467
- Make dedup decode benchmark resilient to CI load variance by @vitorpamplona in #3468
- feat(quartz): NostrServer.ingest — local write path with per-submission verify skip by @vitorpamplona in #3469
- fix(quartz): record REQ state before send in PoolRequests.syncState by @vitorpamplona in #3470
- New Crowdin Translations by @github-actions[bot] in #3471
- New Crowdin Translations by @github-actions[bot] in #3472
- support Birdstar bird detection events (kind 2473) by @davotoula in #3473
- Handle unchecked File.delete() return values across all modules by @davotoula in #3474
- Upgrade negentropyKmp to v1.1.1 by @vitorpamplona in #3475
- fix: stabilize flaky LocalRelayStoreHydrationTest against GC eviction by @vitorpamplona in #3476
- Repair equals/hashCode contracts in OpenTimestamps ops and VerifyResult by @davotoula in #3477
- perf(relay): geode↔strfry 1M sync — negentropy + store speedups, strfry-parity mirror, benchmark harness by @vitorpamplona in #3478
- Fix negentropy refusal handling to prevent window-split storm by @vitorpamplona in #3480
- feat: add setting to hide the on-chain (Bitcoin) wallet by @vitorpamplona in #3481
- New Crowdin Translations by @github-actions[bot] in #3479
- fix(desktop): sidebar nav replaces detail overlay + guard RelayLatencyTracker.sweep against CME by @nrobi144 in #3484
- render PS1 memory-card saves over nostr (kind 38192) by @davotoula in #3482
- cli: full relay-settings parity for
amy relay(noun-first, all list kinds) by @vitorpamplona in #3485 - New Crowdin Translations by @github-actions[bot] in #3486
- Add efficient hex-to-Long conversion utilities for Nostr IDs by @vitorpamplona in #3488
- fix(quartz): fetchAllPages paging correctness + amy drainAllPages + SeenIds by @vitorpamplona in #3489
- Clean up empty when branches and remove unnecessary null checks by @vitorpamplona in #3490
- Add logoff command to CLI for account deletion by @vitorpamplona in #3491
- CLI: enable read-only verbs to run without an account by @vitorpamplona in #3493
- Add
amy statuscommand for cross-account disk overview by @vitorpamplona in #3492 - GrapeRank web-of-trust for amy: sync → score → publish (NIP-85) by @vitorpamplona in #3494
- perf(graperank): faster crawl (cap 100→16, dead-discovery shedding, fewer sweep barriers) + relay diagnostics by @vitorpamplona in #3497
- NIP-77 deletion sync: two-pass settle over the reconcile residual by @vitorpamplona in #3498
- Persist SecretTree ratchet positions across MLS group restores by @vitorpamplona in #3499
- feat(desktop): apply the privacy lock to the Wallet column by @nrobi144 in #3495
- feat(desktop): Web-of-Trust score badges + shared index relays + amy wot verbs by @nrobi144 in #3483
- New Crowdin Translations by @github-actions[bot] in #3487
- Eliminate null-safety suppressions and unsafe casts by @vitorpamplona in #3501
- Fix race condition in fetchFirst when relay sends buffered events at EOSE by @vitorpamplona in #3502
- Adapt memory trimming to Android 14+ trim level changes by @vitorpamplona in #3503
- chore: automate Homebrew formula sync for amy CLI + add cask reference by @vitorpamplona in #3505
- New Crowdin Translations by @github-actions[bot] in #3500
- Opt-in local SonarQube analysis via local.properties by @davotoula in #3504
- Add NIP-77 outbox-model refresh for GrapeRank via NegentropyStoreSync by @vitorpamplona in #3506
- feat(quartz): add IEventStore.authorsMissingOutbox() anti-join query by @vitorpamplona in #3507
- feat(desktop): NIP-17 DM reliability — AUTH banner, strict inbox resolution, relay hints by @nrobi144 in #3508
- fix(pictures): show title/caption before reactions row by @vitorpamplona in #3509
- Replace synchronized with Mutex in InMemoryAuthApprovalStore by @vitorpamplona in #3510
- graperank: relay reachability cache (NIP-66), aggregator kind:3 recovery, and outbox-discovery dedup by @vitorpamplona in #3511
- Enforce blocked relays centrally via decorator client by @vitorpamplona in #3512
- Relay Groups: NIP-29 relay-based group chat (Armada interop) by @vitorpamplona in #3514
- New Crowdin Translations by @github-actions[bot] in #3515
- Persist login UI state across configuration changes by @vitorpamplona in #3517
- Trim message text before tagging in post ViewModels by @vitorpamplona in #3518
- docs: Add APK signature verification instructions by @vitorpamplona in #3516
- Update Brainstorm web app icon URL by @vitorpamplona in #3521
- Strip trailing whitespace from rich text parser output by @vitorpamplona in #3522
- NIP-42 relay auth: contextual "why", per-situation trust, and prompts by @vitorpamplona in #3520
- Support markdown hashtag links (#tag fragments) by @vitorpamplona in #3523
- Fix relay attribution in gift-wrap chains and Marmot messages by @vitorpamplona in #3524
- Fix DM read state: mark rooms as read when sending messages by @vitorpamplona in #3525
- Add NIP-13 Proof-of-Work mining queue with persistence and UI by @vitorpamplona in #3527
- Add NIP-29 relay groups button to relay information screen by @vitorpamplona in #3526
- Mark DM rooms as read when wraps are mined in background by @vitorpamplona in #3528
- Reduce PoW badge size for better UI balance by @vitorpamplona in #3529
- GrapeRank crawl: connect once, wait once — 38% faster at hop-3; hop-8 31% faster at +15% lists / +47% users by @vitorpamplona in #3513
- New Crowdin Translations by @github-actions[bot] in #3519
- New Crowdin Translations by @github-actions[bot] in #3531
- Parallelize PoW mining with multi-worker nonce search by @vitorpamplona in #3533
- Clarify relay auth descriptions for profile and engagement data by @vitorpamplona in #3534
- fix: don't drop whole kind-0 profiles over one mistyped field by @vitorpamplona in #3535
- New Crowdin Translations by @github-actions[bot] in #3532
- Aggregate Kover coverage (for SonarQube import) by @davotoula in #3536
- New Crowdin Translations by @github-actions[bot] in #3537
- New Crowdin Translations by @github-actions[bot] in #3538
- New Crowdin Translations by @github-actions[bot] in #3540
- Remove Kover coverage plugin to fix runner OOM by @davotoula in #3539
- New Crowdin Translations by @github-actions[bot] in #3542
- fix(relay-auth): stop paid relays billing accounts that don't use them (inbox.nostr.wine over-AUTH) by @vitorpamplona in #3543
- Clean up Git card styling and fix duplicated subject in content by @vitorpamplona in #3544
- Add AutoReplayLimiter to cap video auto-loops in feed by @vitorpamplona in #3545
- Replace remove-from-notify with mute/unmute bell toggle by @vitorpamplona in #3546
- fix(ci): serialize :amethyst Kotlin compilations on CI to stop daemon OOMs by @vitorpamplona in #3547
- Nickname users via NIP-85 contact cards (encrypted petname + private note, custom emojis) by @vitorpamplona in #3548
- Decouple Android notification kinds from Desktop subscription list by @vitorpamplona in #3550
- New Crowdin Translations by @github-actions[bot] in #3549
- Add Flatpak bundle support to release CI + Flathub submission by @vitorpamplona in #3554
- Battery: background-usage fixes, 122-relay ping study, and an on-device resource-usage ledger by @vitorpamplona in #3551
- Fix profile banner image scaling from FillWidth to Crop by @vitorpamplona in #3556
- Fix null pointer in AntiSpamFilter when LRU cache evicts duplicates by @vitorpamplona in #3557
- Improve NIP-72 approval event parsing robustness by @vitorpamplona in #3558
- Adaptive large-screen layout: nav rail, permanent drawer, notification panel, reading-column cap by @vitorpamplona in #3553
- Unify note-header markers into a pill / quiet-mark design system by @vitorpamplona in #3559
- New Crowdin Translations by @github-actions[bot] in #3555
- Warn users when relay group relay doesn't advertise NIP-29 by @vitorpamplona in #3561
- Refactor GrapeRank into separable pipeline stages with local persistence by @vitorpamplona in #3562
- Surface NIP-29 group replies and likes in notifications by @vitorpamplona in #3563
- Fix NoteHeaderFirstRowDensityPreview to use tryEmit for Flow by @vitorpamplona in #3564
- Add floating action button to create new public chats by @vitorpamplona in #3565
- Concord: end-to-end-encrypted communities (CORD-01…07) on Android + CLI by @vitorpamplona in #3566
- Add MIP-01 v2 group avatar encryption and upload support by @vitorpamplona in #3568
- feat(desktop): note scheduling + NIP-37 draft sync (shared scheduling in commons) by @nrobi144 in #3552
- New Crowdin Translations by @github-actions[bot] in #3567
- feat: style Messages room-type labels as Concord-style pills by @vitorpamplona in #3570
- fix(strictmode): stop CleartextNetworkViolation noise from the Tor SOCKS proxy by @vitorpamplona in #3571
- Replace nullable safe calls with immutable map operations by @vitorpamplona in #3572
- Support NIP-92 imeta attachments in chat messages by @vitorpamplona in #3573
- Replace Messages FAB speed-dial with full-screen conversation chooser by @vitorpamplona in #3575
- Bottom nav: pin individual chats/groups + redesigned setup screen by @vitorpamplona in #3576
- Extract imeta URL rendering logic to shared utility by @vitorpamplona in #3577
- Prefetch recent group chat messages for list previews by @vitorpamplona in #3578
- New Crowdin Translations by @github-actions[bot] in #3574
- Modernize chat message rendering by @vitorpamplona in #3579
- Fix reactive state handling in Concord entry display by @vitorpamplona in #3581
- Concord: richer channel rows — previews, unread counts, facepiles, live typing by @vitorpamplona in #3582
- New Crowdin Translations by @github-actions[bot] in #3580
- Skip empty reaction chip rows on messages without engagement by @vitorpamplona in #3584
- NIP-29 message pinning: UI bar, moderation events, and relay group integration by @vitorpamplona in #3586
- Sync Blossom media server list (kind 10063) across clients by @vitorpamplona in #3583
- Desktop NIP-17: deliver DMs & reactions to the recipient's DM relays, downloaded up front by @vitorpamplona in #3587
- New Crowdin Translations by @github-actions[bot] in #3585
- Add IO dispatcher import to BlossomServerListState by @vitorpamplona in #3589
- CORD-05: Distinguish invite redemption failures for better UX by @vitorpamplona in #3592
- New Crowdin Translations by @github-actions[bot] in #3590
- Fix AUTH grant persistence for long relay URLs by @vitorpamplona in #3591
- Add hashtag muting support via NIP-51 by @vitorpamplona in #3593
- fix(desktop): auto-approve pending relay AUTH once the DM-inbox (kind:10050) set loads by @nrobi144 in #3594
- NIP-29: subgroups, custom roles, timeline refs, invite links + relay-signed hardening by @vitorpamplona in #3596
- New Crowdin Translations by @github-actions[bot] in #3595
- Add global master switch for always-on notification service by @vitorpamplona in #3598
- Add NIP-22 LIMITS message support with per-relay tracking by @vitorpamplona in #3597
- New Crowdin Translations by @github-actions[bot] in #3599
- Improve Concord invite error messaging and Gradle infra detection by @vitorpamplona in #3602
- refactor: converge rich-text rendering across Android + Desktop into commons by @vitorpamplona in #3600
- Make theme colors follow selected accent, not fixed purple by @vitorpamplona in #3601
- Pre-seed Gradle distribution in web sandbox to unblock ./gradlew by @vitorpamplona in #3605
- Add geohash location chat support (Bitchat interop Phase 2) by @vitorpamplona in #3604
- Redesign settings screen with segmented controls and sections by @vitorpamplona in #3606
- New Crowdin Translations by @github-actions[bot] in #3603
- Keep live HLS streams playing; cache only proven on-demand HLS by @davotoula in #3607
- Tolerate bare URL icons and keyless channels in CORD-05 invites by @vitorpamplona in #3609
- Fix onPrimary contrast and add color scheme preview tool by @vitorpamplona in #3610
- Refactor settings search field to use Material 3 TextField by @vitorpamplona in #3611
- Add NIP-46 remote signer (bunker) support with consent UI by @vitorpamplona in #3612
- New Crowdin Translations by @github-actions[bot] in #3608
- New Crowdin Translations by @github-actions[bot] in #3614
- feat(relay): stop re-sending REQs relays structurally refuse by @vitorpamplona in #3613
- New Crowdin Translations by @github-actions[bot] in #3615
- Prevent re-joining Concord communities via old invite links by @vitorpamplona in #3617
- fix(nip46): remote-signer pubKey is the user identity + amy Concord epoch tooling by @vitorpamplona in #3618
- NIP-84: Support W3C TextQuoteSelector for highlight context by @vitorpamplona in #3619
- Replace Jackson with kotlinx.serialization for FHIR parsing by @vitorpamplona in #3620
- New Crowdin Translations by @github-actions[bot] in #3616
- feat(concord): backfill channel history across Refounding epochs by @vitorpamplona in #3622
- Add per-chat-type load toggles to Messages settings by @vitorpamplona in #3623
- Move relay badges from author column to reaction gallery by @vitorpamplona in #3624
- refactor(commons): extract note-type UI rendering to commons by @vitorpamplona in #3625
- chore: include commons Compose resources in Crowdin sync by @vitorpamplona in #3627
- Redesign media servers UI with drag-reorder, health probes, and cards by @vitorpamplona in #3628
- Add follower crawl and trusted-follower metrics to GrapeRank by @vitorpamplona in #3626
- fix(ci): reclaim working-tree ownership after Crowdin Docker action by @vitorpamplona in #3629
- Move settings search field to top bar by @vitorpamplona in #3632
- Add unread indicators for NIP-29 relay groups and Concord channels by @vitorpamplona in #3631
- New Crowdin Translations by @github-actions[bot] in #3630
- Extract GrapeRank CLI flag names into constants by @davotoula in #3634
- Add Blossom blob manager UI and BUD-07 payment handling by @vitorpamplona in #3635
- Fix StrictMode DiskReadViolation in BootCompletedReceiver by @vitorpamplona in #3636
- New Crowdin Translations by @github-actions[bot] in #3633
- Fix media detection for malformed imeta MIME types by @vitorpamplona in #3638
- New Crowdin Translations by @github-actions[bot] in #3637
- Reorder settings menu entries and update icons by @vitorpamplona in #3640
- NIP-29 group chat: split state (always-on) from content (paginated) by @vitorpamplona in #3641
- amy CLI overhaul: exit-code/JSON contract v1, per-command help, contract tests, docs, and thin-layer extractions by @vitorpamplona in #3642
- New Crowdin Translations by @github-actions[bot] in #3639
- Map-first geohash location UX: picker, teleport, follow, retarget by @vitorpamplona in #3643
- New Crowdin Translations by @github-actions[bot] in #3644
- chore(deps): update dependencies across all modules by @vitorpamplona in #3646
- New Crowdin Translations by @github-actions[bot] in #3645
- docs(changelog): add v1.13.0 release notes by @vitorpamplona in #3647
- New Crowdin Translations by @github-actions[bot] in #3648
- fix: v1.13.0 pre-release QA — napplet account isolation, Concord authority, and 30 other fixes by @vitorpamplona in #3650
- New Crowdin Translations by @github-actions[bot] in #3651
- New Crowdin Translations by @github-actions[bot] in #3652
- Add infinite-scroll backward pagination for notification history by @vitorpamplona in #3653
- Share a note (link) as a QR code by @davotoula in #3654
- New Crowdin Translations by @github-actions[bot] in #3655
- Replace raw bidi/invisible Unicode characters in source with \u escapes by @davotoula in #3656
- New Crowdin Translations by @github-actions[bot] in #3657
- fix: persist the MIP-00 key-package and favorite-algo-feeds lists by @vitorpamplona in #3659
- fix: Concord groups missing or slow on the Messages tab after a cold boot by @vitorpamplona in #3658
- Optimize relay query performance: cost-based driver selection, tag-author indexing, and fanout memoization by @vitorpamplona in #3660
- docs: fix license badge and refresh stale SKILL.md by @vitorpamplona in #3662
- SQLite query scaling: FTS contentless, tag-merge, pooled statements by @vitorpamplona in #3663
- feat(desktop): NIP-88 polls (render, vote, create) + "Polls" search facet by @nrobi144 in #3664
- New Crowdin Translations by @github-actions[bot] in #3665
- fix(video): decoder-budget exhaustion and black bars on live streams by @vitorpamplona in #3667
- Downgrade JVM target from 21 to 17 in quartz module by @vitorpamplona in #3668
- Replace abandoned Android test report action with mikepenz/action-junit-report by @vitorpamplona in #3670
- Stop ConcurrentModificationException in AddressableAuthorRelayLoaderSubAssembler by @davotoula in #3666
- New Crowdin Translations by @github-actions[bot] in #3669
- New Crowdin Translations by @github-actions[bot] in #3672
- fix(signer): never stamp our client tag on someone else's template by @vitorpamplona in #3673
- New Crowdin Translations by @github-actions[bot] in #3674
- Bootstrap Concord communities from pinned bottom-bar tabs by @vitorpamplona in #3675
- Refactor privacy settings UI to use composable components by @vitorpamplona in #3676
- Redesign ZapTheDevsCard with gradient hero header and improved UI by @vitorpamplona in #3677
- Fix excessive vertical spacing in home feed when no live bubbles by @vitorpamplona in #3678
- New Crowdin Translations by @github-actions[bot] in #3679
- Warn users when a DM comes from an account that people they follow have reported by @davotoula in #3680
- Add Buzz protocol support with workspace, DM, and agent features by @vitorpamplona in #3682
- Add "send without PoW" option for template posts during mining by @vitorpamplona in #3684
- fix(concord): recover communities that won't load + warm channel previews by @vitorpamplona in #3686
- Redesign push notifications with per-kind styles and channels by @vitorpamplona in #3683
- New Crowdin Translations by @github-actions[bot] in #3681
- New Crowdin Translations by @github-actions[bot] in #3688
- feat(desktop): Moderation & Safety — mute/block enforcement, NIP-56 report, NIP-36 content warning by @nrobi144 in #3687
- New Crowdin Translations by @github-actions[bot] in #3689
- Improve RSVP button layout and text handling by @vitorpamplona in #3691
- Remove unreachable duplicate StreamMessageV2Event branch in computeReplyTo by @davotoula in #3690
- Add pluggable event store backend selection via StoreFactory by @vitorpamplona in #3692
- docs: update v1.13.00 changelog with Buzz, Notifications, and more by @vitorpamplona in #3693
- Refactor persistent collections API and fix deprecation warnings by @vitorpamplona in #3694
- Stop the decoder-budget counter from leaking and disabling the warm player cache by @davotoula in #3695
- Add geode standalone Nostr relay with release pipeline by @vitorpamplona in #3696
- Anchor message edits to their targets instead of workspace state by @vitorpamplona in #3698
- Redesign Blossom blob manager UI with gallery grid and full-screen viewer by @vitorpamplona in #3699
- Add image attachment support to minichat threads by @vitorpamplona in #3700
- Anchor OTS attestations to target notes, replace verification cache by @vitorpamplona in #3702
- Add Blossom blob import flow to pull files from other servers by @vitorpamplona in #3703
- Add NWC payment notifications and deep-link pairing by @vitorpamplona in #3701
- Support Buzz stream messages in group chat and improve chat previews by @vitorpamplona in #3704
- Add pinnable relay servers and Concord channels to bottom bar by @vitorpamplona in #3706
- fix(concord): isolate the Control Plane sub so channels don't starve by @vitorpamplona in #3705
- Add mirrorOrUpload fallback when Blossom /mirror endpoint unsupported by @vitorpamplona in #3708
- Add NIP-XX BOLT12 zap support with validation and UI integration by @vitorpamplona in #3685
- Extract chat room mark-as-read logic into reusable function by @vitorpamplona in #3707
- Fix race condition in NIP-01 compliance test with concurrent relays by @vitorpamplona in #3709
- New Crowdin Translations by @github-actions[bot] in #3697
- Support RelayGroupChannelListScreen as bottom-nav tab by @vitorpamplona in #3712
- Upgrade genaiPrompt to 1.0.0-beta4 by @vitorpamplona in #3713
- Fix GC-dependent flaky test in LargeCacheAddressableFilterTest by @davotoula in #3711
- Relay Rail: cluster relay groups by host relay with slim headers by @vitorpamplona in #3715
- New Crowdin Translations by @github-actions[bot] in #3714
- fix(nip29): deliver Buzz/NIP-29 channel updates live, and ask before showing channels you were added to by @vitorpamplona in #3716
- Stop the inline audio player painting over the note by @davotoula in #3719
- fix(buzz): thread kind-9 replies into the minichat instead of the channel by @vitorpamplona in #3718
- Rename NIP-XX to NIP-B1 for BOLT12 Zaps specification by @vitorpamplona in #3720
- New Crowdin Translations by @github-actions[bot] in #3717
- fix(tor): self-heal a guard sample that is rotten at runtime, not just on disk by @vitorpamplona in #3721
- fix(quartz): route kind-39005 by tag shape so Buzz thread summaries stop parsing as NIP-29 pin lists by @vitorpamplona in #3725
- New Crowdin Translations by @github-actions[bot] in #3726
- fix: decode numeric HTML entities in link preview meta tags by @dergigi in #3724
- feat(buzz): say who joined and what changed in the kind-40099 system lines by @vitorpamplona in #3727
- refactor(chats): demote Threads and Share to the channel overflow menu by @vitorpamplona in #3729
- New Crowdin Translations by @github-actions[bot] in #3728
- docs(quartz): correct the Buzz kind-conflict table and document how to read Buzz's source by @vitorpamplona in #3731
- fix(buzz): only offer "new thread" where a forum post belongs by @vitorpamplona in #3732
- Support P2PK witness signing for pasted Cashu tokens by @vitorpamplona in #3734
- Remove community banner from Concord home screen by @vitorpamplona in #3737
- Redesign Buzz channel rows to match Concord style with activity previews by @vitorpamplona in #3736
- fix(chats): render the community tab correct on its first frame by @vitorpamplona in #3735
- test(quartz): clean up compiler warnings across the test suites by @vitorpamplona in #3738
- New Crowdin Translations by @github-actions[bot] in #3733
- New Crowdin Translations by @github-actions[bot] in #3739
- New Crowdin Translations by @github-actions[bot] in #3740
- Add SearchableEvent implementation to 18 event types by @vitorpamplona in #3743
- feat(quartz): index the public petname on contact cards (30382) by @vitorpamplona in #3745
- fix(buzz): make channel create, add-member and role changes actually work by @vitorpamplona in #3742
- Merge close workout sessions to reduce noise in Health Connect suggestions by @vitorpamplona in #3746
- Add Buzz job/workflow boards and CLI agent/workflow commands by @vitorpamplona in #3748
- Fix NIP-77 negentropy stall against relays that refuse via NOTICE by @vitorpamplona in #3747
- Resolve @mentions in message bodies to p-tags across all chat types by @vitorpamplona in #3749
- New Crowdin Translations by @github-actions[bot] in #3744
- docs: update v1.13.00 changelog with new features by @vitorpamplona in #3750
- New Crowdin Translations by @github-actions[bot] in #3751
- Fix flaky FindUsersTest by retaining users in cache by @vitorpamplona in #3754
- docs(changelog): tighten v1.13.0 highlights and audit against commits since v1.12.6 by @vitorpamplona in #3753
- Display user profiles in notification settings account list by @vitorpamplona in #3756
- Move bottom-bar persistence from app-global to per-account synced settings by @vitorpamplona in #3755
- New Crowdin Translations by @github-actions[bot] in #3752
- feat(highlights): render NIP-84 quotes with a highlighter-pen marker by @vitorpamplona in #3757
- New Crowdin Translations by @github-actions[bot] in #3758
- Make the combined-sessions count a plurals resource by @davotoula in #3760
- Keep the "open in browser" button alive in a short error box by @davotoula in #3759
- Reorganize settings catalog: move UI settings to dedicated section by @vitorpamplona in #3762
- New Crowdin Translations by @github-actions[bot] in #3761
New Contributors
- @LubuSeb made their first contribution in #3315
- @roguehashrate made their first contribution in #3400
- @dergigi made their first contribution in #3724
Full Changelog: v1.12.6...v1.13.0