Improve inbox, thread, nav, and settings UX - #12
Merged
Conversation
- Render HTML in signal bodies (Markwon HtmlPlugin) instead of showing raw tags - Fix blank area above the header via explicit edge-to-edge on API < 35 - Add confirmation dialogs for archive/delete; move delete into an overflow menu - Fix swipe-to-reveal actions: align icons to the edge being revealed instead of always docking right, and make the reveal threshold explicit at 50% - Add Archived/All tabs to Inbox (mirrors the web app's InboxTabBar), backed by a nullable-status paging path and per-status cache clearing - Fix the hamburger menu: Accounts list was blank because it nested a LazyColumn in an unbounded Column; add Resources (new feature end-to-end); move Rules/Templates/Labels/Settings and add a profile row to the bottom - Add nav drawer badges for Inbox/Drafts/Quarantine/Resources - Settings: Theme is now the first tab, Stats is its own tab instead of a link that navigates away, sub-tab lists get a visible scroll indicator, Aliases are editable, Email & Forwarding gains compose-behavior (after-send action) and retention duration controls backed by the existing account PATCH endpoint - Labels get an edit dialog (name/color/icon/apply instructions) with delete moved inside it instead of a standalone row action
drawRoundRect is a DrawScope member function, not a top-level import.
…s, and clearer theme previews - Add a WebSocket client mirroring the web app's SharedWorker: connects to wss://<api>?token=&accountId=, pings every 25s, reconnects with backoff. Runs while the app is foregrounded — no FCM/push notification setup needed. thread:updated events refresh the thread through the existing repository into Room, so every Flow-backed list and badge already listening to that store picks up the change automatically. - Wire up the previously-unused bulk archive/delete in Inbox selection mode with a selection action bar, both behind confirmation dialogs. - Add confirmations to Clear logs and Remove forwarding address. - Make the Settings theme preview tiles show their base color swatch plus its hex value, so the difference between flavors reads as concrete rather than a subtle mood difference.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses a batch of UI/UX issues across the inbox, thread view, navigation drawer, and Settings, plus adds realtime updates.
MarkdownTextnow registers Markwon'sHtmlPlugin, so HTML signal bodies render instead of showing raw tags; the collapsed one-line signal preview strips HTML to plain text.MainActivitynow callsenableEdgeToEdge()explicitly. Without it, on API < 35 (edge-to-edge is auto-forced only on API 35+) the window wasn't edge-to-edge whileTopAppBar's own status-bar inset padding assumed it was — reserving the status bar's height twice.InboxTabBar), backed by a nullable-status paging path with per-status local cache clearing.LazyColumnnested in an unboundedColumnrenders nothing). Added a full Resources feature (API, repo, screen) that was entirely missing. Reordered the drawer with a profile row at the bottom. Added count badges for Inbox/Drafts/Quarantine/Resources.wss://<api>?token=&accountId=, 25s ping, backoff reconnect) that runs while the app is foregrounded — no FCM/push notification setup required.thread:updatedevents refresh the thread through the existing repository into Room, so every Flow-backed list and badge already listening to that store (which is how badges/lists work throughout this app — Room-backed, not page-local caches) picks up the change automatically.Notes
Test plan
Generated by Claude Code