Skip to content

Commit 7363d61

Browse files
authored
Merge pull request #46 from Digital-Threads/fix/distiller-tools-and-capture-status
fix: distiller MCP-tool pin + capture status; yvh diagnosis (0.25.1)
2 parents 266aef4 + 4fca914 commit 7363d61

9 files changed

Lines changed: 58 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
## [0.25.0] - 2026-06-13
10+
## [0.25.1] - 2026-06-14
11+
12+
### Fixed
13+
- **Distiller subagent no longer pins fragile MCP tool names.** The
14+
`task-journal-distiller` agent dropped its explicit `tools:` list (which named
15+
the journal MCP tools under one marketplace-specific prefix and would have left
16+
the agent unable to write events on any install with a different prefix). It
17+
now inherits the session's tools, so it can always reach the journal MCP.
18+
19+
### Added
20+
- **`task-journal capture status`** — reports whether realtime capture is ON or
21+
OFF (the `.capture-disabled` marker) without changing it.
1122

1223
### Added
1324
- **In-session compaction distiller.** A new `task-journal-distiller` subagent

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ members = [
77
]
88

99
[workspace.package]
10-
version = "0.25.0"
10+
version = "0.25.1"
1111
edition = "2021"
1212
rust-version = "1.88"
1313
license = "MIT"

crates/tj-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ default = ["embed"]
2323
embed = ["tj-core/embed"]
2424

2525
[dependencies]
26-
tj-core = { package = "task-journal-core", version = "0.25.0", path = "../tj-core", default-features = false }
26+
tj-core = { package = "task-journal-core", version = "0.25.1", path = "../tj-core", default-features = false }
2727
anyhow = { workspace = true }
2828
clap = { workspace = true }
2929
tracing = { workspace = true }

crates/tj-cli/src/main.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ enum Commands {
657657
/// already-running session — without touching the read-only SessionStart
658658
/// resume. Use it to silence a stale auto-capture hook.
659659
Capture {
660-
/// "on" (remove the marker) or "off" (write it).
660+
/// "on" (remove the marker), "off" (write it), or "status" (report it).
661661
state: String,
662662
},
663663
/// Distil this project's recurring decisions and constraints into durable
@@ -1348,7 +1348,14 @@ fn main() -> Result<()> {
13481348
let _ = std::fs::remove_file(&marker);
13491349
println!("realtime capture ON.");
13501350
}
1351-
other => anyhow::bail!("expected `on` or `off`, got `{other}`"),
1351+
"status" => {
1352+
if marker.exists() {
1353+
println!("realtime capture OFF (.capture-disabled present).");
1354+
} else {
1355+
println!("realtime capture ON.");
1356+
}
1357+
}
1358+
other => anyhow::bail!("expected `on`, `off`, or `status`, got `{other}`"),
13521359
}
13531360
}
13541361
Commands::Consolidate {

crates/tj-cli/tests/cli.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5400,6 +5400,36 @@ fn consolidate_skips_without_api_key_and_spends_nothing() {
54005400
.stdout(contains("skipped"));
54015401
}
54025402

5403+
#[test]
5404+
fn capture_status_reports_current_state() {
5405+
// `capture status` reports ON/OFF without changing anything.
5406+
let dir = assert_fs::TempDir::new().unwrap();
5407+
5408+
// Fresh install → ON.
5409+
Command::cargo_bin("task-journal")
5410+
.unwrap()
5411+
.env("XDG_DATA_HOME", dir.path())
5412+
.args(["capture", "status"])
5413+
.assert()
5414+
.success()
5415+
.stdout(contains("ON"));
5416+
5417+
// After `off` → OFF, and status must not flip it back.
5418+
Command::cargo_bin("task-journal")
5419+
.unwrap()
5420+
.env("XDG_DATA_HOME", dir.path())
5421+
.args(["capture", "off"])
5422+
.assert()
5423+
.success();
5424+
Command::cargo_bin("task-journal")
5425+
.unwrap()
5426+
.env("XDG_DATA_HOME", dir.path())
5427+
.args(["capture", "status"])
5428+
.assert()
5429+
.success()
5430+
.stdout(contains("OFF"));
5431+
}
5432+
54035433
#[test]
54045434
fn capture_off_marker_no_ops_ingest_hook_capture() {
54055435
// `capture off` writes a marker that makes ingest-hook skip the capture

crates/tj-mcp/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ path = "src/main.rs"
1717

1818
[dependencies]
1919
# Lean: the MCP server doesn't embed yet, so it skips the model2vec backend.
20-
tj-core = { package = "task-journal-core", version = "0.25.0", path = "../tj-core", default-features = false }
20+
tj-core = { package = "task-journal-core", version = "0.25.1", path = "../tj-core", default-features = false }
2121
anyhow = { workspace = true }
2222
tokio = { workspace = true }
2323
tracing = { workspace = true }

plugin/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "task-journal",
3-
"version": "0.25.0",
3+
"version": "0.25.1",
44
"description": "Append-only journal of AI-coding task reasoning chains: hypotheses, decisions, rejections, evidence. Renders compact resume packs so an agent can pick up a 2-week-old task with full context.",
55
"author": {
66
"name": "Mher Shahinyan"

plugin/agents/task-journal-distiller.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ name: task-journal-distiller
33
description: Distills a conversation segment into task-journal memory. Use when a compaction just happened (or is about to), or when asked to "capture what we just did" — it reads the segment from the transcript, finds the decisions / rejections / findings that were NOT yet logged for the active task, and records them via the task-journal MCP. Runs in the background so it never blocks the main chat. Does NOT close tasks.
44
model: haiku
55
background: true
6-
tools: Read, Bash, Grep, Glob, mcp__plugin_task-journal_task-journal__task_search, mcp__plugin_task-journal_task-journal__task_pack, mcp__plugin_task-journal_task-journal__event_add
76
---
87

98
You are the **task-journal distiller**. A segment of a coding conversation is

0 commit comments

Comments
 (0)