refactor(verbose): rename output.log → subprocess.log; -vv keeps Info on stderr - #2913
Merged
Conversation
… on stderr output.log was misleadingly named: it's the uncapped raw stdout/stderr of every subprocess wt spawns (multi-MB possible), not wt's own output. Rename to subprocess.log so the filename matches the content. OUTPUT static, OutputMakeWriter, OutputFileFormat, build_output_layer rename to match. At -vv, the stderr layer now keeps the Info baseline instead of going fully dark — debug-level records (commands, [wt-trace], bounded subprocess preview) still route to trace.log only, so the terminal stays readable while -vv users see info-level status (hook output, template variables) the same as at -v. The "stderr stays readable / log::* pipeline" framing is dropped from docs since it implied -vv made stderr silent. Help text for -v rewritten as a single-line parenthetical describing both levels. faq.md gets a new "What does -v / -vv do?" section laying out the three levels. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
worktrunk-bot
approved these changes
May 26, 2026
Merged
max-sixty
added a commit
that referenced
this pull request
May 26, 2026
v0.54.0.
`cargo semver-checks` reports 3 breaking library API changes
(`shell_exec::set_output_log_available` removed,
`SUBPROCESS_TERMINAL_TARGET` removed, `Deprecations::{pre_start,
post_start}` removed) — none of them intentional API, but they force
minor pre-1.0.
Headline user-visible changes:
- New rate-limit pace segment in the Claude Code statusline (#2899,
#2911).
- `wt step prune` streams removals and skips unapproved hooks instead of
prompting mid-scan; default `--min-age` raised 1h → 1d (#2908, #2910,
#2886).
- `-vv` no longer floods stderr — debug routes to `trace.log`, Info
stays on stderr; raw subprocess sink renamed `output.log` →
`subprocess.log`; `RUST_LOG` honored at every verbosity level (#2892,
#2901, #2913).
- Data-safety fixes across merge / remove / prune lifecycle (#2870).
- Legacy shell-wrapper deprecation warning (#2880).
Full CHANGELOG entry in this PR.
max-sixty
added a commit
that referenced
this pull request
May 27, 2026
… rename (#2919) ## Motivation Follow-up cleanup surfaced after #2913 landed: 1. The `-vv` startup pointer listed `trace.log` and `subprocess.log` but never mentioned `diagnostic.md`, even though the gist-creation hint at exit points specifically at `diagnostic.md`. Users had no idea the bundle existed until exit. 2. The Jinja template field `output_log_path` and a test local `output_log` lagged behind the file rename in #2913 — values were correct but names disagreed. 3. While reshaping the pointer, the "Tracing to ..." verb read awkwardly ("Writing to ..." is more natural for "files are being written here"). ## Change - `src/logging.rs:490` — `announce_trace_destination` now prints the shared log directory once and lists all three files: ``` ○ Writing to ~/.../wt/logs/ — trace.log, subprocess.log, diagnostic.md ``` (When `subprocess.log` failed to open: `… — trace.log, diagnostic.md (subprocess.log unavailable)`.) `diagnostic.md` is named at startup even though it's written at exit — by the time a user reads the pointer and looks for files, all three are there. - `src/diagnostic.rs` — `output_log_path` Jinja field + Rust local renamed to `subprocess_log_path`. Dropped the trailing `— not inlined because it can be multi-MB` clause from the template (matches the principle from #2913's review: describe what's there, not what isn't). - `tests/integration_tests/diagnostic.rs:315` — local `output_log` → `subprocess_log`. - Diagnostic snapshot re-accepted for the template wording change. ## Tests 3875 tests pass + lints + doctests. Pointer wording change is covered by `test_vv_debug_pipeline_silent_on_stderr` and `test_vv_pointer_handles_split_init`, both updated to assert "Writing to". > _This was written by Claude Code on behalf of max-sixty_ --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
max-sixty
added a commit
that referenced
this pull request
May 27, 2026
…pointer (#2924) The 0.54.0 entry for #2913 quoted the `-vv` startup pointer as `Tracing to …`, but #2919 (also in 0.54.0) renamed it to `Writing to …`. Fix the entry to match the shipped behavior. Caught by worktrunk-bot on #2919. > _This was written by Claude Code on behalf of max-sixty_ Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
The
-v/-vvUX had three small issues that compounded:output.logis misnamed. It holds the uncapped raw stdout/stderr of every subprocesswtspawns — multi-MB possible (git log -p, patch-id pipelines, etc.). "output" reads as "stuffwtprinted" — the small thing — when it's actually the big thing. Easy to misread.-vvwent fully dark on stderr. PR refactor(log): route -vv log pipeline to trace.log instead of stderr #2892 moved the noisy debug pipeline to files at-vv; in the process, the stderr layer was disabled entirely. Users running-vvto see hook output (info-level, which-vshows on stderr) suddenly couldn't.-vhelp text was a 150-char one-liner packed into a parenthetical, and the surrounding docs leaned on a "stderr stays readable /log::*pipeline" framing that was Rust-jargon-flavored and implied stderr-quiet at-vv— which is no longer true after change Test CI fixes and improvements #2.Change
output.log→subprocess.log. Filename now matches content.OUTPUTstatic →SUBPROCESS, plus the relatedOutputMakeWriter/OutputFileFormat/build_output_layersymbol renames.-vvkeeps the Info baseline on stderr.build_stderr_layerno longer returnsNoneat-vv; debug-level records still route to file layers only, so the terminal stays readable while info-level status (hook output, template variables, theTracing to ...pointer) shows the same as at-v.-vhelp text rewritten to describe both levels cleanly without a wall of detail.docs/content/faq.mdgets a "What does -v / -vv do?" section with a three-level table.log::*jargon / "but not subprocess.log" negative framing from user-facing prose.Notes for review
log::info!site in the codebase iscommands/picker/mod.rs:389(a single picker error message), so making-vvshow info-level on stderr doesn't add meaningful noise.test_vv_log_pipeline_silent_on_stderris renamed totest_vv_debug_pipeline_silent_on_stderr— its assertions only check debug-level records stay out of stderr (they do); the old name implied the wholelog::*pipeline was silent, which was never quite true (directeprintln!always showed) and is less true now (info-level routes to stderr).git diff --stat -- 'tests/snapshots/*' 'docs/content/*' 'skills/worktrunk/reference/*' | tail -1separates them.output.log(#2201) stays accurate for its release; this rename gets a new line in the next release.Tests
3870 tests pass. Re-snapshotted all
test_help_*snapshots, threestep_aliassnapshots that quote the global help, and the diagnostic file format snapshot.