Commit Graph
2258 Commits
Author SHA1 Message Date
ciregenz c577382943 [eric] oauth: complete Claude callback server-to-server, not a cross-port browser 302 (fixes browser-dependent 'Connecting' hang from #84) 2026-06-17 18:24:33 -07:00
Eric 3ec6b16b26 [eric] release: bump version to 1.3.89 2026-06-17 18:11:46 -07:00
Eric 90aa66f6ce [eric] backend: timestamp each startup background task to pin the cold-start loop stall
- instrumented cold v1.3.88 proved the lifespans are 141ms even cold; the ~18s
  cold gap is a backgrounded create_task blocking the event loop AFTER lifespan
  startup but BEFORE uvicorn reports ready (what the health probe waits on)
- add [perf] entry/segment logs to the post-startup background tasks: mcp refresh,
  skill refresh, 9router ensure (+ prelude bisection), and svc._post/_post_or_spool
- logging only, no behavior change; next cold log names the exact blocking call
2026-06-17 18:11:46 -07:00
ciregenz 763d445f45 [eric] usage: minimal paid-usage meter nudge (approaching + maxed) mirroring the free-trial pattern 2026-06-17 17:53:00 -07:00
Eric 19ce052560 [eric] release: bump version to 1.3.88 2026-06-17 17:41:47 -07:00
ciregenz 6b8750efaf [eric] 9router: rotate the unbounded request-details log + cap node heap, fixes the idle OOM crash 2026-06-17 16:20:59 -07:00
Eric 2151802f41 [eric] docs: record winv2 cold-start source audit, mark DEBUGLETON hypothesis disproven
- audited all 16 lifespans + the service client in source: every body is trivial
  (yield / makedirs / early-return migrate / fire-and-forget svc.sync)
- the no-op debug() shipped and verified live but cold stayed 21.5s, so the
  DEBUGLETON scan was not the cold driver; residual ~16s is cold first-run paging
- next cold build with the new [perf] markers pins it or confirms distributed I/O
2026-06-17 03:22:10 -07:00
Eric b6652b6722 [eric] backend: add per-lifespan boot timing to pin cold-start stalls
- debug(sub_app.name) is a no-op in packaged builds, so the packaged backend.log
  had zero per-SubApp markers and a cold stall could only be guessed at
- wrap each enter_async_context with time.perf_counter + a flushed [perf] print,
  plus a lifespans-total line, so a cold launch names the exact slow lifespan
- logging only, no functional change; loop logic validated warm
2026-06-17 03:22:10 -07:00
Eric 3d6fe48340 [eric] perf: no-op swarm-debug debug() in packaged mode (removes ~17s cold-start scan)
- first debug() call instantiated Debugleton -> recursive os.scandir project scan on the boot path (~17s cold, ~80ms warm)

- early-return when OPENSWARM_PACKAGED=1; dev keeps the full debugger; debug() returns None so callers are unaffected

- validated: with the flag debug() no-ops (no scan); debugger is pip-installed from repo/debugger at build so this ships
2026-06-17 02:31:56 -07:00
Eric fa8daf2e76 [eric] perf: ROOT CAUSE of cold start found -- swarm-debug DEBUGLETON scandir scan on boot path
- debug() -> Debugleton().find_file_info -> build_structure recursive os.scandir walk runs synchronously on the bind path

- cold (uncached fs) ~17s, warm ~80ms; explains why defender + file-count did nothing (it is a scandir walk)

- proposed safe fix: no-op debug() when OPENSWARM_PACKAGED=1 (skip the scan in prod); expect cold ~22s -> ~5s
2026-06-17 02:24:29 -07:00
Eric afbfb8f82a [eric] perf: item 5 (defender exclusion) measured -- NO cold benefit; cold is not defender
- cold 21.4s WITH exclusion vs 22.5s without; items 1+3 also no change

- two defender-targeting fixes both ~0 -> residual cold is disk I/O + interpreter init + squirrel first-run, not AV

- recommend removing the exclusion (weakened AV for no gain); bank the wins (cold 54-138->22s, warm 9-10->5s)
2026-06-17 02:12:15 -07:00
Eric 1a559deadf [eric] perf: revert #9 items 1+3 build wiring (measured: no cold benefit)
- zip-stdlib + pyc-only gave no cold improvement (cold is native-binary-scan-bound)

- keep build lean; scripts stay as drafts; cold lever is the opt-in defender exclusion (item 5)
2026-06-17 01:50:18 -07:00
Eric c667a16206 [eric] perf: measure #9 items 1+3 on signed build -- NO cold benefit (negative result)
- python-env 13554->9285 files (31% fewer) but cold stayed 22.4s vs 22.5s

- cold is native-binary-bound (claude.exe 242MB + .pyd/.dll), not file-count; zip/pyc only touch pure-python

- real cold lever is item 5 (defender exclusion) or trimming native deps; warm 5s already under goal
2026-06-17 01:33:26 -07:00
ciregenz 18be72cf9c [eric] phase3b: 'fresh runs in ~Xh' on the spent nudge + one-tap continue-on-your-model after exhaustion 2026-06-17 01:14:40 -07:00
Eric 6d0e6bbf04 [eric] perf: mark #9 items 1+3 enabled + validated (import-clean, 31% fewer files) 2026-06-17 01:09:26 -07:00
Eric b22f46be47 [eric] perf: enable #9 items 1+3 in the windows build (zip stdlib + pyc-only deps)
- shrinks python-env 13554 -> 9287 files (~31%); validated: backend.main imports clean with both applied

- targets the python-env Defender scan that dominates the 22.5s cold start

- guarded (skips if python313.zip already present); non-fatal
2026-06-17 01:08:00 -07:00
Eric ff432466bf [eric] perf: re-verify task #10 on signed v1.3.86 (identical bits to abandoned 1.3.87)
- download 371.5MB @ 27.1MB/s, authenticode valid; install 6.3s

- cold 22.6s, warm 5.0s, asar 2.1MB, skills live total=17 -- all on the signed 1.3.86 build
2026-06-17 00:49:58 -07:00
ciregenz 46753fa9c8 [eric] aux: fix stale sonnet id (claude-sonnet-4-20250514 4.0 -> claude-sonnet-4-6), was 404ing every aux call 2026-06-17 00:46:21 -07:00
ciregenz 8c93d42226 [eric] phase2: fire connect offer on MCPSearch/MCPList (not just loop), 8s preflight, render below the reply 2026-06-17 00:30:42 -07:00
Eric 1f2d5f19b3 [eric] release: set version back to 1.3.86 on the fixed code (reuse the cancelled tag)
- 1.3.86's build was cancelled (never shipped); reuse the number, supersede 1.3.87
2026-06-17 00:13:49 -07:00
Eric 9f30c58d28 [eric] perf: task #10 results verified on signed v1.3.87 build
- signed installer (authenticode valid), 371MB @ 23.5MB/s; install ~9s

- cold backend-ready 54-138s -> 22.5s; warm 9-10s -> 5.0s (under 10s goal)

- asar 607MB -> 2.1MB; skills catalog live total=17 (bug #1 confirmed); validate 5/5 pass

- add before/after startup graph
2026-06-17 00:08:26 -07:00
Eric 3bd4506e4e [eric] release: bump version to 1.3.87
- supersedes the cancelled 1.3.86 build (pre-extract was too slow to package)
2026-06-16 23:44:22 -07:00
Eric 41f812f7d6 [eric] app-builder: ship webapp node_modules as .tar.gz, not pre-extracted (build perf)
- pre-extracting ~30k files into resources blew the windows build past 50min (squirrel lzma on tiny files) + bloated the installer

- revert step 4b to a single node_modules.<digest>.tar.gz (mirrors mac); runtime extracts to warm cache in the background at startup (off the create path)

- runtime _bundled_extracted_modules() stays as a harmless fallback (returns None -> tar path)
2026-06-16 23:44:21 -07:00
ciregenz fc6d53b492 [eric] phase3: hide the trial-spent nudge once a real model is connected 2026-06-16 23:00:23 -07:00
ciregenz 920f73cee9 [eric] phase2/3: minimal borderless free-trial nudges (post-wow + spent) + minimal in-task MCP connect card 2026-06-16 22:57:43 -07:00
Eric 623a819457 [eric] perf: task #10 download-speed + signature tracker for the signed build
- times gh release download (MB/s), verifies authenticode, hands off to validate_packaged.ps1
2026-06-16 22:38:47 -07:00
ciregenz 78c0971e88 [eric] phase2: wire in-task MCP connect offer into the ToolSearch loop-breaker (suggest-only, slug-matched) 2026-06-16 22:34:28 -07:00
Eric 58c2b6f411 [eric] perf: task #10 validation kit for the signed packaged build
- TASK10_CHECKLIST.md: produce signed build, verify signature, install, cold-start, GUI checks

- validate_packaged.ps1: automated structural + perf checks (verified it flags the unfixed 1.2.82)
2026-06-16 22:29:55 -07:00
Eric 947a6c1db5 [eric] perf: draft opt-in defender exclusion helper for windows cold-start (#9 item 5)
- scripts/add-defender-exclusion.ps1: dry-run default; -Apply/-Remove (admin); -Status

- excludes %LOCALAPPDATA%/%APPDATA%/~ openswarm dirs; kills defender cold-scan entirely

- security-sensitive: opt-in only, never silent; settings-toggle design documented, not auto-applied
2026-06-16 22:23:11 -07:00
ciregenz b8dc125da7 [eric] phase2: suggest-only offer_for_gated_server core + gate-safety invariants (in-task MCP connect) 2026-06-16 22:23:02 -07:00
Eric 8bc899ce74 [eric] perf: exclude duplicated python-env + build-staging from the asar (#9 item 4)
- inventory: 607MB asar was ~605MB duplication (python-env 408MB + build-staging 197MB)

- both already ship unpacked in resources/; runtime reads resources/, never the asar

- add build.files exclusion -> asar ~607MB -> ~2MB; kills the 639MB cold-read on first launch

- add inspect_asar.js inventory tool; validate asar size + boot on a packaged exe
2026-06-16 22:20:17 -07:00
Eric dcd4f6f149 [eric] perf: draft pyc-only site-packages strip to shrink defender cold-start (#9 item 3)
- standalone, dry-run by default, NOT wired into the release build (build-gated)

- strips 3352 .py (26.9MB) from site-packages to sourceless .pyc; mechanism proven on bundled 3.13

- scope: site-packages only (keeps backend source for the debugger); validate on a packaged exe
2026-06-16 22:15:45 -07:00
ciregenz 177d2b6fb7 [eric] free-trial: warm connect-your-own-model banner when the trial is spent (was the red no-model wall) 2026-06-16 22:12:56 -07:00
Eric 17e6c06d5c [eric] release: bump version to 1.3.86
- winv2: windows startup -90% warm, app builder windows fixes, skills seed
2026-06-16 22:07:40 -07:00
Eric 8df4d3821b [eric] perf: draft stdlib-zip tool to shrink defender cold-start surface (#9 item 1)
- standalone, dry-run by default, NOT wired into the release build (build-gated)

- collapses ~910 loose stdlib files into python313.zip (cpython auto-adds it to sys.path)

- validate on a packaged exe before enabling; see docs/perf/winv2
2026-06-16 21:59:16 -07:00
Eric 9f0f561dde [eric] app-builder: pre-extract webapp-template node_modules into windows resources
- step 4b builds node_modules natively and robocopies it into resources (digest-tagged)

- runtime junctions straight at it; kills the ~14s first-app extract; non-fatal on failure
2026-06-16 21:59:16 -07:00
Eric bca0050dcb [eric] perf: start 9router in background instead of blocking the http bind
- service lifespan was awaiting ensure_9router (~7.4s, up to ~18s cold) on the boot path

- dispatch already ensures it lazily; serialize ensure_running so no double-spawn

- cuts warm backend-ready ~9-10s toward ~2-3s
2026-06-16 21:59:16 -07:00
Eric 1facda5c33 [eric] app-builder: spawn vite directly via bundled node on windows (no bash)
- frontend-only apps no longer need git bash; kills the [WinError 2] preview failure

- windows-only, falls back to bash run.sh for backend apps or when vite is absent
2026-06-16 21:58:59 -07:00
Eric fe9f8d7105 [eric] app-builder: windows node_modules link fallback + prefer pre-extracted bundle
- _link_node_modules falls back symlink -> junction -> copy (no admin needed)

- _ensure_warm_cache prefers a pre-extracted resources tree, zero first-app extract (#9 item 2)

- falls back to tar/npm when absent so mac/older builds are unchanged; add tests
2026-06-16 21:58:59 -07:00
Eric ccc06ea188 [eric] skills: seed registry from bundled snapshot + disk cache, retry until first fetch
- fixes empty skills list until reboot and onboarding skill-item-pdf timeout

- catalog never empty offline; add regression test, 3 cases
2026-06-16 21:58:59 -07:00
Eric 24a767eec9 [eric] perf: winv2 windows startup + app builder profiling, tracking doc, graphs
- warm boot floor 8256ms -> 857ms; app builder download + create breakdown measured

- harnesses, csv, dependency-free svg graphs, per-step savings table, #9 plan
2026-06-16 21:58:39 -07:00
SirKentutandGitHub 26cec0ff33 Merge pull request #1 from SirKentut/flappy-bird-agent-controls-fix
[pierre] fix/app-agent: re-attach app controls on every task
2026-06-16 18:24:37 -07:00
ciregenz 7a8cbad025 [eric] notarize: use openswarm-notary keychain profile, disable env-cred auto-notarize 2026-06-16 17:59:47 -07:00
ciregenz b0fb8841b0 Revert "[eric] notarize: use openswarm-notary keychain profile, disable env-cred auto-notarize"
This reverts commit 6d1c66760e.
2026-06-16 17:35:53 -07:00
ciregenz 6d1c66760e [eric] notarize: use openswarm-notary keychain profile, disable env-cred auto-notarize 2026-06-16 17:34:45 -07:00
ciregenz ec99d24b8e [eric] release: bump to 1.3.85 v1.3.85 2026-06-16 16:59:39 -07:00
ciregenz fc1c3eecea [eric] release: bump to 1.2.85 2026-06-16 16:52:11 -07:00
ciregenz e1ac292eeb [eric] mouseclamp: also clamp off-window releases whose event has no window (key-window fallback + screen->window map), closes the gap that still crashed RootView::UpdateCursor on 1.2.84 2026-06-16 08:05:49 -07:00
ciregenz 374ded0214 [eric] share: minimal import modal, name lives in the title, one type+counts line, inline need chips, single-line trust note 2026-06-16 05:08:09 -07:00
ciregenz e53e11d28b [eric] share: import-modal needs are compact icon chips now (explanation on hover) instead of three sentence rows 2026-06-16 05:01:34 -07:00