Skip to content

Commit cc30200

Browse files
committed
fix reconnect catch-up completion
1 parent 7079538 commit cc30200

12 files changed

Lines changed: 542 additions & 79 deletions

File tree

‎PLAN.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Implementation is past the local-shell phase and currently sits at a DB-first, l
2828
- 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.
2929
- 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.
3030
- 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.
3232
- 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.
3333
- 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.
3434
- 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:
239239
- 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.
240240
- Refresh joined group/contact metadata after the live WhatsApp connection comes online, without blocking TUI startup.
241241
- 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.
243243

244244
The TUI stability and modal polish milestone is implemented:
245245

0 commit comments

Comments
 (0)