You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(v0.1.2): tool casing, project folder picker, sessions, control locking (#70)
Audits and fixes from the 0.1.1 playtest screenshot:
**Tool input field-name fix.** tool_write was failing with
"missing required key filePath" because DeepSeek occasionally emits
snake_case schema fields with camelCase keys in tool_use calls.
All 6 Mac tool wrappers (Read/Write/Edit/Bash/Glob/Grep) now accept
either case via a tolerant pickStr/pickNum/pickBool helper.
**Project folder picker.** Before chat is usable, users now pick a
project folder via the native file dialog. The path persists to
~/.deepcode/settings.json#projectPath and is threaded as `cwd` into
every agent turn (was hard-coded `/`). Sidebar shows the active
project + a ⇄ switch button to re-open the picker.
**Session persistence.** Added Tauri commands session_create +
session_append. mac-agent now creates a JSONL on first turn (id like
2026-05-28-<8hex>) and appends user + assistant messages. Sidebar
refreshes via a sessionEpoch counter on turn_done, so freshly-started
conversations appear in the Today bucket.
**Mid-turn controls locked.** New controlsLocked flag computed from
busy + pendingApproval; mode / model / effort dropdowns all respect it.
Was previously freely switchable mid-turn, which contradicted whatever
the agent loop already had baked in.
**Inspector rail wired.** All 6 rail icons now route to their
respective screens (Plan→Permissions, Sessions, Plugins, Skills, MCP,
About, Settings, cog→Settings). Expand-chevron ‹ still deferred.
**Proper dropdowns** for mode / model / effort — new Dropdown
component renders a click-popover with inline descriptions + meta,
replacing brittle click-to-cycle UX. 5 official modes now surfaced
(default / acceptEdits / plan / dontAsk / bypassPermissions).
**ChatScreen** folded into ReplScreen — the legacy split chat/terminal
view isn't on the new shell. Kept as a stub for symmetry. Bundle
dropped from 673 KB → 345 KB as a side effect (xterm out of the path).
**System prompt** now informs the LLM of the working directory + that
tool schemas are snake_case, so it stops guessing key casings.
Version bumped to 0.1.2 across tauri.conf / both package.jsons / Cargo.
CHANGELOG entry added. All typecheck + 533 tests pass.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments