Commit Graph

13865 Commits

Author SHA1 Message Date
Vitor Pamplona 014763cf46 Merge pull request #2904 from vitorpamplona/claude/investigate-coil-image-loading-XIIOT
Replace ConcurrentRequestStrategy.UNCOORDINATED with DeDupeConcurrentRequestStrategy
2026-05-14 17:15:04 -04:00
Claude 457f140dd4 docs: add ThumbHash support as its own v1.09.0 feature
It was only noted under HLS video uploads, but ThumbHash was added
app-wide alongside BlurHash across events, uploads and the UI.

https://claude.ai/code/session_01PyGyMpa9XvTHrB4iqZX5oZ
2026-05-14 21:13:54 +00:00
Claude e3647a46c4 docs: audit pass — add missing v1.09.0 features
Adds mid-April features the original draft skipped: custom emoji packs
(NIP-30), standalone drawer screens (Articles/Products/Public Chats/
Communities/Live Streams/Follow Packs), richer live stream chat,
media content warnings, the video quality picker, desktop App Drawer
and workspace management, plus PDF reader zoom details.

https://claude.ai/code/session_01PyGyMpa9XvTHrB4iqZX5oZ
2026-05-14 21:11:11 +00:00
Claude d370c7e40c perf(images): coalesce duplicate in-flight Coil network requests
Switch the three image NetworkFetcher sites from
ConcurrentRequestStrategy.UNCOORDINATED to DeDupeConcurrentRequestStrategy,
Coil's coordinated default. UNCOORDINATED let every request hit the
network independently, so the same avatar across many visible feed
notes became N parallel downloads competing for the per-host
dispatcher slots and queueing the genuinely distinct images behind
them. The de-duping strategy lets concurrent requests for a URL share
the first download and then read from disk.

https://claude.ai/code/session_01BeWZGTz48kzURQLTYyN5x9
2026-05-14 21:10:20 +00:00
Vitor Pamplona c6ce45aad3 Merge pull request #2902 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-14 17:09:27 -04:00
Claude b53c0ff958 docs: name amy CLI in v1.09.0 What's New list
https://claude.ai/code/session_01PyGyMpa9XvTHrB4iqZX5oZ
2026-05-14 21:06:21 +00:00
Claude cbd4980f3e docs: add ObservableEventStore + Pull Notification to v1.09.0 changelog
Gives the reactive ObservableEventStore layer its own Quartz bullet
(it is store-agnostic, not SQLite-specific) and lists Pull Notification
(internal Pokey) under What's New.

https://claude.ai/code/session_01PyGyMpa9XvTHrB4iqZX5oZ
2026-05-14 21:00:45 +00:00
Crowdin Bot 4b927215b7 New Crowdin translations by GitHub Action 2026-05-14 20:57:40 +00:00
Vitor Pamplona 422b67faa5 Merge pull request #2903 from davotoula/feat/favorite-feeds-add-more
Favourite feeds: clearer empty state + pinned "Add more…" CTA
2026-05-14 16:55:33 -04:00
Claude e18df212c9 docs: drop bold emphasis from v1.09.0 changelog entry
https://claude.ai/code/session_01PyGyMpa9XvTHrB4iqZX5oZ
2026-05-14 20:52:53 +00:00
Claude f12bc25b98 docs: break long v1.09.0 changelog bullets into sub-points
Splits dense comma-separated changelog lines into nested sub-bullets
and short sentences for easier scanning.

https://claude.ai/code/session_01PyGyMpa9XvTHrB4iqZX5oZ
2026-05-14 20:47:51 +00:00
davotoula d0ee9f6079 i18n: translate add_client_tag_title/explainer (cs, pt-BR, sv, de)
Add translations for the new NIP-89 client tag settings strings
across cs-rCZ, pt-rBR, sv-rSE, de-rDE locales.
2026-05-14 22:47:26 +02:00
Claude 6b8467bde3 test(nests): measure end-to-end send→arrival audio latency in interop sweeps
SendTraceScenario already swept framesPerGroup and recorded per-frame
send durations + arrival wall-times, but never correlated them — so it
could verify frame delivery but not the send-side latency a listener
perceives. Record each frame's send wall-clock timestamp and derive the
true send→arrival latency (time-to-first-frame + p50/p99/min/max) per
subscriber. With framesPerGroup > 1 this surfaces the batching window
(~framesPerGroup * cadence) as the latency floor.

Add framesPerGroup=10 and =50 (the production default) sweep entries to
both the prod and local-harness suites so the batching-vs-latency
tradeoff curve is visible in one run.

https://claude.ai/code/session_01PoQupfdoKU3ryQwLwTeXeM
2026-05-14 20:46:27 +00:00
davotoula 7d4eaa4faa Code review:
- hoist star inline id, fix TalkBack alt text, add translator note
- split empty state, dedupe CTA, remember inline content
2026-05-14 22:42:08 +02:00
davotoula e73715f64a Layout changes:
pin "Add more…" button to bottom of populated favourites screen
group empty-state icon/headline/steps and add top breathing room
spread empty-state evenly and add numbered step prefixes
replace empty-state subtitle with 2-step instruction including inline star icon
hide explainer when favorite feeds exist and add "Add more…" button
2026-05-14 22:42:07 +02:00
Claude 42113544c8 docs: add v1.09.0 changelog entry
Adds the v1.09.0 "We are going crazy" release notes, including the
last 2-3 weeks of work: Desktop multi-account, scheduled posts, LAN
video casting, thread muting, configurable home tabs, NIP-9A community
rules, the geode relay module, expanded QUIC RFC coverage and
quic-interop-runner results, moq-lite nestsClient, and the May fixes.

https://claude.ai/code/session_01PyGyMpa9XvTHrB4iqZX5oZ
2026-05-14 20:27:49 +00:00
Vitor Pamplona 5f89648c54 Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2026-05-14 15:42:22 -04:00
Vitor Pamplona bb934cfc07 Fixing nests scrolling bar 2026-05-14 15:40:47 -04:00
Vitor Pamplona f2068d6ac3 Merge pull request #2901 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-14 15:24:24 -04:00
Crowdin Bot a42e759d01 New Crowdin translations by GitHub Action 2026-05-14 19:23:21 +00:00
Vitor Pamplona e609fcdd38 Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2026-05-14 15:20:26 -04:00
Vitor Pamplona 0fcbfef72c Merge pull request #2898 from vitorpamplona/claude/fix-audio-replay-bug-ztEPz
Drop stale groups on reconnect to prevent audio replay
2026-05-14 15:14:26 -04:00
Vitor Pamplona 30df95d4d6 Merge pull request #2900 from davotoula/fix/relay-broadcast-cycle
bugfix: break a-tag cycle in computeRelayListToBroadcast
2026-05-14 15:14:08 -04:00
Vitor Pamplona a474282b8e Fixes bottom bar look to match previous colors 2026-05-14 15:12:55 -04:00
David Kaspar 7ed37e818f Merge pull request #2899 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-14 21:04:39 +02:00
Crowdin Bot 961cce7f18 New Crowdin translations by GitHub Action 2026-05-14 18:54:14 +00:00
davotoula a1aa9ebb02 fix(account): break a-tag cycle in computeRelayListToBroadcast
An addressable event whose `a` tags reach itself — directly (self-mention)
or via any cycle of other in-cache events — would recurse unbounded
through `AddressHintProvider` / `EventHintProvider` branches and crash
with StackOverflowError on publish (`signAndComputeBroadcast` →
`computeRelayListToBroadcast`). The crash was reproducible on the device
when publishing a kind-1 note that referenced an article whose own event
carries a self `a` tag (e.g. YakiHonne-authored long-form posts include
their own naddr in their `a` tags).
2026-05-14 20:53:28 +02:00
davotoula 7dbb78644a i18n: translate compose/profile-UI/security/nest strings into cs/de/pt-BR/sv
Adds Czech, German, Brazilian Portuguese, and Swedish translations
for 19 new keys covering auto-create-drafts compose settings,
profile-UI section toggles, security-screen empty states and
section headers, external-resource comment scopes, and nest
host-action failure toasts.
2026-05-14 20:50:48 +02:00
Vitor Pamplona 08adffb862 Merge pull request #2897 from vitorpamplona/claude/drag-drop-corner-icon-EoFbd
Move drag gesture detection to icon Box in VideoPlayerButtonItemCard
2026-05-14 14:46:43 -04:00
Vitor Pamplona 35be1aafd4 Merge pull request #2896 from vitorpamplona/claude/enable-client-tag-security-filters-i0rRK
Invert client tag setting: add instead of disable
2026-05-14 14:45:43 -04:00
Claude 39f2b939c3 fix: drop stale relay-replayed groups on Nests listener reconnect
On every re-subscribe (listener reconnect or publisher-cycle), the
moq-lite relay re-serves its cached latest group from the first frame.
The wrapper forwarded it straight into the decoder, so in a fully-muted
room the same old clip looped once per reconnect. Track the highest
group sequence delivered by prior subscriptions and drop any group not
strictly newer, mirroring kixelated/hang's Container.Consumer.#run.

https://claude.ai/code/session_01G9h2dzkEj6Y2F1Yr2kCojp
2026-05-14 18:43:53 +00:00
Vitor Pamplona 06f3a6bc85 Merge pull request #2895 from vitorpamplona/claude/fix-stage-position-swap-4f6nI
Remove speaker reordering in stage grid to prevent UI shuffle
2026-05-14 14:43:41 -04:00
Claude 35dfa119c3 fix: restrict video player button reordering drag to the drag handle
Move the detectDragGestures pointerInput from the whole button card to
the six-dot drag handle icon so drag-and-drop reordering activates only
when the user grabs the handle.

https://claude.ai/code/session_01Jyu8dLYN7MXVNaVZE3u2M9
2026-05-14 18:41:18 +00:00
David Kaspar 467028138c Merge pull request #2892 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2026-05-14 20:37:35 +02:00
Claude 2408c43918 fix: stop reordering Nest stage members by speaking state
Members were sorted to float the current speaker to the top, so a
member jumped to the front when they started talking and slid back
~250ms after they stopped — a constant shuffle in any active room.
The speaking state is already shown in-place via the mic badge and
audio-level ring, so keep members in their stable arrival order.

