Skip to content

feat: point the macOS app at the global manual daemon#23

Merged
baiirun merged 2 commits into
mainfrom
codex/ts-2df50e-macos-global-manual-daemon
Mar 15, 2026
Merged

feat: point the macOS app at the global manual daemon#23
baiirun merged 2 commits into
mainfrom
codex/ts-2df50e-macos-global-manual-daemon

Conversation

@baiirun

@baiirun baiirun commented Mar 15, 2026

Copy link
Copy Markdown
Owner

Summary

  • default the macOS Control Center to the global manual daemon endpoint instead of project-hashed resolution
  • align app-triggered daemon start with the same manual endpoint by forwarding an explicit listen address
  • surface daemon target reasoning and mismatch diagnostics in the app, and cover the contract with Swift and Go tests

Context

The Control Center is a globally installed operator app. In manual mode it should not require repo cwd, project hashing, or a precomputed daemon URL to connect to af spawn-backed monitoring. This change adopts the backend manual-daemon contract from #22 and keeps explicit loopback overrides working intentionally.

Refs: ts-2df50e

baiirun added 2 commits March 14, 2026 23:46
The Control Center app is intended to be globally installed, but it still derived its default daemon target from project hashing. In manual mode that made the app depend on repo context and forced operators to know a project-scoped daemon URL ahead of time.

The start path had the same mismatch. Even when the app resolved a daemon URL explicitly, app-triggered daemon start still launched using the old project-oriented flow, so the app could start one daemon and probe another.

Default the app bootstrap to the global manual daemon endpoint, preserve explicit loopback listen_addr overrides, surface the chosen daemon target reason in diagnostics, and make app-triggered starts use manual mode with an aligned listen address. Add the matching CLI daemon start flag support and regression coverage across the Swift and Go surfaces.
The PR review found one real correctness issue and a couple of low-value pieces of state in the new manual-daemon bootstrap path.

ShellBootstrap was manually parsing listen_addr overrides, which duplicated loopback validation and risked mishandling bracketed IPv6 forms. It also carried a DaemonTargetSource enum that production code never consumed, and the non-manual warning text had diverged between lifecycle and monitoring notes.

Normalize listen_addr through the existing loopback URL validator, remove the unused target-source enum, share the non-manual warning string, add an IPv6 regression test, and tighten the docs/matrix wording around the current single-global-manual-daemon contract.
@baiirun
baiirun merged commit 9ac302a into main Mar 15, 2026
4 checks passed
@baiirun
baiirun deleted the codex/ts-2df50e-macos-global-manual-daemon branch March 15, 2026 04:59
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