Commit Graph
20800 Commits
Author SHA1 Message Date
Neil 8ef12e5729 fix(cloud): desktop P2 review — unarchiving state, dismissible progress, late/thrown wake failures, one failure message 2026-11-09 18:12:17 -08:00
Neil 724e8bce0b feat(cloud): remote desktop P2 — Unarchive action, wake then open, light reconnect card, palette entry 2026-11-09 18:12:13 -08:00
Neil 63377c810d fix(sandbox-control): source-built goldens provision with the built commit's image files, not the Worker's copies (#137)
The Worker-started source build used the VM scripts, provision script and manifest pins embedded in
the Worker that started it, so a golden built from a newer commit could miss that commit's new VM
scripts (seen live: snap_HTsU from 19f900e has #122's orcad but not orca-desktop-proxy or
orca-desktop-page.js). source-build.sh now sources image/commit-provision-env.mjs from the fetched
checkout (no dependencies; mirrors provisionEnv, enforced by a test), so the image ships exactly that
commit. Tests also require every image/vm file to be a declared VM script and installed by provision.
2026-11-09 18:10:35 -08:00
Neil 0d5fc44d67 Merge pull request #136 from nwparker/cloud/w6-mcp-lows
W6: close MCP sync lower-severity review findings
2026-11-09 18:08:29 -08:00
Neil 9309abdba8 test: compare parsed servers without a cast 2026-11-09 18:05:53 -08:00
Neil 5049474808 Merge pull request #124 from nwparker/cloud/w5-ui-followups
feat(cloud): teammate names on Orca API keys, connected apps, audit and routines; meaningful i18n placeholder names
2026-11-09 18:04:52 -08:00
Neil 9e32dc17ca fix(cloud): MCP sync review lows — project-scope servers go to the sandbox workspace's Claude project scope (never user scope), Codex reformatting its block no longer orphans it, egress ledger applies serialized, OAuth relay can't hold the browser back more than 4s 2026-11-09 18:03:20 -08:00
Neil e998a5ce96 W8 follow-ups: removal and role loss reach phones; role-aware plan-denial copy (#135)
* fix(w8): removing a member revokes their phones; role changes move phones too; a phone's stored role never re-syncs keys

* fix(w8): one removal path revokes keys, phones, grants and routines; stale desktop tokens can't re-sync roles or vouch phones; a grant revoked mid-issue stays revoked

* fix(w8): a removed member's unexpired desktop tokens stop working; changes count from auth's time; desktop re-mints and retries enroll on stale_token

* feat(w8): role-aware plan-denial copy on the phone (owners and admins get the fix, members who to ask)

* fix(w8): W10 copy (per-seat team limit, choose a plan) and FE review (3 s abortable role read, Android live region, more copy cases); no casts
2026-11-09 18:02:56 -08:00
Neil 3bf205209b Merge pull request #134 from nwparker/cloud/hygiene-sleep-copy
fix(cloud): workspace menu uses Sleep / Wake for Orca Cloud (glossary)
2026-11-09 18:00:38 -08:00
Neil ac9a9e5a27 Merge pull request #132 from nwparker/cloud/w2-move-p2
fix(cloud): Move to this computer follow-ups (failed-apply copy, Esc hides, notice ends hidden result)
2026-11-09 17:59:45 -08:00
Neil bab8369a22 Merge pull request #127 from nwparker/cloud/core-desktop-fixes
fix(cloud): W9 desktop fixes - sandbox identity follows sign-in, no false delete success, keep project name
2026-11-09 17:57:14 -08:00
Neil 815ad0d9a1 fix(cloud): Orca Cloud workspace menu says Sleep / Wake / Try waking again, not Suspend/Resume VM (glossary) 2026-11-09 17:56:55 -08:00
Neil c68f06864a fix(cloud): name the VM project after its repo (orca repo add --display-name); golden builder uses wait=true exit probe; image-only merges rebuild (#133)
* feat(cli,sandbox-control): orca repo add --display-name; cloud sandboxes name the project after its repository

The VM checkout lives at /vercel/sandbox/project, so boot-time registration (#104) named the repo
'project'. repo.add already accepts displayName; the CLI now exposes it as --display-name and
orca-sandbox-start passes the repository basename from ORCA_REPO_URL.

* fix(sandbox-control): golden builder polls detached builds with a bounded wait=true read; image-only merges trigger a rebuild

The provider reports a detached command's exit code only to a wait=true read (W1's finding, #123):
stepBuild's plain GET is what kept finished golden builds 'running' until the deadline. stepBuild and
the operator rotation now use the same bounded wait probe (4 s); the exit-file marker stays as a
fallback. golden-source's VM path list now includes cloud/apps/sandbox-control/image/ (VM scripts,
provision, manifest), so a script-only merge (e.g. orca-desktop-proxy) rebuilds the golden too.
2026-11-09 17:56:20 -08:00
Neil eaf59e1dff fix(cloud): Move flow follow-ups: next-step copy after a failed apply, Esc/outside click while moving hides and returns focus, a hidden result ends when its notice goes 2026-11-09 17:55:21 -08:00
Neil b7eae3fec8 Merge pull request #131 from nwparker/cloud/w9-eval
fix(cloud): acceptance cleans up staging teams via cleanup-teams.mjs
2026-11-09 17:54:23 -08:00
Neil 8c314d2c9f Merge cloud/integration into cloud/core-desktop-fixes 2026-11-09 17:53:20 -08:00
Neil 75d0dd1f10 Merge pull request #126 from nwparker/cloud/fix-vm-build-cast
fix(cloud-integration): vm-build-failure test without casts; break store import cycle (startup-window-parity)
2026-11-09 17:53:07 -08:00
Neil 5e612c77a6 Merge pull request #119 from nwparker/cloud/w2-fastwake
perf(cloud): faster wake reconnect (no blocking pairing probe, pre-opened control socket, immediate pane re-attach)
2026-11-09 17:52:00 -08:00
Neil fb332cc4ca Merge pull request #87 from nwparker/cloud/w2-final
feat(cloud): W2 final pass: glossary, control-plane idle minutes, rollover restarting state, Move to this computer flow
2026-11-09 17:51:09 -08:00
Neil f59f057be7 test(cloud): drop type assertions in project merge fixtures 2026-11-09 17:50:04 -08:00
Neil fe4ae20d78 fix(cloud): acceptance deletes staging teams via cleanup-teams.mjs (#130), skips team checks when cleanup is unavailable 2026-11-09 17:50:02 -08:00
Neil d81bb25943 Merge pull request #130 from nwparker/cloud/staging-cleanup-teams
chore(cloud): staging cleanup-teams.mjs
2026-11-09 17:46:51 -08:00
Neil 56315c1f2b Merge pull request #129 from nwparker/cloud/w9-eval
feat(cloud): acceptance — headless downloads, staging team checks, poll-mode env builds
2026-11-09 17:46:40 -08:00
Neil d421cd1583 chore(cloud): cleanup-teams.mjs for staging throwaway teams; PropelAuth key file fallback; test-env guard 2026-11-09 17:46:38 -08:00
Neil 8b05b95c98 docs(cloud): acceptance findings — downloads pass on the #115 image 2026-11-09 17:46:24 -08:00
Neil 561f0d2f80 Merge pull request #128 from nwparker/cloud/w6-ui-p2
fix(cloud-secrets): W10 P2 polish for Cloud secrets and Add an agent
2026-11-09 17:45:51 -08:00
Neil 804adfa9bc fix(cloud-integration): break the store import cycle through cloud-message-sender
cloud-message-sender imported @/store and sits on the structured send path the store's own slices
import (create-repo-slice -> ... -> send-attempt -> cloud-message-sender -> @/store), so
startup-window-parity saw 'createRepoSlice is not a function'. The sender now takes its identity
reader at install (cloud-message-sender-install.ts); hosted-workspace-service and the connectivity
handlers import the offline seam instead of the service (same cycle class in main).
2026-11-09 17:45:22 -08:00
Neil 54223fa8fa test(cloud): deterministic stale re-pair test; typed shared-control reconnect test 2026-11-09 17:43:54 -08:00
Neil 84b02d6761 Merge remote-tracking branch 'private/cloud/integration' into cloud/w2-final
# Conflicts:
#	src/renderer/src/components/worktree-creation/vm-build-failure.test.ts
2026-11-09 17:43:38 -08:00
Neil 2727effb33 fix(cloud): address review: shared in-flight sandbox token mint, keep local project color, dev sign-in availability 2026-11-09 17:43:27 -08:00
Neil 3c23283071 Merge remote-tracking branch 'private/cloud/integration' into cloud/fix-vm-build-cast
# Conflicts:
#	src/renderer/src/components/worktree-creation/vm-build-failure.test.ts
2026-11-09 17:43:24 -08:00
Neil ebffde26eb fix(cloud-integration): sandbox-limit test without casts (SandboxLimitBillingStatus names the fields the caps read) 2026-11-09 17:41:45 -08:00
Neil eedb151a46 feat(cloud): acceptance headless download check, staging team create/invite, findings 2026-11-09 17:41:37 -08:00
Neil 19f900ea17 Merge pull request #109 from nwparker/cloud/core-ui-finish-2
Build sheet: W10 round-9 follow-ups
2026-11-09 17:41:28 -08:00
Neil dd9538c3a3 test(cloud-secrets): drop type assertions; plain id type for pending focus 2026-11-09 17:41:26 -08:00
Neil fe54ade37c Merge pull request #125 from nwparker/cloud/fix-lint-limit-test
test: lint-safe cast in vm-build-failure.test.ts (unblocks premerge)
2026-11-09 17:41:23 -08:00
Neil 68ce1b1943 chore(cloud): annotate the partial billing-status cast in vm-build-failure.test so the changed-code gate passes 2026-11-09 17:39:37 -08:00
Neil 7e19d48a0f Merge remote-tracking branch 'private/cloud/integration' into cloud/w2-fastwake 2026-11-09 17:39:31 -08:00
Neil ae3605bbf3 fix(cloud): review fixes for fast wake (stale background re-pair guarded by resume generation, no reconnect over a socket already dialing, pane recovery scoped to the host again, ready poll backs off) 2026-11-09 17:39:19 -08:00
Neil 6930e28f4f fix(cloud-secrets): review round 2: server error only on the sent row; a cleared key ends the discard question 2026-11-09 17:38:26 -08:00
Neil 63fa31fb6e test(build-sheet): lint-safe cast in the sandbox-limit test (unblocks premerge) 2026-11-09 17:37:30 -08:00
Neil 879e28befc fix(cloud-secrets): review round 1: keep rows edited during a save, focus after commit, discard guard on close/outside, hand-off survives window blur, caret and stale rename hint, summary wraps by segment 2026-11-09 17:37:26 -08:00
Neil 2d4f0fdcdd test(build-sheet): lint-safe cast in the sandbox-limit test 2026-11-09 17:36:28 -08:00
Neil 661c1f78c3 fix(build-sheet): lint-safe casts for Intl.DurationFormat and the toggle test fixture 2026-11-09 17:36:28 -08:00
Neil 54299a9412 fix(build-sheet): review: build clock state lives on the entry (no setState in render), no flicker on resume, resumes after Open anyway; shortcut can't flip the hidden sidebar; hours keep minutes; matching non-Intl fallback; min-width timers; locale-pinned and clock/config/toggle tests 2026-11-09 17:36:28 -08:00
Neil 1876a91d1a fix(build-sheet): W10 follow-ups: member spend-cap copy, Restarting the sandbox, sidebar toggle explains itself during a build, clock resumes after Retry checks, layout-effect focus, announced local error and sign-in row, Intl durations, one spinner style, fresh timing per sheet 2026-11-09 17:36:27 -08:00
Neil 60377d3364 feat(cloud): remote desktop Beta — single-use tickets, fit, clipboard, keyboard release (W10 RD-1..6) (#122)
* feat(cloud): remote desktop single-use tickets, fit, clipboard and keyboard release

- VM: Xvnc on a 0600 socket with no VNC auth plus an X cookie; orca-desktop-proxy (websockify
  subclass) admits one WebSocket per unused 60 s ticket from the same localhost origin, refuses
  rebinding Hosts, scrubs tickets from logs, serves the page with connect-src 'self'.
- Worker: POST /desktop mints a fresh ticket per call (schemaVersion 2).
- Desktop: no secret in the tab URL; main hands the page tickets on load and reconnect (backoff,
  floor, pause with Reconnect), only for the exact URL of a live forward it opened; keyboard stays
  in the desktop until Ctrl+Cmd / Ctrl+Alt; a paste key pushes this computer's clipboard; sandbox
  copies reach this computer after a copy gesture.
- UI: keyboard hint, asleep/starting neutral tone and mapping, persistent error toasts, Beta badge.

* fix(cloud): remote desktop review fixes

- Security review: noVNC host/port/encrypt pinned to the page's origin, CSP connect-src 'self',
  exact-URL + live-forward trust, mint floor and per-minute cap, copy gate on copy gestures only,
  X display cookie.
- Design review: archived is its own neutral state, starting covers waking, page messages say
  "Wake it in Orca", pause overlay is a status for calm states and focuses Reconnect, hint wraps
  and hides from assistive tech when faded.
- FE review: paste follows the keyboard layout, AltGr never releases, page calls settle on
  navigation, state notices only on change, hint once per load/release, paste always pushes,
  no committed bytecode, session tests.

* fix(cloud): remote desktop archived page message, hint layout, fixtures

* fix(cloud): remote desktop copy gate counts double-clicks (pointer events have no click count)

* chore(cloud): remote desktop lint (exhaustive pause reasons, no test casts or wall clock)
2026-11-09 17:36:19 -08:00
Neil 87da8eb16a Merge remote-tracking branch 'private/cloud/integration' into cloud/w2-final 2026-11-09 17:36:10 -08:00
Neil a2a92474c0 fix(cloud): acceptance polls env builds by default (verifies server-side progression); findings update 2026-11-09 17:36:05 -08:00
Neil c2045b86e1 fix(cloud): Move flow review fixes: per-run timeout token with late-success notice, step-only announcements, failure actions keyed on the local workspace, moved line copy, lint and ratchet fixes 2026-11-09 17:36:04 -08:00