Releases: realproject7/quadwork
v2.3.9
What's Changed
- [#958] Add Fable 5 (claude-fable-5) to the agent model catalog by @realproject7 in #959
Full Changelog: v2.3.8...v2.3.9
v2.3.8
Patch release — batch-progress correctness/efficiency, setup-wizard robustness, reviewer-token Settings, and Operator-MCP docs.
Fixes
- #950 — Batch-progress re-fetched every item every cycle (slow panel on large batches + drained the main-account core REST budget). Terminal
merged/closedrows are now cached inbatch-progress-cache.jsonand not re-fetched, and the endpoint serves the cached result while recomputing in the background. (PR #952) - #951 — A PR that closed an issue via GitHub's native link (no
[#N]in the title) left the closed item flappingqueued (retrying)and burning API. Now resolves via the issue's "closed by PR" timeline event in addition to the[#N]title, and a CLOSED issue never degrades toqueued (retrying)on a transient Search failure. (PR #953) - #947 — Setup wizard failed with
invalid reference: worktree-<agent>when the local clone was empty (e.g. cloned before the repo's first commit). It nowgit fetches an existing clone and checks out the remote default branch before the HEAD check, uses an inline git identity for the empty-repo seed commit, and checks each git result. (PR #954) - #949 — Added a Reviewer-account section to Settings: view token-configured status, rotate the PAT, and set
reviewer_github_user— previously only settable in the wizard. (PR #955) - #948 — Documented the direct stdio JSON-RPC pattern for the Operator MCP in
docs/operator-mcp.md. (PR #956)
v2.3.7
Patch release — two QuadWork robustness fixes for state lost on server restart.
Fixes
- #944 — Pinned projects and sidebar groups were reset on every server restart (a whole-config GET→PUT carrying a stale snapshot clobbered
pinned_projects/sidebar_groups). Now persisted via field-scopedPUT /api/pinsandPUT /api/sidebar-groups(read-fresh → set-one-key → write), and the whole-config PUT always preserves the on-disk values. (PR #945) - #943 — The code-batch progress panel showed transient "fetch failed" rows after a restart: it read the in-memory
_graphqlCache(wiped on restart) and fell back to an uncapped burst of live per-item Searches. It now reads the persisted GITHUB.md snapshot on a cold cache (zero live Search), concurrency-caps the warm-cache fallback (_mapLimited), and renders a transient failure as a softqueued (retrying)row instead of a hardfetch failed. (PR #946)
v2.3.6
Patch release — restores the chat image-attachment feature + adds a packaging guard.
Fixes
- #940 — Chat image attachments were broken at two layers: (1)
GET /api/uploads/...returned 404 for every upload becauseres.sendFileused the defaultdotfiles: "ignore"and uploads live under the~/.quadworkdot-directory — now passes{ dotfiles: "allow" }; (2)POST /api/chat+appendMessagedropped theattachmentsfield (a #723 regression), so sent images never persisted — now threaded through and stored (name only, no absolute path). (PR #941) - #939 — Added a
pack-smokeCI guard: packs the tarball, installs it, and loads the server entrypoints so a runtimerequireof a file missing from thefileswhitelist fails CI instead of prod (the class of bug that broke 2.3.4). (PR #942)
v2.3.5
Hotfix for v2.3.4 — which was broken on fresh install. Publish/upgrade to 2.3.5; do not use 2.3.4.
Fix
- #939 —
quadwork@2.3.4crash-looped on startup withCannot find module '../src/lib/injectMode.js'. The #937 shared module wasrequired by runtime Node code (bin/quadwork.js,server/index.js,server/routes.js) butsrc/isn't in the npmfileswhitelist, so the published tarball omitted it. 2.3.5 shipssrc/lib/injectMode.js. Verified vianpm pack+ a fresh-install smoke (server boots).
Carries (same as 2.3.4, now installable)
- #937 — Settings command-change/save reconciles
mcp_inject(makes converting a slot tocommand: geminiwork end to end). - #935 —
SettingsPage.save()sanitizes the butler model.
A CI pack-smoke guard to prevent this class of regression is tracked in #939.
v2.3.4
Patch release — two Settings fixes that complete the Gemini-agent enablement path.
Fixes
- #937 — Changing an agent's Command in Settings reset the model (#931) but not
mcp_inject, so converting an agent to Gemini left a stale"flag"and the CLI crashed on launch (spawned with--mcp-config, which Gemini doesn't accept). Command-change andsave()now reconcilemcp_injectfrom the command, and the backend→mode mapping is centralized in a new sharedsrc/lib/injectMode.js(wizard, add-project route, and spawn default all use it). This is the fix that makes a Gemini agent actually enablable from the UI. (PR #938) - #935 —
SettingsPage.save()now runs the butler model throughsanitizeModel, so an invalid butler model (hand-edited / never command-changed) no longer re-persists. (PR #936)
Context
Builds on the Gemini integration shipped in v2.3.3 (#931 provider-aware model dropdown, #932 chat_read fix). With #937, the full "switch a team slot to command: gemini in Settings" flow works end to end.
v2.3.3
Patch release — two bug fixes.
Fixes
- #932 — Gemini agents froze on startup: the
chat_readMCP tool failed every call withinvalid_type("structuredContent must be a record, not an array"). The chat-shim now wraps bare-array tool bodies in an object ({ messages: [...] }), so Gemini's MCP SDK accepts the result. Unblocks Gemini agents end-to-end. (PR #933) - #931 — Settings: the per-agent Model dropdown was hardcoded to Claude models, so Codex/Gemini agents showed "sonnet". It's now provider-aware (options track the agent's command), heals stale/cross-backend/unset models on display and on save, and resets the model when the command changes. Extracted a shared, unit-tested
src/lib/agentModels.ts. (PR #934)
v2.3.2
What's Changed
- [#925] Read archived review-batch final states from the matching Done block by @realproject7 in #926
- [#921] Head assigns immediately on an explicit operator batch request by @realproject7 in #927
- [#923] Wake a standing-by agent on @mention — defer, don't drop by @realproject7 in #928
- [#922] Restore throttled visibility for stuck reseed deferrals on the periodic tick by @realproject7 in #929
- [#924] Automated coverage for the watchdog auto-respawn integration path by @realproject7 in #930
Full Changelog: v2.3.1...v2.3.2
v2.3.1
What's Changed
- [#901] README: add Operator MCP + Review batches sections by @realproject7 in #903
- [#902] Skill: operate QuadWork via the Operator MCP by @realproject7 in #904
- [#905] Complete Gemini CLI agent support — model flag + wizard provider option by @realproject7 in #906
- [#907] Review batches: per-item findings flow + fix in-review (2/2) stuck at 50% by @realproject7 in #912
- [#908] Setup wizard: default to an installed CLI for all multi-CLI combos + unify single-CLI message by @realproject7 in #913
- [#910] Auto-respawn exited agents + clear stale 'running' via watchdog liveness probe by @realproject7 in #916
- [#915] Auto-retry deferred reseeds without a server restart by @realproject7 in #918
- [#914] operator-mcp.md: operating model + 'never' rules, fix Typical-flow anti-pattern, document review batches by @realproject7 in #919
- [#911] Package README-linked install/troubleshooting docs in the npm tarball by @realproject7 in #920
Full Changelog: v2.3.0...v2.3.1
v2.3.0
What's Changed
- [#790] MCP operator server scaffold + transport + list_projects by @realproject7 in #875
- [#866] GitHub rate-limit status badge (core/graphql/search) in GITHUB header by @realproject7 in #876
- [#791] Operator MCP: Tier 1 read tools (read_chat, batch_status, read_queue, list_agents) by @realproject7 in #877
- [#792] Operator MCP: send_message tool by @realproject7 in #878
- [#793] Operator MCP: batch management (set_batch, append_batch, ensure_batch) by @realproject7 in #879
- [#870] Review batches — server: batch-type marker + queue-driven completion by @realproject7 in #881
- [#880] Operator MCP: remove stale #864 caveat from batch_status tool description by @realproject7 in #882
- [#871] Review batches — frontend: progress states + wording by @realproject7 in #883
- [#872] Review batches — seeds: ticket-review workflow (4 roles) by @realproject7 in #884
- [#873] Review batches — seeds: pr-review workflow (4 roles) by @realproject7 in #885
- [#887] pr-review seeds: fetch the PR's linked ticket, not issues/ by @realproject7 in #888
- [#886] Rate-limit badge: also show the reviewer-token account by @realproject7 in #889
- [#794] Operator MCP: batch execution (start_batch, trigger_now, stop_batch) by @realproject7 in #890
- [#795] Operator MCP: agent control (agent_control, interrupt_all) by @realproject7 in #891
- [#796] Operator MCP: error handling, tests, registration docs by @realproject7 in #892
- [#893] Reviewer rate-limit badge: resolve custom reviewer-token paths via the reseed resolver by @realproject7 in #895
- [#894] Package docs/operator-mcp.md in the npm tarball by @realproject7 in #896
- [#897] Reviewer rate-limit: expand ~ in reviewer token path (P1 regression from #893) by @realproject7 in #898
- [#899] Serve live review states during in-place batch progression by @realproject7 in #900
Full Changelog: v2.2.1...v2.3.0