Skip to content

fix(desktop): recover backend lifecycle and retain admitted model selection - #87

Merged
Sailfishc merged 73 commits into
areal-project:mainfrom
Sailfishc:codex/gui-history-settled-preflight
Oct 19, 2026
Merged

Sailfishc merged 73 commits into
areal-project:mainfrom
Sailfishc:codex/gui-history-settled-preflight

Conversation

@Sailfishc

@Sailfishc Sailfishc commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes desktop exit/recovery and remembers the last admitted main-conversation model and reasoning effort for new conversations. Normal connected status no longer occupies the header; actionable stopped, uncertain and update states remain visible.

The lifecycle repair checks original Desktop/Core identity, generation and cleanup before retiring a partially stopped legacy manager. Explicit interface-only exit keeps work running; stop-and-exit waits for lifecycle settlement. Interrupted deployment updates remain inspectable and can resume without replaying uncertain operations.

Core captures model preference in the same persisted snapshot as explicit user submission receipts. Duplicate receipt reads, queue execution, Side/child/background work, unsent edits and history navigation cannot advance it. The desktop backend serializes cross-project updates and persists the accepted preference. Model availability/effort fallback is visible, while explicit Profile models retain priority. State format is now 15 and reads formats 1–15, including backward compatibility with 1–14; rollback requires a pre-upgrade backup. API/schema and paired user documentation are updated.

Prepares CLI 0.1.6 and GUI 0.1.11. CLI remains ad-hoc signed on macOS arm64 with a Linux x86_64 bundle; GUI uses Developer ID/notarization. Final release tags will be created only from the merged upstream main commit, after local package/native/provider/upgrade acceptance. No previously published tag or asset is replaced.

The PR includes the prior Core resource-alias signing repair. Fresh signing runs check Core hashes before Apple upload. This release will use a new signing directory and final hash verification; legacy interrupted phase=signed resume hardening remains a recorded follow-up.

Validation so far: submitted changes first, then format checks, both SDK suites and script tests passed (98 Python tests, 2 Linux-container-only skips). Local GUI/type checks and renderer build passed (86 tests passed, 3 opt-in native checks skipped). The first sandboxed GUI attempt failed on localhost listen EPERM; unchanged tests passed with host execution permission. Initial Linux CI exposed five tests still expecting format 14; the format assertions now require 15, and legacy migration adds a format-14 input while keeping unknown-role and version-13 Side refusal checks unchanged. Original failures are retained; A subsequent Verify run exposed a Store-owner handoff failure during plugin reopen and ENOENT during launcher-killed status. The lifecycle fix at 8e6d2b2 adds bounded exclusive-lock handoff before any session cleanup, and reports only known control-endpoint disconnects as unavailable without inventing a clean-stop receipt. Active/unreachable owners cannot be replaced by ensure; protocol/permission/timeout errors remain failures. A controlled pre-exec inherited-FD negative test fails on the prior immediate-lock path and passes after restoration; active-owner preservation and all 19 local-service unit/native-process checks pass. The original Linux CI did not retain the lock-holder PID, so this mechanism is not claimed as its uniquely established cause. Full CI and the original integration paths are being rerun. After CI/review, this PR is authorized to leave draft and merge; final Mac packaging/acceptance happens from merged main. No administrative protection override or force push will be used.

Mechanism scope: lifecycle ownership/recovery and explicit user model configuration, not benchmark-specific execution policy or default resource budgets. These regressions establish correctness, not aggregate Agent capability or performance gains. No new design documents, ADRs, prototypes, private configuration, credentials or private test evidence are included.

Exact head 8e6d2b26d28c3d8499abb79ab92e6d68275228c0 completed all applicable CI successfully: Verify, GUI checks, both release bundles/installations, and provider fixtures. Linux portable logged 975 Rust tests passed and14 ignored; macOS native reran the original shared-service crash path successfully. Local exact-head format/SDK/script checks and native shared-service fault smoke also pass.

成易 added 30 commits October 13, 2026 13:01
Add immutable local package snapshots, scoped activation, and onboarding through ordinary Core Turns. Share management and receipt recovery across RPC, CLI, and GUI. Add integration and Electron acceptance flows and document the staged compatibility plan.
Add pinned Git/npm sources, trusted MCP connections and OAuth, Core-owned App execution, isolated desktop extensions, CLI management and the Codex plugin wire adapter. Preserve original Connector IDs and isolate credentials per mapping.

