Changes
- gui: back on Routing, only the requests still under way fly (#302), and a busy gateway costs the page less (#308) — a hidden or covered window draws no frames, and may not say it is hidden, while each request that came meanwhile still began its flight and waited for a frame; back in sight they all flew at once, a flock of magpies. New requests now play only in sight; coming back (another tab left, or no frame for over 1s) ends every stale flight, draws the stage as it is and flies the requests still under way (at most 4); a replay's clock goes on at most 250ms a frame. Every trace update redrew the whole page, the request list made again whole: renderAll now draws at most once a frame and not out of sight, request rows are kept by id while what they say is the same, the list's and accounts' heads made once and their text set only when it changes, the log's head and steps drawn only when they change, a batch of new requests syncs the stage once, the clock's formats made once. Under a 4x CPU throttle at 40 updates/s, long tasks went from 2.2–2.4s to 0.7–1.0s, frame p95 from 100–133ms to 50–67ms, DOM nodes from 20–27k to 4–5k. routing-flood.test.cjs and routing-busy.test.cjs (Chromium, WebKit, en/zh) fail without the change. routing-*, panel-routing, click-scroll, old-webkit pass.
- agents: CC Switch's provider tables in Codex's config go through magpie too, and the Library brings in every skill found at once (JasonLeeForOnly on Discord: after moving from CC Switch, Codex threads still went to the relay, "model not found" for a magpie model) — CC Switch writes a [model_providers.custom] table (cc-switch, cc-switch-N in older versions) and moves every third-party Codex thread onto it, and a reopened thread takes the provider it was saved with, not model_provider; magpie left those tables pointing at the relay. While a magpie model is on, signed in or not, their base_url is magpie's /v1, the relay's kept in the stash and the table's other keys as they were; a table a profile names, and cc-switch-official, are left alone; Codex's own model or a reset puts the URL back, unless the table was changed since; one pointed away again is named on the agent row and taken back on sync. The Skills tab's "In your agents" gets Bring in all (2+ found), one library write, one that fails named and the others brought in. TestCodexTakesCCSwitchTables, TestImportSkills and import-all-skills.test.cjs (Chromium, WebKit, en/zh) fail without the change. go vet, go build -tags nogui (darwin, GOOS=linux), GOOS=windows go build, go test -tags nogui ./... pass; click-scroll, old-webkit, shared-skills pass.
Install
Download from usemagpie.ai, or curl -fsSL https://usemagpie.ai/install.sh | sh. An installed magpie updates itself.
- macOS (Apple Silicon):
magpie-darwin-arm64.dmg - macOS (Intel):
magpie-darwin-amd64.dmg - Windows:
magpie-windows-amd64.exe(ARM:magpie-windows-arm64.exe) - Linux:
magpie-linux-amd64/magpie-linux-arm64(needs GTK 3 and WebKitGTK 4.1) - Terminal only:
magpie-cli-<os>-<arch>