Skip to content

fix(otterware): final pass after the shell rebuild - #95

Merged
Laurin-Notemann merged 2 commits into
mainfrom
fix/otterware-final-pass
Oct 14, 2026
Merged

Laurin-Notemann merged 2 commits into
mainfrom
fix/otterware-final-pass

Conversation

@Laurin-Notemann

@Laurin-Notemann Laurin-Notemann commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

The shell rebuild left the Drive CLI's browser approval URL without a page and introduced a few upstream product names in client messages. This final pass restores sign-in, removes low-value test assertions, and assesses the remaining workstreams.

  1. Drive CLI sign-in. Serve /device from the Cloud Worker's Drive-host handler, independently of the SPA. Reuse Drive's existing Otter Account OAuth and device endpoints: enter a code, sign in, review the account/code, explicitly approve or deny, and return to the terminal. Cloud's /device redirects to the canonical Drive origin so the OAuth cookie and callback stay together. No CLI protocol change. App › Account now explains otterdrive auth login, searchable through settings/palette. Route tests cover Drive, the Cloud redirect, content-host isolation and methods; the identity test covers authenticated approval through issuance of a working CLI token, plus invalid codes.
  2. Rebrand. Moved to the sync. Rebranding new upstream strings in a PR needs one-off seam entries and broke the seam budget (46 literal files, cap 40). The final sync onto the newest T3 Code runs scripts/otter/rebrand-ui-text.sh and folds the result into the single Otterware commit; docs/operations/otter-fork.md now says the rebrand runs during a sync.
  3. App icon: deferred. Old Mail's picker needs appIcon:get/set/changed and its native variants. The current host exposes neither that IPC nor a profile icon-variant catalog; Electron's setDockIcon is a startup helper, and the retained Mail PNGs are renderer previews. Restoring a real persistent chooser requires desktop IPC and native asset packaging, beyond the cheap option requested here.
  4. Tests. Delete module-kit's test that only exercised mocked instruction-service reads. Trim composition's exhaustive RPC-name/instrumentation snapshots, the web registry's registration/helper assertions, and Mail's RPC-key count checks. Keep profile isolation, path resolution, payload rejection, all engine/migration/runtime tests, watch-only filtering and keybinding migration. No upstream tests were deleted; the three upstream test edits only update expected UI wording.
  5. Small assessment gap fixed. Correct Cloud's stale runbook statements about first-use Drive provisioning, shipped static assets and the CLI source/publish workflow. Leave the workstream issues open.

Workstream assessment (code, named ADRs, workflow state and release metadata reviewed; no production cutover performed):

  • W3: Otter Cloud (infra/cloud) #4 / W3 — ADRs 0005, 0007, 0018, 0019. Implemented: consolidated hostname router and imported Accounts/Drive/Mail APIs, IMAP tunnel, encrypted provider vault/token hand-out, EnvironmentHub bridging existing UserHub push, local-first account sync, and CloudAgentHub/OpenRouter. Remaining: execute infra/cloud/CUTOVER.md's staged domain and UserHub/AgentHub transfer, preserve secrets and signing identities, repoint service/DO bindings, and validate provider callbacks/refresh, Gmail push, APNs, offline reconciliation and rollback on live installations. wrangler.json still routes only cloud.otterware.app, binds legacy Mail objects in the old Worker and has no transfer migration. Provider-console/CASA readiness also needs operational confirmation; source alone cannot establish it.
  • W7: API agents and in-browser environment #8 / W7 — ADRs 0008, 0009. Implemented: OpenRouter/Hermes/OpenClaw environment drivers, browser connection over a Web Worker/message port, SQLite/OPFS, portable Mail/Calendar engines, Cloud OpenRouter and browser Hermes/OpenClaw loops with shared tool access tiers. Two concrete gaps remain: browser composition includes only Home/Mail/Calendar, so a browser-only Drive assistant gets no Drive tools; browser threads/messages come only from local AgentStore, with no calls to the existing Cloud agentSessions/agentMessages APIs to discover and resume OpenRouter chats on another device. Both require behavior and integration work beyond this final-pass patch.
  • W8: Releases, mobile and cutover #9 / W8 — ADRs 0006, 0015, 0016. Implemented: per-profile desktop release/feed tooling, web previews, Drive static assets, a manual Drive CLI npm publisher, relocated Expo app/config/workflows and the Mail iPhone archive pipeline. All five channel-* feeds and all five 20261014.7 immutable profile releases exist. Remaining: validate clean installs and in-place signed updates, promote the production web origins with W3, finish mobile credential/runtime/store validation and the intended submission workflows (Expo publishing is currently disabled; Mail's workflow archives only), and finish Code npm/fleet handover with matching architecture archives. The prepared legacy handover PRs remain open: Code #43, Mail #154, Calendar #4. Their merge/migration releases and eventual repository retirement still need the coordinated cutover decision.

Validation: 22 focused Cloud/identity tests and 50 focused client/registry/contract tests pass. Targeted Cloud, web, desktop and client-runtime typechecks pass, one heavy command at a time through heavy.sh. Changed-file vp lint/vp fmt, upstream seams, git diff --check, and the requested apps/web knip export check pass. No builds, repo-wide checks or browser/computer verification.

Model: gpt-6-astra (high). Harness: Codex in T3 Code.

@Laurin-Notemann
Laurin-Notemann enabled auto-merge (squash) October 14, 2026 17:38
Rebranding new upstream strings in a PR adds one-off seam entries and broke
the seam budget (46 literal files, cap 40). The rebrand belongs in the sync,
where it folds into the single Otterware commit; the sync doc now says so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Laurin-Notemann
Laurin-Notemann merged commit 2595b68 into main Oct 14, 2026
19 of 20 checks passed
@Laurin-Notemann
Laurin-Notemann deleted the fix/otterware-final-pass branch October 14, 2026 17:53
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