Skip to content

feat: ship headless follow-up capabilities - #38

Merged
wolfiesch merged 6 commits into
mainfrom
codex/v0.1.23-followups-rollup
Jul 18, 2026
Merged

feat: ship headless follow-up capabilities#38
wolfiesch merged 6 commits into
mainfrom
codex/v0.1.23-followups-rollup

Conversation

@wolfiesch

Copy link
Copy Markdown
Collaborator

Summary

  • add conflict-safe file editing with revision-pinned saves
  • add the host capability explorer without catalog truncation
  • restore recent sessions from an encrypted offline projection cache
  • skip cache writes when the desktop shell reports caching unavailable

Rolls the completed work from #35, #36, and #34 onto main without carrying the old feature branch history.

Verification

  • pnpm check
  • web: 919 tests passed
  • client: 168 tests passed
  • protocol: 26 tests passed
  • affected desktop cache/lifecycle tests: 34 passed
  • focused cache-unavailable regression: passed

The broad desktop suite will run in CI on the repository-required Node 24 runtime.

Copilot AI review requested due to automatic review settings July 18, 2026 07:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR rolls up the “headless follow-up” work across protocol, client, web, and desktop layers by adding revision-gated file writes, a full host capability explorer, and an encrypted offline projection cache (including IPC plumbing) to improve offline startup and reduce data-loss/conflict risk.

Changes:

  • Adds projection cache IPC channels with strict payload validation and size bounds, plus encrypted desktop persistence and preload/IPC wiring.
  • Introduces revision-pinned file editing/saving in the web Files pane, including conflict handling and action availability gating.
  • Adds a Settings “Host capabilities” explorer that renders the full decoded catalog with safe metadata hygiene and clearer waiting/unavailable states.

Reviewed changes

Copilot reviewed 34 out of 34 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/protocol/test/desktop-ipc.test.ts Adds boundary tests for projection-cache IPC payload validation and size/version constraints.
packages/protocol/src/desktop-ipc.ts Defines projection-cache IPC request/response types, channels, and strict decoders.
packages/client/test/projection.test.ts Adjusts projection cache save/drain expectations during dispose/flush.
packages/client/src/projection.ts Ensures coalesced cache saves still drain even after disposal begins.
packages/client/src/projection-cache.ts Centralizes MAX_PROJECTION_CACHE_BYTES via protocol export.
packages/client/src/desktop-runtime.ts Awaits projection hydration earlier in desktop startup sequence.
packages/client/src/desktop-runtime-contracts.ts Extends shell port contract with projection cache load/save.
apps/web/test/panes-live.test.ts Adds/extends tests for revision-gated file writes in live inspector flows.
apps/web/test/panes-files.test.ts Adds inspector-store draft/edit/save/conflict tests and controller write plumbing.
apps/web/test/live-settings-screen.test.ts Tests catalog explorer inputs across waiting/unavailable/ready settings states.
apps/web/test/live-composer.test.ts Tests hydration from shell projection cache and skipping saves when unavailable.
apps/web/test/catalog-explorer.test.ts New tests for catalog explorer grouping, hygiene, and no truncation.
apps/web/src/platform/live-workspace.ts Preserves cached host grouping via placeholder host rows when metadata is absent.
apps/web/src/platform/desktop-runtime.ts Wires shell projection cache into controller via a ProjectionCacheStore adapter.
apps/web/src/features/settings/UnavailableSettingsWorkspace.tsx Renders the catalog explorer in unavailable settings states when host identity is known.
apps/web/src/features/settings/SettingsWorkspace.tsx Renders the catalog explorer in the ready settings workspace.
apps/web/src/features/settings/settings-presentation.ts Implements catalog explorer state derivation with safe metadata filtering and grouping.
apps/web/src/features/settings/settings-presentation.test.ts Adds tests for catalog explorer state derivation and state labeling.
apps/web/src/features/settings/LiveSettingsScreen.tsx Threads derived catalog explorer input into settings workspaces.
apps/web/src/features/settings/live-screen-model.ts Tracks catalog frame in ready state and derives explorer input for non-ready states.
apps/web/src/features/settings/CatalogExplorerBlock.tsx New UI component to render catalog explorer groups/entries and non-ready states.
apps/web/src/features/session-runtime/live-runtime.ts Tightens session attach behavior to require authoritative target-host binding.
apps/web/src/features/panes/model.ts Adds fileWrite action availability to the inspector action model.
apps/web/src/features/panes/live-inspector.ts Implements files.write availability gating and revision-pinned preview/save handling.
apps/web/src/features/panes/inspector-store.ts Adds file drafts, edit/save/discard actions, and resolves save outcomes into UI state.
apps/web/src/features/panes/fixtures.ts Updates fixture controller to support draft/save outcomes in sample mode.
apps/web/src/features/panes/FilesPane.tsx Adds editor UI with Save/Discard and Ctrl/Cmd+S support plus conflict/error messaging.
apps/desktop/test/stores-lifecycle.test.ts Adds tests for encrypted projection cache store behavior and concurrency serialization.
apps/desktop/test/lifecycle-runtime.test.ts Ensures projection cache is created once post-readiness and reused across windows.
apps/desktop/test/ipc-lifecycle.test.ts Adds IPC routing proof for projection cache load/save via the trusted runtime service.
apps/desktop/src/stores.ts Adds ElectronProjectionCacheStore with safeStorage encryption + bounded ciphertext validation.
apps/desktop/src/preload.ts Exposes projection cache IPC bridge methods with decode validation.
apps/desktop/src/lifecycle.ts Instantiates and injects a single projection cache runtime into IPC runtimes.
apps/desktop/src/ipc.ts Adds IPC handlers for projection cache load/save with strict request/response decoding.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/web/src/features/panes/fixtures.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e307f9dc53

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/web/src/features/panes/inspector-store.ts
@wolfiesch
wolfiesch merged commit 76fec72 into main Jul 18, 2026
4 checks passed
@wolfiesch
wolfiesch deleted the codex/v0.1.23-followups-rollup branch July 18, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants