Releases: BleedingDev/dx-feature-tracker
Release list
dft 0.3.0
dft gives agents explicit control over what they read and change, with retained evidence for checking their results later.
New
- Agent queries through the CLI and stdio MCP use
dx.agent.v1, explicit acquisition and price policies, and limits on work and output. Retained analysis bases keep their selected observations, Git attribution, prices and interpretation versions for replay and comparison. - Reviewed operations use plan, apply, get and cancel calls, durable request keys, progress and verification receipts. The available operations are collect, configure, metadata export, delete, reset and restore.
- Investigations and lessons keep evidence references, revision history and separate evaluations. Agents can resume an investigation and search retained lessons. The tool does not execute lesson text or treat an authored conclusion as measured savings.
- The loopback dashboard shows agent queries and reviewed operations. CLI, MCP and dashboard calls share the same capability contracts.
- Codex guidance installation preserves edited skills and unrelated files. Cursor guidance describes the agent query and operation workflow.
Upgrading
The local SQLite store migrates to schema 8 with additive agent tables and indexes. Existing observations remain intact. Existing human report commands remain available. MCP registration is manual.
Known limits
- Agent-profile acquisition refresh and price refresh are unavailable. Use recorded observations and cached or pinned prices.
derive-usage,refresh-prices,live-startandlive-stopoperation kinds are reserved and disabled. Existing human live commands remain available.- Agent export contains metadata only. Missing measurements remain unavailable with a reason. Operation receipts do not promise universal exactly-once execution or prove causal savings.
Validation
The full check, test and build gate passed with 2,005 tests passed and three skipped. Commit hooks passed, and GitHub CI passed on this release commit.
The packed archive passed isolated CLI and MCP checks for retained replay, reviewed metadata export, durable retry and receipt recovery, and saved investigation retrieval. MCP emitted only JSON-RPC frames and no diagnostics on stdout.
Archive SHA256: 402216732f6903f8fa288f429019de9483317abe7978ae986d30e897bac8f70c. The versioned archive and dx-feature-tracker.tgz contain identical bytes.
dft 0.2.1
A fix release: numbers that were counted twice or put on the wrong branch, and secrets that could slip past redaction.
Fixed
- Requests counted once. A DeepSeek Harness request read three or more times now counts once, as its newest reading. An OpenCode orchestrator message split again by a later sync replaces its earlier split instead of adding to it. With Codex OpenTelemetry on (
dft install --telemetry), a session with no session file no longer shows one extra request from the warmup Codex sends when it starts. dft analyzeanddft historyagree withdft usage. Codex cached input is no longer counted as fresh input there, and a DeepSeek Harness request that a later read replaced is no longer counted twice.- Detached HEAD is not a branch. Requests made after
git checkout origin/main, a tag orgit checkout --detach mainno longer land on a branch namedorigin/mainormain. They count toward the branch around them, also when a rebase left that checkout orgit fetch --prunelater removed the remote branch. - Removed Claude Code worktrees. Sessions from a worktree that was removed before dft first synced are kept when they show a commit the repo knows or name the repo's worktree folder, and they land on the branch Claude Code recorded. Requests that then move into the main worktree with
cdstay in the repo instead of falling under "(no repo)". - Crashed Codex turns. A last turn that never finished is closed as unfinished after 30 quiet minutes, and a turn still waiting for its first model reply is no longer cut off by a long quiet spell.
- Secret redaction. dft redacts more secrets in what it keeps: long setting names such as
spring.datasource.password=,AWS_SECRET_ACCESS_KEY=and other names ending in_KEY,_TOKEN,_PATor_PASSWORD,password: valuewith the value on the next line,password => 'value',--password valueand--token value(also after a line continuation or a non-breaking space),mysql -p,sshpass -p,curl -u user:pass,user:pass@hostin links and Google API keys. Whole values are hidden now, not just the part before a;or,. Ordinary words such astoken_count,token_typeandPWDpaths are left alone. A command run throughsudo -u root ghis recorded asgh. - Prices. OpenAI Batch cache reads are priced at the Batch input rate for models where OpenAI lists no Batch cached rate (gpt-4.1, gpt-4o and their minis, gpt-4.1-nano, o1, o3, o3-mini, o4-mini), dated ids such as
gpt-4.1-2025-04-14included. A dated OpenAI id such aso3-2025-04-16uses its model's Fast rate instead of 2x, unless OpenAI lists that snapshot itself. - Tool versions. Pi and DeepSeek Harness rows now carry the installed tool version instead of none.
dft mcp. The MCP server reports its name asdft.dft usage --helplists every--bychoice, includingparentSessionandagent.
Upgrading
Nothing to do. Your next dft sync derives stored usage again with the fixes above, so branch and request totals of older chats can change.
Known limits
The points still open are listed in harnesses.md.
dft 0.2.0
0.2.0
dft now tracks seven AI coding tools, not just Cursor: Cursor, Claude Code, Codex, OpenCode, Pi, OMP and DeepSeek Harness.
New
- Every tool, one store.
dft syncreads each tool's own session files (and Cursor's databases) read-only, anddft installadds capture for every tool it finds in this repo only: Claude Code and Codex hooks, an OpenCode plugin, Pi and OMP extensions, and DeepSeek Harness hooks. These files are kept out of git and never touch your teammates or your home folder.dft install --telemetryalso turns on Claude Code and Codex OpenTelemetry to 127.0.0.1, shows the change first and keeps a backup. dft usage. Tokens, requests and cost grouped by tool, model maker, gateway (via), model, effort, repo, branch, worktree, session or day, week or month, with filters for each and a time window. The same numbers reach the dashboard and the MCP server.- Three money figures, never added. The estimate is tokens times the model maker's public price, including cache tiers and fast or priority tiers. A tool's own cost figure (Claude Code, OMP, OpenCode, Cursor) is shown next to it as "tool's figure". Only real bills are called billed. Models without a known price show their tokens with "no price".
- Branches per request. Each request lands on the branch it ran on: the branch the tool recorded, then a hook's branch, then the checkout history at that time, then the folder. A chat that switches branch is split at the switch. Subagents count on their own worktree's branch and stay under their parent in chat lists.
- Chats from every tool.
dft chatsand the dashboard list chats across tools with titles, models and effort per turn, and subagent trees. - Dashboard. Filter chips, a group-by choice, a chart over time stacked by tool and a table with drilldown, all kept in the address. It also watches each tool's session folders, so a chat shows up without waiting for the next poll, even when the tool's hooks are not loaded.
- Kept forever. Usage facts stay in
~/.dftafter a tool deletes its transcripts. dft never stores prompt text.
Changed
dft statuslists every tool with its sessions, project capture and last event.dft history --all-reposnames same-named repos by their parent folder.dft statusrun outside a git repo says so instead of "detached HEAD".
Known limits
The open points are listed in harnesses.md. The checks behind this release are in 0.2.0 validation.
Upgrading
Node.js 24.18.0 or newer is still required. dft uninstall from this version also removes the Cursor skills that earlier versions copied.
dft 0.1.15
Install or update:
npm i -g https://github.com/BleedingDev/dx-feature-tracker/releases/latest/download/dx-feature-tracker.tgz- The estimate now covers Cursor Auto: Auto bills at the list price of the model it routes to, so dft uses Cursor's own list-price value for each Auto request (shown as "list price; Auto from Cursor")
dft 0.1.14
Install or update:
npm i -g https://github.com/BleedingDev/dx-feature-tracker/releases/latest/download/dx-feature-tracker.tgz- Billed cost and the estimate now land on the branch each request ran on, including merged and deleted branches (first run refetches your Cursor usage once to fix older rows)
- Grok 4.7 fast models are priced
- A short note shows Cursor requests that could not be matched to a branch
- The dashboard intro stays open at the end with Replay and Close
dft 0.1.13
Install or update:
npm i -g https://github.com/BleedingDev/dx-feature-tracker/releases/latest/download/dx-feature-tracker.tgz- Replay the dashboard intro any time from the Intro item in the menu
dft 0.1.12
Install or update:
npm i -g https://github.com/BleedingDev/dx-feature-tracker/releases/latest/download/dx-feature-tracker.tgz- Short intro video when you first open
dft dashboard - A contact line for company-wide use
- No more npm install-scripts warning; old Node is still refused when you run dft
- The live page never misses a change
dft 0.1.11
Install or update:
npm i -g https://github.com/BleedingDev/dx-feature-tracker/releases/latest/download/dx-feature-tracker.tgzdft dashboardis now a live local page (127.0.0.1:7420) that updates by itself while you work;--one-timewrites the static file- Merged and rebased branches show their real commit count; every local branch is counted
- No more "(no branch)": work during a rebase goes to the branch being rebased, leftovers show as one "unassigned" row
dft 0.1.10
Install or update:
npm i -g https://github.com/BleedingDev/dx-feature-tracker/releases/latest/download/dx-feature-tracker.tgz- Exact tokens per request straight from Cursor's hooks (input, cached, cache write, output), no dashboard needed
- The model of every turn is recorded from the hook
- The same request seen in hooks, cursor-agent output and your Cursor usage still counts once
dft 0.1.9
Version bump only, no functional changes (the stop-hook token work was left out by mistake). Use v0.1.10 or later.