-
v1.6.17 Stable
released this
2026-09-18 09:55:17 +00:00 | 184 commits to main since this releaseThree counting bugs that all read as "the dashboard's numbers are wrong".
- Tokens/cost: Claude Code writes one JSONL line per content block of an assistant message, each repeating the same
usage. Both parsers summed them, so a tool-heavy session ran 1.5–2x high ($45.82 stored vs $27.72 real on a 4h session). Each message is now counted once. - Turns: every
TurnDurationrow was stamped NOW while its dedup guard matched the transcript timestamp, so each hook re-inserted the whole turn history — 587k rows, 75% of a real events table. Same class of bug in the session metadata counters (thinking_blocks,turn_count), which are now assigned rather than accumulated. - Events: leftover checkout hook entries double every event and every subagent row.
stripLegacyHooksonly ran in the bootstrap's full pass, which a healthy install skips —hasLegacyHooksnow blocks the fast path.
A one-time repair runs at the first start after upgrading (
user_version3): it deletes the duplicatedTurnDurationrows and re-parses every transcript with exact writes (the high-water baselines make a downward correction impossible otherwise).Also: switching a lane's AI Router while a pane is live now reports
restart_requiredand offers a Restart, because Claude Code keeps the model it resolved at startup and the old router's model name would reach the new endpoint. Notification types for "Claude needs confirmation" and "Claude finished a turn" (#29), both on by default. Sidebar brand is the SmartGift wordmark with a matching favicon.Downloads
- Tokens/cost: Claude Code writes one JSONL line per content block of an assistant message, each repeating the same