ciregenz
5902352ef9
[eric] skills: unify storage so every user/imported skill is a folder (one write path); flat stays read-compat and is superseded on write
2026-06-19 04:07:09 -07:00
ciregenz
f866a3717c
[eric] skills/settings-agent: scan community SKILL.md+files for secrets & reframe install risk (agent-instructions, not just scripts); extract apply_settings_update so the tool stops calling the PUT route as a fn
2026-06-19 04:03:58 -07:00
ciregenz
72433fced0
[eric] skills: atomic skill-index write + corrupt-read resilience (preserve aside, never brick), mirroring the settings store
2026-06-19 03:37:23 -07:00
ciregenz
371b72ddd1
[eric] settings-agent/skills: fix concurrent-write lost update (serialize), registry install slug clobber (dedup), dialog stale-response races, partial-write + skills.sh boundary hardening
2026-06-19 03:32:16 -07:00
ciregenz
722a9e896a
[eric] publish: desktop build/scan/bundle + publish/preflight/unpublish endpoints
2026-06-19 03:28:27 -07:00
ciregenz
d714dfaee1
[eric] skills: folder skills round-trip through .swarm/zip import (supporting files preserved via the entity files() channel, not flattened)
2026-06-19 03:17:44 -07:00
ciregenz
a0af8476c2
[eric] settings-agent: thread selected_setting_ids -> focused context block so users can point the agent at specific Settings rows (targeting aid, not a gate)
2026-06-19 03:01:05 -07:00
ciregenz
3c950b01f8
[eric] skills: skills.sh wild-registry source (live search) + GitHub-trees install resolver w/ script disclosure, inert install, path-traversal guard
2026-06-19 02:57:58 -07:00
ciregenz
d908209a85
[eric] skills: multi-file folder skills (SKILL.md + supporting files) w/ legacy flat compat; inject folder path for on-demand provider-agnostic reads
2026-06-19 02:50:33 -07:00
ciregenz
1a4cccf3cd
[eric] settings-agent: always-on SettingsRead/SettingsWrite MCP server + guarded /api/settings-meta endpoint, wired into every run
2026-06-19 02:47:38 -07:00
ciregenz
f094de5fbd
[eric] settings-agent: typed powering-credential resolver + schema-derived redactor + exhaustive no-suicide invariant test
2026-06-19 02:42:56 -07:00
ciregenz
b7450f885a
[eric] merge winv2: win startup speedups + skill-registry seed, release 1.3.87
2026-06-19 00:57:57 -07:00
ciregenz
4ae97e5de0
[eric] throttle: emit rate_limited on exhausted backoff + muted auto-clearing pill (no error card)
...
(cherry picked from commit 03a9233b860683ae0f9d15b9e9efda32763c7d41)
2026-06-19 00:25:55 -07:00
ciregenz
f0cb676afb
[eric] permissions: read-only MCP actions auto-allow by default; writes still ask
...
(cherry picked from commit 03f3ce05be2c555990e7e6486859c48f0cd3c94c)
2026-06-19 00:25:54 -07:00
ciregenz
40c863e9cf
[eric] integrations: add GitHub MCP (remote http server + one-click OAuth)
...
(cherry picked from commit 901e3bf98244d3e599db5f3f05f4dc2ce943888e)
2026-06-19 00:25:54 -07:00
ciregenz
db6c5c4d9d
[eric] agents: idempotent id-keyed message commit so a stop racing the SDK envelope can't append a duplicate reply
2026-06-18 18:44:25 -07:00
ciregenz
c1503eae97
[eric] agents: make Stop instant: commit the partial + free the task before the slow SDK teardown, and ignore a superseded task's late teardown
2026-06-18 18:24:54 -07:00
ciregenz
a716b43df1
[eric] agents: after a mid-stream stop, rebuild history from session.messages so resume/follow-ups see the partial reply
2026-06-18 04:36:23 -07:00
ciregenz
9a622c48e2
[eric] agents: keep the partial reply when a stream is stopped mid-flight
2026-06-18 04:00:47 -07:00
ciregenz
8b63e3d7c6
[eric] settings: add reset-to-defaults endpoint (preferences to defaults, keep connections + sign-in)
2026-06-17 23:31:26 -07:00
Eric
ec0f9600bc
[eric] backend: remove cold-start diagnostics, keep the fix + slim lifespan timer
...
- the is_running() fast-fail fix (v1.3.91) verified cold backend-http-ready
23.5s -> 3.86s and warm 5.0s -> 3.32s on the signed build, no 9Router regression
- strip the [perf] bg entry logs from mcp/skill/settings/service/9router now that
the stall is diagnosed; keep Apps.py per-lifespan timing but only print a
lifespan over 50ms plus the total (cheap regression tripwire)
- document the root cause + fix + before/after in docs/perf/winv2/README.md
2026-06-17 19:28:23 -07:00
Eric
24df3e8fac
[eric] backend: fast-fail is_running() to kill the ~18s cold-start event-loop freeze
...
- faulthandler on the signed cold build caught the asyncio loop frozen in
socket.create_connection inside is_running() (process.py): a synchronous
httpx.get to "localhost:20128" called ~5x on the boot path before 9Router is up
- on Windows a dead-port connect to "localhost" stalls ~7s each (tries ::1 first,
loopback refusal is slow), freezing the loop ~18s so uvicorn could not answer
the health probe -> cold backend-http-ready was ~23s
- fix: probe 127.0.0.1 with a 0.3s TCP timeout first (measured 306ms vs ~7s), only
HTTP-confirm when the port is open; 9Router binds 0.0.0.0 so reachability is
unchanged. drop the faulthandler diagnostic from main.py
2026-06-17 19:06:10 -07:00
Eric
035ef26c0f
[eric] backend: faulthandler stack-dump + settings boot log to catch the cold loop stall
...
- v1.3.89 cold proved two stacked stalls: ~5s in is_running() (sync httpx) and a
bigger ~13s BEFORE any background task runs, a silent event-loop freeze
- add faulthandler.dump_traceback_later(7s, repeat) to a temp file so a dump lands
inside the 13s window and names the exact synchronous call the loop is stuck in
- add an entry log to settings._boot_router_then_sync (first startup bg task)
- diagnostic only; reverted once the stall is pinned
2026-06-17 18:40:01 -07:00
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
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
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
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
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
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
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
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
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
9d1ff22a41
[eric] 9router: verify-at-boot, report why a start failed (no silent DEVNULL) + no dev-npm fallback in packaged
2026-06-16 04:55:14 -07:00
ciregenz
3998a8d6d9
[eric] sessions: get_all_sessions promotes only disk sessions the layout still cards, so deleted chats stop resurrecting on reopen
2026-06-16 04:44:15 -07:00
ciregenz
a99e310940
[eric] diagnostics: attach secret-scrubbed 9router stderr tail to model_error telemetry (was masked 'check stderr')
2026-06-16 04:35:54 -07:00
ciregenz
07ef98f7e5
[eric] approvals: persist tool policy on Always-approve (set_always_allow through the approval path)
2026-06-16 04:00:08 -07:00
ciregenz
c9caaf8a8c
[eric] permissions: default Bash to always_allow (seed + one-time lift) so shell commands stop prompting
2026-06-16 04:00:04 -07:00
ciregenz
1f86a66b87
[eric] swarm: remap view-card parent_session_id on share (new #89 field would import dangling)
2026-06-16 03:46:29 -07:00
Aidan and GitHub
d2d0ce74aa
[aidan] ux/app-builder-dashboard: improve app builder dashboard ( #89 )
...
* [aidan] ux: when agent creates app always opens in dashboard
* [aidan] enhancement: app editing ui mimicing browseragents
* [aidan] ui/ux: when building app window appears immediately
* [aidan]: app view spacing dashboard mimicing browser
* [aidan] ux: app error agent loop
* [aidan] fix: remove duplicate logic
2026-06-16 03:44:40 -07:00
ciregenz
131b3136eb
[eric] sessions: get_all_sessions reads disk too so imported (and post-restart) dashboard cards render instead of blank
2026-06-16 03:03:28 -07:00
ciregenz
2301ff7a70
[eric] swarm: read live session from memory first on export, plus full dashboard round-trip test
2026-06-16 02:41:25 -07:00
Aidan and GitHub
de2e70ca8f
[aidan] fix/browser-early-close: let agent keep browser open when result lives on the page ( #88 )
2026-06-15 19:00:40 -07:00
ciregenz
3bf1b0da79
[eric] mcp: break the ToolSearch loop, redirect a stuck agent to MCPActivate for gated servers
2026-06-15 18:58:50 -07:00
ciregenz
39c837fee7
[eric] swarm: carry the chat transcript when sharing an agent (was dropped, scrub layer guards secrets)
2026-06-15 18:58:44 -07:00
ciregenz
b0401b06d0
[eric] openai: route the thinking-slider effort param to gpt/codex (not just claude)
2026-06-15 14:46:48 -07:00
ciregenz
46e92c9fe0
[eric] dashboards: drop orphan session cards from GET so a dead-session card stops 404ing on load
2026-06-15 14:34:16 -07:00