Record real GitHub and native Electron acceptance alongside explicit protocol, subprocess and platform gaps.
Drive modern MCP continuations through owned Core calls and bounded immutable
file snapshots. Bind auth to secure host references, preserve scope overrides,
and reject exact sent tokens without deleting concurrent refreshes.

Retain sparse marketplace selections, enforce authentication timing, release
App subscriptions, and preserve auth owners through GUI reconnects. Record
actual native and service acceptance separately from failed process gates.
Bind hook execution to reviewed definitions and Core session ownership. Support command and MCP handlers, lifecycle controls, safe background results, and explicit desktop review.

Use epoch-bound task scopes for finite hook write-group admission. Keep ordinary and cross-task exclusion, per-process grants, and UNKNOWN cleanup boundaries.

Allow owner-bound human waits and uploads without blocking management receipts. Reserve response capacity and stage validated desktop schemas before publication.
Merge codex/codex-plugins-p1-p3 while preserving Remote, schedules,
Browser workspace tabs, provider recovery and primary dependency upgrades.
Resolve Composer/App wiring, RPC dispatch and MCP cleanup contracts.
Align setup admission and existing fixtures with the combined contracts;
observe the queued disk write in the cancelled-waiter regression.

Validation: workspace build; GUI typecheck/build/public verify; schema check;
plugin/MCP and Engine integration regressions; Engine library regressions;
source Electron/Core plugin installation, setup receipt recovery and lifecycle.
Complete actual Core/Runtime hooks matrix, public docs and Rust formatting passed. No push or release.
Move remote preparation outside refresh locks and publish one installation snapshot. Cache validated component parsing while retaining metadata and digest checks. Cover peer Core hook cancellation, blocked downloads, cleanup state retention and unchanged-package reads; record native acceptance evidence.
Preserve child identity during compaction and map hook roles and matchers to admitted Profiles. Keep Profile plugin opt-in disabled by default and bounded by parent authority and independent read-only consent.

Validate the real GitHub connection lifecycle and all twelve command input types against pinned upstream schemas. Record native lifecycle, hook isolation, protocol and admission evidence with paired contract documentation.
Merge codex/plugins-acceptance while preserving folded text submission and recorded compaction budgets. Initialize ordinary desktop state only for configured Profiles or plugin stores, and retain typed plugin history without replay.

Validate workspace and GUI builds, GUI types and public contracts, desktop schemas, 50 focused Core tests, and isolated Composer and plugin GUI smoke paths.
Add plugin archive imports, a unified plugin center, and bundled Skill Creator resources. Raise registered Skill capacity to 512.

Refine scheduled task setup and receipt handling, trace startup phases, prefetch subscription status, and collapse long sent messages through a shared presentation component.

Update bilingual contracts, design guidance, and smoke coverage for the affected desktop flows.
Refine model and plugin settings, shared controls, conversation traces,
tool details, and fork dialogs. Expose the effective default profile for
new chats and restore cached OAuth credentials without starting consent.

Update GUI smoke coverage and portable authentication regressions.
Validation: GUI typecheck; verify 33 passed, 3 skipped; portable_auth
9 passed; documentation and whitespace checks passed.
成易 added 20 commits October 16, 2026 23:59
Persist generation-bound lifecycle receipts before cancellation and
shutdown, and reconcile original outcomes without replaying uncertain
operations. Separate historical UNKNOWN outcomes from live resource
settlement and require explicit backend updates.

Preserve tasks, history, queued input, and drafts across cancellation,
shutdown, reconnect, and update. Bind turn interruption to its exact
project and turn, and keep recovery checks read-only.

Validation: Core lifecycle 17/17, client recovery 53/53, public verify
82 passed with 3 optional skips, plus real Electron lifecycle,
pause/continue, and repeated reopen acceptance.
@Sailfishc Sailfishc changed the title chore(release): prepare CLI 0.1.5 and GUI 0.1.10 fix(release): preserve Core signatures in GUI 0.1.10 Oct 19, 2026
@Sailfishc Sailfishc changed the title fix(release): preserve Core signatures in GUI 0.1.10 fix(desktop): recover backend lifecycle and retain admitted model selection Oct 19, 2026
@Sailfishc
Sailfishc marked this pull request as ready for review October 19, 2026 05:11
@Sailfishc
Sailfishc merged commit e272f6d into areal-project:main Oct 19, 2026
14 checks passed
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.

1 participant