Commit Graph

72 Commits

Author SHA1 Message Date
Neil b1b722aaef
ci: keep release e2e non-blocking (#2584) 2026-05-21 20:12:36 -07:00
Neil 0322083c88
Fix release E2E flakes and gate publish
Gate release publishing on tag-scoped E2E, harden Droid agent-status routing against renderer layout races, and stabilize the affected E2E setup helpers.
2026-05-21 14:16:01 -07:00
Neil db4199e91a
Enforce styled scrollbars in renderer 2026-05-19 23:12:37 -07:00
Neil 5b6f373769
Remove release visibility monitor job (#2173) 2026-05-17 15:42:57 -07:00
Jinjing 85ad942954
ci: schedule e2e tests (#2098) 2026-05-16 12:37:16 -07:00
Neil 6eae8fa540
ci: shard electron e2e workflow (#2070) 2026-05-15 23:52:37 -07:00
Jinwoo Hong 6c4bcf7ea6
feat(ssh): make remote workspaces first-class (#1876)
Co-authored-by: Orca <help@stably.ai>
2026-05-15 12:32:07 -07:00
Neil c0884f5f21
Fix release-cut draft RC recovery (#1942)
* fix: recover stuck draft RC releases

* fix: address release recovery lint
2026-05-15 11:33:05 -07:00
Neil 2d9cf72084 fix: verify macOS entitlements before release 2026-05-14 19:02:37 -07:00
Brennan Benson fdf7d9e97a
feat(onboarding): add feature wall tour (#1772)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 15:20:49 -07:00
Brennan Benson e361b4339e
fix(release): harden prerelease update fallback checks (#1793)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 21:45:33 -07:00
Jinwoo Hong 7944293815
Improve mobile terminal streaming performance (#1700)
* Improve mobile terminal streaming performance

Co-authored-by: Orca <help@stably.ai>

* Add mobile clear terminal action

Co-authored-by: Orca <help@stably.ai>

* Fix terminal connection test mock

Co-authored-by: Orca <help@stably.ai>

* WIP: mobile markdown tabs before rebase

Co-authored-by: Orca <help@stably.ai>

* Add mobile markdown editing

Co-authored-by: Orca <help@stably.ai>

* Harden mobile tab and markdown sync

Co-authored-by: Orca <help@stably.ai>

* Fix mobile terminal reconnect loading race

Co-authored-by: Orca <help@stably.ai>

* Polish mobile terminal keyboard behavior

Co-authored-by: Orca <help@stably.ai>

* Simplify mobile markdown editor chrome

Co-authored-by: Orca <help@stably.ai>

* Move mobile markdown actions to top

Co-authored-by: Orca <help@stably.ai>

* Use app modals for markdown discard

Co-authored-by: Orca <help@stably.ai>

* Dismiss keyboard before markdown confirmations

Co-authored-by: Orca <help@stably.ai>

* Add mobile file explorer

Co-authored-by: Orca <help@stably.ai>

* Fix mobile file explorer type narrowing

Co-authored-by: Orca <help@stably.ai>

* Fix mobile files navigation param

Co-authored-by: Orca <help@stably.ai>

* Show mobile files connection wait state

Co-authored-by: Orca <help@stably.ai>

* Preview text files on mobile

Co-authored-by: Orca <help@stably.ai>

* Simplify mobile file previews

Co-authored-by: Orca <help@stably.ai>

* Clarify unavailable mobile file types

Co-authored-by: Orca <help@stably.ai>

* Fix mobile subscription and preview review issues

Co-authored-by: Orca <help@stably.ai>

* Keep fallback terminals visible on mobile

Co-authored-by: Orca <help@stably.ai>

* Keep mobile terminal tap active

Co-authored-by: Orca <help@stably.ai>

* Preserve mobile terminal fallback order

Co-authored-by: Orca <help@stably.ai>

* Fix mobile session tab authority

Co-authored-by: Orca <help@stably.ai>

* Run mobile tests in mobile CI lane

Co-authored-by: Orca <help@stably.ai>

* Bump mobile app version to 0.0.7

Co-authored-by: Orca <help@stably.ai>

* Allow main window IPC wiring size

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-12 14:38:12 -07:00
Neil 9859879960
Revert Windows SignPath signing (#1713)
* Revert "Fix signed Windows updater checksum metadata (#1712)"

This reverts commit 61f3d7c50e.

* Revert "Sign Windows releases with SignPath (#1300)"

This reverts commit ffa06c2b4a.
2026-05-12 00:48:33 -07:00
Neil 61f3d7c50e
Fix signed Windows updater checksum metadata (#1712) 2026-05-12 00:30:22 -07:00
Neil ffa06c2b4a
Sign Windows releases with SignPath (#1300) 2026-05-11 23:18:12 -07:00
Neil 34b537aa9c
fix(release): install linux computer-use deps 2026-05-11 15:52:24 -07:00
Jinwoo Hong 0f54103dda
Add native computer-use automation (#1683)
Co-authored-by: Orca <help@stably.ai>
2026-05-11 14:20:08 -07:00
Neil 6630cf6295
fix(release): handle orphaned release lookup (#1523) 2026-05-06 21:40:17 -07:00
Brennan Benson f90da6ea37
ci(telemetry): inject ORCA_POSTHOG_WRITE_KEY + ORCA_BUILD_IDENTITY at release build time (#1418)
Co-authored-by: Orca <help@stably.ai>
2026-05-04 21:43:22 -07:00
Jinwoo Hong fc578f5ea9
feat(mobile): Expo companion app [beta] (#1245)
Co-authored-by: Orca <help@stably.ai>
2026-05-04 13:08:27 -07:00
Neil c58e06383c
fix(release): filter desktop-only tags and consolidate release pipeline (#1386)
- release-cut.yml: require `^v[0-9]` tag shape when picking "latest
  stable" from GitHub releases. Previously only `-rc.*` was excluded, so
  publishing `mobile-v0.0.1` made it the latest stable, `strip_pre()`
  reduced it to `mobile`, `Number("mobile")` → NaN → 0, and a patch-bump
  produced `v0.0.1` (run 25304336767).
- homebrew-bump.yml: drop the blanket `release.published` trigger and
  add tag-shape guards. Any published release in this repo (including
  mobile) would otherwise fire the tap bump. Workflow_call from the
  desktop pipeline is the only intended path now.
- Inline create-release / build / publish-release / e2e / homebrew-bump
  jobs from release.yml into release-cut.yml, and delete release.yml.

Co-authored-by: Orca <help@stably.ai>
2026-05-04 00:21:21 -07:00
Neil 8ae119558b
fix: simplify release pipeline (#1362) 2026-05-02 14:17:21 -07:00
Neil 74a7a3c790
fix(release): grant actions:write on callers of release.yml (#1341)
release.yml's publish-release job got `actions: write` in f6cc2aee so it
can dispatch homebrew-bump.yml, but reusable-workflow permissions are
capped by the caller. release-cut.yml and release-rc.yml only listed
`contents: write`, so the first cut after f6cc2aee died with
startup_failure (run 25244518794) before any job could start.

Grant `actions: write` on both callers to match what release.yml needs.

Co-authored-by: Orca <help@stably.ai>
2026-05-01 22:34:26 -07:00
Neil f6cc2aee92
fix(release): grant actions:write + drop broken auto-merge on tap (#1336)
Two bugs surfaced on the v1.3.26 release:

1. release.yml's new `Trigger Homebrew cask bump` step failed with
   HTTP 403 "Resource not accessible by integration". The publish-release
   job's permissions block only listed `contents: write`, but
   POST /actions/workflows/:id/dispatches requires `actions: write` on the
   scoped-down GITHUB_TOKEN. Added the permission.

2. Even when the bump workflow does run, its `gh pr merge --auto` was
   silently no-op'ing against the homebrew-orca tap, leaving bump PRs
   open. `--auto` only activates when there's a required check or
   branch-protection rule to wait on; the tap intentionally has neither.
   Switched to a direct squash-merge so the tap stays hands-free as
   originally intended.

Co-authored-by: Orca <help@stably.ai>
2026-05-01 20:24:41 -07:00
Neil 6303bdb50f
fix(release): recover orphan tags instead of hard-failing the cut (#1335)
If a cut pushes the tag but the workflow is cancelled (or the dependent
release.yml job otherwise fails to start) before a GitHub release is
published, every subsequent patch cut recomputes the same version and
dies on "Tag already exists." This wedged the pipeline on 2026-05-01
when v1.3.26 was pushed by cancelled run 25237882049 — patch cuts kept
failing for hours until release.yml was dispatched by hand.

When the tag exists but no published release is attached, skip the
bump/push steps and emit the existing tag as the job output so
release.yml runs against it and finishes what the prior attempt
started. Still refuse the collision when a real published release
exists — that's a genuine conflict (e.g. a hand-tagged version) and
needs human attention.

Co-authored-by: Orca <help@stably.ai>
2026-05-01 20:13:46 -07:00
Neil 48d7e20493
fix(release): dispatch Homebrew cask bump from release pipeline (#1315)
Co-authored-by: Orca <help@stably.ai>
2026-05-01 12:21:53 -07:00
Neil ff22944fd7
feat(release): publish Orca as a Homebrew cask (#1304)
Co-authored-by: Orca <help@stably.ai>
2026-05-01 00:33:21 -07:00
Neil 4318f3bfa7
chore: reduce root-directory clutter (#1275)
Co-authored-by: Orca <help@stably.ai>
2026-04-30 00:09:46 -07:00
Brennan Benson 3a138a2f07
ci: stabilize pnpm native addon install in PR checks (#733)
Co-authored-by: Orca <help@stably.ai>
2026-04-29 14:29:24 -07:00
Jinwoo Hong c9391e203f
feat(orchestration): add inter-agent orchestration system (#1188)
Co-authored-by: Orca <help@stably.ai>
2026-04-28 12:21:31 -07:00
Brennan Benson 812ca5488b
fix(preload): collapse index.d.ts into type-checked api-types.ts (#1197)
Co-authored-by: Orca <help@stably.ai>
2026-04-27 21:46:17 -07:00
Neil 4ad1458fad
fix(release): derive prerelease state from tag shape, not release flag (#1187)
Two interacting bugs produced v1.3.1-rc.4 today:

1. release-cut.yml used `gh release list --exclude-pre-releases` to
   find latest_stable. That filter checks the GitHub `isPrerelease`
   flag, which had been flipped to `false` on several RC releases
   (including v1.3.22-rc.2 and v1.3.1-rc.3). The query returned an
   RC tag, and bump() then silently mis-parsed `1.3.1-rc.3` via
   `Number("1-rc") = NaN` -> `(NaN||0)+1 = 1`, yielding base=1.3.1.

   Fix: filter by tag shape (no `-rc.`) in jq so an RC tag can never
   be treated as stable, regardless of metadata. Also strip any
   prerelease suffix in bump() and semver_gt() so the numeric math
   is robust even if a caller passes a dirty input.

2. release.yml's final publish step only ran `--draft=false`, leaving
   the `prerelease` flag at whatever electron-builder last wrote. When
   that flag ended up false on an RC, GitHub marked the RC as the
   "latest" release.

   Fix: re-assert `--prerelease=<derived from tag>` alongside
   `--draft=false` so the final state is a function of the tag name,
   not of any intermediate publisher behavior.

Co-authored-by: Orca <help@stably.ai>
2026-04-27 13:49:41 -07:00
Jinjing 6d2212c068
chore: remove pr-size-labeler workflow and config (#1177)
- chore: remove pr-size-labeler workflow and config

Co-authored-by: Orca <help@stably.ai>
2026-04-27 10:11:21 -07:00
Neil aac395dbff
fix(release-cut): anchor RC base to latest_stable + patch (#1163)
The rc branch previously derived the base version from the highest
git tag, which reopened an already-shipped series: after v1.3.21
stable was published, cutting an RC still produced v1.3.21-rc.N.
Anchor RCs to latest_stable + patch so a fresh RC after v1.3.21
correctly resolves to v1.3.22-rc.0. Minor/major RCs are cut by
running that stable kind first, which is a clearer workflow than
the old heuristic.

Co-authored-by: Orca <help@stably.ai>
2026-04-27 00:09:27 -07:00
Neil 6d585e821e
ci: cache electron + electron-builder tool downloads on release (#1110)
electron-builder fetches the Electron binary and its platform tools
(notarytool, winCodeSign, nsis, squirrel, AppImage) on every run.
Cache those per-platform so repeat releases skip the re-download.
Saves ~30-90s per job, including the macOS long pole.

Key includes pnpm-lock.yaml so a bump to electron/electron-builder
invalidates stale cached binaries; restore-keys falls back to the
latest per-platform cache in between lockfile changes.

Co-authored-by: Orca <help@stably.ai>
2026-04-25 21:30:52 -07:00
Neil eeffbf0a73
ci: cache pnpm store on release + centralize node version in .nvmrc (#1106)
Co-authored-by: Orca <help@stably.ai>
2026-04-25 19:03:05 -07:00
Neil 3f8ebb258d
ci: remove pr-size-labeler backfill workflow (#1103)
The action refuses to run unless GITHUB_EVENT_NAME=="pull_request",
so workflow_dispatch no-ops. Backfill was completed out-of-band via
a local script calling the REST labels endpoint; this one-off
workflow is no longer useful and is being deleted.

Co-authored-by: Orca <help@stably.ai>
2026-04-25 17:40:26 -07:00
Neil 64c77d735a
ci: add one-off workflow to backfill size labels on open PRs (#1102)
A manually-dispatched workflow that fans out across all open PRs and
runs the size labeler against each. This is a one-time verification
of the labeler against the existing PR set; the workflow will be
removed in a follow-up after it runs.

Co-authored-by: Orca <help@stably.ai>
2026-04-25 17:30:44 -07:00
Neil b96dc93d72
ci: auto-label PRs by size via cbrgm/pr-size-labeler-action (#1101)
Adds a GitHub Actions workflow and config that labels every PR with
size/xs..size/xl based on files changed and lines added, so reviewers
can see at a glance how big a PR is. Lock files and generated/vendored
paths are excluded, and deletions aren't counted so refactors that
remove code aren't over-penalized.

Co-authored-by: Orca <help@stably.ai>
2026-04-25 17:20:42 -07:00
Neil 2a71ee6fd0
Add community PRs directly to project (#1052) 2026-04-24 13:50:10 -07:00
Neil 2b950a66ac
Add community PR project tracking workflow (#1030) 2026-04-24 13:33:18 -07:00
Neil e2886ef3fe
chore(release): expose patch/minor/major as Cut Release kinds (#999)
Replaces the `stable` + optional `version` inputs with explicit
`rc | patch | minor | major` choices. Stable kinds are always computed
off the latest published stable release (ignoring intermediate RCs), so
there's nothing to type and no way to pick a version that regresses
electron-updater.

The stable-must-strictly-increase guard stays in place for patch/minor/
major. RC behavior is unchanged — continues an active series or starts
a new one on the next patch.
2026-04-23 11:11:46 -07:00
Neil c4a6701d9f
chore(release): move release cutting to a Cut Release workflow (#972)
Replaces the local `pnpm release:{rc,patch,minor,major}` scripts with a
single manually-dispatched GitHub Actions workflow (`release-cut.yml`)
that takes `kind` (rc|stable), an optional `ref`, and an optional explicit
`version`.

Why: cutting releases locally was too easy to get wrong — `npm version
prerelease` behaves differently depending on whether the current version
is already an rc, there was no guard against tagging a dirty tree or an
off-main branch, and the "bad commit just landed, release the previous
one" case had no first-class answer. The new workflow:

- Resolves the next version automatically from GitHub Releases (or takes
  an explicit override).
- Refuses to cut a stable release whose version isn't strictly greater
  than the latest published stable. This is the only invariant
  electron-updater needs within the `latest` channel.
- Only fast-forwards `main` with the version-bump commit when the caller
  released the tip of `main`. Off-main releases publish only the tag, so
  main is never polluted by a one-off RC against a feature branch.

CONTRIBUTING.md now documents the new flow with the common scenarios
(normal release, bad-commit-revert-to-previous-SHA, one-off RC, explicit
minor/major). The scheduled RC cron in release-rc.yml is untouched.
2026-04-22 23:20:04 -07:00
Jinjing 00fdb8e8cc
ci: check out PR head instead of merge ref in e2e workflow (#940)
The e2e reusable workflow defaulted to github.ref, which on
pull_request events is refs/pull/N/merge. GitHub does not compute
that ref when the PR has conflicts or before the merge commit is
ready, causing actions/checkout to fail with "couldn't find remote
ref refs/pull/N/merge" for reasons unrelated to the code.

Pass github.event.pull_request.head.sha from pr.yml so e2e checks
out the PR head directly.

Motivating failure: https://github.com/stablyai/orca/actions/runs/24768962365
Seen on #937.
2026-04-22 09:59:27 -07:00
Brennan Benson 660b5f4149
ci: run E2E tests on every PR, surface on release (non-blocking) (#842) 2026-04-19 13:48:27 -07:00
Jinjing 1f1c66e59a
ci(release): retry electron install/publish on transient CDN failures (#809)
Wrap the dependency install and release-artifact publish steps with
nick-fields/retry@v3 so GitHub CDN 504s don't require a manual
re-run of the release workflow.
2026-04-18 17:57:27 -07:00
Neil 93ede4807a Skip delayed RC schedules outside target PT hours 2026-04-17 15:29:31 -07:00
Neil 3cd49fd11f Run RC releases directly from the scheduler 2026-04-15 15:09:00 -07:00
Neil fe8f863052 Simplify remaining Orca issue forms 2026-04-14 23:29:55 -07:00
Neil 88f03af594 Skip duplicate RC retries within same PT hour 2026-04-14 15:17:25 -07:00