Skip to content

fix(daemon): adopt the v47 terminal daemon the 1.4.227 release runs - #29191

Merged
brennanb2025 merged 4 commits into
mainfrom
brennanb2025/daemon-v48-adopt-1.4.227
Oct 16, 2026
Merged

brennanb2025 merged 4 commits into
mainfrom
brennanb2025/daemon-v48-adopt-1.4.227

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 2 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​2 $\color{#cf222e}{\Huge{\mathbf{−}}}$​2 0
Prod 3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​7 $\color{#cf222e}{\Huge{\mathbf{−}}}$​6 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​1

Problem

Each terminal daemon version listens on its own socket. On launch, Orca adopts the running terminals of its own version plus the versions it lists as previous; a daemon from any other version is never found. The 1.4.227 release is built from 1.4.224 plus picks (1.4.225/1.4.226 were rolled back). To keep the terminals of people already on 1.4.225/1.4.226, it runs daemon protocol v47. Main is on v46 and doesn't list 47. So when a 1.4.227 user later updates to a release cut from main, Orca wouldn't find their running terminals and agents: it would start fresh shells, and the old processes would keep running unseen.

What changes for users

Updating from 1.4.227 to the next release from main keeps every live terminal and agent, the same as any other update.

Mechanism

  • PROTOCOL_VERSION goes 46 → 48, skipping 47, which 1.4.227 uses.
  • PREVIOUS_DAEMON_PROTOCOL_VERSIONS adds 46 and 47.
  • The repo's version-facts parser requires every previous version to be below the current one, so main can't stay at 46 and list 47.

Safe to adopt v47: main has no daemon feature gates at versions 44–46 (checked with rg across src/main and src/shared). An adopted older daemon is never used for new terminals, so v45/v46 behaviour (the macOS host helper, Linux systemd scopes) doesn't need to exist in it. Hourly users get a fresh v48 daemon, and their v46 terminals are adopted as previous.

check-daemon-protocol-crossing.mjs:

Testing

  • daemon crossing checks above
  • CI

Merge only if 1.4.227 ships with daemon v47 (draft until then).

1.4.227 is built from 1.4.224 plus picks and takes daemon protocol v47 so
it can adopt the v45 daemons 1.4.225/1.4.226 left running. Main skips to
v48 and lists 46 and 47 as previous, so updating from 1.4.227 to the next
main release keeps every live terminal.
@brennanb2025

Copy link
Copy Markdown
Contributor Author

Quick review (Codex gpt-6.1-sol, high), head 2899943: OK, no findings.

  • Versions agree everywhere they're named: protocol v48 with v46 and v47 in the adopted list, both compatibility contract files, and the macOS launchd label test.
  • No false capability assumption: v45 (macOS helper launch) and v46 (Linux terminal scopes) added no client-side >= 45/46 feature checks. So adopting 1.4.227's v47 daemon (built from 1.4.224) doesn't assume features it lacks.
  • v47 is adopted through the ordinary previous-version path; new terminals go to the v48 daemon.
  • daemon-protocol-facts and the protocol-crossing check pass against the 1.4.227 branch.

QA: the 1.4.226 → 1.4.227 side of this was checked by hand on a real install (old v43–v45 daemons adopted, terminals and agents kept). Per the release lead, no separate QA rig for this PR.

@brennanb2025
brennanb2025 marked this pull request as ready for review October 16, 2026 00:41
@coderabbitai

coderabbitai Bot commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 82a15640-0080-4663-ad21-a83bef371f73
📥 Commits

Reviewing files that changed from the base of the PR and between 0c7efcb and 2899943.

📒 Files selected for processing: 5
  • src/main/daemon/daemon-foreground-confirmation-protocol.test.ts
  • src/main/daemon/daemon-protocol-version.ts
  • src/main/daemon/macos-daemon-launchd.test.ts
  • src/shared/local-build-compatibility-contract.json
  • src/shared/local-build-compatibility-contract.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.

📝 Walkthrough

The daemon protocol version changes from 46 to 48. The previous-version list and both local build compatibility contracts add versions 47 and 48. Tests now expect protocol version 48 and the .v48 launchd label suffix. The version history comments document the skipped version 47 and the v46 Linux terminal scope behavior.

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to 28999

This change lets the v48 app adopt v47 daemon sessions through the version-specific legacy path, preserving live terminals. Source review found no concrete merge-blocking adoption issue.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 4 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly identifies the main change: adopting the v47 terminal daemon used by release 1.4.227.
Description check Passed The description is detailed and explains the problem, user impact, mechanism, and testing. It does not include several template headings, an explicit linked issue in the required format, or completed …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 4 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brennanb2025
brennanb2025 merged commit 2952027 into main Oct 16, 2026
91 of 93 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