GLM 5.2 inserts an extra `.` between the line number/range and the
trailing `:` (e.g. `SWAP 2.=3.:`, `INS.POST 2.:`, `DEL 2.=3.`).
The parser failed with "payload line has no preceding hunk header"
and could not recover. Add a `skipStrayDot` helper that skips a
spurious `.` before the optional colon or end-of-line, wired into
`consumeOptionalColon` (covers SWAP, INS.*, SWAP.BLK, INS.BLK.POST)
and the DEL / DEL.BLK branches.
- Redesigned the Todo HUD as a connector tree with fixed-budget stage previews.
- Anchored status and HUD containers to prevent redundant UI elements in terminal scrollback.
- Implemented tree-based rendering for project phases and tasks while removing dynamic border rules.
- Upgraded `sherpa-onnx` and related packages to support current infrastructure.
- Added `rewrite-changelog.ts` and `fix-changelogs.ts` utilities to automate the consolidation of release notes using LLM-assisted processing.
- Updated multiple internal changelog files by consolidating redundant entries and improving phrasing for readability.
- Implemented `previewLine` utility in `coding-agent` to prevent visual spillover in status rows by managing text truncation and whitespace.
- Updated `package.json` with new workflow scripts for managing package-level change histories and documentation indexes.
- Removed the unused `delete` method from `InMemoryFilesystem`.
- Updated `relocate` to create new snapshot objects instead of mutating shared references.
- Simplified the merging logic in `relocate` to handle history concatenation more cleanly.
- Implemented file deletion (`REM`) and movement (`MV`) operations within the hashline grammar and parser.
- Added filesystem support for executing delete and move commands while maintaining snapshot history migration.
- Integrated file operation detection and parsing logic into the coding agent and patcher components.
- Added comprehensive integration tests and documentation for the new file-level operation syntax.
- Integrated progress-lexicon analysis to identify and warn on low-information lexical stalls during reasoning.
- Enhanced loop stream processing to strip summarizer titles before performing analytical checks.
- Introduced CONCRETE_ANCHOR pattern and windowed state management to improve detection of novel reasoning references.
- Refactored the test suite to use a standardized feed function for chunked streams and added coverage for specific stall scenarios.
- Added tree-sitter markdown support to resolve headings into full sections in `pi-ast`.
- Enabled block operations (`SWAP.BLK`, `DEL.BLK`, `INS.BLK.POST`) on markdown headings so they encompass the entire section, including nested deeper headings.
- Updated system prompt to guide agents in using structured markdown heading edits for plans.
- Fixed `plan-mode-guard` to correctly resolve local protocol options for subagents.
- Automatically rebind edits to the correct file when an authored path does not exist but the filename and snapshot tag uniquely match a file read earlier in the session.
- Prevent path recovery for paths that would escalate write privileges, ensuring compatibility with read-only internal URL targets.
- Surface warning messages to the model and user upon successful path recovery to encourage correct future path usage.
- Improved delimiter-balance logic to correctly identify and spare partially deleted structural closers.
- Prevented premature deletion of structural closers by accounting for existing code below the modification range.
- Added support for tracking inserted lines to improve boundary repair accuracy across multi-section updates.
- Refined the suffix-closer identification to skip lines restated by the new payload and account for projected closers appearing after the patch.
- Updated logic to verify if the patch prefix already satisfies missing structural openers before sparing deleted suffix lines.
- Fixed a bug where replacement payloads that restated existing suffix tails caused erroneous retention of structural closers.
The dropped-closer repair fired per replacement group, so a `SWAP` that
deleted a structural closer kept it even when another hunk had already
removed the matching opener (a deliberate wrapper removal) — leaving a
stray `}` and corrupting valid multi-hunk edits.
Defer the repair to a second pass that sums each hunk's delimiter delta
per contiguous hunk (so backtick/block-comment state never bleeds across
non-adjacent hunks), suppresses it when the matching opener was deleted or
replaced just above the range, and consumes the residual per repair so a
genuine missing closer elsewhere in the patch still fires.
Fixes#3142