Commit Graph
23020 Commits
Author SHA1 Message Date
Neil 346ceda64c Merge cloud/integration into SEC-6 (KMS unwrapper; kms_unavailable log via secretLog) 2026-11-12 22:40:50 -08:00
Neil 8e9c16a229 Merge pull request #625 from nwparker/cloud/sec3-kms-kek
feat(cloud): hold the secrets KEK behind Cloud KMS, off by default (SEC-3)
2026-11-12 22:39:19 -08:00
Neil 8514964961 fix(cloud): PAIRED-WAKE-TYPE-THROUGH typing during a paired wake is held and delivered to the woken terminal, like owned (#617)
The paired surface's waking cover now lets input through to the pane (pointer-events-none) while it
wakes, shows the held-input count with Clear, and toasts what was delivered, using the same
useWakeInput / useWakeInputNotices / wake-input-buffer as the owned surface. A failed wake covers the
pane again.
2026-11-12 22:34:43 -08:00
Neil 2b63b70402 Merge pull request #614 from nwparker/cloud/enterprise-settings
feat(cloud): ENTERPRISE-AUDIT (2/2) Settings > Enterprise with the team audit log; remove Recent activity
2026-11-12 22:28:08 -08:00
Neil b976ce6324 Merge pull request #611 from nwparker/pl/compare-plans-sweep
fix(cloud): COMPARE-PLANS-SWEEP one label for the plans action
2026-11-12 22:20:39 -08:00
Neil 1ada317534 Merge pull request #591 from nwparker/cloud/w6-settings-arrow
fix(cloud): VM git lines say Settings → Account (glossary arrow)
2026-11-12 22:13:32 -08:00
Neil 6bb86411cd Merge cloud/integration into SEC-6 (secret_events from #597 + secretLog) 2026-11-12 22:09:16 -08:00
Neil c1af476589 fix(cloud): PAIRED-WAKING-OVERLAY a paired wake reports connecting until the VM runs, so the Waking overlay shows (#620)
wakePairedCloudWorkspace reported 'ready' as soon as the control plane accepted the wake (well under
the overlay's 300ms show delay) while the VM took ~8s more, so the overlay never appeared and the
pane sat in Reconnecting. It now reports 'connecting' and re-reads status every 1.5s (bounded at
120s) until it says running, then 'ready'; a VM that never runs fails the wake (stalled copy).
2026-11-12 22:05:21 -08:00
Neil bb7da07082 Merge remote-tracking branch 'private/cloud/integration' into cloud/w6-settings-arrow 2026-11-12 21:53:09 -08:00
Neil 0f6eeb6797 Merge pull request #624 from nwparker/sec2/build-secrets
fix(cloud): SEC-2 builds never get model keys, and fail if a team secret is left on disk
2026-11-12 21:52:27 -08:00
Neil a663a8a02e Merge pull request #613 from nwparker/cloud/enterprise-audit-log
feat(cloud): ENTERPRISE-AUDIT (1/2) unified team audit log API, Enterprise feature entitlements, audit ingest
2026-11-12 21:45:16 -08:00
Neil e3b140d823 feat(cloud): hold the secrets KEK behind Cloud KMS, off by default (SEC-3)
SECRETS_KEK_SOURCE=kms unwraps KMS-wrapped KEKs once per isolate. Unset, the
SECRETS_KEK path is unchanged. With it on there is no plaintext fallback: a KMS
failure answers 503 secrets_unavailable and a workspace create fails instead of
starting without secrets. Tested against a fake KMS only.
2026-11-12 21:41:36 -08:00
Neil e7316c1264 Merge pull request #622 from nwparker/cloud/premerge-always-tests
fix(premerge): always run source-scanning lint tests
2026-11-12 21:39:46 -08:00
Neil ab27c1d396 fix(cloud): SEC-2 builds never get model keys, and fail if a team secret is left on disk
Environment builds get only the team secrets an admin named, never a swapped model key, hand them to the install script alone, and fail with no snapshot (secret_in_image) when a value is still in a file the build changed.
2026-11-12 21:37:25 -08:00
Neil 3aa92acaa1 fix(cloud): COMPARE-PLANS-SWEEP drop the payment-method Copy link (Neil narrowed Copy link to auth surfaces) 2026-11-12 21:36:46 -08:00
Neil cb823735c9 Merge branch 'cloud/integration' of https://github.com/nwparker/orca-private into cloud/enterprise-audit-log 2026-11-12 21:35:48 -08:00
Neil 368a498291 Merge pull request #597 from nwparker/cloud/sec-4-secret-activity
feat(cloud): SEC-4 secret change recording (secret_events) + activity API
2026-11-12 21:35:27 -08:00
Neil 8ba2b13ec6 Merge pull request #621 from nwparker/pl/glossary-allowlist
test(cloud): glossary allowlist follows the recipe-VM "Delete VM" line
2026-11-12 21:30:28 -08:00
Neil 5a888324d7 fix(premerge): always run source-scanning lint tests (premerge-always-tests.txt)
cloud-glossary-lint.test.ts globs and reads src instead of importing it, so
neither name matching nor vitest's module graph ever selected it; #610 broke
it unnoticed. premerge-check.sh now appends every path listed in
config/scripts/cloud-integration/premerge-always-tests.txt to the targeted
set (still subject to the base-list filter).
2026-11-12 21:27:28 -08:00
Neil c8f8196f70 test(cloud): glossary allowlist follows the recipe-VM "Delete VM" line (388 -> 412)
Recent create-sheet commits moved VmBuildFailureActions' recipe-VM "Delete VM" branch from line 388
to 412, so cloud-glossary-lint failed on integration HEAD for any premerge that selects it. The
cloud branch still says "Delete sandbox"; only the allowlist line number changes.
2026-11-12 21:22:00 -08:00
Neil ccabbee200 Merge branch 'cloud/integration' of https://github.com/nwparker/orca-private into cloud/enterprise-audit-log
# Conflicts:
#	cloud/apps/sandbox-control/src/index.ts
2026-11-12 21:20:52 -08:00
Neil e704adaf2a Merge pull request #607 from nwparker/create-speed/agent-picker-width
fix(composer): the Agent menu is as wide as its field in every state (AGENT-PICKER-WIDTH)
2026-11-12 21:09:51 -08:00
Neil 2b96b3bc35 feat(cloud): auth's token may push role changes (SSO-ROLE-PUSH) (#615) 2026-11-12 21:05:35 -08:00
Neil fdedb8d093 fix(cloud): PAIRED-BADGE no primary badge on a cloud workspace's own row in the live card; delete dead card header paths (#574)
* fix(cloud): PAIRED-BADGE no "primary" badge or star on a cloud workspace's own row in the LIVE card; delete dead card header paths

#560 gated the badge in worktree-card-header.tsx, which only the unrendered
WorktreeCardParentContent used; the live card (default-workspace-card.json via the element registry)
drew PrimaryBadge/PrimaryStar with no cloud check, so a paired-from-birth row kept "primary". The
gate now sits in the template parts themselves (NotOnCloudRow, useIsCloudHostRow). Deleted the dead
header, parent content and meta row so a fix can't land there again.

* chore(cloud): PAIRED-BADGE drop the deleted meta row from the localization allowlist (path-literal ratchet)
2026-11-12 21:00:54 -08:00
Neil d8e6879615 Merge pull request #603 from nwparker/cloud/paired-held-active
fix(cloud): PAIRED-HELD-ACTIVE a GitHub-only create's held placeholder is its one tab and in front (n39)
2026-11-12 20:57:02 -08:00
Neil ceaaf6034f Merge branch 'cloud/integration' of https://github.com/nwparker/orca-private into cloud/enterprise-settings
# Conflicts:
#	src/renderer/src/components/billing/team/TeamPageView.tsx
2026-11-12 20:56:42 -08:00
Neil a99ae6d512 fix(cloud): ENTERPRISE-AUDIT lint gates: fixture data filename, no cast in the category filter, fixed clock in the pane test 2026-11-12 20:52:30 -08:00
Neil 18237d57cd Merge pull request #612 from nwparker/cloud/team-settings-feedback
fix(team): calmer Team dialog; seat facts in Plan & billing, invite seat impact, Leave in row menu
2026-11-12 20:47:22 -08:00
Neil eca563dfef Merge branches 'cloud/integration' and 'cloud/sec-4-secret-activity' of https://github.com/nwparker/orca-private into cloud/enterprise-audit-log 2026-11-12 20:45:23 -08:00
Neil c8e56c2e26 fix(cloud): ENTERPRISE-AUDIT design review: one Contact sales per page, no upsell for an Enterprise team, Former member; API keys pane test for non-Enterprise teams 2026-11-12 20:45:04 -08:00
Neil 6a8d01e9ff Merge pull request #610 from nwparker/create-speed/build-sheet-copy-links
feat(cloud-create): build sheet external links follow COPY-LINK-RULE
2026-11-12 20:43:07 -08:00
Neil 669e7249bc test(cloud): malformed cursor test reads the personal route 2026-11-12 20:39:33 -08:00
Neil 19c1d799f6 fix(cloud): SEC-4 activity route serves personal only; team reads go through the plan-gated unified audit log 2026-11-12 20:38:57 -08:00
Neil 68ecac0d32 fix(cloud): ENTERPRISE-AUDIT the older GET /v1/audit is behind the same plan gate for a team 2026-11-12 20:37:50 -08:00
Neil 2c2b746cc3 test(cloud): PAIRED-HELD-ACTIVE no-steal tests advance fake timers instead of sleeping (ast-grep test-no-real-time-wait) 2026-11-12 20:36:26 -08:00
Neil 4e7a04c50a feat(cloud): ENTERPRISE-AUDIT (2/2) Settings > Enterprise with the team audit log; remove Recent activity 2026-11-12 20:36:13 -08:00
Neil b369046922 fix(cloud): PAIRED-ACCOUNT-FILTER paired workspaces are scoped by the account their pairing was made under (#605)
* fix(cloud): PAIRED-ACCOUNT-FILTER paired workspaces are scoped by the account their pairing was made under

* perf(cloud): PAIRED-ACCOUNT-FILTER read the active account once per profile-index write, not per paired lookup
2026-11-12 20:31:51 -08:00
Neil fb694dac00 fix(cloud): ARCHIVED-DEAD-ACTIONS archived rows offer no Sleep/Wake/Restart; paired cards don't offer On this computer (#609) 2026-11-12 20:24:25 -08:00
Neil 4a17238c7d fix(cloud): COMPARE-PLANS-SWEEP one label for the plans action; billing blocker's portal button gets Copy link
"See plans" becomes "Compare plans" (the one key, auto.components.billing.comparePlans) on Plan &
billing's and the team plan's upgrade button, the VM build failure card and toast, and the
cloud-session create toast, as design-squad asked. The create sheet's billing blocker "Update
payment method" opens the billing portal in the browser, so it becomes an OpenExternalSplitButton
whose chevron copies the same portal link (COPY-LINK-RULE). Drops the two private keys it replaced.
2026-11-12 20:16:02 -08:00
Neil 84c5932bd9 fix(team): calmer Team dialog; seat facts move to Plan & billing, seat impact on invites, Leave only in the row menu 2026-11-12 20:15:57 -08:00
Neil e954d833bb Merge pull request #556 from nwparker/cloud/entitlements-on
chore(cloud): ENTITLEMENTS-ON dev billing switches to ENTITLEMENTS_MODE=on
2026-11-12 20:15:15 -08:00
Neil 3c8c610043 fix(cloud-create): 'Contact support' shows the external-link mark (design-squad) 2026-11-12 20:13:42 -08:00
Neil ff90eaca81 feat(cloud-create): build sheet external links follow COPY-LINK-RULE
'How to push to GitHub' is now an OpenExternalSplitButton: its chevron copies GitHub's
guide (PUSH_TO_GITHUB_URL) without opening it. 'Contact support' sits in the More
menu, where a row can't carry the chevron, so a 'Copy support link' item sits right
below it, the same pattern as 'Copy GitHub link' under 'Add a GitHub repository…'.
The support URL moves to vm-build-repo-actions.ts (ORCA_SUPPORT_URL) next to the
GitHub guide's.
2026-11-12 20:11:21 -08:00
Neil dd9b9713a6 feat(cloud): ENTERPRISE-AUDIT unified team audit log API (GET /v1/audit-log), Enterprise feature entitlements, audit ingest route 2026-11-12 20:09:12 -08:00
Neil 45aefab3e8 Merge pull request #606 from nwparker/pl/nameless-copy
fix(cloud): NAMELESS-COPY a nameless cloud workspace gets its own sentences
2026-11-12 20:07:01 -08:00
Neil b986eee372 Merge pull request #595 from nwparker/feat/open-external-split-button
feat(open-external): Copy link split button on sign-in, account, billing and GitHub browser buttons
2026-11-12 20:02:28 -08:00
Neil bfaa2e6418 test(cli): packaged launcher argv compares real paths (macOS resolves the /tmp symlink, Linux does not) (#608) 2026-11-12 19:56:50 -08:00
Neil 90c1d791ba Merge branch 'cloud/sec-4-secret-activity' of https://github.com/nwparker/orca-private into cloud/enterprise-audit-log 2026-11-12 19:52:00 -08:00
Neil a0ef341878 feat(cloud): audit_log entitlement on Enterprise (catalog v2), feature flags route, contact-sales grant 2026-11-12 19:51:55 -08:00
Neil 798b2b5156 fix(composer): the Agent menu is as wide as its field in every state (AGENT-PICKER-WIDTH)
Neil (n39): Project "~" (a folder) with Run on = Orca Cloud opened a 256 px Agent menu
under the full-width field. The composer passed matchTriggerWidth only for a resolved git
repository that isn't a project group (upstream's rule), so a folder, a GitHub-only Orca
Cloud repo or a still-resolving cloud target fell back to min-w-64. The field is always full
width there, so the menu now always matches it (coordinator ruling). The right-aligned
'Not set up' labels are unchanged.
2026-11-12 19:49:22 -08:00