Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.26.0] - 2026-06-14
## [0.26.1] - 2026-06-14

### Fixed
- **No more Windows stack overflows from the CLI dispatch.** The command
dispatch sits near Windows' 1 MiB main-thread stack limit (a single added
branch overflowed it). `main` now runs the real work on a 16 MiB worker
thread, so the dispatch can grow safely and a `STATUS_STACK_OVERFLOW` at
startup can't recur. Exit codes and panics still propagate.

### Added
- **`/clear` no longer drops the last segment.** A new `SessionEnd` hook (wired
Expand Down
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ members = [
]

[workspace.package]
version = "0.26.0"
version = "0.26.1"
edition = "2021"
rust-version = "1.88"
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion crates/tj-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ default = ["embed"]
embed = ["tj-core/embed"]

[dependencies]
tj-core = { package = "task-journal-core", version = "0.26.0", path = "../tj-core", default-features = false }
tj-core = { package = "task-journal-core", version = "0.26.1", path = "../tj-core", default-features = false }
anyhow = { workspace = true }
clap = { workspace = true }
tracing = { workspace = true }
Expand Down
18 changes: 18 additions & 0 deletions crates/tj-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1076,7 +1076,25 @@ enum PendingCmd {

const PENDING_MAX_ATTEMPTS: u32 = 3;

/// Windows' default main-thread stack is 1 MiB and our command dispatch in
/// [`real_main`] sits near that limit — a single added branch overflowed it
/// (STATUS_STACK_OVERFLOW on every command; see `run_session_end_catchup`).
/// Run the real work on a thread with a generous stack so the dispatch can
/// grow safely and this can't recur. Errors and the panic case propagate so
/// the process still exits non-zero on failure.
fn main() -> Result<()> {
let handle = std::thread::Builder::new()
.name("tj-main".into())
.stack_size(16 * 1024 * 1024)
.spawn(real_main)
.context("spawn main worker thread")?;
match handle.join() {
Ok(result) => result,
Err(_) => anyhow::bail!("main worker thread panicked"),
}
}

fn real_main() -> Result<()> {
let cli = Cli::parse();
match cli.command {
Commands::Create {
Expand Down
2 changes: 1 addition & 1 deletion crates/tj-mcp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ path = "src/main.rs"

[dependencies]
# Lean: the MCP server doesn't embed yet, so it skips the model2vec backend.
tj-core = { package = "task-journal-core", version = "0.26.0", path = "../tj-core", default-features = false }
tj-core = { package = "task-journal-core", version = "0.26.1", path = "../tj-core", default-features = false }
anyhow = { workspace = true }
tokio = { workspace = true }
tracing = { workspace = true }
Expand Down
2 changes: 1 addition & 1 deletion plugin/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "task-journal",
"version": "0.26.0",
"version": "0.26.1",
"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.",
"author": {
"name": "Mher Shahinyan"
Expand Down
Loading