Repository navigation
feat!: rename oab-instance-mcp to oab-computer (breaking, 0.12.0) - #117
Merged
Merged
Conversation
Renames every user-visible technical name; the product name stays OpenAB Computer. No compatibility layer. Base 1eaa6ef. - executable/product/target oab-computer (Sources/oab-computer), app oab-computer.app - bundle id and LaunchAgent dev.openab.computer; pw-mcp agent dev.openab.computer.pw-mcp - Linux units oab-computer.service, oab-computer-pw-mcp.service - dirs ~/.local|~/.config|~/Library/Logs|Application Support|XDG state /oab-computer - Keychain service dev.openab.instance-mcp.grant -> dev.openab.computer.grant - env OAB_INSTANCE_MCP_* -> OAB_COMPUTER_*; pkg id dev.openab.computer.installer; pkg payload dir Library/Application Support/OpenAB/computer; release assets oab-computer-* - kept: InstanceMCPCore module and tests, the copy-source token path, issue links, history - new: warn-only detection of the old agent in both installers (never stops it) - new: scripts/test-name-consistency.sh, scripts/test-legacy-agent.sh (wired into CI) - README "Upgrading from 0.11 or earlier"; banners on dated ADR/requirements docs Verification (macmini, macOS 27.2.1, Xcode 26.3; Linux parts in OrbStack containers): - swift build -c release: ok; swift test: 507 tests, 0 failures, 1 skipped (the default-port test skips because the installed agent holds 8795) - release binary has no OAB_COMPUTER_NO_TAILNET_EXPOSURE string (0 matches) - cargo build/test on macOS fails to link (Linux-only crate), identical on main; in rust:1-bookworm: cargo build ok, cargo test 86 passed 0 failed 1 ignored, fmt ok, clippy ok, smoke.sh 71 passed 0 failed - scripts/test-name-consistency.sh: all checks passed; negative mutation check fails as intended - scripts/test-legacy-agent.sh: all checks passed (macOS stub launchctl, Linux stub systemctl) - scripts/test-pw-mcp-check.sh: stub tests ok - scripts/test-install-linux.sh: ok in debian:bookworm as non-root (units diff, token); on macOS it fails only on /private realpath and stat -c - scripts/test-packaging.sh: runs through the unsigned-app gate, the token-copy cases and bad tailscale cases, then fails at pkgbuild (BundleIsRelocatable) on macOS 27, identical on main - shellcheck (docker) clean on the touched and new scripts; workflows parse as YAML
…onal pw unit - Cargo package renamed to oab-computer, so cargo build produces target/release/oab-computer; ci.yml, release.yml, smoke.sh, docs/linux-setup.md follow; name-consistency test checks it - install-linux.sh: skip the daemon ok line when an old unit was found (it would read the old daemon) - README: Linux removal marks oab-pw-mcp.service optional and restarts the new unit - docs/requirements/reverse-attach.md: tailnet IP replaced by a placeholder - test stubs: systemctl is-active/is-enabled answer no; legacy test asserts the daemon line Ran on macmini: name-consistency, legacy-agent, pw-mcp-check pass; docker rust:1-bookworm: cargo build ok, cargo test 86 passed 0 failed 1 ignored, smoke.sh 71 passed 0 failed; debian install/consistency/legacy tests (see results.md). Swift sources untouched.
…nit, docs wording) Ran: test-install-linux, test-legacy-agent, test-name-consistency in debian:bookworm as non-root: all passed. test-pw-mcp-check ok. Docs and shell comments only; no Swift or Rust change.
…yable, scrub private host names) Ran on macmini: scripts/test-name-consistency.sh all passed; scripts/test-legacy-agent.sh all passed; swift build -c release ok (Swift sources unchanged since 070b103: 506 passed/0 failed/1 skipped); cargo test in rust:1-bookworm: 86 passed, 0 failed, 1 ignored (only seat.rs comments changed).
… comment wording) Ran on macmini: test-name-consistency all passed, test-legacy-agent all passed, swift build -c release ok (comments only; Swift tests unchanged 506 passed/0 failed/1 skipped).
Replaced private host names, tailnet name, real tailnet/LAN IPs and personal logins in docs and test fixtures with placeholders; added scripts/check-no-private-identifiers.sh (+allowlist, negative test, CI job). Ran on macmini: swift build -c release ok; swift test 507 executed, 1 skipped, 0 failures; cargo build + cargo test (rust:1-bookworm) 86 passed, 0 failed, 1 ignored; test-name-consistency, test-legacy-agent, test-pw-mcp-check, test-check-no-private-identifiers all passed; check-no-private-identifiers ok on 163 files.
Ran on macmini after git add: check ok, test-check-no-private-identifiers all passed.
…grade step, cosmetics Review pass: install-linux.sh copies ~/.config/oab-instance-mcp/token (source only, mode 600) when the new token is absent; tests for copy, keep and generate. README: re-run the main installer after the Playwright agent, tccutil for Full Disk Access, Linux token note. Legacy warning no longer claims the old unit port is --port. Poc README title and CI artifact renamed. Ran on macmini: test-legacy-agent, test-name-consistency pass; in debian:bookworm non-root: test-install-linux units ok, test-legacy-agent and test-name-consistency pass; shellcheck clean. No Swift/Rust change.
…, extend legacy warning Fix pass for review of c8fff9c. README upgrade step 3 and docs/releasing.md now say both installers copy the old token (Linux whenever the new token is absent); README notes Linux state is not migrated; macOS legacy warning notes /healthz can be answered by the old agent; legacy test asserts token mode 600. Ran on macmini: test-legacy-agent all passed, test-name-consistency all passed, bash -n install-prebuilt.sh ok. No Swift/Rust change.
… token copy Docs-only pass plus one consistency check. Ran on macmini: test-name-consistency all passed, check-no-private-identifiers passed. No code change; Swift/Rust/other script tests not rerun.
…st, historical row) Ran on macmini: test-name-consistency all passed, test-legacy-agent all passed, check-no-private-identifiers passed. No Swift/Rust change.
macOS copies the 0.11 token only when it creates the config dir; Linux whenever the new token is missing. Docs-only, no code changed; earlier test results unchanged.
Docs only (releasing.md item 4, README upgrade step 3). Rules checked against install-prebuilt.sh 142-170 and install-linux.sh 106-111. Ran: check-no-private-identifiers.sh ok; test-name-consistency.sh all checks passed; markdownlint-cli2 on docs: only MD060 from a newer lint version than CI pins, none in changed lines.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Renames the technical names of the product from
oab-instance-mcptooab-computeras one breaking change for 0.12.0. Nothing of 0.12.0 is released (latest release: v0.11.0). The product name stays OpenAB Computer and the app still shows that name in Finder, System Settings and the menu bar. There is no compatibility layer: no symlinks, no fallbacks that read old paths, no migration of grants, switchboard config, logs or audit files, no dual Keychain lookup. Base:1eaa6ef.Auth, tools, relaunch and wizard are unchanged (names and paths only). The token copy exists on macOS as before and now also on Linux (see Upgrade note).
Name map
oab-computer(Sources/oab-computer/)oab-instance-mcp.app->oab-computer.app(display name still "OpenAB Computer")dev.openab.instance-mcp->dev.openab.computerdev.openab.instance-mcp.pw-mcp->dev.openab.computer.pw-mcpoab-instance-mcp.service->oab-computer.service;oab-pw-mcp.service->oab-computer-pw-mcp.service~/.local/oab-instance-mcp->~/.local/oab-computer~/.config/oab-instance-mcp->~/.config/oab-computer~/Library/Application Support/oab-instance-mcp->.../oab-computer(grants.json, audit.jsonl)~/Library/Logs/oab-instance-mcp->~/Library/Logs/oab-computer$XDG_STATE_HOME/oab-instance-mcp->$XDG_STATE_HOME/oab-computeroab-instance-mcp.json->oab-computer.jsonOAB_INSTANCE_MCP_*->OAB_COMPUTER_*(the DEBUG-only overrides are still absent from the release binary, checked)dev.openab.instance-mcp.installer->dev.openab.computer.installer;Library/Application Support/OpenAB/instance-mcp/->.../OpenAB/computer/oab-computer-<v>-universal.pkg,-universal.app.zip,-linux-{arm64,amd64}.tar.gz,.sha256,SHA256SUMSserverInfo.name, upstreamclientInfo.name,sys_infoagent name:oab-computer(Linux:oab-computer-rpi)release.yml,ci.yml,images/toolchain/Dockerfile(OCI source label nowopenabdev/openab-computer), all docsKeychain services changed
dev.openab.instance-mcp.grant->dev.openab.computer.grant(KeychainSecretStore.service). Attach secrets saved under the old service are not found, so grants must be lent again.oab-instance-mcp attach grant->oab-computer attach grant.Kept names (possible follow-up)
InstanceMCPCore,InstanceMCPCoreTestsand their paths, internal type names (not user-visible).MCP_*env vars on Linux,oab-seat.service, thepw-mcp*file names,dev.openab.permission-probe, the legacyoab-mac-agentanddev.openab.mac-agentnames.~/.config/oab-instance-mcp/token(the agreed automatic token copy; the old path is its source only) and its test fixtures.New
dev.openab.instance-mcp(and.pw-mcp) loaded or its plist present. Linux:oab-instance-mcp.service/oab-pw-mcp.serviceactive or enabled. The installer prints that it will fight the new agent for port 8795 and the exact stop and remove commands. It never stops, removes or changes the old agent (onlylaunchctl printandsystemctl is-active|is-enabledare called).scripts/test-name-consistency.sh: runs the real installers in a fake HOME and parses the plist, the units, the pkg payload layout (withoutpkgbuild), the postinstall, the workflows and the Swift constants. It fails if an installer references a binary, path, label or asset the packaging does not produce. Mutation-checked.scripts/test-legacy-agent.sh: the old-agent warning with stublaunchctl/systemctl(any mutating call exits 99 and fails the test; old plist and unit files must stay byte-identical).ci.yml; a Swift test asserts the derived names.Breaking change and upgrade
See the README section "Upgrading from 0.11 or earlier". In short: reinstall with the new installer; on macOS grant Screen Recording and Accessibility again because the bundle id changed; the bearer token is copied automatically from
~/.config/oab-instance-mcp/tokento~/.config/oab-computer/token(mode 600, old file left in place, never overwrites an existing new token); macOS copies only when the installer or app creates~/.config/oab-computer(if the directory already exists nothing is copied and a new token is generated when the token file is missing); Linux copies whenever the new token is missing and generates one only when neither file has one. A user who never had an old token gets a new one and must update clients. Switchboard settings, saved grants and their Keychain secrets, logs and audit files are not migrated. Remove the old LaunchAgent or unit (commands in the README).Tests
Run on a Mac mini (macOS 27.2.1, Xcode 26.3); Linux parts in containers on the same host.
swift build -c release: ok.swift test: 507 tests, 0 failures, 1 skipped (the default-port test skips because the installed agent holds 8795).OAB_COMPUTER_NO_TAILNET_EXPOSUREstring.poc/reverse-attach-linux(rust:1-bookworm):cargo buildok,cargo test86 passed / 0 failed / 1 ignored,cargo fmt --checkandcargo clippy -D warningsclean,smoke.sh71 passed / 0 failed. (On macOS the crate does not link, identically on main.)test-name-consistency.sh,test-legacy-agent.sh,test-pw-mcp-check.sh: pass.test-install-linux.shpasses in debian:bookworm as a non-root user (on macOS it fails only on/privaterealpaths andstat -c). shellcheck is clean on the touched scripts; both workflows parse.scripts/test-packaging.shon macOS 27. It fails inpackage-pkg.shatpkgbuildwithSet: Entry, ":0:BundleIsRelocatable", Does Not Exist, identically on main (1eaa6ef, re-run in a worktree). Not changed. The parts before that point run and pass: assemble-app, bundle id, executable and display name, the unsigned-app gate, the installer with injected seams (token copy from the old path, pre-0.4.0 token, whitespace token, bad Tailscale JSON cases). The pkg layout is covered bytest-name-consistency.shwithoutpkgbuild.Not run on a real Mac
The renamed app has not been launched on a real Mac, and no installer was run on a real host. Suggested check: quit any running agent (port 8795), install, grant Screen Recording and Accessibility to the new bundle id, confirm the menu bar item and
sys_info.Update (review fixes, e2cb810)
oab-computer, socargo buildproducestarget/release/oab-computer; ci.yml, release.yml, smoke.sh and docs follow, and the name-consistency test checks it. The directorypoc/reverse-attach-linuxkeeps its name.daemon: okwhen an old unit was found (the answer would come from the old daemon).oab-pw-mcp.serviceoptional and restarts the new unit.V=0.12.0, the first release withoab-computer-*assets. Private host names were removed from the docs.Update (token decision, 132c395)
Decision: the Linux installer copies the old token (
cp, nevermv) when the new one is missing, like the macOS copy the user agreed earlier. Without it a Linux upgrade would silently regenerate the token and break every configured client. This extends the one existing exception (old token path as copy source only); nothing else reads old paths. README, docs/releasing.md and this description now say the same on both platforms.The macOS legacy warning notes that /healthz may be answered by the old agent; the legacy test asserts mode 600; name-consistency fails if docs claim the Linux installer copies nothing.
Docs-only pass otherwise: name-consistency and the private-identifier check pass on the build Mac; Swift/Rust tests not rerun (no code change).
Open, non-blocking: Linux grants/audit under
~/.local/state/oab-instance-mcpare not migrated (documented); the old Chromium policyoab-instance-mcp.jsonis left beside the new one (identical, harmless); with an old unit on :8795 the new unit restart-loops until the old one is removed (warned); the Cargo package rename supersedes the earlier KEEP in the inventory.Fix pass 8: legacy warning ports/leftovers, linux-setup anchor, tighter allowlist, historical poc row restored.