Commit Graph
575 Commits
Author SHA1 Message Date
eric ce5c0bcb95 [eric] ci: merge squirrel into eric/dev (mac skip-guard + windows gh-publish naming) 2026-05-31 17:32:34 -07:00
eric 6b145b7c88 [eric] fix: merge eric/youtube into eric/dev (bundle kirbah-mcp-youtube to skip npx on windows) 2026-05-31 17:18:24 -07:00
ciregenz d544025142 [eric] ci: skip macOS release steps when Apple secrets absent (Mac ships via publish.sh) + drop EP_PRE_RELEASE checkbox-forcing 2026-05-31 17:17:59 -07:00
eric 72e0bf4105 [eric] fix: vendor kirbah-mcp-youtube.js bundle (33mb, mostly googleapis) to skip npx on first run 2026-05-31 16:07:53 -07:00
ciregenz b1762d1187 [eric] ci: publish windows squirrel assets via gh (not electron-builder) so the installer keeps the OpenSwarm-Setup-x64.exe name v1.1.71 2026-05-31 16:06:50 -07:00
eric 1a80d7329c [eric] fix: bundle @kirbah/mcp-youtube in build-app.sh so windows users dont need npx 2026-05-31 16:06:04 -07:00
eric d0e03e4555 [eric] sync: merge v1.1.71 into main (take theirs on stale 1.1.43 hotfixes) 2026-05-31 15:56:09 -07:00
ciregenz 67894bdfcf [eric] ci: build windows release with -Squirrel override so the installer is named OpenSwarm-Setup-x64.exe (matches landing page + latest.yml) 2026-05-31 15:45:02 -07:00
ciregenz b0c4278ccb [eric] ci: bypass the dogfood release-gate for macOS too (mirrors release-windows) so v1.1.71 builds the DMG 2026-05-31 15:28:03 -07:00
ciregenz 3c32fe7773 [eric] ci: ship experimental builds as semver-suffix channel (not GH pre-release) so allowPrerelease clients actually see them v1.1.71-rc.1 2026-05-31 14:26:59 -07:00
ciregenz 329e43ce2c [eric] win: generate latest.yml for squirrel releases so existing NSIS clients can migrate 2026-05-31 13:06:06 -07:00
ciregenz 496bea736d [eric] win: match the legacy NSIS uninstall entry by DisplayName -like 'OpenSwarm*' (NSIS appends the version, exact match found nothing) 2026-05-30 03:03:49 -07:00
ciregenz c6cdb982fa [eric] release: bump squirrel to 1.1.71 (first squirrel release version / migration target) 2026-05-30 01:17:10 -07:00
ciregenz 78eedf18c4 [eric] win: squirrel firstrun silently removes the legacy NSIS install (NSIS->Squirrel migration cleanup, deferred to quit, best-effort) 2026-05-30 01:17:10 -07:00
ciregenz abf2daf0da [eric] win: fold proven squirrel autoUpdater fixes into squirrel (non-throwing check, event-signature normalization, already-running guard) 2026-05-30 01:06:11 -07:00
ciregenz e7dde47869 [eric] ci: point the squirrel build workflow at the renamed squirrel branch 2026-05-29 22:22:43 -07:00
ciregenz be8d6fd081 [eric] win: switch product to squirrel target + wire built-in autoUpdater on the RELEASES feed 2026-05-29 22:22:43 -07:00
ciregenz 4c6326a566 [eric] security: pin 9router to loopback so it stops lan-exposing api keys + tripping the firewall prompt 2026-05-29 22:17:26 -07:00
ciregenz 028984cb67 [eric] build: precompile python bytecode with unchecked-hash so installs stop recompiling every launch 2026-05-29 22:17:26 -07:00
ciregenz ac31593eda [eric] win: handle Squirrel install events so the app makes its Start Menu/Desktop shortcut 2026-05-29 19:41:03 -07:00
ciregenz e209c48f59 [eric] build: pass squirrelWindows.iconUrl in -Squirrel override (eb26 requires it) 2026-05-29 19:08:45 -07:00
ciregenz 7e8a5fa440 [eric] build: fix -Squirrel arg passing (array expansion not @ splat) so the target override reaches electron-builder 2026-05-29 19:02:00 -07:00
ciregenz 81cabb5390 [eric] ci: push-triggered Squirrel installer build for personal install-and-feel testing 2026-05-29 18:55:24 -07:00
ciregenz 06dde355a5 [eric] build: pin electron-builder-squirrel-windows so the -Squirrel target is build-safe 2026-05-29 18:55:24 -07:00
ciregenz 0d0bae0ba8 [eric] build: set explicit dmg.size (5g) so dmgbuild stops under-allocating the disk image 2026-05-29 16:14:58 -07:00
ciregenz e7991f138b [eric] ci: run signtool verify /pa unconditionally when authenticode status isnt Valid 2026-05-29 15:53:10 -07:00
ciregenz af24590b5f [eric] ci: verify-signature accepts Azure Trusted Signing via signtool /pa cross-check 2026-05-29 15:37:59 -07:00
ciregenz f7741de556 [eric] ci: bypass dogfood release-gate for v1.1.70 windows build v1.1.70 2026-05-29 13:09:02 -07:00
ciregenz 96f647c851 [eric] ci: fix invalid flow-mapping env in release workflows (0-job parse failure) 2026-05-29 13:05:00 -07:00
ciregenz 90bd4e2372 [eric] release: bump version to 1.1.70 2026-05-29 12:56:10 -07:00
Eric 88ff712c2e [eric] ci: drop the dogfood cron, run only on build-affecting pushes + dispatch
- the every-2-hours cron spent a full packaged-app build 12x/day just to tick;
  remove it and rely on the existing path-gated push trigger plus dispatch
- release-readiness now accrues its consecutive-clean streak from push/dispatch
  runs rather than the clock; fire workflow_dispatch a few times before a
  release if the streak is short
2026-05-29 12:18:47 -07:00
Eric 2b4d90edaa [eric] ci: parallelize + cache the e2e gate to cut push wall-clock under ~10 min
- split the single windows e2e job into parallel jobs: gate (pure-node
  selftests, no build), verify (build + verify-all), playwright (build +
  renderer suite). verify and playwright run concurrently so wall-clock is
  max(verify, playwright), not their sum
- build the UNPACKED app on the gate path (electron-builder --dir via a new
  -DirOnly switch in build-app-win.ps1), skipping the ~2min NSIS LZMA
  compression. verify-all drives win-unpacked\OpenSwarm.exe; afterPack +
  locale paks still run in the pack phase, and verify-update-feed skips
  cleanly when no installer feed is present
- cache the heavy build inputs (bundled Python env, uv, MCP bundles) + npm
  across runs, keyed on their source manifests; the build script already skips
  any input already on disk, so warm builds are fast
- move the destructive installer cycle to its own job gated off routine pushes
  (runs on PR-to-main / dispatch; release-windows.yml covers v* tags)
- apply the same caching to dogfood (shares cache keys, so the two warm each other)
2026-05-28 23:55:32 -07:00
Eric 99f1e56497 [eric] installer: skip Defender prewarm on silent installs to fix the install hang
- the customInstall macro runs `OpenSwarm.exe --prewarm` via nsExec::Exec,
  which is synchronous with no upper time bound. On a clean box the silent
  install launches the freshly-extracted, not-yet-signed binaries, provoking a
  cold Windows Defender scan that stalls for minutes - this hung the CI
  installer-verification step (no output for ~3m, then cancelled)
- both CI verification and production auto-updates run the installer with /S,
  so this same stall could hang a real user's auto-update
- gate the prewarm behind ${If} ${Silent} ... ${Else}: interactive first-time
  installs (where the cold-start win lands) still prewarm; silent installs skip
  it and finish promptly
- verify-installer: keep the blocking spawnSync (it must wait for the registry
  uninstall entry the gate checks) but add a 300s timeout so any future
  synchronous stall fails the gate in minutes instead of hanging the job
2026-05-28 23:39:41 -07:00
Eric ef0c9bd5ee [eric] e2e: fix latent serial-masked failures (modes + theme matrix)
- modes test: replace expect.fail() (not a Playwright API, threw TypeError)
  with annotate+skip when a clean profile has no edit-or-create entry point
- theme x toggle matrix: clicking Dark/Light updates the settings draft, so
  Save before asserting localStorage flips; conditional Save handles the
  already-that-mode case
- both were hidden until the dashboard-precondition fix unblocked the serial
  chain past them; full suite passes locally now
2026-05-28 23:14:02 -07:00
Eric 77ad8333c9 [eric] ci: stop host-leakage flagging the generic CI runner account
- skip the bare /Users/runner and /home/runner homes and the literal
  "runner" username: they collide with third-party embedded paths and the
  english word "runner" everywhere, burying real leaks in noise
- the precise /Users/runner/work + D:\a\openswarm work-dir patterns still
  catch a genuine leak from those accounts
2026-05-28 23:14:02 -07:00
Eric d6e6f9e9e0 [eric] ci: drop macOS legs and gate the packaged-app build on artifact paths
- e2e + dogfood matrices are now windows-latest only: GitHub's scarce mac
  runners left the macos legs perpetually queued/starved and they surfaced
  mac-only failures untriageable from the Windows dev box, so the whole
  matrix read red
- remove the now-dead macOS build steps; re-add macos-14/macos-13 (matrix
  edit + workflow_dispatch) when a Mac maintainer can own them
- gate the expensive build on artifact-affecting paths only (electron,
  frontend, backend, e2e, build+ci scripts) plus PRs to main + dispatch;
  cheap hermetic gates still run on every push
- verify-release-readiness defaults to --require win32 so the removed darwin
  leg does not block every v* tag forever
