Commit Graph

13397 Commits

Author SHA1 Message Date
Claude 5bda97db04 fix(nests): promote/demote/kick actions no longer cancelled by sheet dismiss
The per-participant host actions (Promote to Speaker, Promote to
Moderator, Demote, Force Mute, Kick) and the Hand-Raise queue's
Approve button all launched their sign+broadcast on a
rememberCoroutineScope() bound to the local composable. Because
every action row calls onDismiss() (and the hand-raise row may
disappear when canSpeak() flips true), the composable leaves the
tree synchronously after the click, cancelling the scope before
the launched coroutine ever runs sign(template). The user saw the
sheet close and nothing else — the kind-30312 republish / kind-4312
admin event was never actually emitted.

Launch on accountViewModel.viewModelScope instead so the
broadcast outlives the dismissing UI.
2026-05-11 20:43:56 +00:00
Vitor Pamplona e82cd0f6f8 Merge pull request #2845 from davotoula/docs/contributing-guide
Add CONTRIBUTING-WITH-AI.md companion guide
2026-05-11 15:47:35 -04:00
davotoula fd02b47d9a docs(contributing): add automated tests and code review sections
Two additional gates on top of the AI-companion guide:

  - Automated tests for new logic — quartz/ and commons/ get unit
    tests; bug fixes get a regression test; UI-only stays exempt
    from automated UI tests but keeps the manual on-device test
    plan + screenshots. Pointer into CONTRIBUTING.md § Interop tests.
  - Code review pass before opening the PR — run a second-agent
    review with a different model or skill (/simplify, /kotlin-review,
    /security-review, /code-review), then re-run tests and manual
    test plan to catch fix-introduced regressions.

CONTRIBUTING.md pointer paragraph updated to enumerate the two new
gates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 21:18:40 +02:00
davotoula 3ba2049566 docs(contributing): add CONTRIBUTING-WITH-AI.md companion guide
Companion to CONTRIBUTING.md targeting external PRs whose diff was
substantially authored by an AI coding assistant. Adds five gates the
existing doc does not cover:

  - Research before code (issue still valid, decentralisation fit)
  - Build and install both flavours (Play + F-Droid)
  - Performance and resource hygiene (main-thread, coroutines,
    LocalCache reuse, relay subscriptions, KMP source sets, lambda Log)
  - Regression test plan alongside feature test plan
  - Don't-touch list (signer/KeyStore, release pipeline, NIP direction)

Filename deliberately avoids AGENTS.md to keep internal dev-team
agents unaffected by auto-load conventions. CONTRIBUTING.md and the
PR template each gain a one-line pointer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 20:24:47 +02:00
Vitor Pamplona 4b195ad6df Merge pull request #2843 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-11 12:05:22 -04:00
Crowdin Bot ab9f660bf9 New Crowdin translations by GitHub Action 2026-05-11 16:02:03 +00:00
Vitor Pamplona 6f9f3d8ef3 Merge pull request #2844 from vitorpamplona/claude/add-contributing-guidelines-dgPV3
docs: add CONTRIBUTING.md and PR template
2026-05-11 11:59:51 -04:00
Claude fc29147c4a docs(contributing): tighten and fix consistency bugs
- Add missing `## Commits` header so the ToC anchor resolves.
- Drop "Modules touched" and "Risk / rollback" from the PR description
  checklist so CONTRIBUTING matches the PR template (PR template lost
  those sections in 8ea7d1e).
- Fold "Human and AI contributions" into "Proof of testing" — the two
  sections restated the same author-of-record rule.
- Remove duplicate "Sending issues over Nostr" subsection (already
  covered under "Ways to contribute").
- Compress "Project layout" ascii tree into a bullet list and merge
  with "Where code belongs".
- Tighten "Coding standards" (drop bullets that restated generic
  don't-over-engineer guidance) and "Bounties" (single paragraph
  instead of a quote block plus six bullets).
- Trim the interop "Running them" subsection to the non-obvious bits
  (opt-in flags, run-matrix.sh not concurrency-safe) instead of
  repeating paths from the table.

