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
BREAKING: --backend=cli is gone. The v0.8.0 deprecation alias is
deleted along with the ClaudeCliClassifier implementation, the
--classifier-command flag, and the TJ_CLASSIFIER_CLI env-var write
path. Uninstall still strips the legacy env key (back-compat).
Why now: claude -p no longer rides the Pro/Max subscription —
running it bills tokens separately. Keeping the alias one release
was enough notice; carrying a deprecated free-fallback that isn't
free is a worse contract than just removing it.
Removed:
- crates/tj-core/src/classifier/cli.rs (ClaudeCliClassifier + tests)
- crates/tj-core/tests/classifier_eval.rs + fixtures dir
- InstallHooks::classifier_command flag
- TJ_CLASSIFIER_CLI write on install (strip-on-uninstall kept)
- Two install_hooks tests that exercised the removed flag
Public API:
- tj_core::classifier::cli module — gone
- --backend=cli value — now errors out
- --classifier-command flag — gone
Docs:
- README: rewritten around the hybrid model (heuristic + API),
no more `claude -p` / subscription references. Env-var table
trimmed to ANTHROPIC_API_KEY + TJ_CLASSIFIER_MODEL.
- SKILL.md: drop the Pro/Max subscription claim.
- PreCompact description updated to mention transcript catch-up.
Tests: 64 cli integration + 158 core lib pass (2 pre-existing
migrate_project /tmp canonicalization failures unrelated).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+5-6Lines changed: 5 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -75,12 +75,12 @@ That's it. Restart Claude Code, start working, and the journal fills itself.
75
75
76
76
## How it works
77
77
78
-
-**Auto-capture via Claude Code hooks.** Every prompt, tool call, and Claude reply is classified by a small `claude -p` invocation and appended as a typed event (`finding` / `decision` / `evidence` / `rejection` / …). Hook returns in <100 ms — classification happens in the background, never blocks your session.
78
+
-**Auto-capture via Claude Code hooks.** Every prompt, tool call, and Claude reply runs through a two-stage classifier and lands as a typed event (`finding` / `decision` / `evidence` / `rejection` / …). Stage 1 is a fast in-process heuristic — pattern-matches obvious phrasing in EN+RU for zero cost. Stage 2 falls back to the Anthropic API (`ANTHROPIC_API_KEY`) only when the heuristic is uncertain. Hook returns in <100 ms — both stages run in a detached background worker, never blocking your session.
79
79
-**Artifact extraction.** Each event scans its text for commit hashes, PR URLs, file paths, issue IDs, and branch names. Aggregated artifacts are how Task Journal links related tasks: when you start a new task touching the same issue or file, the prior task is surfaced automatically.
80
80
-**Resume packs.**`task_pack` (MCP tool or CLI) renders a task into a compact Markdown briefing — Goal, Outcome, decisions, rejections, evidence, artifacts — that fits in a fresh agent's context window without dumping the raw event log.
81
-
-**Auto-capture boundaries.** Beyond per-event capture, two extra hooks mark *reasoning boundaries* automatically: `PreCompact`drops a marker decision when Claude Code is about to compact, and a`/rewind`-prefixed prompt appends a single correction event so pack readers see where the user rolled back. No mass-rejection of prior events — the boundary is a sentinel, not a rewrite.
81
+
-**Auto-capture boundaries.** Beyond per-event capture, two extra hooks mark *reasoning boundaries* automatically. On `PreCompact`, Task Journal reads the transcript JSONL tail (entries newer than the active task's last event) and enqueues anything the synchronous hooks missed before the compact — then drops a marker decision so the post-compact agent sees a clear cut. A`/rewind`-prefixed prompt appends a single correction event so pack readers see where the user rolled back. No mass-rejection of prior events — the boundary is a sentinel, not a rewrite.
82
82
83
-
Source of truth is an append-only JSONL log per project. SQLite holds derived state and is fully rebuildable. Nothing is sent off-machine except the classifier prompt to your own `claude -p` (subscription) or the Anthropic API.
83
+
Source of truth is an append-only JSONL log per project. SQLite holds derived state and is fully rebuildable. Nothing is sent off-machine except the classifier prompt to the Anthropic API — and only when the local heuristic is uncertain. With no `ANTHROPIC_API_KEY` set, Task Journal still works: the heuristic handles the obvious cases, and anything it can't classify sits in the local pending queue for later retry.
84
84
85
85
### Statusline integration
86
86
@@ -183,9 +183,8 @@ The MCP server exposes five tools to Claude Code (and any MCP client):
183
183
184
184
| Env var | Effect | Default |
185
185
|---------|--------|---------|
186
-
|`TJ_CLASSIFIER_CLI`| Classifier command. When set to bare `claude`, Task Journal automatically injects `--strict-mcp-config --mcp-config '{"mcpServers":{}}'` so the inner classifier session does not load every plugin in your settings (keeps classifier startup fast). |`claude`|
187
-
|`TJ_CLASSIFIER_MODEL`| Model alias for the classifier (`claude -p` or HTTP API). |`haiku` (CLI) / `claude-haiku-4-5-20251001` (API) |
188
-
|`ANTHROPIC_API_KEY`| Required for `--backend=api` (HTTP classifier). |_unset_|
186
+
|`ANTHROPIC_API_KEY`| Powers the API stage of `--backend=hybrid` (default) and is required for `--backend=api`. Without it, only the offline heuristic runs and ambiguous chunks land in the local pending queue. |_unset_|
187
+
|`TJ_CLASSIFIER_MODEL`| Override the Anthropic model used by the API stage. |`claude-haiku-4-5-20251001`|
189
188
|`TJ_AUTO_OPEN_TASKS`| Set to `0` / `false` to disable auto-opening a task from `UserPromptSubmit` when no open task exists. |`1`|
0 commit comments