2026-05-28 23:14:01 -07:00
Eric e0ebd23a5a [eric] e2e: create a dashboard before the toolbar/canvas specs so a clean CI profile does not fail - combinatorial Add-note and deep-coverage Dashboard-canvas both clicked surfaces that only mount once a dashboard is active, which a freshly-wiped CI profile lacks 2026-05-28 22:29:20 -07:00
Eric 894d1a7a95 [eric] gitignore: ignore the repo-root test-results/ playwright drops when run from the root 2026-05-28 21:51:49 -07:00
Eric 9aaf503b03 [eric] e2e: expose the redux store deterministically via webPreferences.additionalArguments, fix visibility capture (read the chromium trace from tracingComplete, resolve click targets to the control, drop the dead contextBridge ipc wrap), harden onboarding/settings/combinatorial specs and add multi-window-stress 2026-05-28 21:41:01 -07:00
Eric 41031a7790 [eric] backend: load_settings never bricks boot on a corrupt or version-drifted settings.json - preserve unparseable files aside and drop only the invalid fields instead of raising, plus a migration test suite 2026-05-28 21:41:01 -07:00
Eric f1a3ec2598 [eric] electron: fix the electron 42 windows build - electronLanguages en to en-US so the renderer gets a non-empty --lang (electron 42 renamed en.pak to en-US.pak; empty locale crashed blink LCIDFromLocaleInternal with 0xC0000005), bump electron-builder 25.1.8 to 26.8.1 + migrate win.sign to signtoolOptions, after-pack hook restores the 9router node_modules eb26 drops from extraResources so the subscription service stops hanging, and verify-locale-paks + verify-router-deps gate both in verify-all 2026-05-28 21:41:01 -07:00
Eric 0d90a469aa [eric] e2e: onboarding-completion gains OPENSWARM_E2E_REAL_UI=1 mode that drives each step's actual primary user action via the DOM - settings open + Models tab, customization to Actions/Skills, dashboard New Agent + Browser webview mount, Add App picker - so animation-timing and AC-runtime bugs surface rather than only slice state corruption, with agent-touching send-message gated on ANTHROPIC_API_KEY/etc being wired 2026-05-28 09:38:43 -07:00
Eric c55f802731 [eric] e2e: settings-pairwise gains OPENSWARM_E2E_THROUGH_BACKEND=1 mode that issues the real PUT /api/settings round-trip using the renderer auth token and dispatches the response, exercising the backend pydantic validation, write-lock, and slice-shape contract instead of bypassing them with a local fulfilled-action dispatch 2026-05-28 09:38:35 -07:00
Eric 6353bbddda [eric] electron+e2e: close the init-script race - main reads OPENSWARM_E2E env on startup and appends an --openswarm-e2e chromium switch, preload reads the switch BEFORE any page script parses and contextBridge-exposes __OPENSWARM_E2E__=true so the production store-on-window gate fires deterministically rather than racing addInitScript against bundle parse 2026-05-28 09:38:29 -07:00
Eric d8c4aeb137 [eric] e2e+ci: addInitScript in launchApp setting __OPENSWARM_E2E__=true before bundle.js parses so the production-build store-on-window gate fires for specs that drive Redux directly, plus chain selftest-pairwise into verify-all and the e2e workflow so the covering-array math is validated on every CI push 2026-05-28 09:35:27 -07:00
Eric b0d7d8209c [eric] e2e: add onboarding-completion spec that drives every step via markStepCompleted/unmarkStepCompleted across three orderings (sequential 1-8, skip pattern 1-2-4-3-5-7-6-8, full unmark+re-mark idempotency) plus same-id idempotency and roadmap-counter agreement, regressing the AC animation leak class historically caused by re-firing completed-step transitions 2026-05-28 09:35:21 -07:00
Eric 510d2bdd42 [eric] e2e: add settings-pairwise spec that applies each generated row via the settings/update/fulfilled action, asserts every switch persisted + theme localStorage took + zero renderer crash + zero unexpected console errors, with OPENSWARM_E2E_EXHAUSTIVE=1 switching to the full sixty-four-row cartesian 2026-05-28 09:35:15 -07:00
Eric 27b31c80f1 [eric] ci: add selftest-pairwise that vendors the pairwise generator and asserts every-pair-covered, deterministic, bounded, and isCovering correctly fails on incomplete row sets, catching a future regression that drops the all-pairs guarantee before any e2e spec runs 2026-05-28 09:35:15 -07:00
Eric 8bcc18c99c [eric] e2e: add helpers/pairwise with an IPO-style covering-array generator that seeds each row from an uncovered pair (fixing the greedy tie-break bug a pure-greedy hits) plus cartesian for opt-in exhaustive mode, returning eight rows that cover all sixty pairs of the six binary settings instead of the full sixty-four 2026-05-28 09:35:07 -07:00
Eric 643f159205 [eric] ci: change dogfood cron from every-six-hours to every-two-hours so twelve consecutive clean runs accrue in twenty-four hours instead of three days while keeping cost at roughly one third of an every-thirty-minutes cadence 2026-05-28 09:24:01 -07:00