Net: 406 → 316 lines, no information lost.
2026-05-11 15:56:12 +00:00
Vitor Pamplona 6c6d1c4f47 Merge pull request #2842 from davotoula/add-video-casting-feature
Add LAN video casting via Chromecast (Google Play flavour only)
2026-05-11 11:52:35 -04:00
davotoula 9d2f106466 Lambda-convert eager Log.w + drop redundant ${t.message} 2026-05-11 16:35:47 +02:00
davotoula 91aa72ae1e Rip DLNA code paths, collapse to Chromecast-only
- chore(cast): drop protocol-toggle settings, strings, perms, deps
- gate cast on play flavor via BuildConfig.IS_CASTING_AVAILABLE
- fix(cast): keep local player paused across recompose; disable transport while casting
2026-05-11 16:35:47 +02:00
davotoula 725de43c0a Stop-from-phone button + pause local player while casting
fix(cast): explicit RemoteMediaClient.stop() and receiver-status diagnostics
fix(cast): keep SessionManagerListener for caster lifetime + await stop() ack
refactor(cast): kotlin-review fixes — cancellation, valueOf safety, recomp
refactor(cast): tighten types, fix HLS query-string mime, parallelize stop
2026-05-11 16:35:47 +02:00
Claude 5df0e2a37a Add LAN video casting (Chromecast on play, DLNA on both flavors) v1
fix(cast): handle every Chromecast session terminal state and HLS mime hint
fix(cast): repair DLNA Res ctor and add play-only protocol toggle
fix(cast): backfill Cast button for accounts with pre-existing video settings
fix(cast): include cast glyphs in symbol font subset and add diagnostic logs
fix(cast): wire jUPnP's required Jetty deps and survive dialog dismissal
fix(cast): add jetty-client so jUPnP can issue UPnP control requests
2026-05-11 16:35:47 +02:00
Claude 8056eb899f docs(contributing): scope proof-of-testing to non-regular contributors 2026-05-11 14:23:37 +00:00
Claude 8ea7d1ee81 docs(pr-template): drop modules-touched and risk/rollback sections 2026-05-11 14:11:59 +00:00
Claude cfa6899c65 docs: cross-link CONTRIBUTING.md from README and add PR template 2026-05-11 13:42:22 +00:00
Claude ee20ab6ca4 docs(contributing): document interop suites and issue-template practice 2026-05-11 13:25:13 +00:00
Claude 9c39af718b docs: add CONTRIBUTING.md with proof-of-testing rule for new contributors 2026-05-11 13:06:35 +00:00
Vitor Pamplona 89c711ca9f lint 2026-05-11 08:50:05 -04:00
Vitor Pamplona 1ff4f98fff docs(quic-interop): add quinn to the default peer set
quinn is now treated as a flawless-required interop target alongside
aioquic, picoquic, and quic-go. Most Rust-based Nostr/MoQ relays our
users run their servers on are built on quinn, so an interop regression
there is a user-visible regression.

Validated by a 3-round flakiness sweep (1 full matrix + 2 audio-critical
subsets) — zero result flakiness across 528 test executions across all
four peers, with two environmental docker-compose stall classes documented
separately.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 08:44:15 -04:00
Vitor Pamplona 2ddf59fc5f Merge pull request #2838 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-11 08:39:59 -04:00
Crowdin Bot a8aaf48c8b New Crowdin translations by GitHub Action 2026-05-11 12:32:31 +00:00
Vitor Pamplona 850345a1f2 Merge pull request #2831 from skotchdopolepet/codex/two-stage-zap-progress
Show two-stage zap progress
2026-05-11 08:30:21 -04:00
Vitor Pamplona 94125d6001 Merge pull request #2830 from skotchdopolepet/codex/report-warning-threshold
Configure report warning threshold
2026-05-11 08:27:13 -04:00
Vitor Pamplona 57807e393b Merge pull request #2828 from skotchdopolepet/codex/fix-hidden-dm-unread-dot
Fix hidden DM unread badge after blocking users
2026-05-11 08:23:07 -04:00
Vitor Pamplona f184f715b1 Merge pull request #2834 from coreymull/gif-keyboard-chat-upload
Add GIF keyboard uploads to chat composers
2026-05-11 08:19:54 -04:00
Vitor Pamplona d6b7cd456a Merge pull request #2841 from nrobi144/feat/desktop-embedded-local-relay
feat(desktop): embedded local relay with SQLite event persistence
2026-05-11 08:16:17 -04:00
nrobi144 2b96e83264 feat(desktop): add embedded local relay with SQLite event persistence
Add an in-process local relay to Amethyst Desktop that persists all
received events to a per-account SQLite database using quartz's existing
EventStore infrastructure. On startup, the local store hydrates
DesktopLocalCache for instant feed rendering before remote relays connect.

- LocalRelayStore: manages per-account EventStore lifecycle, batched
  write-through via BasicBundledInsert (250ms window), startup hydration
  (contact list -> metadata -> recent content events)
- LocalRelayMaintenance: periodic cleanup (NIP-40 expiration, 30-day
  prune, weekly VACUUM), disk space monitoring
- Settings UI: integrated into RelaySettingsScreen with statistics,
  storage management (prune/vacuum/clear), JSONL export/import, and
  error display
- OfflineBanner: animated banner in both SinglePaneLayout and
  DeckColumnContainer showing offline status with local cache indicator
- Thread-safe store access via @Volatile + synchronized lock
- Skips re-enqueue during hydration (checks LOCAL_RELAY_URL)
- DB stored at ~/.amethyst/accounts/<pubkey8>/events.db
- Corrupt DB auto-detected and recreated on open

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-11 11:35:39 +03:00
David Kaspar 17b6bba9fb Merge pull request #2824 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-11 08:10:02 +02:00
Corey Mull e38902fb66 Wire keyboard image input into chat uploads 2026-05-11 00:26:05 -04:00
skotchdopolepet 6b9b5cfe9b feat: show two-stage zap progress 2026-05-11 04:38:26 +02:00
skotchdopolepet ece6a4acf6 feat: configure report warning threshold 2026-05-11 04:32:28 +02:00
skotchdopolepet 2a4ecade39 fix: ignore hidden DMs for unread message badge 2026-05-11 04:18:49 +02:00
Crowdin Bot b3424a01ad New Crowdin translations by GitHub Action 2026-05-10 20:14:59 +00:00
davotoula ac08c27531 i18n: translate favorite DVMs empty state into cs-rCZ, pt-rBR, sv-rSE, de-rDE
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 22:12:31 +02:00
Vitor Pamplona 40dcfa2004 Merge pull request #2820 from davotoula/fix/bottom-nav-favourite-feeds-icon
Align favourites icon, add to default bar, redesign empty state
2026-05-10 15:56:14 -04:00
Vitor Pamplona 70188c1c22 Merge pull request #2822 from davotoula/feat/update-translations-and-find-missing-translations-skill
Update translations and the find missing translations skill
2026-05-10 15:55:59 -04:00
davotoula 41faf0525e Swap feed icon and notification icon in bottom bar: restore Notification icon is last 2026-05-10 21:30:19 +02:00
David Kaspar 67529e37ca Merge pull request #2823 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-10 21:14:11 +02:00
Crowdin Bot a1b7d8543c New Crowdin translations by GitHub Action 2026-05-10 18:23:40 +00:00
Vitor Pamplona ace021202e Merge pull request #2821 from davotoula/fix/hls-imeta-blurhash-thumbhash
Rich imeta on every published HLS event + auto-published kind:1 sibling
2026-05-10 14:22:01 -04:00
davotoula 85d768d395 i18n: drop stale %1$s placeholder from translations to fix StringFormatCount 2026-05-10 15:02:06 +02:00
davotoula 9a93b3e789 i18n: translate NIP-9A community rules and Blossom cache strings 2026-05-10 12:17:53 +02:00
davotoula 7f54a2645f docs(skills): update skill to warn on plural-shaped strings in find-missing-translations 2026-05-10 12:17:31 +02:00
davotoula 0a58ca3320 fix(l10n): drop orphaned favorite_dvms_empty key from 10 locale files 2026-05-10 10:46:42 +02:00
davotoula 99e0f2403d chore(translations): remove orphan hls_draft_note_* keys across locales 2026-05-10 10:15:21 +02:00
davotoula 7a77e3f5ee fix(richtext): recognize HLS MIME types as video in createMediaContent + propagate imeta image field to MediaUrlVideo.artworkUri
Code review:
- simplify result types and shared helpers
- propagate CancellationException from poster path + cover sibling
2026-05-10 09:40:00 +02:00
davotoula 48d08f5895 feat(hls): auto-publish kind:1 sibling note with rich imeta 2026-05-10 09:37:50 +02:00
davotoula 7550e82283 feat(hls): emit blurhash and thumbhash on every NIP-71 video imeta 2026-05-10 09:37:37 +02:00
davotoula f594589736 Code review:
refactor(discover): restore exhaustive when in DiscoverTab.toTabIndex
refactor(discover): collapse DiscoverTab.toTabIndex to ordinal and drop redundant pager guards
2026-05-10 09:24:18 +02:00