Skip to content

Releases: realproject7/quadwork

v2.3.9

11 Jun 07:40

Choose a tag to compare

What's Changed

Full Changelog: v2.3.8...v2.3.9

v2.3.8

07 Jun 21:18

Choose a tag to compare

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/closed rows are now cached in batch-progress-cache.json and 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 flapping queued (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 to queued (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 now git 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

04 Jun 07:18

Choose a tag to compare

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-scoped PUT /api/pins and PUT /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 soft queued (retrying) row instead of a hard fetch failed. (PR #946)

v2.3.6

02 Jun 08:54

Choose a tag to compare

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 because res.sendFile used the default dotfiles: "ignore" and uploads live under the ~/.quadwork dot-directory — now passes { dotfiles: "allow" }; (2) POST /api/chat + appendMessage dropped the attachments field (a #723 regression), so sent images never persisted — now threaded through and stored (name only, no absolute path). (PR #941)
  • #939 — Added a pack-smoke CI guard: packs the tarball, installs it, and loads the server entrypoints so a runtime require of a file missing from the files whitelist fails CI instead of prod (the class of bug that broke 2.3.4). (PR #942)

v2.3.5

02 Jun 01:53

Choose a tag to compare

Hotfix for v2.3.4 — which was broken on fresh install. Publish/upgrade to 2.3.5; do not use 2.3.4.

Fix

  • #939quadwork@2.3.4 crash-looped on startup with Cannot find module '../src/lib/injectMode.js'. The #937 shared module was required by runtime Node code (bin/quadwork.js, server/index.js, server/routes.js) but src/ isn't in the npm files whitelist, so the published tarball omitted it. 2.3.5 ships src/lib/injectMode.js. Verified via npm 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 to command: gemini work end to end).
  • #935SettingsPage.save() sanitizes the butler model.

A CI pack-smoke guard to prevent this class of regression is tracked in #939.

v2.3.4

02 Jun 01:47

Choose a tag to compare

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 and save() now reconcile mcp_inject from the command, and the backend→mode mapping is centralized in a new shared src/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)
  • #935SettingsPage.save() now runs the butler model through sanitizeModel, 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

01 Jun 21:15

Choose a tag to compare

Patch release — two bug fixes.

Fixes

  • #932 — Gemini agents froze on startup: the chat_read MCP tool failed every call with invalid_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

01 Jun 11:15

Choose a tag to compare

What's Changed

Full Changelog: v2.3.1...v2.3.2

v2.3.1

01 Jun 07:44

Choose a tag to compare

What's Changed

Full Changelog: v2.3.0...v2.3.1

v2.3.0

01 Jun 05:18

Choose a tag to compare

What's Changed

Full Changelog: v2.2.1...v2.3.0