mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
Brings the desktop DM experience up to par with a modern chat client, reusing existing commons/quartz infrastructure throughout. Composer: - Emoji picker (org.kodein.emoji, MIT) with search; unicode + NIP-30 custom-emoji ":shortcode:" autocomplete in one strip - @mention autocomplete (avatar + display name) inserting nostr:npub - Reply-quoting: composer bar + a quoted chip on reply bubbles that taps to scroll-and-highlight the original (bounce + flash) - Per-message image quality selector; send-in-progress spinner Rendering: - DM bubbles render rich text (mentions resolve to names; image/GIF/ custom-emoji inline) instead of raw text GIF search (Nostr-native, no third-party API): - Query NIP-94 kind-1063 GIF metadata from a configurable relay list (nos.lol + relay.damus.io), dedup + client-side filter, animated preview Uploads / privacy: - Encrypted DM files upload as opaque application/octet-stream by default so the media server can't learn the media type; optional "Reveal media type" toggle for strict servers. Only reencode jpg/png/webp; GIF/video/ AVIF/HEIC pass through. Actionable errors for servers that reject private uploads - Reply/glyph: add a real Reply icon to the Material Symbols subset Robustness: - Preserve Messages state (selected room, draft, attachments) across the device lock by hoisting it above the lock gate - Thread the send so the composer always clears and errors surface Adds unit tests for the GIF merge/filter and caret insertion. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>