Commit Graph
21587 Commits
Author SHA1 Message Date
Neil 46b467d847 feat(cloud): workspace numbers (W-123), org slug links and synced sidebar prefs on the control plane (G13, G14) 2026-11-10 19:22:39 -08:00
Neil ff845fe03c Merge pull request #333 from nwparker/create-speed/auto-environments
feat(cloud-create): automatic environments — repos come prebuilt after the first create
2026-11-10 19:14:26 -08:00
Neil a86a8d6850 feat(cloud-create): automatic environments — repos come prebuilt after the first create
The first create of a repo that no environment of the account lists makes a default environment for it
(just the repo, cloned blobless, no install script) and builds it in the background with the existing
environment build pipeline (EnvironmentBuildRunner). Later creates boot from its active build and fetch
only what changed, in the background, shown as 'Update repository' with git's real progress.

- environments.kind 'org' | 'auto' + last_used_at (migration 0049, applied to dev); an admin's edit
  adopts an auto environment; an admin environment listing the repo always wins
- auto environments unused for 14 days are deleted with their snapshots (cron); per account only
- golden refresh, staleness, pruning and the warm pool apply as for any environment
- the caller's machine size stands for auto environments; an explicit other region skips them
- AUTO_ENVIRONMENTS=off disables it
- desktop: feature repo-update, 'Update repository' / 'Fetching changes…' / sidebar 'Updating the
  repository…'

