Private messaging usability master checklist

Deliver the improvements in the messaging proposal through four independently usable releases: find and start conversations, read and reply comfortably, retrieve older history, and track unread conversations. Use this checklist to track coverage across the releases and the Feature Development Process (source unavailable) to plan and implement each release.

This is a coordination checklist. Individual FDP requirements, development plans, and implementation approvals remain separate. Cycles 1–5 are complete on main; historical-message synchronization is also complete and merged into local main at ed36a069, including the requested removal of global sync messaging. Check items off when their acceptance criteria are verified, and link the relevant FDP artifacts and verification evidence here as each cycle progresses.

Release sequence

CycleUser outcomeStarting pointStatus
1Find a conversation or start one from MessagesPlan · Implementation and verificationComplete
2Read and reply comfortably without reloadingPlan · Implementation and verificationComplete; merged into local main with Cycle 3
3Retrieve messages older than the initial history windowPlan · Implementation and verification; Step 1 skippedComplete; merged into local main at 95ac3114; not pushed
4See reliable unread indicators and countsPlan · ImplementationComplete; merged into local main at 34b48f40; not pushed
5Read past unavailable messages without repeated large error widgetsPlan · ImplementationComplete with Options B and C combined; merged into main at 68a5a3fd
6Restore recoverable history on a newly approved device automaticallyStep 1 assessment · Step 2 description · Step 3 plan · Storage findingsImplemented; verification · rollout; merged into local main at ed36a069; not pushed or deployed

Follow this order and reuse the components and contracts established in earlier cycles. Unread indicators are deliberately deferred from cycle 1 to cycle 4; older-history retrieval is deferred to cycle 3. Keep each FDP slice within a day or eight development stages; split an oversized cycle into usable releases during planning. Add links only when the corresponding artifacts exist.

Baseline and shared requirements

The message store (source unavailable) limits each legacy mailbox and initial conversation window to the newest 25 messages. Cycle 3 adds bounded Load older retrieval for conversation history. Message bodies are encrypted on the server, and the reader (source unavailable) decrypts and verifies them in the browser. Cycle 4 adds separate private baseline/seen metadata without changing message envelopes or columns.

Cycle 1 Find and start conversations

Outcome: from normal navigation, a user can find an existing conversation or choose a recipient and send their first message using the existing composer.

Evidence: Cycle 1 implementation summary. Shared requirements above remain continuing obligations for later cycles.

Completion: users can reach every conversation through the list and start a new one. No unread badge is promised in this release.

Cycle 2 Read and reply comfortably

Outcome: opening a conversation presents recent messages clearly and makes replying convenient, with recoverable failures and no successful-send reload.

Evidence: Cycle 2 implementation summary. Browser checks include constrained mobile viewports and zoom; physical-device keyboard testing remains a manual follow-up.

Completion: users can read and reply through the normal conversation flow without a successful-send reload, and can understand and recover from relevant failures.

Cycle 3 Retrieve older history

Outcome: users can read beyond the newest 25 messages without losing their place.

Evidence: Cycle 3 implementation summary. Isolated browser checks cover real encrypted history, delayed decryption/navigation, mobile/zoom, retry/restart, and concurrent sends. Physical-device keyboard testing remains a manual follow-up.

Completion: all stored history in the authorized conversation's opening snapshot is reachable with bounded requests and stable reading position. Refreshing or an explicit recovery restart opens a fresh snapshot; this is not live polling.

Cycle 4 Track unread conversations

Outcome: conversation indicators and the navigation count consistently tell the viewer what needs attention.

Evidence: Cycle 4 implementation summary and rollout/rollback notes. Counts track conversations; presented current windows acknowledge their received boundary, including displayed failures, without claiming verification. State is shared per username and refreshed on navigation/visible return; existing history starts seen once. Two-device automation passed; physical mobile keyboards and other browser engines remain manual follow-ups.

Completion: indicators and counts agree with the approved semantics and remain correct across refreshes and supported browser or device transitions.

Cycle 5 Compact unavailable messages

Outcome: unavailable history stays compact, with expandable per-message details and manual retry; signature warnings and recoverable loading failures remain visible.

Evidence: implementation summary and rollout/rollback notes. Grouping preserves sender/date boundaries, original message identities, and Cycle 4's received-window semantics.

Historical access follow-up

Final acceptance

Next action: review Cycle 6's implementation and evidence and operational guide. Cycles 1–6 are merged into local main. Cycle 6 has not been pushed or deployed; its guide now includes a shareable explanation of how recovery works.