Skip to content

Commit 248659a

Browse files
Shahinyanmclaude
andcommitted
chore: fmt + release 0.28.3
Format the unformatted db.rs from b39c261 (which red-lit CI on main) and cut 0.28.3 so the fresh-worktree ENOENT fix (rebuild_state/ingest_new_events treat a missing events log as zero events) actually ships alongside the 0.28.2 from_path fix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent b39c261 commit 248659a

5 files changed

Lines changed: 29 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.28.3] - 2026-06-18
11+
12+
### Fixed
13+
- **`task_create` ENOENT on a missing events log.** `rebuild_state` /
14+
`ingest_new_events` opened the project's events JSONL with no guard, so the
15+
first journal touch in a brand-new project (e.g. a fresh git worktree)
16+
crashed with "No such file or directory". A missing log now reads as zero
17+
events (`Ok(0)` on `NotFound`). This completes the fresh-worktree fix started
18+
in 0.28.2 (`project_hash::from_path`).
19+
1020
## [0.28.2] - 2026-06-18
1121

1222
### Fixed

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.28.2"
10+
version = "0.28.3"
1111
edition = "2021"
1212
rust-version = "1.88"
1313
license = "MIT"

crates/tj-core/src/db.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,9 @@ pub fn rebuild_state(
335335
// to read, which is not an error (this is what crashed task_create the
336336
// first time the journal was touched in a new worktree).
337337
Err(e) if e.kind() == std::io::ErrorKind::NotFound => return Ok(0),
338-
Err(e) => return Err(anyhow::Error::new(e).context(format!("open {:?}", jsonl_path.as_ref()))),
338+
Err(e) => {
339+
return Err(anyhow::Error::new(e).context(format!("open {:?}", jsonl_path.as_ref())))
340+
}
339341
};
340342
let reader = std::io::BufReader::new(f);
341343

@@ -803,7 +805,9 @@ pub fn ingest_new_events(
803805
// to read, which is not an error (this is what crashed task_create the
804806
// first time the journal was touched in a new worktree).
805807
Err(e) if e.kind() == std::io::ErrorKind::NotFound => return Ok(0),
806-
Err(e) => return Err(anyhow::Error::new(e).context(format!("open {:?}", jsonl_path.as_ref()))),
808+
Err(e) => {
809+
return Err(anyhow::Error::new(e).context(format!("open {:?}", jsonl_path.as_ref())))
810+
}
807811
};
808812
let reader = std::io::BufReader::new(f);
809813

@@ -2083,8 +2087,14 @@ mod tests {
20832087
let d = TempDir::new().unwrap();
20842088
let conn = open(d.path().join("s.sqlite")).unwrap();
20852089
let missing = d.path().join("does-not-exist.jsonl");
2086-
assert_eq!(rebuild_state(&conn, &missing, "deadbeefdeadbeef").unwrap(), 0);
2087-
assert_eq!(ingest_new_events(&conn, &missing, "deadbeefdeadbeef").unwrap(), 0);
2090+
assert_eq!(
2091+
rebuild_state(&conn, &missing, "deadbeefdeadbeef").unwrap(),
2092+
0
2093+
);
2094+
assert_eq!(
2095+
ingest_new_events(&conn, &missing, "deadbeefdeadbeef").unwrap(),
2096+
0
2097+
);
20882098
}
20892099

20902100
#[test]

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.28.2",
3+
"version": "0.28.3",
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"

0 commit comments

Comments
 (0)