Measured on dev (stablyai/orca, staging OWNER): before 6 s to ready + 58 s clone; the background build
took 79 s; after, ready in 6.6-8.7 s with the repo current 0.7 s later (7.4-9.4 s total).
2026-11-10 19:10:29 -08:00
Neil d9eb28066a Merge pull request #317 from nwparker/cloud/composer-redo
Create workspace: Project | Run on row; Orca Cloud setup moves to a full page after Start (composer-redo)
2026-11-10 19:05:10 -08:00
Neil 64874e4027 fix(cloud): Orca Cloud adds nothing to the dialog — no hours in the Run on menu, no agent fallback notice (Neil) 2026-11-10 18:57:06 -08:00
Neil 466dddc3e0 fix(cloud): design-squad — one 'Create workspace' label, Run on menu inside the dialog, no right sidebar during setup 2026-11-10 18:53:32 -08:00
Neil b5c4d07bce fix(cloud): setup page copy (hour plural, billing settings label) and prompt card placement 2026-11-10 18:53:32 -08:00
Neil dbf554e89b chore(cloud): dev hook to walk the setup page; GitHub step names the repository 2026-11-10 18:53:32 -08:00
Neil 8bc169abf3 fix(cloud): a single browser hop only waits on its own step 2026-11-10 18:53:32 -08:00
Neil 3438a5d6ef fix(cloud): setup page waits for every row to settle before it starts 2026-11-10 18:53:32 -08:00
Neil 7901ef3123 chore(cloud): localization catalog and visibility-aware polling for the setup page 2026-11-10 18:53:32 -08:00
Neil 2c44c982f6 chore(cloud): split setup page copy; composer stays under max-lines 2026-11-10 18:53:32 -08:00
Neil 0c8d142299 chore(cloud): composer-redo lint (file size, footer type, no stale state) 2026-11-10 18:53:31 -08:00
Neil 3431639cc2 fix(cloud): an agent with no Orca Cloud account never launches into /login; start a terminal and offer Set up once 2026-11-10 18:53:31 -08:00
Neil 81e8a44530 fix(cloud): setup page re-reads availability; agent step always offers Set up once 2026-11-10 18:53:31 -08:00
Neil f892a6d3f6 wip(cloud): composer-redo — Project | Run on row, setup moves to a full page after Start 2026-11-10 18:53:31 -08:00
Neil a868970883 Merge pull request #332 from nwparker/core-ui-ra/revert-ra7
revert(terminal): drop the narrow-pane title-row reservation (RA-7 won't-fix)
2026-11-10 18:51:56 -08:00
Neil 7cb6272ae7 revert(terminal): drop the narrow-pane title-row reservation (RA-7 won't-fix)
Neil: what we have today is fine. Restores terminal.css to match stablyai/orca main; the rest of #314 stays.
2026-11-10 18:50:19 -08:00
Neil 519b128d90 Merge pull request #329 from nwparker/cloud/w2-asleep-names
fix(cloud): asleep names — Terminal N, workspace name in Files and the team list, 'Asleep ·' right after Sleep (RA-13)
2026-11-10 18:27:12 -08:00
Neil 12034d5c74 fix(cloud): asleep names — terminal card 'Terminal N' not its id, Files header and team list name the workspace, 'Asleep ·' right after Sleep (RA-13) 2026-11-10 18:21:10 -08:00
Neil 81156da943 Merge pull request #310 from nwparker/np4-polish/cloud-agent-row
fix(cloud): agent row shows 'Not signed in' instead of 'Done' when Claude isn't signed in (np4-e2e)
2026-11-10 18:17:24 -08:00
Neil d9e5e37f79 Merge pull request #328 from nwparker/cloud/w6-claude-verify
feat(cloud): POST /v1/agent-credentials/claude/verify (pre-launch check, migration 0048)
2026-11-10 18:15:54 -08:00
Neil 0457f15c94 Merge pull request #327 from nwparker/cloud/w2-asleep-reconnect
fix(cloud): asleep workspace — calm terminal line with Wake, no reconnect toast; setup-script check waits until awake (RA-12)
2026-11-10 18:15:23 -08:00
Neil defa46442a Merge pull request #315 from nwparker/cloud/ra1-cloud-launch-hold
fix(cloud): RA-1 — hold host-published Orca Cloud agent launches on an expired account; strip renders in the real app
2026-11-10 18:12:44 -08:00
Neil 06075e682f feat(cloud): POST /v1/agent-credentials/claude/verify for the desktop's pre-launch check
Runs the confirm-before-revoke auth check on demand: a pass within 10 min answers at once (verified_at, migration 0048), otherwise one check rate-limited to one a minute per person, revoking (audited) only on a definite authentication_error. Storing a new token forgets the old verification.
2026-11-10 18:10:43 -08:00
Neil 546b488d3a chore(l10n): drop the retired terminal asleep keys 2026-11-10 18:09:45 -08:00
Neil 96ed405376 Merge remote-tracking branch 'private/cloud/integration' into cloud/ra1-cloud-launch-hold 2026-11-10 18:09:23 -08:00
Neil 2642b1ba92 fix(cloud): asleep workspace's terminal shows a calm line with Wake, not a reconnect toast; setup-script check waits until it's awake (RA-12) 2026-11-10 18:07:57 -08:00
Neil 41b6b2c67f Merge pull request #321 from nwparker/cloud/w2-asleep-restore
fix(cloud): asleep workspace keeps its project after restart; asleep Files tab; calm terminal banner (RA-9, RA-10)
2026-11-10 18:04:02 -08:00
Neil 187aaf4dce test(cloud): RA-1 resize spec without a cast 2026-11-10 18:01:44 -08:00
Neil 4789756cd8 Merge branch 'cloud/integration' of https://github.com/nwparker/orca-private into cloud/w2-asleep-restore 2026-11-10 18:00:20 -08:00
Neil 8d12c9054d test(cloud): asleep Files panel fixtures (changed, no snapshot, waking) 2026-11-10 18:00:17 -08:00
Neil 7df9b12e32 fix(cloud): RA-1 strip follows its live width and sits below the pane's title row
From the m4air real-app shots:
- The width class was frozen at mount, so a pane narrowed after mount collapsed the text to 'Y.'/'S.'.
  The strip now lays itself out from its own width (ResizeObserver): wide / narrow / tiny, plus a
  compact class below 360 px with one line ('Claude sign-in expired') and Renew; the detail stays the
  region's aria-describedby and tooltip. Height stays 56 px.
- The strip sat under the pane's split and close buttons. CloudStripLayer (shared by the pane and the
  fixture) starts it below the pane title row (--orca-pane-title-height), and the renew strip drops
  its own × (Renew is the action; Escape still cancels).
Specs: resize after mount keeps the title readable at 520 and 320 px; the pane's split and close
buttons are hit-testable above the strip in three states.
2026-11-10 17:58:56 -08:00
Neil 3ee0b3f818 test(cloud): row click asserts the composer's Set up once target, which cloud/integration moved to the accounts pane 2026-11-10 17:58:16 -08:00
Neil 0be973e1f7 fix(cloud): change status as the explorer's letter (M/U/A/D/R) in the asleep Files tab 2026-11-10 17:55:58 -08:00
Neil 3627a05b29 Merge pull request #323 from nwparker/core-ui-ra/agent-accounts-jump
feat(cloud): Agent accounts jump row (This computer · Hosts · Orca Cloud)
2026-11-10 17:55:38 -08:00
Neil dfa8932644 test(cloud): fixed clock for the turn-ended-after-active row test (no wall clock) 2026-11-10 17:55:11 -08:00
Neil f9d01534d4 Merge pull request #325 from nwparker/cloud/fix-flaky-tests
fix(cloud-integration): picker-prompt test mock error; shot-editor test hermetic
2026-11-10 17:52:24 -08:00
Neil 67bdb68ed6 fix(cloud): sign-in row state sticks while Agent accounts say not set up, expired or revoked
design-squad P1-P3 on #310 from the m4air run:
- P1: after a restart leatherback fell back to the title-derived row ("Claude Code - Idle":
  prompt = title label, lastAssistantMessage = "Idle"), whose message made "no turn finished"
  false. While Agent accounts say not set up / expired / revoked, the sign-in state now wins over
  every done/idle/unverifiable row shape; only a sign-in made on the sandbox (cliLogin) clears it,
  not the Orca-account placeholder the sandbox reports as an API key. Covered accounts with a
  signed-out sandbox clear once a turn ends after the account became active (first covered read).
- P2: sign-in rows use the catalog name (Claude/Codex), never the title or a stale reply.
- P2: the tooltip opens below, aligned to the start, so the workspace name stays visible.
- P3: the full row reads "Needs sign-in - Claude" / "Sign-in expired - Claude" and drops the
  stale message line.
2026-11-10 17:51:48 -08:00
Neil 4759dd9ee8 Merge pull request #324 from nwparker/cloud/w6-revoke-confirm
fix(cloud): confirm a provider 401 before revoking an Orca account (migration 0047)
2026-11-10 17:50:51 -08:00
Neil 93530ded64 fix(cloud): asleep Files tab trusts the local VM record too, so it shows right after Sleep 2026-11-10 17:49:40 -08:00
Neil fee92b2f67 Merge pull request #319 from nwparker/cloud/ra5-agent-accounts-polish
fix(cloud): RA-5 — Agent accounts polish from the real-app re-check
2026-11-10 17:49:23 -08:00
Neil 95960cd081 fix(cloud-integration): picker-prompt test mock error; shot-editor test hermetic
- interrupted-turn-continue reads its delivery helpers at call time: the cloud workspace store
  imports it, so launch-agent-picker-prompt.test's partial paste mock failed at module load
- plugin-shot-editor test marks its temp cwd as a repo root so the default shots dir (which walks up
  to the nearest plugin folder / repo root) can't be redirected by anything above the shared temp dir
2026-11-10 17:49:01 -08:00
Neil ca73c6c8dc fix(cloud): confirm a provider 401 with one auth check before revoking an Orca account
A single 401 on an Orca-account request no longer revokes the person's Claude account everywhere. The hook only fires after the real credential was swapped in and sent. The control plane then makes one free auth check with the real token (Anthropic count_tokens, oauth beta) and revokes only on a definite authentication_error; anything else (passes, 429, 5xx, other 401 types, network) keeps the account. Checks are rate-limited to one per person and agent per minute (agent_credentials.checked_at), and every keep/revoke is audited (agent_credential_audit, migration 0047). Codex keeps its lease-refresh path.
2026-11-10 17:47:58 -08:00
Neil f28253beff Merge pull request #309 from nwparker/np4-polish/cloud-project-rows
fix(cloud): one row per cloud workspace (hide sandbox clones); scope cloud workspaces to the active team (np4-e2e bugs 6, 7)
2026-11-10 17:47:07 -08:00
Neil 549d76a01b chore(settings): jump row prop is links (matches stablyai/orca#40965 6f2ee281ce) 2026-11-10 17:43:57 -08:00
Neil c7c129ca9e Merge pull request #322 from nwparker/cloud/w6-revoke-all-sandboxes
fix(cloud): a provider 401 refreshes all of the person's running sandboxes
2026-11-10 17:42:57 -08:00
Neil 937109543c Merge remote-tracking branch 'private/cloud/integration' into cloud/ra5-agent-accounts-polish 2026-11-10 17:42:47 -08:00
Neil 5818222629 Merge remote-tracking branch 'private/cloud/integration' into cloud/ra1-cloud-launch-hold 2026-11-10 17:42:37 -08:00
Neil ddf6cfe09f fix(cloud): a provider 401 drops the dead account placeholder from all the person's running sandboxes 2026-11-10 17:40:14 -08:00