indifferentketchup
ba08c63f6a
feat: MCP {env:VAR} key substitution + coder model/tool-result fixes + docs refactor (v2.7.9)
- MCP secrets: substituteEnvVars recursively resolves {env:NAME} in mcp.json string values from process.env before Zod (opencode-compatible); unset -> '' + boot warning, and invalid-config log names the unset vars (an empty {env:VAR} in a strict url/command field invalidates the whole config)
- data/mcp.json now untracked (.gitignore flips !data/mcp.json -> !data/mcp.example.json); tracked template data/mcp.example.json carries "{env:CONTEXT7_API_KEY}"; .env.example documents the key (9 mcp-config tests)
- Coder fix: message_complete frame model widened string -> string|null (server+web ws-frames parity); dispatcher publishes model: task.model at all 4 external completion points — a null model otherwise fail-closed in publishFrame and dropped the whole frame incl. status:'complete' (regression test)
- Coder fix: claude-sdk mapUserToolResults maps user-message tool_result blocks -> terminal tool_update events (completed/failed w/ output) so tool snapshots resolve instead of spinning forever
- Composer: AgentComposerBar drops §9b resumed/history/new chip + token readout, loses flex-wrap so the row stays one line; CoderPane gains a per-chat localStorage agent-config cache (restores last model on reopen) + threads model into the timeline/chip
- Docs: root CLAUDE.md slimmed (~190 lines), per-app refs split to apps/{coder,server,web}/CLAUDE.md; new docs/coder-backends.md, docs/project-discovery.md, docs/coding-standards/ (cross-app-contract-parity); ARCHITECTURE.md links the backends doc
2026-06-02 17:01:03 +00:00
..
2026-06-02 17:01:03 +00:00
2026-06-01 22:30:47 +00:00
2026-05-24 05:19:52 +00:00
2026-06-01 08:16:03 +00:00
2026-06-01 12:47:17 +00:00
2026-05-23 12:43:13 +00:00
2026-05-30 20:37:38 +00:00
2026-05-22 15:48:32 +00:00
2026-05-22 21:54:16 +00:00
2026-06-01 02:35:11 +00:00
2026-06-01 13:05:03 +00:00
2026-06-01 13:05:03 +00:00
2026-05-16 04:35:49 +00:00
2026-05-22 21:45:52 +00:00
2026-05-16 20:07:53 +00:00
2026-05-16 02:51:59 +00:00
2026-05-22 21:45:52 +00:00
2026-05-24 04:08:42 +00:00
2026-06-02 17:01:03 +00:00
2026-05-20 19:29:26 +00:00
2026-05-22 21:45:52 +00:00
2026-05-16 05:11:39 +00:00
2026-05-31 02:14:42 +00:00
2026-05-22 21:45:52 +00:00
2026-05-29 03:12:16 +00:00
2026-05-26 15:18:31 +00:00
2026-05-26 15:18:31 +00:00
2026-05-22 20:08:47 +00:00
2026-05-22 20:08:47 +00:00
2026-05-27 19:28:08 +00:00
2026-05-27 21:44:39 +00:00
2026-05-27 21:44:39 +00:00
2026-05-27 21:44:39 +00:00
2026-05-27 21:44:39 +00:00
2026-05-31 02:14:42 +00:00
2026-05-22 07:55:55 +00:00
2026-05-20 21:38:02 +00:00
2026-05-26 23:30:50 +00:00
2026-05-20 21:40:11 +00:00