https://claude.ai/code/session_01GvvNS1FRn6gGvHRC7dgEtP
2026-05-14 18:35:40 +00:00
Crowdin Bot 87b6bae6da New Crowdin translations by GitHub Action 2026-05-14 18:34:30 +00:00
Vitor Pamplona be891cb828 Merge pull request #2894 from vitorpamplona/claude/review-appimage-structure-193mv
Move packaging/appimage to desktopApp/packaging/appimage
2026-05-14 14:32:52 -04:00
Claude 1a8e349e9f feat(privacy): enable NIP-89 client tag by default and move to Compose settings
Convert the per-account `disableClientTag` toggle into a positive
`addClientTag` setting that defaults to enabled, and relocate it from the
Security Filters screen to the Compose Settings page.

https://claude.ai/code/session_01TkmBzzEz3kKnrjpbrKCpsf
2026-05-14 18:29:28 +00:00
Vitor Pamplona d8d077b4e7 Merge pull request #2893 from vitorpamplona/claude/add-nav-padding-J2XWn
Fix IME padding in HiddenWordsScreen using WindowInsets
2026-05-14 14:23:14 -04:00
Claude 3ff721b31a refactor: move packaging/appimage into desktopApp module
The AppImage build inputs (AppRun, .desktop entry, icon, and the
CI-fetched linuxdeploy binary) are consumed only by desktopApp's
createReleaseAppImage task. Co-locating them under
desktopApp/packaging/appimage/ removes the `../` path escape from the
build script and keeps all desktop packaging assets inside the module.

https://claude.ai/code/session_0137ULcfJkASmfmffFBdW8ac
2026-05-14 18:21:28 +00:00
Claude 8df02cf8f8 fix: pad Hidden Words screen for bottom nav and gesture bars
The bottom add-word text field sat behind the phone's navigation
and gesture bars. Apply the union of navigation bar and IME insets
to the bottom bar so it clears the system bars and rises with the
keyboard without a double-counted gap.

https://claude.ai/code/session_01KPkQbS9SYTigkkzYGU97Sz
2026-05-14 18:21:12 +00:00
Claude d77f2f7333 docs(onchain-zaps): record the hand-rolled Bitcoin consensus code decision
Decision: keep the hand-rolled psbt/ + taproot/ consensus layer rather than
adopting fr.acinq.bitcoin-kmp. Rationale: a deliberately small single-key-path
P2TR subset, pinned to authoritative BIP-341/350 test vectors at every layer
(sighash, tweak, witness signature bytes, addresses, tx serialization), and
consistent with the project's minimal-dependency stance.

Recorded in amethyst/plans/2026-05-14-onchain-zaps.md with the consequence
spelled out (we own correctness; revisit if scope expands past single-key-path
P2TR). The psbt/ and taproot/ packages now carry a pointer back to that
decision so a future reader doesn't reflexively swap in a library.

Doc-comment + plan-doc only; no logic change.
2026-05-14 18:16:30 +00:00
Claude 07724e410b fix(onchain-zaps): share the OTS Tor-aware explorer endpoint + server setting
The NIP-BC EsploraBackend was wired with a hardcoded mempool.space URL,
silently bypassing the user's Tor preference and ignoring the explorer
server they may have configured for OpenTimestamps.

- New BitcoinExplorerEndpoint: the single source of truth for the Bitcoin
  explorer base URL, shared by OTS verification and onchain zaps. A
  user-configured custom URL always wins; otherwise mempool.space when Tor
  is active, blockstream.info when not.
- TorAwareOkHttpOtsResolverBuilder.getAPI now delegates to it (behaviour
  unchanged for OTS).
- AppModules wires EsploraBackend through BitcoinExplorerEndpoint using the
  same OTS server setting (otsPrefs) and the same money-flavoured Tor-aware
  OkHttp client OTS uses — so onchain zaps honour Tor and the user's
  explorer choice.
- Removed the dead AccountSettings.onchainEsploraEndpoint field and
  DEFAULT_ESPLORA_ENDPOINT const: the OTS explorer setting is now the single
  configuration point. The field was never persisted or read.

Adds BitcoinExplorerEndpointTest. amethyst compiles; the new test passes.
2026-05-14 17:26:44 +00:00
Vitor Pamplona b385088c95 more lints 2026-05-14 13:22:03 -04:00
Vitor Pamplona 76c7c1575e removes incorrect test 2026-05-14 13:13:51 -04:00
Vitor Pamplona 4a71d890cb Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2026-05-14 13:13:39 -04:00
Vitor Pamplona b28f0d246d Overriding the new PiP function 2026-05-14 12:17:09 -04:00
Vitor Pamplona 5d060899c2 additional linting 2026-05-14 12:11:39 -04:00
Vitor Pamplona d60dcf9c79 update dependencies 2026-05-14 12:06:55 -04:00
Vitor Pamplona 93c6010e19 liniting 2026-05-14 12:05:17 -04:00