• v1.6.17 Stable

    nntrivi2001 released this 2026-09-18 09:55:17 +00:00 | 184 commits to main since this release

    Three 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 TurnDuration row 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. stripLegacyHooks only ran in the bootstrap's full pass, which a healthy install skips — hasLegacyHooks now blocks the fast path.

    A one-time repair runs at the first start after upgrading (user_version 3): it deletes the duplicated TurnDuration rows 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_required and 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