Repository navigation
fix(claude): keep statusline wrappers chaining trail helper (#756) - #760
Conversation
🌱 graft blast radius1 area changed → 4 areas can be affected. 11 dependent symbols, depth 2. flowchart TB
A0(("Host Integration<br/>6 symbols"))
A1(("CLI Entry Point<br/>2 symbols"))
A2(("Claude Initialization<br/>2 symbols"))
A3(("Installation Paths<br/>1 symbol"))
classDef reached fill:#D9EDF3,stroke:#3AA7C9,stroke-width:1.5px,color:#0E313C;
class A0,A1,A2,A3 reached;
Who knows this code — 2 people across 5 areas
Ownership is git history over each area's own files, weighted towards recent work (120-day half-life). Merge commits and bots are dropped, and you are dropped from your own PR. A name with no All 11 dependent symbols, grouped by areaHost Integration — 6 symbols in 6 files
CLI Entry Point — 2 symbols in 2 files
Claude Initialization — 2 symbols in 2 files
Installation Paths — 1 symbol in 1 file
Test signal per changed area — 1 –Reached = a node under a test path has a resolved edge into the changed symbol. It undercounts anything called indirectly — through a CLI, a spawned process or a dynamic import — so read a low ratio as “look here”, never as a coverage gate.
19 test suites also reference this code19 symbols, kept out of the diagram and the table so they cannot crowd out the areas a reviewer has to look at.
Open the interactive graph → — click an area to see its dependent symbols at file:line. |
Closes #756
What changed
isGraftStatuslineused a substring regex (/(graft|trail)-statusline\.cjs|\.trail\/statusline\.cjs/) to check whether a settings entry belongs to Trail/Graft. When a user created a custom wrapper or chained statusline command piping to or calling.trail/statusline.cjs,applyStatuslinematched the substring, treated the command as Trail's own, and replaced it on re-merge.Tightened
STATUSLINE_HELPERto match standalone node invocations of the shim (including legacy shapes andsh -cwrappers) from start to finish, leaving command pipelines and wrapper scripts preserved as foreign status lines.Verification
test/claude-settings-merge.test.tsfor chained wrapper commands.node --import tsx --test test/claude-settings-merge.test.ts(all 20 tests pass).