binary-v0.2.1-sd507.1
Pre-release
Pre-release
·
29 commits
to main
since this release
What's Changed
- docs(readme): quiet-confident rewrite by @KnockOutEZ in #212
- docs(readme): lowercase star-history repo param so the chart renders by @KnockOutEZ in #213
- docs(readme): quickstart command pair + stable star-history link by @KnockOutEZ in #214
- fix(ci): star-chart falls back to repo star count when the Actions token cannot list stargazers by @KnockOutEZ in #215
- fix(cache): timezone-independent expiry — parse zone-less UTC timestamps as UTC (#208) by @josephkehan-prog in #209
- fix(fetch): preserve full-page cache for section requests by @w-up in #229
- feat: add JobPosting named schema to extract tool (#146) by @josephkehan-prog in #192
- fix(daemon): allow token-authenticated remote MCP clients by @Faiyajz in #219
- Harden ssrf fetch time resolve by @spartan8806 in #210
- feat: add crates.io search engine adapter (#145) by @josephkehan-prog in #191
- fix(cli): wire OpenCode MCP configuration by @HsiangNianian in #204
- docs: quote pip extras install examples by @nyxst4ck in #188
- feat(fetch): anti-bot solve ladder + background/windowless browser by @KnockOutEZ in #260
- [slice-P1a] refactor: inject a ToolProvider registry so core stops enumerating Studio by @KnockOutEZ in #270
- [slice-P1b] test: add contracts/studio-mcp conformance suite and de-flake the BotD release gate by @KnockOutEZ in #271
- [slice-P3a] fix(fetch): the cdp-direct rung was unreachable on a default install by @KnockOutEZ in #269
- [slice-P1c] refactor: stop naming Studio inside core by @KnockOutEZ in #273
- [slice-P2] feat(security): nonce the untrusted-content fence and close the unfenced seams by @KnockOutEZ in #281
- [slice-P3C] fix(fetch): a length heuristic was declaring short legitimate pages to be bot walls by @KnockOutEZ in #272
- [slice-r1] ci: quarantine guard for electron imports + ubuntu hang root cause by @KnockOutEZ in #282
- [slice-r2] fix: fence REST content by default; envelope becomes explicit opt-in by @KnockOutEZ in #284
- [slice-p4a] chore: remove ~106MB of install weight and fix the phantom sharp dependency by @KnockOutEZ in #283
- [slice-ssrf] fix(security): re-guard every redirect hop in the browser tier by @KnockOutEZ in #287
- [slice-p4c] fix: boundary-aware brief truncation and find_similar include_web by @KnockOutEZ in #286
- [slice-export] feat(cli): wigolo export — corpus to dated Markdown with a manifest by @KnockOutEZ in #285
- [slice-node22] chore!: raise the Node floor to >=22 and drop Node 20 from CI by @KnockOutEZ in #288
- [slice-p4d] fix: repair truncated markdown to a fixed point, and cover truncated tables by @KnockOutEZ in #289
- [slice-f17] test(skills): make the concurrent-writer test say which failure it saw by @KnockOutEZ in #290
- [slice-asar] fix(cache): load the vector extension correctly from inside an asar archive by @KnockOutEZ in #291
- fix(cache): surface the vector-index platform gap instead of degrading silently (X1 §5) by @KnockOutEZ in #292
- [slice-x1b] fix(studio): resolve the broker's Node runtime explicitly instead of guessing by @KnockOutEZ in #293
- test(budget): pin the statistic and the horizon, then gate on the numbers that survive it by @KnockOutEZ in #294
- S10-b: the tier resolver, doctor/status reporting, and the gates the runner data supports by @KnockOutEZ in #295
- feat(fetch): tier-occupancy counters — D-S10-4's instrument, on the router path by @KnockOutEZ in #296
- feat(warmup): tier-conditional acquisition (S10-d) by @KnockOutEZ in #297
- S10-e: browser deps off the core default path, and G-DIET tightens by @KnockOutEZ in #298
- feat(deps): drop the five platform runtimes onnxruntime-node ships to everyone by @KnockOutEZ in #299
- fix(budget): re-derive G-ACQUIRE over its real measurement window, 800 -> 880 by @KnockOutEZ in #300
- perf(install): drop 86 MiB of browser WASM from the production tree by @KnockOutEZ in #301
- [slice-1/3] fix: locateOrtRoots resolves non-hoisted onnxruntime copies by @KnockOutEZ in #304
- [slice-2/3] fix: engine pool self-throttle, breaker recovery, degraded surfacing by @KnockOutEZ in #305
- [slice-4/6] chore: prune wreq-js to the host native binary by @KnockOutEZ in #307
- [slice-3/3] fix: bound cache tool output with a default byte budget by @KnockOutEZ in #306
- [slice-5/6] fix: bound the onnxruntime resolver walk to our own install tree by @KnockOutEZ in #308
- [slice-6/8] fix: surface when the ML reranker did not run by @KnockOutEZ in #309
- [hygiene H3+H5] ci: guard PRs targeting main and bump checkout/setup-node by @KnockOutEZ in #312
- [spike] chore: first wall-clock and memory profile of wigolo by @KnockOutEZ in #310
- [C1 F7] fix(extraction): collect anchors inside table cells by @KnockOutEZ in #314
- [C1 F3] fix(search): report filter-induced zero results as the filter's doing by @KnockOutEZ in #315
- [C1 F6] fix(fetch): pass markdown and JSON responses through by content-type by @KnockOutEZ in #316
- [hygiene H4] docs(instructions): move param documentation to the input schema by @KnockOutEZ in #313
- [fix] test: stop the suite writing to the real user data dir by @KnockOutEZ in #318
- [C1 F8] feat(fetch): label partial content shells with content_completeness by @KnockOutEZ in #319
- [chore] chore(ratchet): lock tests/ type-check debt at 399 by @KnockOutEZ in #321
- [C1 F5] fix(search): detect common-word brand collisions, not distinctive names by @KnockOutEZ in #320
- docs(cli): the abort is decided by the exit path, not by teardown order by @KnockOutEZ in #325
- fix(search): treat a 2xx anti-bot interstitial as an engine failure by @KnockOutEZ in #323
- [C1] feat(instructions): surface domain_filter + content_completeness, correct the brand-collision rule by @KnockOutEZ in #322
- test: bind mock doubles to the interfaces they stand in for (debt 399 -> 378) by @KnockOutEZ in #327
- feat(fetch): make the installed-browser companion rung reachable (S10-f2) by @KnockOutEZ in #326
- docs: describe all four clauses of the no-display browser-tier ceiling by @KnockOutEZ in #324
- fix(extract): stop the content extractor making undeclared third-party requests by @KnockOutEZ in #331
- feat(diff): resolve old.content_hash instead of advertising it inertly by @KnockOutEZ in #334
- test: fence the suite against live-network dependence by @KnockOutEZ in #330
- test(fence): envelope-wide containment guard for page-derived bytes by @KnockOutEZ in #332
- fix(security): stop shipping table row keys as unfenced page prose by @KnockOutEZ in #335
- docs: correct egress claim in README privacy wording by @KnockOutEZ in #329
- fix(fetch): bound the screenshot response path by @KnockOutEZ in #333
- test: reclaim the throwaway HOME trees the harness leaks every run by @KnockOutEZ in #336
- fix(fetch): judge a bot wall by what it has to read, and stop calling a rate-limit a block by @KnockOutEZ in #338
- fix: evict vectors on cache clear, suppress shell captures in find_similar, and revive the REST stage-failure status map by @KnockOutEZ in #339
- fix(fetch): delete the router overload that promised callers a clean result by @KnockOutEZ in #340
- feat(studio): LayoutSignature primitive (S11a) by @KnockOutEZ in #328
- fix: publish the machine code in error_reason; state a waived research content-gate rejection by @KnockOutEZ in #341
- test: sweep the R12 inverted-test-construction class by @KnockOutEZ in #342
- feat(studio): package Studio for darwin-arm64 and prove native modules load from inside the artifact by @KnockOutEZ in #343
- fence untrusted text on error envelopes by @KnockOutEZ in #344
- test(studio): the four S11a inversion probes the spec mandates by @KnockOutEZ in #345
- fix(envelope): finish the error-envelope contract — machine codes on research/agent, crawl/cache, and the two re-covered catch paths by @KnockOutEZ in #346
- fix(studio): spawn the packaged DB broker from app.asar.unpacked by @KnockOutEZ in #347
- fix(fence): contain crawl/cache in-band errors on the MCP success envelope by @KnockOutEZ in #348
- fix(crawl): treat crawl link targets as untrusted, and fence compat crawl envelopes by @KnockOutEZ in #349
- test(fence): make an unfenced envelope string fail by default by @KnockOutEZ in #350
- docs: correct public docs and support matrix against measured CLI behaviour by @KnockOutEZ in #352
- ci: cross-platform lanes green, and a packaging e2e that runs by @KnockOutEZ in #351
- fix(studio): make the approval-gate claim true by deleting the phantom seam by @KnockOutEZ in #353
- fence untrusted text on the watch, fetch action and image envelopes by @KnockOutEZ in #354
- Q6: make the Windows CI lanes genuinely green by @KnockOutEZ in #355
- ci: verify the two win32 better-sqlite3 prebuilds actually load by @KnockOutEZ in #357
- test(cache): batch the 012 fixture inserts — commit count, not a starved loop by @KnockOutEZ in #360
- S12-0: C0 live lane, corpus gate, drift-corpus scaffold by @KnockOutEZ in #358
- test(studio): execute the CDP fence on a packaged build; prebuild + fresh-install evidence by @KnockOutEZ in #356
- test: batch the per-test migration fixtures so the Windows hook ceiling stops firing by @KnockOutEZ in #362
- test(warmup): stub the acquisition seams the --force wipe test never asserts on by @KnockOutEZ in #368
- fix(studio): ship wigolo's runtime dependency closure so the packaged app starts outside the repo by @KnockOutEZ in #359
- [S14-1] feat(cache): url_versions time axis by @KnockOutEZ in #369
- [S13-0] feat(studio): record a flow sidecar on successful acts by @KnockOutEZ in #370
- [S14-2] feat(cache): point-in-time version reads by @KnockOutEZ in #371
- [S13-1] feat(studio): offline step-seed resolver + drift benchmark by @KnockOutEZ in #373
- fix(studio): surface a degraded step resolution instead of halting (§5.3 amendment) by @KnockOutEZ in #375
- feat(studio): record flows from the Electron surface, joined to durable audit rows (K34) by @KnockOutEZ in #376
- feat(studio): attended replay of a recorded flow, halting at the first divergence (S13-2, G3) by @KnockOutEZ in #378
- feat(studio): validate flow slots pre-flight, and hold the slot boundary (S13-3, G4) by @KnockOutEZ in #379
- feat(cli): inspect recorded flows (
wigolo flow list|show);runis not available from a terminal by @KnockOutEZ in #380 - fix(cache): mark whether a cached body was fetched with an authenticated session (K9) by @KnockOutEZ in #381
- feat(bench): revive the retrieval instrument with a 45-query judged corpus (S14-0, G-S14-0) by @KnockOutEZ in #382
- chore: track DESIGN_SYSTEM.md at the repo root by @KnockOutEZ in #386
- feat(studio): one token layer serving both registers by @KnockOutEZ in #387
- refactor(studio): restyle the 13 renderer components onto the token layer by @KnockOutEZ in #388
- chore(studio): close the apps/studio typecheck gap (P7) by @KnockOutEZ in #389
- fix(studio): close the P7 coverage guard's remaining pass-direction bypasses by @KnockOutEZ in #390
- test(studio): make the restyle's enforcement see the files it never enumerates by @KnockOutEZ in #391
- fix(studio): page CSS can blind the per-tab overlay — shadow tokens must win by @KnockOutEZ in #393
- fix(studio): state push is a no-op once the window is destroyed by @KnockOutEZ in #394
- fix(studio): the P7 typecheck-coverage guard must verify the check RUNS, not its shape by @KnockOutEZ in #395
- fix(studio): close the P7 guard's execution-semantics bypasses by @KnockOutEZ in #396
- test(studio): pin the #394 wiring, widen the destroyed guard to webContents, assert the overlay token invariant by @KnockOutEZ in #397
- fix(studio): the P7 guard must default-deny what it cannot model — close the round-6 bypass class by @KnockOutEZ in #398
- fix(studio): make the ipc-host destroyed-guard comment, code and fixtures agree on the crashed-renderer path by @KnockOutEZ in #399
- fix(ci): extend the P7 guard's default-deny to the step/job key layer by @KnockOutEZ in #400
- fix(ci): close the round-8 P7 guard defects — matrix.include Windows-blind + continuation/substitution/errexit-builtin spellings by @KnockOutEZ in #401
- test(cache): give the three body-level migration suites a cost that does not grow with N_migrations (K27) by @KnockOutEZ in #404
- feat(daemon): durable run store — run object, append-only event log, short ids by @KnockOutEZ in #405
- feat(daemon): REST runs surface — POST/GET /v1/runs + SSE /v1/runs/:id/events by @KnockOutEZ in #406
- refactor(studio): invert SessionRegistry into a view-model over daemon runs by @KnockOutEZ in #407
- feat(studio): run id visible in the window chrome by @KnockOutEZ in #408
- feat(studio): headless-default runs with promote/demote and menu-bar visibility by @KnockOutEZ in #409
- fix(studio): a destroyed menu-bar item absorbs a redraw instead of throwing by @KnockOutEZ in #410
- test(studio): SD1 exit-gate e2e — REST-created run survives restart, promotes, streams by @KnockOutEZ in #411
- feat(daemon): single live run-store owner — proxy /v1/runs* (incl. SSE) to the studio host by @KnockOutEZ in #412
- feat(studio): the app's gateway serves /v1/runs* from the broker store by @KnockOutEZ in #413
- fix(daemon): proxy-hop content-length desync (P1) + endpoint fence (P2) + bounded SSE hold buffer (F5) by @KnockOutEZ in #415
- fix(studio): run-store append/list scaling (F1/F2) + 0600 event-file mode (P2) by @KnockOutEZ in #416
- perf(studio): bound run-view-model retention, hydrate in one hop, cheap SSE exists by @KnockOutEZ in #417
- fix(daemon): settle the run hop's 503 decline branch and stop relaying its content-length by @KnockOutEZ in #418
- fix(studio): run-store correctness — atomic createRun, durable decision expiry, cursor 400, id/payload guards by @KnockOutEZ in #419
- fix(daemon): meter the SSE events-route preamble; byte-bound the hold buffer by @KnockOutEZ in #420
- fix(studio): bound the run item read; take cost off the per-row projection; validate projected anchor/actor by @KnockOutEZ in #421
- test(studio): the #80 pins — bounded item read, O(kinds) cost fold, validated anchor/actor by @KnockOutEZ in #422
- perf(studio): coalesce the view-model emit fan-out and make the projection-cost guard able to fail by @KnockOutEZ in #423
- fix(studio): bound boot hydration and gap-replay payloads; hydrate past the first page by @KnockOutEZ in #424
- fix(studio): auto-deny must land as an event and fan out by @KnockOutEZ in #425
- perf(studio): constant-cost append and list — fold status from seeks, cost totals as columns by @KnockOutEZ in #426
- fix(studio): TabStrip.tsx carries a literal NUL byte — git sees the source as binary by @KnockOutEZ in #427
- fix(extraction): drop DOM-hidden subtrees before any extractor runs (K25) by @KnockOutEZ in #428
- bench(referee): corpus gate corrections (K22 K23 K24) by @KnockOutEZ in #430
- fix(studio): gateway /v1/runs double-gates auth — one credential, not two by @KnockOutEZ in #429
- fix(bench): visible_only must score hidden occurrences, not substring presence (K25 residual) by @KnockOutEZ in #431
- fix(daemon): SSE writes must honour backpressure end-to-end by @KnockOutEZ in #433
- bench(visual): measure G-S11a on a real corpus, pin the second viewport width, re-scope the ratio probe by @KnockOutEZ in #432
- fix(daemon): the SSE live tail detects a seq gap and heals it (SD1 exit-4) by @KnockOutEZ in #434
- fix(daemon): the two SSE holes the live-phase gap door does not reach by @KnockOutEZ in #435
- fix(daemon): the events-stream contract must admit the four server-side closes; pin the run surface in openapi by @KnockOutEZ in #436
- fix(extraction): hidden-DOM pre-pass — !important spellings and the empty- off-switch by @KnockOutEZ in #437
- perf(studio): the run projection reads its answer, not the classes with no bound by @KnockOutEZ in #438
- fix(studio): decide the listRuns status filter on the projection, not the stale cached column (K7) by @KnockOutEZ in #440
- fix(studio): three adopt/replay races leave the app projection permanently stale or law-4-violating by @KnockOutEZ in #441
- test(studio): pin the rail badge's positive render; retitle a falsified fanout row (SD1 exit-7) by @KnockOutEZ in #442
- perf(studio): cache prepared statements on the run-store append path (SD1 exit-7, #102) by @KnockOutEZ in #445
- fix(daemon): SSE drain wait needs a deadline; replay short-page contract; empty spaceId validation by @KnockOutEZ in #444
- fix(studio): a graceful quit must land the terminal events before the process exits by @KnockOutEZ in #443
- perf(daemon): charge the hydration char budget when the read happens, not when it is accepted by @KnockOutEZ in #446
- perf(studio): bound the filtered list scan's projection cost; index the list read; drop the dead status index (SD1 exit-7) by @KnockOutEZ in #447
- fix(studio): decision mirror — double-submit double-write, dropped fast resolve, timers past run end by @KnockOutEZ in #448
- fix(studio): detachTab and endRun must take the per-tab queue attachTab relies on by @KnockOutEZ in #449
- fix(studio): store only the origin of an attach url in the run log (SD1 exit-7) by @KnockOutEZ in #450
- perf(studio): a condensed live run stays condensed; ownerOf answers from an index by @KnockOutEZ in #451
- perf(studio): clear a run's tabs via a reverse index, not a sweep of every tab by @KnockOutEZ in #452
- perf(daemon): SSE fan-out serializes an event once, not once per subscriber (#109) by @KnockOutEZ in #453
- perf(studio): the IPC state push carries live runs, not every run ever hydrated by @KnockOutEZ in #454
- test(studio): pin StudioSessionView.runId in the studio_list view by @KnockOutEZ in #455
- fix(studio): a failed studio_open must not leave a durable zombie run (SD1 exit-9, K1) by @KnockOutEZ in #456
- fix(daemon): SSE tail — gate heal on busy, clamp a resume past the tail by @KnockOutEZ in #458
- fix(fetch): a hidden must not survive the visibility pre-pass by @KnockOutEZ in #457
- fix(studio): harden the projection fold path — no dropped envelope on concurrent adopt, isolate fan-outs by @KnockOutEZ in #459
- perf(studio): take the per-event jsonl append off the shared loop by @KnockOutEZ in #460
- perf(studio): carry the boot hydration budget across pages and evict by @KnockOutEZ in #461
- fix(studio): decision.resolved must never append past run end (SD1 exit-9, K3) by @KnockOutEZ in #462
- fix(studio): studio_list must not return a tab the human already closed (SD1 exit-9, K8) by @KnockOutEZ in #463
- perf(studio): graceful-quit ends its sessions concurrently, decoupling the walk from sessionCap (SD1 exit-9, P3) by @KnockOutEZ in #464
- fix(fetch): hoist the hidden- body walk out of the candidate loop by @KnockOutEZ in #465
- test(daemon): pin the SSE heal gate where goLive does not fill the hole by @KnockOutEZ in #466
- chore(daemon): keep the shadowed heal re-dispatch, and name what shadows it by @KnockOutEZ in #467
- fix(studio): retry a run adoption the store refused (#124) by @KnockOutEZ in #468
- perf(studio): pending-decision check is an existence probe, not a materialized list by @KnockOutEZ in #469
- fix(studio): charge boot hydration by what the store read, not what it shipped by @KnockOutEZ in #470
- fix(extraction): stop rescanning hidden subtrees the pass has already settled by @KnockOutEZ in #471
- fix(studio): charge the boot page for the size probe it ran by @KnockOutEZ in #474
- fix(studio): broker stop is TerminateProcess on Windows — the graceful-quit jsonl drain never runs (SD1 exit-12) by @KnockOutEZ in #475
- perf(studio): re-condense a live run at the shipped retention bound by @KnockOutEZ in #476
- fix(extraction): visibility pre-pass CSS sanitizer is page-controlled O(n²) — one hostile style attribute stalls the daemon loop by @KnockOutEZ in #477
- perf(studio): fold a condensed run's envelopes in place instead of paying a read each by @KnockOutEZ in #478
- perf(studio): linear broker frame accumulation, and a byte budget on a runEventsSince page by @KnockOutEZ in #479
- fix(extraction): visibility pre-pass — bad-string / bad-url recovery matches the browser by @KnockOutEZ in #480
- perf(studio): fold held tabs in a Set that carries order; pin the consent window absolutely by @KnockOutEZ in #482
- fix(extraction): visibility pre-pass — resolve CSS escapes so six escaped hide spellings stop reading as visible by @KnockOutEZ in #483
- chore(cache): enumerate the .sql grep-mirror class instead of pinning 017 by @KnockOutEZ in #485
- fix(daemon): charge and cap the boot page's condensed projections; measure a page in SQL, not by re-serializing it by @KnockOutEZ in #484
- fix(studio): tab.attached can land past run end, and a quit racing open() can orphan a running run by @KnockOutEZ in #486
- fix(studio): record a human approval durably before releasing the action by @KnockOutEZ in #487
- perf(studio): bound the projection host — lifetime-run retention, unbounded unknown-run adoption, seq shape guard, adoption re-arm on respawn by @KnockOutEZ in #488
- fix(studio): bound the projection host's never-terminal retention and its boot reads by @KnockOutEZ in #489
- fix(extraction): resolve a CSS comment to a space, so it cannot weld two idents by @KnockOutEZ in #491
- fix(studio): the host acts on projectionOmitted instead of installing a short card list by @KnockOutEZ in #490
- fix(daemon): charge the SSE hold buffer in retained bytes, not wire bytes by @KnockOutEZ in #492
- feat(build): dependency enablers for the studio repo split by @KnockOutEZ in #493
- feat(split): excise the private studio set and retarget CI at studio-handoff-core by @KnockOutEZ in #494
- feat(build): exports subpaths for run-store and config by @KnockOutEZ in #496
- docs: retire the four tracked references to the deleted studio-handoff branch by @KnockOutEZ in #497
- fix(studio): auto-launch hygiene — decline-path 30s stall, dead imports, defaultLaunch coverage by @KnockOutEZ in #499
- fix(cli): launch the acquired substrate from
wigolo studioby @KnockOutEZ in #498 - chore(build): prepare-hook fallout — dist/ race, CI double build, unasserted invariants, exports probe by @KnockOutEZ in #500
- test(cli): restore the studio host security pins ce4167d deleted, and pin the fail-open it hid by @KnockOutEZ in #501
- fix(studio): defaultLaunch crashes the MCP process on async spawn error by @KnockOutEZ in #502
- chore(ci): prepare-hook opt-out sweep — pack-step second build + every non-ci.yml root install leg by @KnockOutEZ in #503
- fix(studio): copy substrate symlinks verbatim so .app bundles survive install by @KnockOutEZ in #504
- fix(ci): opt the release publish step out of the prepare hook so the shipped dist/ is the validated one by @KnockOutEZ in #505
- fix(studio): verbatim-symlink install executes bytes outside the substrate root — add a realpath containment walk by @KnockOutEZ in #506
- test(studio): pin three unpinned substrate/launch safety invariants (PX0 exit-3) by @KnockOutEZ in #507
- fix(cli): strip WIGOLO_STUDIO_HIDDEN case-insensitively in runStudio by @KnockOutEZ in #508
- test(daemon): re-arm the broker page and boot bounds core-side (PX0 exit-4) by @KnockOutEZ in #509
- fix(test): serialise the dist/-spawning broker tests and de-flake the SIGKILL drain bound by @KnockOutEZ in #510
- test(studio): construct the linked prefix the anti-false-decline containment arm needs (PX0 exit-4) by @KnockOutEZ in #511
- fix(build): make the prepare hook reachable in every Dockerfile npm ci layer by @KnockOutEZ in #512
- fix(studio): acquireSubstrate never-throws contract + symlinked-source containment by @KnockOutEZ in #513
- fix(studio): auto-launch dead-spawn stall — break the poll on an observed spawn failure, and memo a no-handle launch by @KnockOutEZ in #514
- fix(studio): memoize only a launch that was actually attempted by @KnockOutEZ in #515
- fix(studio): auto-launch honours its own seam contracts — validate LaunchOutcome.failed, strip HIDDEN case-insensitively by @KnockOutEZ in #516
- fix(studio): acquireSubstrate's pre-flight guards answer from inside the try by @KnockOutEZ in #517
- fix(studio): auto-launch — confine the substrate plant, and read the off switch case-insensitively by @KnockOutEZ in #518
- fix(studio): auto-launch seam contract holes — throwing probe rejects past NEVER-THROWS, falsy launch reads as started, poll-observed handle leaves stale memo by @KnockOutEZ in #519
- fix(build): WIGOLO_SKIP_PREPARE honours 0/false/off instead of skipping on them by @KnockOutEZ in #520
- fix(ci): the install-register classifier and its enumeration cover npm publish by @KnockOutEZ in #522
- fix(studio): substrate containment defeated by a symlinked root and a non-version path (PX0 exit SEC-1+SEC-2) by @KnockOutEZ in #523
- fix(test): match the substrate refusal separator-agnostically on win32 by @KnockOutEZ in #524
- feat(contracts): add companion handshake contract by @KnockOutEZ in #528
- refactor(contracts): shared-artifact key scheme owned by companion contract by @KnockOutEZ in #529
- fix(studio): studio_act D9 refusals put prose in error_reason (K6) by @KnockOutEZ in #530
- feat(account): accounts client foundation — HTTP client, token store, state file, auth flows by @KnockOutEZ in #531
- feat(account): entitlement client — offline Ed25519 verify, pinned keys, entitlements.has(), gate logic + grace by @KnockOutEZ in #532
- feat(studio): human page edits invalidate the snapshot — page changed by human, re-read by @KnockOutEZ in #533
- feat(mcp): capability handshake — detected tier from clientInfo, branch on capabilities only by @KnockOutEZ in #534
- chore(core): export the account client — wigolo/account subpath + refreshEntitlementsNow() by @KnockOutEZ in #535
- feat(contracts): escalation, session-target and broker wire schemas [EXTRACT A3] by @KnockOutEZ in #536
- feat(core): subpath exports for the companion split [EXTRACT A4] by @KnockOutEZ in #537
- refactor(core): companion integration layer extracted from src/studio [EXTRACT A5] by @KnockOutEZ in #538
- feat(cli): register/login/logout/whoami/account verbs (PX2 slice C) by @KnockOutEZ in #539
- feat(studio): driver baton — one driver at a time, request-the-wheel, observers by @KnockOutEZ in #541
- feat(telemetry): telemetry client — disk queue, batching, off switches, closed event dictionary by @KnockOutEZ in #542
- feat(core): activation gate at MCP dispatch, daemon routes, CLI tool-run + REPL by @KnockOutEZ in #543
- feat(mcp): pin-8 tool reshaping — act post-actions, observe find param, description trims by @KnockOutEZ in #540
- feat(studio): wire the snapshot holder into the core host — one holder per session, human-input ingress by @KnockOutEZ in #544
- feat(daemon): the delivery queue — queued, delivered at step N, acknowledged by @KnockOutEZ in #545
- feat(studio): add run-scoped human wait delivery by @KnockOutEZ in #546
- feat(core): widen the companion and fetch-tier barrels to the symbols the extracted layer imports [EXTRACT A6] by @KnockOutEZ in #547
- feat(cli): capability-language copy — first-run, README, docs (CEO-gated) by @KnockOutEZ in #548
- feat(mcp): the §4.4 footer on every studio result + clean browser-closed error by @KnockOutEZ in #549
- perf(daemon): bound eventsSince replay pages in rows AND characters by @KnockOutEZ in #550
- feat(studio): wire the pin-8 post-action capability into the core host — console collector + settle wait by @KnockOutEZ in #551
- feat(telemetry): event instrumentation at dispatch, fetch-block and engine-failure seams by @KnockOutEZ in #552
- fix(cli): surface the persisted accountsUrl override in whoami/doctor by @KnockOutEZ in #553
- feat(studio): baton takeover + receipts — token bridge, interrupted-once, release receipt by @KnockOutEZ in #554
- fix(account): block cleartext credential transport by @KnockOutEZ in #555
- fix: reduce telemetry flush-path amplification by @KnockOutEZ in #556
- refactor(fetch): companion escalation bridge over the contract wire [EXTRACT C1] by @KnockOutEZ in #557
- test(px2): RC exit gate — fresh-install registration e2e, all 10 tools, forced-clock grace, telemetry-off zero-calls by @KnockOutEZ in #558
- fix(daemon): give SD2's dispatch hooks a store port, and cover the desktop engine's close phrases by @KnockOutEZ in #559
- feat(core): widen the companion and embedding barrels to four symbols the extracted specs name [EXTRACT A7] by @KnockOutEZ in #560
- refactor(tools): session-targeted calls forward over the companion wire [EXTRACT C2] by @KnockOutEZ in #561
- test: restore session-target host composition coverage by @KnockOutEZ in #562
- feat(daemon): the studio DB broker owes SD2 six run-log methods — baton, queue and the typed reads by @KnockOutEZ in #563
- refactor(daemon): dumb companion broker — table access only, grant-scoped [EXTRACT C3] by @KnockOutEZ in #564
- feat(core)!: studio domain layer extracted — companion seams only [EXTRACT C4] by @KnockOutEZ in #565
- feat(config): add new-tab search engine setting by @KnockOutEZ in #566
- feat(cli): wigolo studio setup — companion download and pairing bootstrap [EXTRACT C5] by @KnockOutEZ in #567
- feat(cache): content-hash lookups reach past versions, exposed on the CLI (K11 + K16) by @KnockOutEZ in #568
- feat(studio): memories store — studio_memories migration, broker table, grant scoping by @KnockOutEZ in #570
- feat(sdk): run callbacks — SSE iterator + watchRun in TS and Python by @KnockOutEZ in #571
- feat(studio): prune expired memories beside pruneStudioAudit by @KnockOutEZ in #572
- feat(cache): clearance reuse counters — migration, bump-on-reuse, value-free read API by @KnockOutEZ in #573
- feat(cache): expose authenticated retention controls by @KnockOutEZ in #574
- test(core): companion-consumer behavior pins + runtime tool-surface guard [EXTRACT C6] by @KnockOutEZ in #575
- feat(cache): the Library read surface — corpus list/facets, hybrid search export, version enumeration by @KnockOutEZ in #576
- feat(companion): pin-2 pacing — authenticated sliding window 60/10min, pause-and-ask cap seam by @KnockOutEZ in #577
- feat(cache): the visits store — history-with-content, agent-partitioned by @KnockOutEZ in #578
- feat(cache): visits semantic arm — vec partition + capture-cost measurement by @KnockOutEZ in #579
- feat(core): widen the companion barrel to the auth-origin ledger and the escalation counter [EXTRACT A8] by @KnockOutEZ in #580
- feat(core): publish an ./extraction subpath — html→markdown for the SD7 capture seam by @KnockOutEZ in #581
- fix(test): harness re-downloads the ~128MB embedding model every suite run by @KnockOutEZ in #582
- fix(build): WIGOLO_SKIP_PREPARE=no no longer skips the build by @KnockOutEZ in #583
- perf(cache): bound recordVisit eviction cost by @KnockOutEZ in #584
- fix(cli): studio setup refuses cleartext releases and quarantines what it installs by @KnockOutEZ in #585
- fix(daemon): broker 500s no longer echo storage-layer error text by @KnockOutEZ in #586
- feat(cache): the annotation store — studio_annotations migration, broker table, grant plumbing [SD4-C2 core half] by @KnockOutEZ in #587
- fix(daemon): refuse op kinds off the contract set; stop echoing thrown text from the transport and health arms by @KnockOutEZ in #588
- fix(cli): the release manifest no longer chooses where studio setup writes by @KnockOutEZ in #589
- feat(core): publish the companion consumer subpaths — auth trio, stage factories, shared contract fixtures by @KnockOutEZ in #590
- fix(daemon): bound the broker revocation ledger by @KnockOutEZ in #591
- fix(cache): ownership-aware DB open — initDatabase without migrations + schema-head probe by @KnockOutEZ in #592
- fix(cli): refuse a host-named companion bundle instead of deleting the application it names by @KnockOutEZ in #593
- feat(cache): the site-profile tables — studio_site_profiles / _grants / _memories migration + broker entries by @KnockOutEZ in #594
- chore(cache): publish toVersionTimestamp on the wigolo/cache/library subpath by @KnockOutEZ in #595
- feat(core): publish createSearchStage on wigolo/companion-stages by @KnockOutEZ in #596
- feat(core): export the one-shot local-LLM seam — subpath + barrel by @KnockOutEZ in #597
- test(bench-scrape): schema-mode structured-extract baseline rows (C2 §13.1 gap) by @KnockOutEZ in #598
- feat(core): SD9 broker tables — voice profiles, site widgets, reading queue by @KnockOutEZ in #599
- fix: clean stale build output before compilation by @KnockOutEZ in #600
- fix(cache): expose clearance ledger through package barrel by @KnockOutEZ in #601
- feat(crawl): publish crawl engine subpath by @KnockOutEZ in #602
- feat(cache): add SD10 broker tables by @KnockOutEZ in #603
- fix(core): recipe-aware artifact FTS lifecycle + provider exclusion by @KnockOutEZ in #604
- fix(cli): bound the companion artifact download in bytes and in time by @KnockOutEZ in #605
- test(daemon): pin the complete REST path surface and the /v1/runs absence by @KnockOutEZ in #606
- perf(cache): gate visit row-cap eviction on an id-span seek by @KnockOutEZ in #607
- test(core): pin the session-targeted dispatch branches in server.ts by @KnockOutEZ in #608
- test(cli): pin the artifact-cap clamp direction against a declared size above the ceiling by @KnockOutEZ in #609
- test(cache): pin the age arm's orphan sweep with a sole-referent body by @KnockOutEZ in #610
- test(core): mirror the companion route arms in core's own bridge / session-target specs by @KnockOutEZ in #611
- feat(core): publish createExtractStage on wigolo/companion-stages by @KnockOutEZ in #612
- fix(cache): keep the package-subpath clearance test out of the build-less type-debt ratchet by @KnockOutEZ in #614
- test(cli): inject the recorded shell-out into every darwin studio-setup arm by @KnockOutEZ in #613
- test(account): scope the 0600 custody arms to POSIX, assert the mode call everywhere by @KnockOutEZ in #615
- test(core): resolve npm portably so the companion-stages tarball arm runs on windows by @KnockOutEZ in #616
- fix(cli): give doctor's account probe an injectable transport and a real abort path by @KnockOutEZ in #617
- feat(binary): native prebuild harvest + runtime ABI pin manifest [spec §3] by @KnockOutEZ in #618
- feat(binary): compile pipeline producing the §4 artifact for the host platform [spec §4] by @KnockOutEZ in #619
- feat(binary): five-target release matrix workflow + checksums by @KnockOutEZ in #620
- feat(binary): install.sh fronting + local-artifact smoke by @KnockOutEZ in #621
- test(binary): clean-machine matrix smoke over the binary path, through install.sh by @KnockOutEZ in #622
- fix(core)!: PX2-R — registration becomes an unlock, not a gate by @KnockOutEZ in #623
New Contributors
- @josephkehan-prog made their first contribution in #209
- @w-up made their first contribution in #229
- @Faiyajz made their first contribution in #219
- @spartan8806 made their first contribution in #210
- @HsiangNianian made their first contribution in #204
- @nyxst4ck made their first contribution in #188
Full Changelog: v0.2.1...binary-v0.2.1-sd507.1
Standalone binaries
One download, no npm and no Node required. Unpack and run wigolo/bin/wigolo; the
directory is relocatable and resolves its own support files relative to the executable.
Verify your download first:
sha256sum -c SHA256SUMS # shasum -a 256 -c SHA256SUMS on macOS
- macOS — signed ad hoc, not with a Developer ID: the first run may need
System Settings -> Privacy & Security -> Open Anyway. - Windows — unsigned, so SmartScreen shows a publisher warning. Choose
More info -> Run anyway, or verify the checksum above and use the npm package instead. - Linux — glibc only. On Alpine or another musl distribution, use
npm i -g wigolo.
Every artifact here ran a full native load-verify battery on its own platform before
upload.