See what a project cost, and count every model that contributed to a turn.
Added
-
report project, a report grouped by the directory the agent ran in. Each
project heads a block carrying its total, with its sessions beneath it. This is
the split your client already shows as folders, and the report could not make
it.turnlens report project every project turnlens report project turnlens that project's sessions turnlens report project turnlens daily that project, day by dayA name matches a project whole, so
turnlensdoes not also mean
turnlens-docs. A session belongs to the project it started in, so one that
changed directory part way through is not split across two headings.The rows under a project are still sessions. The project is a fifth grouping
word, not a new unit for the report.
Fixed
-
Advisor usage is no longer omitted from a turn. When Claude Code records
anadvisor_message, TurnLens keeps its model and usage separate, prices each
model at its own rate, and adds both to the turn. A measured Sonnet turn with
an Opus advisor moves from 733,887 tokens and $0.3641 to 799,234 tokens and
$0.7619.The reason this is worth its own entry is the shape of the gap: in a second
measured turn the advisor was 34 percent of the tokens and 64 percent of the
cost, because an advisor's input is uncached and its model is the dearer one.
A turn that used one was not slightly wrong.The live table still names the model that produced the answer. Reports and the
exit summary name every model the turn used. -
An agent named after
reportnow says so.turnlens report claude
answeredUnknown grouping: claude, which is true and useless: you know
claudeis an agent, which is why you typed it. It now names the word order
and shows the command that works. -
Two agents in watch mode no longer get called a grouping.
turnlens claude codexclaimedcodexneeded the wordreportin front of it. Watching
follows one session, so it takes one agent, and the answer for two is a report.
CSV schema change
pricing_components_json is appended as the final column. It is empty for an
ordinary single-model turn and explains every model, token category, cost status
and pricing version in a mixed turn. No existing column moved.
TurnLens refuses an existing 0.3.x CSV rather than silently interpreting it
under the new schema. Either append ,pricing_components_json to the end of its
header row or move the file and let TurnLens create a new one. Existing rows need
no other change, and reports are unaffected because they never open CSV files.
Unchanged
No command-line flag changed. Existing report JSON fields keep their meanings;
the project grouping only adds its optional project field. Single-model turns
produce the same tokens, costs, live-table model and empty component-detail cell
they would have produced under the new header before this fix.
Full diff: v0.3.2...v0.4.0