* perf(layout): skip unused normalization reports in pane commands (#42615)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
* Clarify cleanup pinning and ignored-file protection (#42616)
* test: remove 55 low-value suites and assertion driver (#42605)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
* fix(skills): skip Claude sync scratch folders during skill discovery (#42610)
Claude Code parks replaced skill copies in `.trash` and in-progress syncs
in `.staging` under its skills roots. Discovery walked into both, so each
synced skill showed up as duplicates. Prune those directory names in the
native file walk and in the generated WSL `find` command.
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
* test: remove 78 low-value suites and trim redundant cases (#42621)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
* test: remove 53 low-value suites and trim redundant cases
---------
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
Co-authored-by: BingZ <zzb@gxsmjx.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
Ports the edge halves of two release-branch changes onto main, which production
edge deploys come from (prod edge = ba3f991):
- Ingress mode (#41986): signed ingress header (INGRESS_SECRETS) and token mode
for a cloud load balancer (INGRESS_TOKENS secret, INGRESS_ORIGINS,
INGRESS_SOURCE_CIDRS). All or nothing: a partial or malformed setup turns the
mode off and logs relay_edge_ingress_config_invalid; it never throws. Requests
from the configured egress ranges that fail the trust rule get 403. Admin calls
are matched first. Adds cloud/apps/relay-ingress (stateless proxy) and the
relay-contract ingress-header module.
- POST /__admin/verify (#42538, edge half): the director's check for a phone
resume token or invite that exists only on the edge. Hash only, read-only: an
object that never held the host (or no longer holds it here) answers not_here
before anything is written; otherwise the token's jti is its only write.
Replay and jti_full are 409. Adds hash-input variants to RelayCredentialStore
(shared with the edge; existing methods delegate, behaviour unchanged).
Kept from main: drain, single-use admin tokens (jti), signing-key rotation,
JWKS-outage tolerance, keepalive auto-response, health probe. The place label
keeps main's '<continent>/<colo>' and, only behind a verified ingress, appends
'/<country>/<ingress name>'.
No user effect until the ingress vars/secret are set or the director calls verify.
* feat(mobile): ship Android as dev.orca.app and check updates by install source
Android becomes dev.orca.app, the package already live on Google Play; iOS keeps
com.stably.orca.mobile. The move screens and the "Orca (old)" label stay keyed to the old package,
so they never show in the new app.
The app asks Android who installed it. A Play install gets its updates from Play, so it runs no
GitHub check, hides "Check for updates" and points the update wall at Google Play. Any other
install checks GitHub for android-v releases; the old package keeps mobile-android-v.
* ci(mobile): release dev.orca.app to Play and publish Google's signed APK
An android-v tag (or a manual run) builds the AAB with the upload key and sends it to Play's
internal track. It then downloads the universal APK Google signed for that versionCode, fails unless
its V3.0 signer is Google's app signing key, and publishes it as the android-v GitHub pre-release.
Play and GitHub installs are the same signed app. A manual run with publish_github_release off only
validates the bundle with Play.
The orca.dev APK bump job is gone: the site builds its link from mobile-android-v, so it stays on
the last old-app APK, which sends people to the new app.
* Remove finished-agent retention and keep sleeping status with panes
* Fix legacy pane projection and sleeping-agent regression fixtures
* Cover sleeping display-only status in parked terminal coverage
* Keep pane conversation identity only across continuous agent observations
* Remove duplicate import and keep sleep fixtures type checked
* Preserve conversation boundaries across replays and inherited clocks
* Cover conversation map stability across a large status batch
* Bound conversation capacity work to changed pane owners
* Pass capacity classifiers their layout input directly
* Finalize conversation provenance once per status batch
* Keep paired snapshot tests focused on observable outcomes
* Type the conversation provenance test fixtures explicitly
* Consolidate agent session imports after main merge
* Preserve provider replacement evidence when resetting conversation continuity
* Separate retention deletion from sleeping agent display
* Restore migration row bucket comparison
* Skip unusable pane identities before title ownership lookups
* Refresh conversation titles when their owning pane changes
* Update completion test sound mock after module move
* Update imports for main module moves
* Remove an unreachable native chat owner comparison
The E2E agent guide linked the terminal layout parity runner and the
workspace layout checker at their old config/scripts locations, so the
link was broken and the inspection command failed with MODULE_NOT_FOUND.
Point both at their current locations and update the checker's own
usage comment to match.
Fixes#42426
Co-authored-by: Neil <neil@stably.ai>
* Keep original native chat journals until a later update
* Preserve empty legacy chat epochs on the reader worker
* Remove unused legacy retirement remnants
* ci: isolate real-process skill release suites
Linux and mac skill-sharing release gates hit child-readiness marker
timeouts in run 43573545467. The nested Vitest children inherit
process.env, and per-file isolation is only on for Windows unless
ORCA_VITEST_ISOLATE_EVERY_FILE is set. Reapply the reviewed 258 fix
(3ad9722af6) to both skill-suite steps. No suite, assertion or
timeout changes.
* fix(release): draft from the verified tag with default-branch metadata
Run 43573545467 got 403 "Resource not accessible by integration" because
the draft POST sent the release commit SHA as target_commitish, which
needs workflow authority GITHUB_TOKEN cannot get. The existing tag owns
source identity; target_commitish is ignored for an existing tag, so
send the default-branch name as API metadata (design B, as in
d28d414bbd), with the D1b fixes:
- An already-published release, or one published mid-preparation, now
fails instead of returning success to downstream builds.
- Peel the captured tag object ID (git/tags, git/commits) rather than
re-dereferencing the tag name; bind it to the checkout and SOURCE_SHA.
- Refuse a draft electron-builder would not select first (untagged,
bare-version shadow, other id, published, invisible), the #21835 shape.
- Re-read the tag after drafting, export the verified tag object and
commit, and re-check both immediately before publish-release undrafts.
Uses only the official GITHUB_TOKEN.
* test: remove redundant mobile preview and editor wrapper tests
* test: trim mobile traversal and mocked host assertions
---------
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>