Skip to content

chore: release 7.7.0 — the #58 chain reaches the server, not just the toolbar - #64

Merged
Lexus2016 merged 1 commit into
mainfrom
chore/release-7.7.0
Aug 23, 2026
Merged

Lexus2016 merged 1 commit into
mainfrom
chore/release-7.7.0

Conversation

@Lexus2016

Copy link
Copy Markdown
Owner

What

Ships 7.7.0 and closes the half of #58 that stopped at the browser.

The chain reaches chat creation

The new-chat defaults chain (project override → global → built-in) governed the
toolbar. Both server-side doors to a new interactive chat — the WebSocket
chat frame and POST /api/sessions — still carried a private literal set
(sonnet / auto / single / 30 turns). An API client, or a browser running a
cached older build, therefore created chats on values nobody had configured while
the toolbar on screen showed the resolved ones.

Both now resolve through chatDefaultsForWorkdir() (sessions have no
project_id column, so the project is matched by workdir the way /api/activity
does). _cd is hoisted above the createSession INSERT so the stored row and
the run cannot disagree.

The unattended channels deliberately do not inherit it

Telegram and the scheduler keep their own 30-turn budget, now named
UNATTENDED_MAX_TURNS instead of copy-pasted at eleven call sites. A scheduled
job that silently inherited someone's turns: 200 would spend a budget nobody was
watching, and every existing install would have jumped 30 → 50 on upgrade without
being asked. Per-channel budgets, if ever wanted, belong in their own setting.

Smaller

  • An empty turn-budget box fell back to a literal 30 that matched neither the
    box's own placeholder nor BUILTIN. It now falls back to the configured default.
  • mcp-task-manager.js offered haiku / sonnet / opus, so an agent creating a
    task could not pick Fable — the fourth model the UI has exposed since 7.4.
  • CHANGELOG / README / CLAUDE.md for 7.7.0; package.json 7.6.0 → 7.7.0.

Verification

npm test — 63 files, 0 failures (27 PASS lines + the node --test render
suites). New assertions live in test/chat-defaults-api.test.js:

  • a session created through POST /api/sessions equals the resolved chain, not a literal;
  • a project override wins, while the dials it did not pin still follow the global;
  • an explicit request value still beats the whole chain;
  • UNATTENDED_MAX_TURNS is declared exactly once, is still 30, and is what the
    scheduler and the Telegram path use;
  • the WS chat frame no longer defaults any of the four dials to a literal, and
    _cd is hoisted above the session INSERT.

🤖 Generated with Claude Code

… toolbar

The new-chat defaults chain (#58) governed the browser toolbar but stopped
there. Both server-side doors to a new interactive chat — the WebSocket `chat`
frame and `POST /api/sessions` — carried their own literal set (`sonnet` /
`auto` / `single` / 30 turns), so an API client or a browser running a cached
older build created chats on values nobody had configured while the toolbar on
screen showed the resolved ones. Both now resolve the same chain via
`chatDefaultsForWorkdir()`, and the resolved row is computed above the
`createSession` INSERT so the stored row and the run cannot disagree.

The unattended execution channels deliberately do NOT inherit it. Telegram and
the scheduler keep a 30-turn budget, now under a name (`UNATTENDED_MAX_TURNS`)
instead of copy-pasted at eleven call sites: a scheduled job that silently
inherited someone's `turns: 200` would spend a budget nobody was watching, and
every existing install would have jumped 30 → 50 on upgrade without being asked.

Also:
- an empty turn-budget box now falls back to the configured default rather than
  to a literal 30 that matched neither the box's placeholder nor BUILTIN;
- the MCP task manager's model enum gained `fable`, so an agent creating a task
  can pick the fourth model the UI has exposed since 7.4;
- CHANGELOG / README / CLAUDE.md updated for 7.7.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Lexus2016
Lexus2016 merged commit 9851c19 into main Aug 23, 2026
2 checks passed
@Lexus2016
Lexus2016 deleted the chore/release-7.7.0 branch August 23, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant