Commit Graph
23167 Commits
Author SHA1 Message Date
Neil 79c04c5c19 Merge pull request #655 from nwparker/cloud/rs2-probe-suspect
fix(cloud): RS-2 a failed auth check never revokes a sign-in; it needs a check until a real request confirms or clears it
2026-11-13 03:11:23 -08:00
Neil cc3964e0fd Merge pull request #669 from nwparker/cloud/run-temp-test-short-base
test(vitest-temp): keep POSIX test bases short (fails on the Linux premerge lane)
2026-11-13 03:05:42 -08:00
Neil aa8088dd13 test(vitest-temp): keep POSIX test bases short so the 50-char /tmp fallback can't kick in
Under a long TMPDIR (the omarchy premerge lane's) the run root falls back to /tmp, so
'leaves an unmarked one with the same name alone' tested /tmp instead of its own base
and failed for unrelated PRs (#667). Bases now live under /tmp on POSIX.
2026-11-13 03:02:16 -08:00
Neil 7a07d9cafb feat(cloud): PARITY-FOLLOW phase 2: Follow, followers and the Following section (#665)
* wip(cloud): PARITY-FOLLOW design fixtures (top-bar followers, sidebar Team and Following)

* feat(cloud): PARITY-FOLLOW phase 1: sidebar Team list and the top bar's people (creator and who is here now)

* test(cloud): PARITY-FOLLOW fixtures name the workspace a teammate is in

* fix(cloud): PARITY-FOLLOW fixture typecheck

* feat(cloud): PARITY-FOLLOW follow endpoint: workspace_follows (0055), PUT/DELETE /v1/team/workspaces/:id/follow, followers in workspace views

* fix(cloud): PARITY-FOLLOW lint: the hover action's wrapper owns its visibility; no Button restyles; no side effect in a state updater

* feat(cloud): PARITY-FOLLOW phase 2: Follow in the top bar, followers in the stack, Following section in the sidebar

* test(cloud): PARITY-FOLLOW no real-time wait in the live-read test
2026-11-13 02:59:54 -08:00
Neil 5942f40782 Merge pull request #660 from nwparker/cloud/auto-env-deps
feat(cloud): automatic environments install lockfile dependencies, softly (PARITY-AUTO-ENV-DEPS)
2026-11-13 02:57:31 -08:00
Neil e5d2cf3823 fix(cloud): REPO-CAN-INSTALL the push notice reads the control plane's canInstall first; gh only when it can't tell (#651)
true -> Install, false -> no Install (copy request for an owner); null (no connected GitHub, GitHub
refused) or absent (older Worker) -> the person's gh read as before (#644). Visible copy unchanged.
2026-11-13 02:53:35 -08:00
Neil 475d15e3b6 Merge pull request #658 from nwparker/cloud/mob-2-mobile-fixes
fix(mobile-cloud): MOB-2 cheap phone fixes (Open past a failed prompt, Cloud with no desktop, W-link sign-in, repo-access copy, archived read-only)
2026-11-13 02:51:40 -08:00
Neil 62e9740741 Merge pull request #657 from nwparker/cloud/v3-double-shell
fix(cloud): V3-01-DOUBLE-SHELL a launch released while its account still can't run the agent holds again in the same placeholder
2026-11-13 02:49:36 -08:00
Neil fe9c60b3ee Merge pull request #656 from nwparker/cloud/rs1-setup-token-parse
fix(cloud): RS-1 setup-token parsing holds up to real CLI output (wrapped token, CRLF, the CLI's refusals, both paste formats)
2026-11-13 02:39:12 -08:00
Neil d12ce48fbc Merge remote-tracking branch 'private/cloud/integration' into HEAD 2026-11-13 02:35:21 -08:00
Neil dc3e8869e7 Merge pull request #647 from nwparker/cloud/settings-team-workspaces
feat(cloud): Settings › Cloud workspaces, the team's cloud workspaces for owners and admins (HOME-1)
2026-11-13 02:34:48 -08:00
Neil f287d1e98e feat(cloud): PARITY-FOLLOW phase 1: sidebar Team list and the top bar's people (#652)
* wip(cloud): PARITY-FOLLOW design fixtures (top-bar followers, sidebar Team and Following)

* feat(cloud): PARITY-FOLLOW phase 1: sidebar Team list and the top bar's people (creator and who is here now)

* test(cloud): PARITY-FOLLOW fixtures name the workspace a teammate is in

* fix(cloud): PARITY-FOLLOW fixture typecheck

* fix(cloud): PARITY-FOLLOW lint: the hover action's wrapper owns its visibility; no Button restyles; no side effect in a state updater

* test(cloud): PARITY-FOLLOW no real-time wait in the live-read test
2026-11-13 02:29:40 -08:00
Neil bf9db06cc4 Merge pull request #662 from nwparker/cloud/secret-request-card-max-lines
fix(lint): split the repo-write check out of use-secret-request-card (max-lines trap)
2026-11-13 02:25:58 -08:00
Neil 0b47e51cb9 feat(cloud): SSO-FOLLOWUPS identity-provider-managed members on the Team page; a clear message when single sign-on ends a sign-in (#653)
* feat(cloud): SSO-FOLLOWUPS members managed by the identity provider on the Team page; a clear message when single sign-on ends a sign-in

* fix(cloud): import the roster type where it is used

* feat(cloud): wording for single sign-on and directory sync events in the audit log

* fix(cloud): the missing-DNS-record audit line reads as an action (design-squad)
2026-11-13 02:22:04 -08:00
Neil 2642b3e4d0 feat(cloud): PARITY-FOLLOW follow endpoint: workspace_follows (0055), PUT/DELETE /v1/team/workspaces/:id/follow, followers in workspace views (#654) 2026-11-13 02:17:45 -08:00
Neil 4d774310ef fix(lint): split the repo-write check out of use-secret-request-card (max-lines)
cloud/integration fails oxlint max-lines on use-secret-request-card.ts (303 counted
lines, limit 300) since #637, which fails every premerge that merges integration.
Moves canWriteRepo and its cache to secret-request-repo-write.ts; no behaviour change.
2026-11-13 02:15:47 -08:00
Neil 71b8cd4c32 feat(cloud): automatic environments install the repo's lockfile dependencies, softly (PARITY-AUTO-ENV-DEPS)
An automatic environment (no install script) now runs the first repo's JavaScript install from its
lockfile during its build, so creates start with node_modules: pnpm/yarn through corepack (frozen /
immutable), npm ci; package.json's packageManager wins. A failure, a lockfile out of date or the
15-minute cap never fails the build: the log says why, half-installed node_modules are removed, and
the warm clone is snapshotted as before. Lockfiles the image has no tool for (bun, uv, bundler, go,
cargo) are named in the log. Admin environments are unchanged. env/ scripts ship in the Worker:
VM_SCRIPTS_HASH is unchanged (no golden rotation).
2026-11-13 02:14:03 -08:00
Neil 932fd0cd5e Merge pull request #648 from nwparker/cloud/pha-focus-test
test(cloud): PAIRED-HELD-ACTIVE the other-workspace focus test proves its guard
2026-11-13 02:13:19 -08:00
Neil ebc572bcc4 Merge pull request #650 from nwparker/cloud/request-copy-share
refactor(cloud): one 'Copy request for an owner' helper (REQUEST-COPY-SHARE)
2026-11-13 02:08:40 -08:00
Neil dace4d5a7a copy(mobile-cloud): MOB-2 design-squad wording; clone failure says the sandbox was deleted (it booted and was metered) 2026-11-13 02:07:01 -08:00
Neil 795078f1aa fix(mobile-cloud): MOB-2 cheap phone fixes: failed prompt never blocks Open, Cloud shows with no desktop, W-number link asks to sign in, repo-access copy, archived is read-only
- Open workspace opens even when a queued prompt can't start; the prompt is marked failed (Retry/Remove)
  instead of staying 'Waiting to connect' and being re-sent on every Open (runCloudDelivery, tested).
- An enrolled phone with no paired desktop keeps Home's Cloud section (homeFeedLayout, tested).
- A W-number link opened before connecting shows the share-link 'Sign in to Orca Cloud on this phone'
  state and returns to the link after connecting (cloudNumberLinkState, return-to allows /cloud/<org>/W-<n>).
- 409 github_not_connected names the repo and the fix; a clone failure names the repo.
- Archived detail: no prompt box; hours line says archived, not asleep.
2026-11-13 02:02:26 -08:00
Neil c6a03253e0 fix(cloud): RS-1 a line that starts a new token copy is never a continuation; test lint 2026-11-13 01:53:43 -08:00
Neil 4e76f4daab fix(cloud): RS-1 setup-token parsing holds up to real output: CRLF, a wrapped token joined (never cut short), the CLI's own refusal wording, a code without its state refused, a wrapped paste joined 2026-11-13 01:49:29 -08:00
Neil 2790a51999 chore(cloud): RS-2 migration renumbered to 0056 (0055 belongs to #654) 2026-11-13 01:46:02 -08:00
Neil aa475971e4 fix(cloud): RS-2 any later 401 on a sign-in in question confirms it (no clock comparison) 2026-11-13 01:44:21 -08:00
Neil 49fb8a9d8c fix(cloud): RS-2 a failed auth check never revokes an Orca-account sign-in: it needs a check (shown as expired); a later real 401 revokes, a real success clears it 2026-11-13 01:40:50 -08:00
Neil 46c04667e0 fix(cloud): V3-01-DOUBLE-SHELL a launch released while its account still can't run the agent holds again in the same placeholder, never a second one 2026-11-13 01:33:05 -08:00
NeilandClaude 2c097c7f72 chore(i18n): Settings › Cloud workspaces keys after rebase
Co-Authored-By: Claude <noreply@anthropic.com>
2026-11-13 01:30:58 -08:00
NeilandClaude c0d3a7c400 fix(cloud): Settings page is "Cloud workspaces" with its scope as the subtitle (design-squad on #647)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-11-13 01:30:10 -08:00
NeilandClaude 8d2dd6f26b test(cloud): Settings › Workspaces test uses fixed timestamps
Co-Authored-By: Claude <noreply@anthropic.com>
2026-11-13 01:30:08 -08:00
NeilandClaude 2a9ff9b3c9 fix(cloud): Settings › Workspaces search gets room; State column fits "Couldn't start"
Co-Authored-By: Claude <noreply@anthropic.com>
2026-11-13 01:30:08 -08:00
NeilandClaude 730b52f596 feat(cloud): Settings › Workspaces, the team's cloud workspaces for owners and admins (HOME-1)
A table of every team cloud workspace (name, W-number, repository, created by, state, last
active, shared/private) with By, In and search; per row only the actions the control plane
allows (open, sleep, archive) through the existing flows. No pins, sections or ordering.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-11-13 01:30:07 -08:00
Neil 82e64059c3 wip(cloud): V3-01-DOUBLE-SHELL root cause (paused for PARITY-REAL-SUBSCRIPTION)
settleHeldPlaceholder (cloud-web-host-launch-hold.ts:104) calls create(args) on 'proceed'; for a
restored hold that create is createWebRuntimeSessionTerminalResult, which wraps createWithCloudAgentHold.
If the account still can't run the agent, that create holds AGAIN in a NEW placeholder: two shells.
#600's fresh-read Start closes the usual path, but any 'proceed' on an uncovered account still doubles.
Planned fix: after 'proceed', if cloudAgentLaunchDecision(agent) is 'hold', re-hold in the SAME
placeholder (loop) instead of create(); test: restored unread hold, notSetUp, proceed -> one placeholder,
no agent create, hold reason notSetUp on the same tab.
2026-11-13 01:29:57 -08:00
Neil 4554d946a1 Merge pull request #649 from nwparker/cloud/cri-polish
fix(cloud): CRI-POLISH renew-in-place: no flash after a renewal, uniform ×, per-agent setup, checking copy
2026-11-13 01:29:02 -08:00
Neil 8f9354d0c7 Merge pull request #637 from nwparker/cloud/secrets-effective-shared
feat(cloud): SECRETS-EFFECTIVE-SHARED effective view answers for shared workspaces (stacked on #632)
2026-11-13 01:25:21 -08:00
Neil b4bff5d551 Merge pull request #631 from nwparker/cloud/capability-off-recheck
fix(cloud-setup): "Try again" on capability-off asks auth for fresh capabilities (PAID-TEAM-CHOOSE-PLAN)
2026-11-13 01:21:56 -08:00
Neil 7645922c24 Merge pull request #645 from nwparker/cloud/w6-repo-can-install
feat(sandbox-control): canInstall on repo-access (REPO-CAN-INSTALL)
2026-11-13 01:18:27 -08:00
Neil 471236fab1 refactor(cloud): one 'Copy request for an owner' for the clone card and the push notice (REQUEST-COPY-SHARE)
owner-request.ts: copyOwnerRequest(repoUrl, 'start' | 'push'), ownerRequestLabel and
useOwnerRequestCopy (Copied for 1.5 s), with one set of keys (orcaCloud.ownerRequest.*). The
CLONE-ACCESS-ERROR and ENV-NOTICE-ACTIONS copies and their private keys are gone. Same visible
words.
2026-11-13 01:18:11 -08:00
Neil ac20858712 feat(cloud): ENTERPRISE-SSO Settings › Enterprise single sign-on and directory sync (SCIM dark, server-driven) (#619)
* feat(cloud): ENTERPRISE-SSO Settings › Enterprise single sign-on and directory sync, driven by server state

* feat(cloud): key icon on the single sign-on group title (TEAM-DIALOG-2)

* fix(cloud): Contact us in the SSO block is a plain button; Copy link is for sign-in surfaces

* test(cloud): the copied SSO setup link is minted like the opened one and never logged

* fix(cloud): design-squad review of the SSO blocks (sentence-case chips, directory sync icon, grace and last-change wording)

* fix(cloud): sentence-case success badge variant for the SSO chips; catalog matches the new copy

* fix(cloud): register the Enterprise IPC handlers with the team handlers (file line limit)
2026-11-13 01:16:02 -08:00
Neil 372cb03e7b Merge pull request #630 from nwparker/cloud/clone-access-error
feat(cloud): a refused clone says Orca can't access the repo, and fixes it (CLONE-ACCESS-ERROR)
2026-11-13 01:13:40 -08:00
Neil 1cc86b0a5b fix(cloud): CANCEL-SIGNIN-MENU the code step's ⋯ menu drops Cancel sign-in; the strip's × (and Esc) cancels (#643) 2026-11-13 01:09:17 -08:00
Neil 1cd7310108 Merge pull request #642 from nwparker/cloud/team-dialog-3
fix(team): centre the Team dialog; quiet row to Settings › Enterprise
2026-11-13 01:06:02 -08:00
Neil 2e36fa4d56 fix(cloud): ENV-NOTICE-ACTIONS setup notices get plain words and a real fix, or don't show; no Install where it can't install (#644)
* feat(cloud): every setup notice line has plain words and a real action, or doesn't show (ENV-NOTICE-ACTIONS)

- Doctor checks that reached the bare 'check' line now classify: low disk ('disk')
  and a missing repo tool ('tool') get their own plain words; disk.free without a
  code and any check this desktop doesn't know are hidden, never a bare label.
- The push notice reads repo access plus the person's own gh rights on the repo
  (new gitHubInstallRights IPC): Install on {owner} only where installing can
  work, 'Copy request for an owner' once an owner was asked, Check again where
  the App already reaches the repo, plain words for someone else's public repo
  (octocat/Hello-World). Install no longer carries a Copy link.

* copy(cloud): a push nobody here can install offers Copy request for an owner (design-squad, ENV-NOTICE-ACTIONS)

* fix(cloud): ENV-NOTICE-ACTIONS rebase onto AUTH-ONLY-COPY-LINK: the owner request takes the install page from the repo-access answer
2026-11-13 01:03:53 -08:00
Neil 88d6e2b58c fix(cloud): CRI-POLISH while checking, the detail says "Checking the code…" and the disabled button keeps "Finish renewing" (design-squad) 2026-11-13 01:03:41 -08:00
Neil 54247bbe53 fix(cloud): CRI-POLISH saved stays "Checking the code…" until the account read lands; × is uniform in a failed renewal; the setup is per agent (test, comment) 2026-11-13 01:03:41 -08:00
Neil ac7fb50fc8 Merge pull request #640 from nwparker/cloud/picker-empty-copy
fix(cloud): picker empty state says 'Nothing else to open' or 'No cloud workspaces yet' (#594 follow-up)
2026-11-13 01:01:04 -08:00
Neil 7ad848b907 fix(cloud): the owner request takes its install link from the repo-access answer (gitHubInstallLink went with AUTH-ONLY-COPY-LINK) 2026-11-13 01:01:01 -08:00
Neil 22273ae8c6 test(cloud): PAIRED-HELD-ACTIVE the other-workspace test proves the guard (no activation is even asked for) 2026-11-13 01:00:26 -08:00
Neil ed42ecb675 Merge remote-tracking branch 'private/cloud/integration' into cloud/clone-access-error
# Conflicts:
#	src/renderer/src/lib/orca-cloud/cloud-glossary-allowlist.json
2026-11-13 00:58:57 -08:00
Neil 57ee5574ec Merge pull request #639 from nwparker/cloud/glossary-allowlist-snippet
test(cloud-glossary): allowlist matches file + string snippet, not line number
2026-11-13 00:58:25 -08:00