You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cc30200
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: PLAN.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ Implementation is past the local-shell phase and currently sits at a DB-first, l
28
28
- Retry/resend UX for failed outgoing media rows in the TUI via `R` and `:retry-message`, keeping the original failed row in chat and queueing a brand-new send attempt when the local attachment file still exists.
29
29
- Chat title quality tracking with source precedence, group/contact metadata refresh, and safe placeholders so group JIDs/phone-like IDs are not treated as real names.
30
30
- Direct-chat identity hardening for WhatsApp PN/LID aliases: canonicalize mapped 1:1 chats onto a single chat ID, merge already-split alias rows/messages/drafts/history cursors in SQLite, and preserve the active conversation when a live merge remaps the selected chat.
31
-
- Large-history TUI guardrails: paired live startup renders cached chats immediately with non-blocking progress, gates protocol-backed mutations until reconnect catch-up is ready, tracks pending decrypt recoveries beyond WhatsApp's offline-complete marker, publishes one final snapshot after a quiet period or bounded timeout, summarizes replay notifications once, batches late recovered messages, avoids historical refresh storms, debounces ordinary live refreshes, stores chat-list preview text on chats, preserves focus across stale reloads, bounds rendered message windows, suppresses duplicate history requests, and keeps store/protocol callbacks asynchronous and deadline-bound.
31
+
- Large-history TUI guardrails: paired live startup renders cached chats immediately with non-blocking progress, gates protocol-backed mutations until reconnect catch-up is ready, waits for WhatsApp's offline-complete marker instead of treating a wall-clock timeout as success, keeps stalled catch-up active, tracks pending decrypt recoveries beyond the marker, publishes one final snapshot after the ordered local queue drains, summarizes replay notifications once, batches late recovered messages, tags offline-stream provenance plus pre-connection timestamps defensively, avoids historical refresh storms, commits message payloads with their messages, debounces ordinary live refreshes, stores chat-list preview text on chats, preserves focus across stale reloads, bounds rendered message windows, suppresses duplicate history requests, and keeps store/protocol callbacks asynchronous and deadline-bound.
32
32
- Terminal/UI polish for real chat data: full/compat/auto emoji rendering, stable emoji fallback for terminals such as `st`, Windows Terminal, and classic Windows console hosts, Windows console output-mode setup with a two-column guarded render width plus a final frame clamp to avoid edge-wrap frame corruption, Unix terminfo detection that enables the same last-column guard for `am+xenl` terminals such as `st`, Windows terminal-size polling plus a lower default renderer FPS for smoother ConPTY behavior, pywal-backed mode indicators with per-mode hex overrides, focused-pane borders that distinguish chat-list vs message-pane input focus, highlighted unread-count badges in the chat list, a structured keymap-driven help screen, non-redundant mode prompts, configurable help/prompt key hints, search match counts in the status bar, configurable cancellation/search-clear bindings, platform-specific terminal focus-reporting options, and native Windows runtime defaults that do not affect Linux behavior.
33
33
- Search now folds accents only for accent-free queries, so `/Jose` matches `José` while `/José` stays accent-sensitive, with matching highlight behavior in the TUI and the same rule in store-backed chat/message filtering.
34
34
- Demo/dev workflows that exercise the full local UI without a live WhatsApp session.
@@ -239,7 +239,7 @@ The large-chat and title-correctness hardening milestone is implemented:
239
239
- Canonicalize direct chats onto the mapped WhatsApp LID identity when PN/LID aliases are known, and merge split alias threads so one person cannot appear as multiple chats after history sync or mixed-device traffic.
240
240
- Refresh joined group/contact metadata after the live WhatsApp connection comes online, without blocking TUI startup.
241
241
- Display neutral group placeholders when old rows contain phone-like/JID-derived group titles.
242
-
- Debounce live DB snapshot refreshes, consolidate reconnect catch-up behind non-blocking progress and a final snapshot barrier, wait for known message recoveries with a bounded timeout, summarize catch-up notifications once, and bound message render windows for chats with hundreds of loaded messages.
242
+
- Debounce live DB snapshot refreshes, consolidate reconnect catch-up behind non-blocking progress and a final snapshot barrier, require WhatsApp's ordered offline-complete marker before readiness, treat pre-marker inactivity only as a stall warning, wait for known post-marker message recoveries with a bounded fallback, summarize catch-up notifications once, and bound message render windows for chats with hundreds of loaded messages.
243
243
244
244
The TUI stability and modal polish milestone is implemented:
0 commit comments