[gpt-6.1-sol][Codex] on behalf of shivam.
Verification for head 21ad298fe983b4076327e7d81c501cff3018a098. The attached recording shows the actual desktop IPC results with synthetic data.
Build, runtime, tests, review, and limitations
| 1 | Issue #28437 verification |
| 2 | |
| 3 | Fixed head: 21ad298fe983b4076327e7d81c501cff3018a098 |
| 4 | Investigation base: 575579d68ac4bae09f8426a345d4a3eac1e90c67 |
| 5 | Runtime host: physical corex, Linux x86_64, Xvfb, isolated DBus session and GNOME keyring. |
| 6 | All state and credentials were synthetic, in a task-specific HOME and T3CODE_HOME. |
| 7 | |
| 8 | Build: |
| 9 | Boat job j_hjw3zkarw67iiajo2ga7, stage build, machine default, VM bx_3as9r46b, attempt 1, exit 0. |
| 10 | Pinned commit 21ad298fe983b4076327e7d81c501cff3018a098. |
| 11 | Commands: vp i --frozen-lockfile; generate preview annotation CSS; apps/desktop: vp pack; build-browser-secret.mjs. |
| 12 | |
| 13 | Runtime method: |
| 14 | Official 0.1.7-nightly.20261031.3991 x86_64 AppImage, Electron 44.10.0. |
| 15 | An added bootstrap wrapper invokes window.desktopBridge.getConnectionCatalog() from the packaged renderer. |
| 16 | The baseline retains the official desktop bundle. The fixed run replaces dist-electron and the browser-secret helper with the Boat artifacts for the fixed head; the server and renderer remain the official release. |
| 17 | The packaged manifest still names the application t3code and has no productName. |
| 18 | A real Electron app named T3 Code (Beta) writes the fixture with --password-store=gnome-libsecret. |
| 19 | Its source identity decrypts that fixture; a separate t3code identity cannot decrypt it before recovery. |
| 20 | The affected catalog and IPC source files are identical between the official .3991 source and the investigation base. |
| 21 | |
| 22 | Recorded runtime results: |
| 23 | { |
| 24 | "run": "before", |
| 25 | "result": "failed", |
| 26 | "error": "Error invoking remote method 'desktop:get-connection-catalog': DesktopConnectionCatalogStoreProtectionError: Desktop connection catalog protection failed during decrypt-catalog at /tmp/t3code-28437/t3-home/userdata/connection-catalog.json.", |
| 27 | "fileRewritten": false |
| 28 | } |
| 29 | { |
| 30 | "run": "after", |
| 31 | "result": "ok", |
| 32 | "schemaVersion": 1, |
| 33 | "targets": 1, |
| 34 | "profiles": 1, |
| 35 | "credentials": 1, |
| 36 | "hasSyntheticTarget": true, |
| 37 | "fileRewritten": true |
| 38 | } |
| 39 | { |
| 40 | "run": "restart", |
| 41 | "result": "ok", |
| 42 | "schemaVersion": 1, |
| 43 | "targets": 1, |
| 44 | "profiles": 1, |
| 45 | "credentials": 1, |
| 46 | "hasSyntheticTarget": true, |
| 47 | "fileRewritten": false |
| 48 | } |
| 49 | |
| 50 | After recovery AND after restart, plain Electron under t3code also decrypted the file and found the synthetic target. |
| 51 | |
| 52 | Focused tests: |
| 53 | vp test run apps/desktop/src/app/DesktopConnectionCatalogStore.test.ts: 12 passed. |
| 54 | Before implementation, the existing test extension failed with the reported decrypt-catalog error. |
| 55 | Before the R1 fix, the empty-passphrase v11 rejection case failed by returning the catalog; after restriction to cbcV11, it passes. |
| 56 | |
| 57 | vp run check:changed: |
| 58 | pass format; pass lint; pass knip 1/2 and 2/2; pass typecheck (2 packages); pass tests (1 file, 12 tests). |
| 59 | |
| 60 | Independent review: |
| 61 | Fresh GPT-6.1 Sol / Codex review of f9fb6983b0a3848096fb62d0cce1ec5a28fd3db3. |
| 62 | R1 blocker: Chromium cookie decryption also accepted its fixed empty-passphrase fallback. |
| 63 | Resolved in 21ad298fe983b4076327e7d81c501cff3018a098 by passing only the protected Beta-derived cbcV11 key. Added a failing regression first. No other review findings. |
| 64 | The diagnostic suppression for node:crypto in the fixture requires human review under Macroscope policy. |
| 65 | |
| 66 | Limitations: |
| 67 | The reporter's NixOS/Hyprland configuration and KWallet were not run. Runtime proof uses GNOME libsecret on corex. |
| 68 | This Linux-only change does not recover the separate temporary Nightly identity addressed by Julius's PR #25892, or change macOS/Windows behavior. |
| 69 | The recording shows actual desktop IPC output in a terminal, not a visual assertion that every settings view renders. |
| 70 | Re-encryption uses the existing AppImage key. Returning to an older source build can require migrating the file back; reverting the code does not reverse the migrated ciphertext. |
| 71 | |
| 72 | Implemented: Claude Opus 5.5 / Claude Code and GPT-6.1 Sol / Codex. |
| 73 | Reviewed and verified: GPT-6.1 Sol / Codex. |