Skip to content

Desktop connection lifecycle host requirements

These package requirements refine the root FCL-* contract. They track desktop host implementation and macOS verification without duplicating portable product requirements.

ID Requirement Implementation Verification Documentation Evidence
DCL-001 DesktopRoot hosts one shared multi-runtime lifecycle controller and maps every panel/tab backend and status by connection ID. In progress Unverified Pending Current desktop has a local runtime map; shared controller consumption is planned in task 020.
DCL-002 Open, Cancel, Close, Retry, editor validation, and host disposal enforce operation authority so late completion cannot reopen or replace state. Not started Unverified Pending Current useOpenConnections writes completion after awaits without generation checks.
DCL-003 Focused Sessions connection and active Chat tab follow FCL-022, including deterministic enabled-follow synchronization and disabled independent-panel behavior. In progress Unverified Pending Both identities exist; tab activation does not currently focus another connection.
DCL-004 Several runtimes remain independently open, recover, fail, display connection-level activity, and close without affecting other runtimes or workspaces. In progress Unverified Pending Several manual runtimes and connection-labeled notifications exist; failure/recovery isolation is incomplete.
DCL-005 Connection rows, Sessions, and owning Chat panes converge on normalized runtime status after opening and relevant later transport/backend failure. Not started Unverified Pending Open currently reflects one readiness request and later failures do not update the runtime map.
DCL-006 New/Edit window submission has explicit Save/Open semantics, preserves stable identity, rejects stale window events, and validates a candidate without destroying an old runtime. Not started Unverified Pending Current Save emits a manual record then immediately opens it without candidate authority.
DCL-007 Persistent tabs restore by connection/session, remain through runtime closure, and recover cache/draft state after bounded warm-pane unmount/remount. In progress Unverified Pending Tabs/cache remount exists; complete attachment draft restoration does not.
DCL-008 Focused Sessions remains useful offline with honest cache freshness, retained failed-refresh data, local filtering/open-tab behavior, and gated server actions. In progress Unverified Pending Current Sessions shows online/offline and cache time with partial action gating.
DCL-009 Cached Chat remains readable and its text composer remains editable offline while Send/server actions are reconnect-gated. In progress Unverified Pending Cached transcript works; composer is currently explicitly read-only offline.
DCL-010 Complete desktop drafts, including attachment and recovery state, survive pane unmount, application restart, and ordinary cache pressure with visible persistence failure. Not started Unverified Pending Text is debounced; attachments are component-local and only three recent panes remain mounted.
DCL-011 Desktop uncertain-send state persists submitted draft revision and idempotent Check status/Retry safely behavior without clearing newer edits. Not started Unverified Pending Current send failure shows an alert without durable idempotent recovery.
DCL-012 Close tab, Close runtime, cache clear, draft discard, Delete connection, and Clear all use distinct scopes and confirmations naming tabs/caches/drafts affected. In progress Unverified Pending Runtime/tab handlers differ correctly, but delete/clear confirmations omit some local consequences.
DCL-013 Native connection/editor/popover callbacks carry owner identity and cannot commit after cancel, supersession, owner change, or host disposal. In progress Unverified Pending Native coordinator patterns exist; connection-editor lifecycle authority is not verified.
DCL-014 Connection-level displays from every open runtime remain labeled/scoped and never focus a connection or tab without explicit user navigation. Implemented Unverified Pending DesktopGlobalDisplayLayer aggregates open runtimes with connection names; existing tests cover notification isolation.
DCL-015 Stable accessible production selectors and macOS tests cover connection rows/actions, editor, focus/tab policy, offline Chat, and complete drafts. Not started Unverified Pending Session/transcript selectors exist; connection/tab/editor lifecycle selectors and XCUITests do not.
DCL-016 The initial desktop host supports manual direct HTTP records and does not present bridge, cloud, or Bonjour as supported until their package UX and native verification are specified. Implemented Unverified Pending Current editor/runtime hook accept only manual records.

Root requirement mapping

  • Controller, attempts, adapters, and status: FCL-001FCL-008
  • Focus, tabs, navigation, cache, and offline state: FCL-009FCL-015, FCL-022
  • Drafts and deletion: FCL-016FCL-020
  • Accessibility/native verification: FCL-021

Primary work tracking:

  • tasks/20260823-frontend-connection-lifecycle/000-main.md