Extended Offline Parity Roadmap

Status: Partially delivered; reconciled against implementation on 2026-10-15. Product direction and backlog. Each selected slice requires its own Feature Development Process (FDP) record before implementation.

Goal

Deliver the closest practical offline equivalent of the forum while keeping state honest, private data private, and every unavailable or pending action understandable. “Parity” has three distinct meanings:

  1. Read parity: public information and navigation available from an explicitly bounded saved snapshot.

  2. Prepare parity: a person can prepare work locally without claiming it was sent or accepted.

  3. Action parity: a person can deliberately queue selected actions and inspect their eventual server outcome.

Full parity is not an unconditional promise. Personalized, privileged, or irreversible features need a separate security and revocation design before they can leave the online-only boundary.

Current baseline

Parity matrix

AreaTarget offline experienceCurrent stateSafety/decision gate
BoardBrowse saved threads; filter/sort; clearly show snapshot boundsPartial, deliveredBroaden coverage only within public size/privacy budget
Thread and repliesRead complete saved threads and follow saved linksPartial, deliveredMissing/deleted/hidden content must say why it is unavailable
TagsBrowse saved tags and saved resultsDeliveredKeep index derived only from the snapshot
ProfilesRead selected public summariesNot startedDeletion, revocation, visibility, and identity boundary
Search and feedsSearch/browse only saved public contentNot startedLocal index size, stale-result disclosure, unavailable global search
Tools and diagnosticsOpen a minimal offline-help/health surfacePartial, delivered; Outbox is cached separatelyNever cache operator or personalized tools
ComposeCreate, retain, edit, export, and discard local draftsPartial; capture from an open compose pageShared-device privacy and clear retention rules
ReactionsQueue eligible reactions and reconcile an outcomeThread/reply Like queue delivered; signed at click timeIdentity, idempotency, moderation semantics
Threads and repliesQueue signed content with clear status and foreground automatic deliveryInitial delivery deliveredDurable signing, conflicts, parent availability, server idempotency
Account, invitations, moderation, administrationRemain online unless separately designedIntentionally onlineAuthentication, privilege, revocation, and audit guarantees

Delivery sequence

0. Trust and convenience foundation

Outcome: A reader understands what is saved, what is missing, and how to recover without developer tools.

1. Maximum safe public read parity

Outcome: All suitable public reading tasks work from a bounded snapshot; unsupported routes say so plainly instead of failing ambiguously.

2. Local preparation

Outcome: Offline work is useful before it is networked, but never appears submitted.

3. Shared Outbox and queued low-risk actions

Outcome: Every queued user action appears in one honest, controllable Outbox rather than being hidden behind individual screens.

The Outbox is a first-class offline screen that displays all queued actions across the device: reactions, flags (if approved), replies, threads, and any future eligible action. It must show, for each item:

  • action type, target, local creation time, last attempted time, and a safe summary of what will be sent;

  • state: draft, queued, waiting for connection, sending, accepted, rejected, conflicted, cancelled, or needs attention;

  • a concise server result or recovery explanation, without claiming success before confirmation;

  • item controls appropriate to the state: open/edit draft, retry, cancel, export, or discard; and

  • filtered counts and an accessible status summary so people can identify work that still needs attention.

Delivered in the initial Outbox release:

Remaining hardening before broadening action types:

After those foundations:

4. Queued replies and threads

Outcome: A person can deliberately submit composed content after reconnection and follow its result from the Outbox.

5. Synchronization maturity

Outcome: Offline use scales without turning a browser cache into an unbounded mirror of the site.

Non-negotiable constraints

  • Never cache private/member-only pages, account data, private keys, identities, authenticated API responses, or operational data in the public offline cache.

  • Never present a local draft or queued item as a server-accepted action.

  • Preserve complete prior saved data when refresh or synchronization fails.

  • Make snapshot age, scope, and missing-content reasons visible.

  • Treat deletion, moderation, authorization changes, and account revocation as core queue/reconciliation cases, not edge cases.

How to choose the next FDP slice

Prioritize the smallest item that removes a common source of uncertainty:

  1. Verify the current snapshot lifecycle in a real browser, including a new publication triggering refresh (still unobserved in the asset-refresh record). Then finish accurate completion/retained-copy feedback and confirmed clearing on Tools → Offline Reading, protecting or warning about pending Outbox work.

  2. Add explicit unavailable-route treatment and saved-content coverage clarity.

  3. Finish draft restore/edit/export and their shared-device privacy lifecycle.

  4. Harden the existing Outbox's idempotency and target/authorization reconciliation before adding action types; the shared Outbox, signed Likes, and initial reply/thread delivery already exist.

  5. Consider broader synchronization only when those guarantees are proven.

See the main roadmap for implementation evidence links and the recommended next slice. The compact update bundle is delivered; general delta synchronization remains future work.