v1.5.5
Hot State Rendering Health
Replace blunt .slice(0, maxRenderedChars) prompt truncation with a section-aware greedy line accumulator that fits whole lines and suppresses empty sections.
Good rendering is selective too. If a section doesn't fit, omit it — don't cut it in half.
What Changed
- Whole-line rendering: hot session state prompt no longer truncates mid-line. A greedy accumulator fits complete lines and stops when the next line would exceed the 700-char budget.
- Header-only sections suppressed: a section heading is only rendered if at least one entry fits alongside it.
- Render accounting:
accountHotSessionStateRender()returns prompt, omitted items, and char budget for future v2 diagnostics. - Two-layer omission model: section caps (
section_cap) trim per-type overflow first, then char budget (char_budget) trims anything that doesn't fit. - Backward-compatible wrapper:
renderHotSessionState()delegates to the accounting function.
Docs Fixes
- Active-file ranking formula corrected in
docs/configuration.md: now matches actual implementation —ACTION_WEIGHT[action] + count * 3with weights edit 50, write 45, grep 30, read 20. - Injection order clarified in README: system-prompt positions depend on whether workspace memory state is available.
Not Included Yet
- Evidence events for omitted items deferred to v2, pending a
memory-diagconsumer.
Validation
npm run typecheck— TYPECHECK_PASSnpm test— 356 tests passing