killeros 2.1.30 → 2.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,553 +1,558 @@
1
- # Changelog
2
-
3
- All notable changes to KillerOS are documented here.
4
-
5
- ## [Unreleased]
6
-
7
- ## [2.1.30] - 2026-09-21
8
-
9
- ### Added
10
-
11
- - Added measured assistant output-token throughput to settled worked-for receipts, excluding first-token latency, tool execution, and gaps between model calls.
12
-
13
- ### Fixed
14
-
15
- - Prevented competing stale-settings-lock recovery attempts from removing a new writer's lock and losing settings updates.
16
- - Recorded change receipts in repositories using Git's reftable reference backend while still rejecting receipts when `HEAD` moves during a response.
17
- - Serialized global `killeros.json` updates across Pi processes so concurrent automatic-compaction and notification changes no longer discard successful writes or fail during Windows file replacement.
18
- - Accepted `/handoff` summaries with `## ` lines inside fenced code blocks instead of rejecting the complete summary for an extra section.
19
- - Changed the footer's `ctx` percentage to show context remaining, matching `/auto-compact` threshold direction while preserving urgency colors and the `/compact` hint.
20
- - Reported `/goal` objectives with unsupported terminal content separately from the 4,000-character limit.
21
-
22
- ## [2.1.29] - 2026-09-19
23
-
24
- ### Added
25
-
26
- - Added `/auto-compact [status|on|off|<percent>]` to inspect and update the global automatic compaction preference without restarting Pi.
27
-
28
- ### Fixed
29
-
30
- - Kept normalized CRLF checkouts clean in passive Git scans while respecting text attributes and binary files without running filters.
31
- - Detected same-size tracked-file rewrites even when tools restore the indexed modification time.
32
- - Resolved change-receipt repository ownership at the start of every response so nested or replaced repositories cannot reuse a stale monitor.
33
- - Kept the 100% automatic-compaction threshold active for later user requests and goal turns without compacting the generated ordinary continuation.
34
- - Prevented automatic footer and change-receipt scans from starting clean or process filters, including filters added and removed while a scan is running.
35
-
36
- ## [2.1.28] - 2026-09-15
37
-
38
- ### Changed
39
-
40
- - Simplified goal presentation without changing goal behavior: transcript history shows one iconless event row per lifecycle change (`Goal started`, `Goal replaced`, `Goal paused`, `Goal resumed`, `Goal cleared`), progress and blocker outcomes render once through the goal tool result, the footer shows compact `/goal active · 1/20 · 10s` status, the `/goal` panel leads with status then objective then `Pause goal` / `Resume goal` / `Clear goal` actions, and duplicate TUI success notifications are suppressed while RPC confirmations remain. Active-goal labels use muted teal `#6FAEB2` through the packaged theme's extension-label role.
41
- - Removed the legacy `✻` marker from version-1 `Worked for …` transcript rows; stored entries are unchanged and remain readable.
42
-
43
- ### Added
44
-
45
- - Appended the selected model ID as a gray `· <model-id>` suffix to every TUI activity working message, retained for the full request cycle and falling back to `unknown model` when no usable ID exists.
46
-
47
- ### Fixed
48
-
49
- - Kept resumed blocked goals and goals paused by truncated provider errors readable after reload.
50
- - Made goal continuation explicit: each settled turn now needs one accepted `continue`, `complete`, or blocker decision. Missing decisions, repeated continuation reports, unavailable goal tools, and runtime failures pause without scheduling another turn; compaction recovery resumes the same logical turn.
51
- - Preserved accepted goal decisions across automatic compaction: a `continue` or blocker audit recorded before compaction now authorizes exactly one next turn instead of being discarded and re-decided. Duplicate compaction and settlement callbacks cannot start a second turn.
52
- - Scoped goal pause reasons to the current paused state: resume and manual pause no longer surface an earlier automatic reason, terminal states keep no pause reason, and contradictory persisted states fail closed instead of starting automatic work.
53
-
54
- ## [2.1.27] - 2026-09-12
55
-
56
- ### Added
57
-
58
- - Added `/codex-fast status` to report whether Codex fast mode is enabled without changing it.
59
-
60
- ### Fixed
61
-
62
- - Restricted automatic startup, footer, and change-receipt Git scans to trusted projects, preventing repository executables and configuration races from launching commands before trust is granted.
63
- - Resolved passive Git executable discovery without starting a locator or repository executable. Footer and change-receipt scans now use an absolute Git path outside the inspected repository and report unavailable when none exists.
64
- - Closed the filter-configuration race in automatic Git inspection. Footer and change-receipt scans now run Git without `PATH` resolution, re-check effective filters after status, and skip results the scan cannot produce without an extension process or remote fetch. Change receipts no longer fetch missing objects from partial-clone remotes.
65
- - Stopped attaching single-file verification to goals that name several files. Multi-file goals now complete through the model-reported path.
66
- - Shared one passive Git status policy between footer telemetry and change receipts. Both scans now disable filesystem monitors and clean/process filters, and skip status when filter discovery is unavailable or unsafe.
67
- - Recorded focused Node test runs in response receipts without persisting their test paths.
68
- - Kept passive footer Git status from running configured filters, bounded loose and packed receipt blobs, and stopped stale `/handoff` summaries from replacing sessions with new work.
69
-
70
- ### Removed
71
-
72
- - Removed `/init` and its `killeros_init_*` tools, prompts, workflow APIs, runtime state, and lifecycle handlers. Upgrading leaves existing `AGENTS.md` and recovery files untouched, and commands from other providers named `/init` pass through KillerOS unhandled.
73
-
74
- ## [2.1.26] - 2026-09-08
75
-
76
- ### Fixed
77
-
78
- - Restored Pi lifecycle loading, blocked footer Git status from invoking configured filesystem monitors, and kept replaced `/init` guidance at a disclosed recovery path so late writes remain recoverable.
79
- - Preserved Unicode blocker evidence when restoring goals, rejected cancelled goal updates before completion is saved, and read untracked symlink destinations instead of their targets in change receipts.
80
- - Kept `/init` isolated from proactive compaction, refreshed Git filter safeguards for each receipt scan, and preserved compaction recovery after cancelled session replacements.
81
-
82
- ## [2.1.25] - 2026-09-06
83
-
84
- ### Fixed
85
-
86
- - Left-aligned settled `✓ Done` receipt lines so every row shares the assistant text edge.
87
-
88
- ### Changed
89
-
90
- - Replaced the boxed startup card with a three-row masthead: coral fade mark, versions, model and reasoning level, directory and branch, and an italic tip.
91
- - Swapped the working indicator to the 10-frame Braille orbit at 80 ms per frame.
92
- - Restored the leading `❯` prompt marker in white in the chat editor.
93
- - Rendered footer model names and the `fast` badge in non-bold white.
94
- - Showed the current Pi version beside the KillerOS version in the startup header.
95
-
96
- ### Removed
97
-
98
- - Removed the `/variants` reasoning-level command in favor of Pi's native `/thinking` selector.
99
-
100
- ## [2.1.24] - 2026-09-05
101
-
102
- ### Added
103
-
104
- - Appended the settled model display name to version 4 worked-for receipts for single-model TUI runs.
105
-
106
- ### Changed
107
-
108
- - Rendered settled `Done` receipts without the `✓` marker, keeping `■ Stopped`, `× Failed`, and version 1 history unchanged.
109
- - Raised the locked Pi development packages and minimum supported Pi peer version to 0.85.0, including `@earendil-works/pi-server`.
110
-
111
- ## [2.1.23] - 2026-09-04
112
-
113
- ### Changed
114
-
115
- - Simplified `/goal` to five forms with proof-by-prose and silent file proof, removing configured completion checks.
116
-
117
- ### Fixed
118
-
119
- - Kept the automatic 20-turn goal pause silent as documented.
120
- - Stripped sentence punctuation from unquoted inferred goal paths and picked token units after rounding so 999.6 shows as 1k and 999999 as 1M.
121
- - Increased change-receipt Git timeouts to five seconds and stopped timeout failures from showing warning notifications.
122
-
123
- ## [2.1.22] - 2026-09-03
124
-
125
- ### Added
126
-
127
- - Added named goal completion checks, per-goal turn limits, and branch-aware `/goal history`.
128
- - Added per-response TUI receipts for net Git changes and recognized verification results.
129
-
130
- ### Changed
131
-
132
- - Defaulted new goals to 20 turns, added safe `/goal checks` discovery, preserved blocker evidence in history, and separated pure goal parsing and history formatting.
133
- - Refreshed footer Git telemetry from throttled filesystem changes instead of every completed turn, while retaining branch and 30-second fallback scans.
134
-
135
- ### Fixed
136
-
137
- - Prevented Linux CI test workers from waiting indefinitely on extension-owned handles after their tests finish.
138
- - Made change receipts use a final repository scan, disable current Git filters, report line-ending-only edits, and recheck file goals after completion commands.
139
- - Released automatic-compaction request state when Pi rejects an ordinary continuation before accepting its hidden message.
140
- - Resumed ordinary tasks exactly once after automatic compaction and interrupted-turn settlement, keeping the hidden continuation pending until Pi accepts it.
141
- - Allowed Git footer scans up to five seconds, contained rejected refreshes, and kept the last successful file-change status after transient failures.
142
- - Recorded only exact check commands in response receipts, replaced verification claims with observed-check copy, and reserved `/goal` command words so malformed controls cannot start objectives.
143
- - Rejected unsafe persisted goal counters, contained file-verification inference errors, and prevented stale completion checks from completing a newly restored goal.
144
- - Kept lifecycle hooks stable for corrupt payload serialization, `NaN` direct timeouts, abort races, stream errors, and synchronous process completion without tightening custom process adapter contracts.
145
-
146
- ## [2.0.22] - 2026-08-30
147
-
148
- ### Changed
149
-
150
- - Replaced the footer's changed-file total with a colored modified, added, and deleted breakdown.
151
-
152
- ### Fixed
153
-
154
- - Preserved the existing `createGitStatusRefresh` changed-file count callback contract.
155
- - Rejected linked `AGENTS.local.md` files before reading personal instructions.
156
- - Confirmed Windows hook process-tree cleanup before settling cancellations and timeouts, even when `taskkill` is absent from `PATH`.
157
-
158
- ## [2.0.21] - 2026-08-29
159
-
160
- ### Changed
161
-
162
- - Bounded goal verification and Pi compatibility, reduced Git status polling, reserved handoff context, and separated goal state and question UI logic.
163
- - Blocked moderate dependency advisories in CI and updated TypeBox within the supported 1.x line.
164
- - Preserved seconds in footer and goal elapsed times after one minute.
165
- - Added a muted top border to the prompt editor.
166
- - Colored the footer workspace path `#F0F89A`.
167
- - Added a live changed-file count beside the Git branch when the worktree is dirty.
168
- - Synced `dev` back to successful `main` releases after publishing.
169
-
170
- ### Fixed
171
-
172
- - Kept likely secrets out of `/init`, restricted personal-instruction imports to Pi's agent directory, and replaced injectable handoff framing with validated JSON.
173
- - Hardened releases against stale CI runs, mismatched existing npm artifacts, and tag conflicts discovered after publication.
174
-
175
- ## [2.0.20] - 2026-08-25
176
-
177
- ### Changed
178
-
179
- - Added a typescript-eslint type-checked lint gate (`npm run lint`) alongside `tsc --noEmit`, and cleaned up the dead imports and untyped boundaries it surfaced.
180
-
181
- ### Fixed
182
-
183
- - Treated Pi's exact `Nothing to compact (session too small)` rejection as an expected automatic-compaction skip: no failure notification, silent retry on the next eligible turn, and active goals resume through a dedicated skip recovery instead of pausing for `/goal resume`.
184
- - Made `/handoff` resilient to an unreadable `killeros.json`: explicit `KillerosOptions` budgets bypass the file, while other summaries fall back to the default budget with a visible warning.
185
- - Named `/handoff` output truncation instead of reporting "did not finish", raised the default summary budget to 8192 tokens for reasoning models, and made the budget configurable through `KillerosOptions` or the `killeros.json` `handoffMaxTokens` key.
186
-
187
- ## [2.0.19] - 2026-08-24
188
-
189
- ### Changed
190
-
191
- - Hardened JSON and caught-error boundaries, made goal and `/init` target states constructive, added exhaustive outcome handling, and replaced unsafe test doubles with checked adapters.
192
- - Deprecated positional `executeHook` arguments in favor of object options; the compatibility adapter will be removed in the next major release.
193
-
194
- ### Fixed
195
-
196
- - Paused active goals during automatic compaction and resumed the exact paused revision once after compaction and turn settlement succeed.
197
- - Restored active goals saved by v2.0.18 shutdown checkpoints that omitted their stopped clock timestamp.
198
-
199
- ## [2.0.18] - 2026-08-24
200
-
201
- ### Added
202
-
203
- - Added a real Pi SDK lifecycle test for package activation, shutdown-before-reload, fresh registration, and stale-context rejection.
204
-
205
- ### Changed
206
-
207
- - Raised the locked Pi development packages and minimum supported Pi peer version to 0.84.3.
208
- - Made Pi lifecycle compatibility coverage install the generated npm tarball offline before activation and reload.
209
-
210
- ### Fixed
211
-
212
- - Preserved provider-managed OAuth routing during `/handoff`, fixing GitHub Copilot `421 Misdirected Request` failures.
213
- - Repaired incompatible process-global `/codex-fast` state during extension updates while preserving a valid saved enabled flag.
214
- - Stopped lifecycle-hook failures from echoing configured shell commands, which could expose inline credentials in Pi diagnostics.
215
- - Kept lifecycle-hook configuration paths terminal-safe and single-line in warnings.
216
- - Limited trusted lifecycle-hook configuration to a 64 KiB regular, non-linked file in the project's real `.pi` directory and verified the opened file identity before parsing it.
217
- - Sanitized dynamic slash-command descriptions and omitted unsafe command names from KillerOS autocomplete.
218
- - Rejected explicit file goals when their starting filesystem baseline cannot be inspected instead of treating every error as a missing file.
219
- - Kept custom model and provider labels single-line and terminal-safe in the shell header and footer.
220
- - Sanitized model-reported `/init` policy conflicts before returning, storing, or notifying with them.
221
- - Kept session-storage failure details terminal-safe when an explicit goal pause falls back to in-memory state.
222
- - Stripped terminal commands and unsafe controls from saved goal objectives before clear confirmations.
223
- - Kept rejected `/variants` arguments terminal-safe and single-line in error notifications.
224
- - Kept provider and model identifiers terminal-safe and single-line throughout `/variants`.
225
- - Flushed partial UTF-8 lifecycle-hook output on process close instead of silently dropping final diagnostic bytes.
226
- - Contained synchronous lifecycle-hook process-start failures inside normal hook failure handling.
227
- - Kept header and footer paths single-line and terminal-safe for unusual cwd or home-directory names.
228
- - Sanitized manual-compaction abort diagnostics before saving recovery-eligible goal state.
229
- - Stripped terminal commands and unsafe controls from saved goal text before showing status panels or notifications.
230
- - Sanitized provider and storage diagnostics before persisting or announcing an automatically paused goal.
231
- - Routed handoff generation and session-replacement failures through the shared terminal-safe error reporter.
232
- - Stripped terminal commands and unsafe control bytes from caught errors before showing KillerOS failure notifications.
233
- - Stripped terminal commands and control bytes from cwd and session names before emitting the KillerOS terminal title.
234
- - Removed filesystem source paths from personal-instruction prompt wrappers so unusual project paths cannot alter prompt structure.
235
- - Stripped terminal commands and unsafe control bytes from lifecycle hook failure notifications and tool block reasons.
236
-
237
- ## [2.0.17] - 2026-08-23
238
-
239
- ### Added
240
-
241
- - Added per-task token usage to settled TUI receipts for ordinary requests and individual goal turns.
242
-
243
- ### Changed
244
-
245
- - Limited push CI to `main` and `dev`; feature branches run through pull request CI without duplicate push runs.
246
- - Removed obsolete Pi tool API casts, shared caught-error formatting, and expanded the non-repeating startup tip and editor suggestion banks.
247
- - Clarified that the README's pinned Git tag is an example rather than the current package version.
248
-
249
- ### Fixed
250
-
251
- - Limited retired-feature repository checks to tracked and non-ignored files so ignored private notes cannot fail the suite.
252
-
253
- ## [2.0.16] - 2026-08-23
254
-
255
- ### Fixed
256
-
257
- - Kept `/handoff` input inside a cancellable TUI loader so buffered editor text cannot cross the session boundary.
258
- - Prevented a cancelled handoff from starting provider completion when authentication resolves late.
259
- - Made repository contract tests validate README facts without depending on discarded prose.
260
-
261
- ## [2.0.15] - 2026-08-23
262
-
263
- ### Added
264
-
265
- - Added `/handoff [focus]` for fresh linked sessions with visible continuation context.
266
-
267
- ### Fixed
268
-
269
- - Compared pre-existing goal deliverables by content instead of file size and modification time.
270
- - Made `/init` evidence directory listing follow case-insensitive Windows path semantics.
271
- - Kept the interactive question component within a zero-row terminal height.
272
-
273
- ## [2.0.14] - 2026-08-22
274
-
275
- ### Fixed
276
-
277
- - Prevented direct tag pushes from publishing commits that have not passed CI on `main`.
278
- - Kept oversized hook payloads valid JSON and marked their bounded preview as truncated.
279
- - Stripped terminal escape sequences and unsafe controls from model-controlled question and goal text.
280
- - Aligned hook timeout validation and execution on the documented five-minute maximum.
281
- - Required file-backed goals to create or change their deliverable after the goal starts, including after session restore.
282
- - Removed a CI test dependency on an intentionally untracked internal document.
283
-
284
- ## [2.0.13] - 2026-08-21
285
-
286
- ### Added
287
-
288
- - Added the process-local bare `/codex-fast` toggle for Codex priority requests, with a bold inline `Fast` footer indicator while an active Codex model uses it.
289
-
290
- ### Changed
291
-
292
- - Converted all tracked test suites from JavaScript to strict TypeScript while keeping Node's built-in test runner.
293
-
294
- ## [2.0.12] - 2026-08-18
295
-
296
- ### Fixed
297
-
298
- - Resumed active goals exactly once after Pi reports automatic compaction complete.
299
-
300
- ## [2.0.11] - 2026-08-17
301
-
302
- ### Fixed
303
-
304
- - Made automated npm publication and GitHub release recovery idempotent, aligned the documented and tested Pi floor, and made machine-identifier casing locale-independent.
305
- - Extended strict type checking to release scripts and typed test suites, while correctly identifying JavaScript-only suites as `.js`.
306
-
307
- ### Removed
308
-
309
- - Removed the decision-gated workflow subsystem, its skill-specific policy, public extension interface, and YAML dependency. Skills now remain instruction-only.
310
-
311
- ## [2.0.10] - 2026-08-16
312
-
313
- ### Added
314
-
315
- - Added proactive turn-boundary compaction with Pi-owned settings and safe continuation for ordinary prompts and active goals.
316
- - Added reusable multi-activation decision-gated workflow registrations while preserving exact-match behavior.
317
-
318
- ## [2.0.9] - 2026-08-15
319
-
320
- ### Added
321
-
322
- - Highlighted exact, currently registered slash commands in the TUI editor with the theme's shared command-blue link role while preserving autocomplete boundaries and ANSI cursor styling.
323
-
324
- ## [2.0.8] - 2026-08-15
325
-
326
- ### Added
327
-
328
- - Added a reusable, opt-in pre-turn gate for explicitly activated decision-gated workflows. It opens the shared structured question UI before skill expansion, keeps the selected policy active, blocks unknown and disallowed tools, and clears safely across lifecycle boundaries.
329
- - Added a disposable decision-gated workflow fixture and focused coverage for activation ordering, pending safety, policy allowlists, lifecycle cleanup, adapter reuse, and Pi 0.84.2 compatibility.
330
-
331
- ### Removed
332
-
333
- - Removed KillerOS's always-on concise response policy and provider-specific concise defaults; Pi now owns response-style guidance.
334
-
335
- ### Changed
336
-
337
- - Raised the locked direct Pi development packages to 0.84.2 while keeping the peer dependency floor at 0.84.1.
338
-
339
- ## [2.0.7] - 2026-08-13
340
-
341
- ### Changed
342
-
343
- - Raised the supported and locked Pi baseline from 0.82.1 to the current matched 0.84.1 AI, coding-agent, and TUI packages.
344
- - Added a compact two-deck footer beneath the prompt and removed the work-trail widget.
345
- - Replaced the framed prompt and shuffled activity verbs with a focus-aware single-arrow editor and event-derived working copy.
346
- - Made settled timing entries report `Done`, `Stopped`, or `Failed` while keeping existing `Worked for` history readable.
347
-
348
- ### Fixed
349
-
350
- - Separated response output from the prompt editor while keeping footer telemetry close beneath a quiet muted divider.
351
- - Kept `/variants` within the active terminal height, preserved the focused reasoning level across resizes, and initially focused the current level.
352
- - Rendered `/variants` controls from the same Pi keybinding manager that handles input, including installations with separate package module instances.
353
- - Rendered active, paused, and blocked `/goal` status text consistently in the footer's far-right slot.
354
- - Kept the private goal-update tool inactive outside active `/goal` runs and rendered its real execution errors instead of malformed blocker-audit fields.
355
- - Verified exact persisted paths for clearly declared file-deliverable goals before completion, while preserving model-reported completion for general objectives.
356
- - Accepted explicit `1`/`1` bounds for single-select questions and applied the same bounds validation before rendering and execution.
357
- - Prevented reload and branch navigation from preserving or reconstructing stale manual-compaction recovery eligibility; only Pi's live event in the current session can resume the interrupted goal safely.
358
- - Restricted goal deliverable verification to explicit destination phrases so source and reference paths cannot be reported as completed output.
359
- - Kept saved goals fully inactive in print and JSON modes, including the private update tool and shutdown checkpoints.
360
- - Rejected concurrent `/init` starts during preflight, cancelled pending preflight work on shutdown, and settled active `/init` command handlers when their session closes.
361
-
362
- ## [2.0.6] - 2026-08-11
363
-
364
- ### Added
365
-
366
- - Added a durable `✻ Worked for …` transcript line below each settled TUI response, including stopped and failed runs.
367
- - Added optional multi-select to the `question` tool with bounded checked options, one additive custom answer, a dedicated multi-word filter editor, and compact expandable results while preserving single-select defaults.
368
-
369
- ### Changed
370
-
371
- - Automated GitHub releases after successful `main` CI version bumps, with package, lockfile, changelog, tag, and verified-commit checks plus a manual tag recovery path.
372
-
373
- ### Fixed
374
-
375
- - Entered automatic `/goal` continuations into durable goal-turn state before dispatch so turn numbers advance and blocker audits work on Pi custom-message turns.
376
-
377
- ## [2.0.5] - 2026-08-11
378
-
379
- ### Added
380
-
381
- - Added shuffled session-stable suggestions to the empty three-line prompt editor.
382
-
383
- ### Fixed
384
-
385
- - Preserved complete UTF-8 characters in truncated `/init` evidence and chunked lifecycle-hook output, and kept filesystem-root paths visible in notification titles.
386
- - Kept the startup-tip shuffle deck across session rebinds so every tip appears before the bank repeats.
387
- - Rejected matchers on `agent_settled` lifecycle hooks instead of silently bypassing their tool-name guard.
388
- - Made the goal update status schema compatible with Google models while preserving strict completion and blocking values.
389
- - Kept multiline custom-answer drafts within tiny terminal row limits by rendering a clipped single-line preview.
390
- - Preserved existing spaces and tabs after the cursor when applying slash-command autocomplete.
391
- - Made `/init` abort safely when Git ignore inspection fails or returns untrusted output, preventing ignored files from entering model evidence.
392
- - Wrapped long interactive questions to the current terminal width while keeping the question UI within the terminal height.
393
- - Made `/goal pause` and `/goal clear` save terminal state before immediately stopping active goal work.
394
- - Kept failed goal edits and replacements visible and fail-closed without restarting a stale objective.
395
- - Required one durable blocker key on three consecutive goal turns before a goal can be marked blocked.
396
-
397
- ## [2.0.4] - 2026-08-10
398
-
399
- ### Changed
400
-
401
- - Rebuilt `/init` around a packaged four-section guideline-synthesis workflow that preserves compatible root policy without requiring an external skill.
402
- - Removed live blue slash-command coloring while retaining slash autocomplete, the framed multiline editor, and Shift+Enter.
403
-
404
- ### Fixed
405
-
406
- - Prevented `/init` from reading Git-ignored files, known secrets, private keys, linked or non-regular files, other guidance, dependencies, and files outside its frozen evidence map.
407
- - Protected root `AGENTS.md` from concurrent replacement and reported incompatible policy conflicts without writing.
408
- - Made `/clear` confirm before aborting active work, wait for settlement, and then start the new session.
409
- - Preserved explicit Responses API verbosity and reasoning-summary settings while applying concise defaults only to absent fields.
410
- - Cancelled lifecycle hook process trees with bounded cleanup when Pi aborts the parent request.
411
- - Kept `/init` middleware from freezing shared tool input and preserved custom editors installed by other extensions.
412
- - Removed private Pi editor-state access in favor of public rendering contracts.
413
-
414
- ## [2.0.3] - 2026-08-09
415
-
416
- ### Added
417
-
418
- - Added an opt-in global completion sound with `/notification` and an enabled-state Nerd Font bell in the terminal tab title.
419
- - Moved active goal status to the footer's right side in warning yellow, replacing the path with `/goal is active (...)` and exact seconds.
420
-
421
- ### Changed
422
-
423
- - Returned compaction timing, summary generation, manual instructions, retries, file tracking, and overflow recovery to Pi's public lifecycle.
424
- - Continued active goals only after Pi reaches its settled boundary and preserved `/goal` as the sole durable objective and status owner.
425
-
426
- ### Fixed
427
-
428
- - Added fail-closed, revision-bound recovery after successful manual compaction, including reload and branch navigation recovery without reviving stale or explicitly paused goals.
429
- - Rendered question help from the effective selector keybindings across supported Pi versions.
430
-
431
- ## [2.0.2] - 2026-08-08
432
-
433
- ### Changed
434
-
435
- - Replaced the static activity Spark with a 12-frame orange glyph loop at 120 ms per frame.
436
- - Styled activity verbs orange and added the gray `(esc to interrupt · thinking)` status with bold `esc`.
437
-
438
- ## [2.0.1] - 2026-08-08
439
-
440
- ### Added
441
-
442
- - Added a height-bounded question viewport with configured Pi controls, progress labels, and compact expandable history.
443
- - Added an interactive `/goal` status and actions panel in TUI mode.
444
- - Added live command-blue highlighting for recognized slash command prefixes in the prompt editor.
445
-
446
- ### Changed
447
-
448
- - Made reasoning colors contrast-safe, moved commands and links to the themed command-blue role, and changed activity to a static Spark with shuffled 2.5-second verb updates.
449
- - Reserved footer goal status for active, paused, and blocked work; completed goals remain in history and `/goal` status.
450
- - Made startup Git lookup asynchronous, cached footer session cost between content changes, and aligned the browser visual reference with v2.0.1 runtime behavior.
451
-
452
- ## [2.0.0] - 2026-08-07
453
-
454
- ### Changed
455
-
456
- - Focused the package, runtime, tests, and documentation on KillerOS's current TUI, repository initialization, long-running goals, reasoning controls, interactive questions, command aliases, and concise-response guidance.
457
-
458
- ## [1.5.8] - 2026-08-07
459
-
460
- ### Fixed
461
-
462
- - Bounded question filter input to 4,000 characters and 16,000 UTF-8 bytes, with a clear rejection notice for excess input.
463
- - Reported goal start, resume, and edit success only after continuation dispatch succeeded, and paused the goal when dispatch failed.
464
-
465
- ## [1.5.5] - 2026-08-05
466
-
467
- ### Changed
468
-
469
- - Replaced default deterministic context compaction with model-backed summaries at 40% remaining context, preserved manual focus prompts, and disclosed deterministic fallback after model retries fail.
470
-
471
- ### Fixed
472
-
473
- - Overrode vulnerable transitive `brace-expansion` and `undici` versions with patched releases in the development and CI install tree.
474
-
475
- ## [1.5.4] - 2026-08-04
476
-
477
- ### Fixed
478
-
479
- - Added guarded automatic context compaction at 30% remaining, with structured summaries and goal continuation after the compaction is saved.
480
-
481
- ## [1.5.3] - 2026-08-03
482
-
483
- ### Fixed
484
-
485
- - Made `/exit` abort an active run before requesting Pi's graceful shutdown.
486
-
487
- ## [1.5.2] - 2026-08-03
488
-
489
- ### Changed
490
-
491
- - Hardened always-on concise guidance around low-friction action, visible multi-turn state, evidence-backed outcomes, material ambiguity, diagnostic resets, and explicit safety and correctness precedence.
492
-
493
- ## [1.5.1] - 2026-08-03
494
-
495
- ### Changed
496
-
497
- - Added a fixed pragmatic response style, low GPT-5 Responses API verbosity, and concise reasoning summaries without changing reasoning effort.
498
-
499
- ### Fixed
500
-
501
- - Scoped native concise settings to supported Responses APIs while leaving completion and unrelated provider payloads unchanged.
502
-
503
- ## [1.5.0] - 2026-08-03
504
-
505
- ### Changed
506
-
507
- - Split the main extension into feature modules under `killeros/` while keeping `Killeros.ts` as the stable entry point.
508
-
509
- ## [1.4.9] - 2026-08-02
510
-
511
- ### Changed
512
-
513
- - Scoped atomic `/init` reads and writes.
514
-
515
- ## [1.4.1] - 2026-08-01
516
-
517
- ### Changed
518
-
519
- - Hardened CI with Node floor/LTS checks, locked-dependency auditing, dependency review, package-content validation, and CodeQL analysis.
520
-
521
- ## [1.3.0] - 2026-07-31
522
-
523
- ### Added
524
-
525
- - Claude Code-style `/init` that builds a bounded repository snapshot and generates a concise root `AGENTS.md` with one controlled write.
526
- - Codex-style `/goal` with durable branch-scoped state, automatic one-turn continuation, pause/resume/edit/clear controls, and explicit model-reported completion or blocking.
527
- - Trusted `AGENTS.local.md` personal guidance and project lifecycle hooks for tool-call, tool-result, and settled-agent events.
528
- - Focused coverage for goal transitions, recovery paths, branch restoration, mode gating, footer cutdowns, and repository initialization safeguards.
529
-
530
- ### Changed
531
-
532
- - Extended the responsive footer with goal activity and terminal states while preserving context pressure at narrow widths.
533
- - Hardened `/init` and `/goal` failure handling so interrupted work, provider errors, failed writes, and failed continuation starts stop safely.
534
-
535
- ## [1.2.0] - 2026-07-30
536
-
537
- ### Added
538
-
539
- - A 52-column Compact startup card with inline version, polished model/provider identity, reasoning level, `/model`, working directory, and conditional Git branch.
540
- - A shuffled startup-tip deck that keeps one tip stable per session and exhausts the bank before repeating.
541
- - A responsive footer that preserves model and context while progressively removing lower-priority telemetry.
542
- - Packaged KillerOS theme with coral accents and one neutral tool-call surface across pending, success, and error states.
543
- - Single-glyph Spark activity indicator with a restrained color pulse.
544
- - Claude-adjacent activity word bank that advances between agent runs.
545
- - Static `└ Thinking…` label for hidden reasoning blocks.
546
- - Responsive header and footer tests across narrow terminal widths.
547
-
548
- ### Changed
549
-
550
- - Replaced the animated startup illustration and capability inventory with the Compact startup card and one external tip.
551
- - Standardized product branding on mixed-case `KillerOS` and the neutral lockup used in the v1.2.0 release.
552
- - Made theme neutrals achromatic while preserving the coral accent.
553
- - Replaced the footer progress bar with direct `percent left (tokens)` context telemetry and a critical `/compact` prompt.
1
+ # Changelog
2
+
3
+ All notable changes to KillerOS are documented here.
4
+
5
+ ## [Unreleased]
6
+
7
+ ### Fixed
8
+
9
+ - Made `/handoff` honor Pi context edits by using the canonical session projection when available while retaining compatibility with Pi 0.85 and 0.86.
10
+ - Omitted worked-for throughput unless the provider explicitly reports zero reasoning tokens.
11
+
12
+ ## [2.1.30] - 2026-09-21
13
+
14
+ ### Added
15
+
16
+ - Added measured assistant output-token throughput to settled worked-for receipts, excluding first-token latency, tool execution, and gaps between model calls.
17
+
18
+ ### Fixed
19
+
20
+ - Prevented competing stale-settings-lock recovery attempts from removing a new writer's lock and losing settings updates.
21
+ - Recorded change receipts in repositories using Git's reftable reference backend while still rejecting receipts when `HEAD` moves during a response.
22
+ - Serialized global `killeros.json` updates across Pi processes so concurrent automatic-compaction and notification changes no longer discard successful writes or fail during Windows file replacement.
23
+ - Accepted `/handoff` summaries with `## ` lines inside fenced code blocks instead of rejecting the complete summary for an extra section.
24
+ - Changed the footer's `ctx` percentage to show context remaining, matching `/auto-compact` threshold direction while preserving urgency colors and the `/compact` hint.
25
+ - Reported `/goal` objectives with unsupported terminal content separately from the 4,000-character limit.
26
+
27
+ ## [2.1.29] - 2026-09-19
28
+
29
+ ### Added
30
+
31
+ - Added `/auto-compact [status|on|off|<percent>]` to inspect and update the global automatic compaction preference without restarting Pi.
32
+
33
+ ### Fixed
34
+
35
+ - Kept normalized CRLF checkouts clean in passive Git scans while respecting text attributes and binary files without running filters.
36
+ - Detected same-size tracked-file rewrites even when tools restore the indexed modification time.
37
+ - Resolved change-receipt repository ownership at the start of every response so nested or replaced repositories cannot reuse a stale monitor.
38
+ - Kept the 100% automatic-compaction threshold active for later user requests and goal turns without compacting the generated ordinary continuation.
39
+ - Prevented automatic footer and change-receipt scans from starting clean or process filters, including filters added and removed while a scan is running.
40
+
41
+ ## [2.1.28] - 2026-09-15
42
+
43
+ ### Changed
44
+
45
+ - Simplified goal presentation without changing goal behavior: transcript history shows one iconless event row per lifecycle change (`Goal started`, `Goal replaced`, `Goal paused`, `Goal resumed`, `Goal cleared`), progress and blocker outcomes render once through the goal tool result, the footer shows compact `/goal active · 1/20 · 10s` status, the `/goal` panel leads with status then objective then `Pause goal` / `Resume goal` / `Clear goal` actions, and duplicate TUI success notifications are suppressed while RPC confirmations remain. Active-goal labels use muted teal `#6FAEB2` through the packaged theme's extension-label role.
46
+ - Removed the legacy `✻` marker from version-1 `Worked for …` transcript rows; stored entries are unchanged and remain readable.
47
+
48
+ ### Added
49
+
50
+ - Appended the selected model ID as a gray `· <model-id>` suffix to every TUI activity working message, retained for the full request cycle and falling back to `unknown model` when no usable ID exists.
51
+
52
+ ### Fixed
53
+
54
+ - Kept resumed blocked goals and goals paused by truncated provider errors readable after reload.
55
+ - Made goal continuation explicit: each settled turn now needs one accepted `continue`, `complete`, or blocker decision. Missing decisions, repeated continuation reports, unavailable goal tools, and runtime failures pause without scheduling another turn; compaction recovery resumes the same logical turn.
56
+ - Preserved accepted goal decisions across automatic compaction: a `continue` or blocker audit recorded before compaction now authorizes exactly one next turn instead of being discarded and re-decided. Duplicate compaction and settlement callbacks cannot start a second turn.
57
+ - Scoped goal pause reasons to the current paused state: resume and manual pause no longer surface an earlier automatic reason, terminal states keep no pause reason, and contradictory persisted states fail closed instead of starting automatic work.
58
+
59
+ ## [2.1.27] - 2026-09-12
60
+
61
+ ### Added
62
+
63
+ - Added `/codex-fast status` to report whether Codex fast mode is enabled without changing it.
64
+
65
+ ### Fixed
66
+
67
+ - Restricted automatic startup, footer, and change-receipt Git scans to trusted projects, preventing repository executables and configuration races from launching commands before trust is granted.
68
+ - Resolved passive Git executable discovery without starting a locator or repository executable. Footer and change-receipt scans now use an absolute Git path outside the inspected repository and report unavailable when none exists.
69
+ - Closed the filter-configuration race in automatic Git inspection. Footer and change-receipt scans now run Git without `PATH` resolution, re-check effective filters after status, and skip results the scan cannot produce without an extension process or remote fetch. Change receipts no longer fetch missing objects from partial-clone remotes.
70
+ - Stopped attaching single-file verification to goals that name several files. Multi-file goals now complete through the model-reported path.
71
+ - Shared one passive Git status policy between footer telemetry and change receipts. Both scans now disable filesystem monitors and clean/process filters, and skip status when filter discovery is unavailable or unsafe.
72
+ - Recorded focused Node test runs in response receipts without persisting their test paths.
73
+ - Kept passive footer Git status from running configured filters, bounded loose and packed receipt blobs, and stopped stale `/handoff` summaries from replacing sessions with new work.
74
+
75
+ ### Removed
76
+
77
+ - Removed `/init` and its `killeros_init_*` tools, prompts, workflow APIs, runtime state, and lifecycle handlers. Upgrading leaves existing `AGENTS.md` and recovery files untouched, and commands from other providers named `/init` pass through KillerOS unhandled.
78
+
79
+ ## [2.1.26] - 2026-09-08
80
+
81
+ ### Fixed
82
+
83
+ - Restored Pi lifecycle loading, blocked footer Git status from invoking configured filesystem monitors, and kept replaced `/init` guidance at a disclosed recovery path so late writes remain recoverable.
84
+ - Preserved Unicode blocker evidence when restoring goals, rejected cancelled goal updates before completion is saved, and read untracked symlink destinations instead of their targets in change receipts.
85
+ - Kept `/init` isolated from proactive compaction, refreshed Git filter safeguards for each receipt scan, and preserved compaction recovery after cancelled session replacements.
86
+
87
+ ## [2.1.25] - 2026-09-06
88
+
89
+ ### Fixed
90
+
91
+ - Left-aligned settled `✓ Done` receipt lines so every row shares the assistant text edge.
92
+
93
+ ### Changed
94
+
95
+ - Replaced the boxed startup card with a three-row masthead: coral fade mark, versions, model and reasoning level, directory and branch, and an italic tip.
96
+ - Swapped the working indicator to the 10-frame Braille orbit at 80 ms per frame.
97
+ - Restored the leading `❯` prompt marker in white in the chat editor.
98
+ - Rendered footer model names and the `fast` badge in non-bold white.
99
+ - Showed the current Pi version beside the KillerOS version in the startup header.
100
+
101
+ ### Removed
102
+
103
+ - Removed the `/variants` reasoning-level command in favor of Pi's native `/thinking` selector.
104
+
105
+ ## [2.1.24] - 2026-09-05
106
+
107
+ ### Added
108
+
109
+ - Appended the settled model display name to version 4 worked-for receipts for single-model TUI runs.
110
+
111
+ ### Changed
112
+
113
+ - Rendered settled `Done` receipts without the `✓` marker, keeping `■ Stopped`, `× Failed`, and version 1 history unchanged.
114
+ - Raised the locked Pi development packages and minimum supported Pi peer version to 0.85.0, including `@earendil-works/pi-server`.
115
+
116
+ ## [2.1.23] - 2026-09-04
117
+
118
+ ### Changed
119
+
120
+ - Simplified `/goal` to five forms with proof-by-prose and silent file proof, removing configured completion checks.
121
+
122
+ ### Fixed
123
+
124
+ - Kept the automatic 20-turn goal pause silent as documented.
125
+ - Stripped sentence punctuation from unquoted inferred goal paths and picked token units after rounding so 999.6 shows as 1k and 999999 as 1M.
126
+ - Increased change-receipt Git timeouts to five seconds and stopped timeout failures from showing warning notifications.
127
+
128
+ ## [2.1.22] - 2026-09-03
129
+
130
+ ### Added
131
+
132
+ - Added named goal completion checks, per-goal turn limits, and branch-aware `/goal history`.
133
+ - Added per-response TUI receipts for net Git changes and recognized verification results.
134
+
135
+ ### Changed
136
+
137
+ - Defaulted new goals to 20 turns, added safe `/goal checks` discovery, preserved blocker evidence in history, and separated pure goal parsing and history formatting.
138
+ - Refreshed footer Git telemetry from throttled filesystem changes instead of every completed turn, while retaining branch and 30-second fallback scans.
139
+
140
+ ### Fixed
141
+
142
+ - Prevented Linux CI test workers from waiting indefinitely on extension-owned handles after their tests finish.
143
+ - Made change receipts use a final repository scan, disable current Git filters, report line-ending-only edits, and recheck file goals after completion commands.
144
+ - Released automatic-compaction request state when Pi rejects an ordinary continuation before accepting its hidden message.
145
+ - Resumed ordinary tasks exactly once after automatic compaction and interrupted-turn settlement, keeping the hidden continuation pending until Pi accepts it.
146
+ - Allowed Git footer scans up to five seconds, contained rejected refreshes, and kept the last successful file-change status after transient failures.
147
+ - Recorded only exact check commands in response receipts, replaced verification claims with observed-check copy, and reserved `/goal` command words so malformed controls cannot start objectives.
148
+ - Rejected unsafe persisted goal counters, contained file-verification inference errors, and prevented stale completion checks from completing a newly restored goal.
149
+ - Kept lifecycle hooks stable for corrupt payload serialization, `NaN` direct timeouts, abort races, stream errors, and synchronous process completion without tightening custom process adapter contracts.
150
+
151
+ ## [2.0.22] - 2026-08-30
152
+
153
+ ### Changed
154
+
155
+ - Replaced the footer's changed-file total with a colored modified, added, and deleted breakdown.
156
+
157
+ ### Fixed
158
+
159
+ - Preserved the existing `createGitStatusRefresh` changed-file count callback contract.
160
+ - Rejected linked `AGENTS.local.md` files before reading personal instructions.
161
+ - Confirmed Windows hook process-tree cleanup before settling cancellations and timeouts, even when `taskkill` is absent from `PATH`.
162
+
163
+ ## [2.0.21] - 2026-08-29
164
+
165
+ ### Changed
166
+
167
+ - Bounded goal verification and Pi compatibility, reduced Git status polling, reserved handoff context, and separated goal state and question UI logic.
168
+ - Blocked moderate dependency advisories in CI and updated TypeBox within the supported 1.x line.
169
+ - Preserved seconds in footer and goal elapsed times after one minute.
170
+ - Added a muted top border to the prompt editor.
171
+ - Colored the footer workspace path `#F0F89A`.
172
+ - Added a live changed-file count beside the Git branch when the worktree is dirty.
173
+ - Synced `dev` back to successful `main` releases after publishing.
174
+
175
+ ### Fixed
176
+
177
+ - Kept likely secrets out of `/init`, restricted personal-instruction imports to Pi's agent directory, and replaced injectable handoff framing with validated JSON.
178
+ - Hardened releases against stale CI runs, mismatched existing npm artifacts, and tag conflicts discovered after publication.
179
+
180
+ ## [2.0.20] - 2026-08-25
181
+
182
+ ### Changed
183
+
184
+ - Added a typescript-eslint type-checked lint gate (`npm run lint`) alongside `tsc --noEmit`, and cleaned up the dead imports and untyped boundaries it surfaced.
185
+
186
+ ### Fixed
187
+
188
+ - Treated Pi's exact `Nothing to compact (session too small)` rejection as an expected automatic-compaction skip: no failure notification, silent retry on the next eligible turn, and active goals resume through a dedicated skip recovery instead of pausing for `/goal resume`.
189
+ - Made `/handoff` resilient to an unreadable `killeros.json`: explicit `KillerosOptions` budgets bypass the file, while other summaries fall back to the default budget with a visible warning.
190
+ - Named `/handoff` output truncation instead of reporting "did not finish", raised the default summary budget to 8192 tokens for reasoning models, and made the budget configurable through `KillerosOptions` or the `killeros.json` `handoffMaxTokens` key.
191
+
192
+ ## [2.0.19] - 2026-08-24
193
+
194
+ ### Changed
195
+
196
+ - Hardened JSON and caught-error boundaries, made goal and `/init` target states constructive, added exhaustive outcome handling, and replaced unsafe test doubles with checked adapters.
197
+ - Deprecated positional `executeHook` arguments in favor of object options; the compatibility adapter will be removed in the next major release.
198
+
199
+ ### Fixed
200
+
201
+ - Paused active goals during automatic compaction and resumed the exact paused revision once after compaction and turn settlement succeed.
202
+ - Restored active goals saved by v2.0.18 shutdown checkpoints that omitted their stopped clock timestamp.
203
+
204
+ ## [2.0.18] - 2026-08-24
205
+
206
+ ### Added
207
+
208
+ - Added a real Pi SDK lifecycle test for package activation, shutdown-before-reload, fresh registration, and stale-context rejection.
209
+
210
+ ### Changed
211
+
212
+ - Raised the locked Pi development packages and minimum supported Pi peer version to 0.84.3.
213
+ - Made Pi lifecycle compatibility coverage install the generated npm tarball offline before activation and reload.
214
+
215
+ ### Fixed
216
+
217
+ - Preserved provider-managed OAuth routing during `/handoff`, fixing GitHub Copilot `421 Misdirected Request` failures.
218
+ - Repaired incompatible process-global `/codex-fast` state during extension updates while preserving a valid saved enabled flag.
219
+ - Stopped lifecycle-hook failures from echoing configured shell commands, which could expose inline credentials in Pi diagnostics.
220
+ - Kept lifecycle-hook configuration paths terminal-safe and single-line in warnings.
221
+ - Limited trusted lifecycle-hook configuration to a 64 KiB regular, non-linked file in the project's real `.pi` directory and verified the opened file identity before parsing it.
222
+ - Sanitized dynamic slash-command descriptions and omitted unsafe command names from KillerOS autocomplete.
223
+ - Rejected explicit file goals when their starting filesystem baseline cannot be inspected instead of treating every error as a missing file.
224
+ - Kept custom model and provider labels single-line and terminal-safe in the shell header and footer.
225
+ - Sanitized model-reported `/init` policy conflicts before returning, storing, or notifying with them.
226
+ - Kept session-storage failure details terminal-safe when an explicit goal pause falls back to in-memory state.
227
+ - Stripped terminal commands and unsafe controls from saved goal objectives before clear confirmations.
228
+ - Kept rejected `/variants` arguments terminal-safe and single-line in error notifications.
229
+ - Kept provider and model identifiers terminal-safe and single-line throughout `/variants`.
230
+ - Flushed partial UTF-8 lifecycle-hook output on process close instead of silently dropping final diagnostic bytes.
231
+ - Contained synchronous lifecycle-hook process-start failures inside normal hook failure handling.
232
+ - Kept header and footer paths single-line and terminal-safe for unusual cwd or home-directory names.
233
+ - Sanitized manual-compaction abort diagnostics before saving recovery-eligible goal state.
234
+ - Stripped terminal commands and unsafe controls from saved goal text before showing status panels or notifications.
235
+ - Sanitized provider and storage diagnostics before persisting or announcing an automatically paused goal.
236
+ - Routed handoff generation and session-replacement failures through the shared terminal-safe error reporter.
237
+ - Stripped terminal commands and unsafe control bytes from caught errors before showing KillerOS failure notifications.
238
+ - Stripped terminal commands and control bytes from cwd and session names before emitting the KillerOS terminal title.
239
+ - Removed filesystem source paths from personal-instruction prompt wrappers so unusual project paths cannot alter prompt structure.
240
+ - Stripped terminal commands and unsafe control bytes from lifecycle hook failure notifications and tool block reasons.
241
+
242
+ ## [2.0.17] - 2026-08-23
243
+
244
+ ### Added
245
+
246
+ - Added per-task token usage to settled TUI receipts for ordinary requests and individual goal turns.
247
+
248
+ ### Changed
249
+
250
+ - Limited push CI to `main` and `dev`; feature branches run through pull request CI without duplicate push runs.
251
+ - Removed obsolete Pi tool API casts, shared caught-error formatting, and expanded the non-repeating startup tip and editor suggestion banks.
252
+ - Clarified that the README's pinned Git tag is an example rather than the current package version.
253
+
254
+ ### Fixed
255
+
256
+ - Limited retired-feature repository checks to tracked and non-ignored files so ignored private notes cannot fail the suite.
257
+
258
+ ## [2.0.16] - 2026-08-23
259
+
260
+ ### Fixed
261
+
262
+ - Kept `/handoff` input inside a cancellable TUI loader so buffered editor text cannot cross the session boundary.
263
+ - Prevented a cancelled handoff from starting provider completion when authentication resolves late.
264
+ - Made repository contract tests validate README facts without depending on discarded prose.
265
+
266
+ ## [2.0.15] - 2026-08-23
267
+
268
+ ### Added
269
+
270
+ - Added `/handoff [focus]` for fresh linked sessions with visible continuation context.
271
+
272
+ ### Fixed
273
+
274
+ - Compared pre-existing goal deliverables by content instead of file size and modification time.
275
+ - Made `/init` evidence directory listing follow case-insensitive Windows path semantics.
276
+ - Kept the interactive question component within a zero-row terminal height.
277
+
278
+ ## [2.0.14] - 2026-08-22
279
+
280
+ ### Fixed
281
+
282
+ - Prevented direct tag pushes from publishing commits that have not passed CI on `main`.
283
+ - Kept oversized hook payloads valid JSON and marked their bounded preview as truncated.
284
+ - Stripped terminal escape sequences and unsafe controls from model-controlled question and goal text.
285
+ - Aligned hook timeout validation and execution on the documented five-minute maximum.
286
+ - Required file-backed goals to create or change their deliverable after the goal starts, including after session restore.
287
+ - Removed a CI test dependency on an intentionally untracked internal document.
288
+
289
+ ## [2.0.13] - 2026-08-21
290
+
291
+ ### Added
292
+
293
+ - Added the process-local bare `/codex-fast` toggle for Codex priority requests, with a bold inline `Fast` footer indicator while an active Codex model uses it.
294
+
295
+ ### Changed
296
+
297
+ - Converted all tracked test suites from JavaScript to strict TypeScript while keeping Node's built-in test runner.
298
+
299
+ ## [2.0.12] - 2026-08-18
300
+
301
+ ### Fixed
302
+
303
+ - Resumed active goals exactly once after Pi reports automatic compaction complete.
304
+
305
+ ## [2.0.11] - 2026-08-17
306
+
307
+ ### Fixed
308
+
309
+ - Made automated npm publication and GitHub release recovery idempotent, aligned the documented and tested Pi floor, and made machine-identifier casing locale-independent.
310
+ - Extended strict type checking to release scripts and typed test suites, while correctly identifying JavaScript-only suites as `.js`.
311
+
312
+ ### Removed
313
+
314
+ - Removed the decision-gated workflow subsystem, its skill-specific policy, public extension interface, and YAML dependency. Skills now remain instruction-only.
315
+
316
+ ## [2.0.10] - 2026-08-16
317
+
318
+ ### Added
319
+
320
+ - Added proactive turn-boundary compaction with Pi-owned settings and safe continuation for ordinary prompts and active goals.
321
+ - Added reusable multi-activation decision-gated workflow registrations while preserving exact-match behavior.
322
+
323
+ ## [2.0.9] - 2026-08-15
324
+
325
+ ### Added
326
+
327
+ - Highlighted exact, currently registered slash commands in the TUI editor with the theme's shared command-blue link role while preserving autocomplete boundaries and ANSI cursor styling.
328
+
329
+ ## [2.0.8] - 2026-08-15
330
+
331
+ ### Added
332
+
333
+ - Added a reusable, opt-in pre-turn gate for explicitly activated decision-gated workflows. It opens the shared structured question UI before skill expansion, keeps the selected policy active, blocks unknown and disallowed tools, and clears safely across lifecycle boundaries.
334
+ - Added a disposable decision-gated workflow fixture and focused coverage for activation ordering, pending safety, policy allowlists, lifecycle cleanup, adapter reuse, and Pi 0.84.2 compatibility.
335
+
336
+ ### Removed
337
+
338
+ - Removed KillerOS's always-on concise response policy and provider-specific concise defaults; Pi now owns response-style guidance.
339
+
340
+ ### Changed
341
+
342
+ - Raised the locked direct Pi development packages to 0.84.2 while keeping the peer dependency floor at 0.84.1.
343
+
344
+ ## [2.0.7] - 2026-08-13
345
+
346
+ ### Changed
347
+
348
+ - Raised the supported and locked Pi baseline from 0.82.1 to the current matched 0.84.1 AI, coding-agent, and TUI packages.
349
+ - Added a compact two-deck footer beneath the prompt and removed the work-trail widget.
350
+ - Replaced the framed prompt and shuffled activity verbs with a focus-aware single-arrow editor and event-derived working copy.
351
+ - Made settled timing entries report `Done`, `Stopped`, or `Failed` while keeping existing `Worked for` history readable.
352
+
353
+ ### Fixed
354
+
355
+ - Separated response output from the prompt editor while keeping footer telemetry close beneath a quiet muted divider.
356
+ - Kept `/variants` within the active terminal height, preserved the focused reasoning level across resizes, and initially focused the current level.
357
+ - Rendered `/variants` controls from the same Pi keybinding manager that handles input, including installations with separate package module instances.
358
+ - Rendered active, paused, and blocked `/goal` status text consistently in the footer's far-right slot.
359
+ - Kept the private goal-update tool inactive outside active `/goal` runs and rendered its real execution errors instead of malformed blocker-audit fields.
360
+ - Verified exact persisted paths for clearly declared file-deliverable goals before completion, while preserving model-reported completion for general objectives.
361
+ - Accepted explicit `1`/`1` bounds for single-select questions and applied the same bounds validation before rendering and execution.
362
+ - Prevented reload and branch navigation from preserving or reconstructing stale manual-compaction recovery eligibility; only Pi's live event in the current session can resume the interrupted goal safely.
363
+ - Restricted goal deliverable verification to explicit destination phrases so source and reference paths cannot be reported as completed output.
364
+ - Kept saved goals fully inactive in print and JSON modes, including the private update tool and shutdown checkpoints.
365
+ - Rejected concurrent `/init` starts during preflight, cancelled pending preflight work on shutdown, and settled active `/init` command handlers when their session closes.
366
+
367
+ ## [2.0.6] - 2026-08-11
368
+
369
+ ### Added
370
+
371
+ - Added a durable `✻ Worked for …` transcript line below each settled TUI response, including stopped and failed runs.
372
+ - Added optional multi-select to the `question` tool with bounded checked options, one additive custom answer, a dedicated multi-word filter editor, and compact expandable results while preserving single-select defaults.
373
+
374
+ ### Changed
375
+
376
+ - Automated GitHub releases after successful `main` CI version bumps, with package, lockfile, changelog, tag, and verified-commit checks plus a manual tag recovery path.
377
+
378
+ ### Fixed
379
+
380
+ - Entered automatic `/goal` continuations into durable goal-turn state before dispatch so turn numbers advance and blocker audits work on Pi custom-message turns.
381
+
382
+ ## [2.0.5] - 2026-08-11
383
+
384
+ ### Added
385
+
386
+ - Added shuffled session-stable suggestions to the empty three-line prompt editor.
387
+
388
+ ### Fixed
389
+
390
+ - Preserved complete UTF-8 characters in truncated `/init` evidence and chunked lifecycle-hook output, and kept filesystem-root paths visible in notification titles.
391
+ - Kept the startup-tip shuffle deck across session rebinds so every tip appears before the bank repeats.
392
+ - Rejected matchers on `agent_settled` lifecycle hooks instead of silently bypassing their tool-name guard.
393
+ - Made the goal update status schema compatible with Google models while preserving strict completion and blocking values.
394
+ - Kept multiline custom-answer drafts within tiny terminal row limits by rendering a clipped single-line preview.
395
+ - Preserved existing spaces and tabs after the cursor when applying slash-command autocomplete.
396
+ - Made `/init` abort safely when Git ignore inspection fails or returns untrusted output, preventing ignored files from entering model evidence.
397
+ - Wrapped long interactive questions to the current terminal width while keeping the question UI within the terminal height.
398
+ - Made `/goal pause` and `/goal clear` save terminal state before immediately stopping active goal work.
399
+ - Kept failed goal edits and replacements visible and fail-closed without restarting a stale objective.
400
+ - Required one durable blocker key on three consecutive goal turns before a goal can be marked blocked.
401
+
402
+ ## [2.0.4] - 2026-08-10
403
+
404
+ ### Changed
405
+
406
+ - Rebuilt `/init` around a packaged four-section guideline-synthesis workflow that preserves compatible root policy without requiring an external skill.
407
+ - Removed live blue slash-command coloring while retaining slash autocomplete, the framed multiline editor, and Shift+Enter.
408
+
409
+ ### Fixed
410
+
411
+ - Prevented `/init` from reading Git-ignored files, known secrets, private keys, linked or non-regular files, other guidance, dependencies, and files outside its frozen evidence map.
412
+ - Protected root `AGENTS.md` from concurrent replacement and reported incompatible policy conflicts without writing.
413
+ - Made `/clear` confirm before aborting active work, wait for settlement, and then start the new session.
414
+ - Preserved explicit Responses API verbosity and reasoning-summary settings while applying concise defaults only to absent fields.
415
+ - Cancelled lifecycle hook process trees with bounded cleanup when Pi aborts the parent request.
416
+ - Kept `/init` middleware from freezing shared tool input and preserved custom editors installed by other extensions.
417
+ - Removed private Pi editor-state access in favor of public rendering contracts.
418
+
419
+ ## [2.0.3] - 2026-08-09
420
+
421
+ ### Added
422
+
423
+ - Added an opt-in global completion sound with `/notification` and an enabled-state Nerd Font bell in the terminal tab title.
424
+ - Moved active goal status to the footer's right side in warning yellow, replacing the path with `/goal is active (...)` and exact seconds.
425
+
426
+ ### Changed
427
+
428
+ - Returned compaction timing, summary generation, manual instructions, retries, file tracking, and overflow recovery to Pi's public lifecycle.
429
+ - Continued active goals only after Pi reaches its settled boundary and preserved `/goal` as the sole durable objective and status owner.
430
+
431
+ ### Fixed
432
+
433
+ - Added fail-closed, revision-bound recovery after successful manual compaction, including reload and branch navigation recovery without reviving stale or explicitly paused goals.
434
+ - Rendered question help from the effective selector keybindings across supported Pi versions.
435
+
436
+ ## [2.0.2] - 2026-08-08
437
+
438
+ ### Changed
439
+
440
+ - Replaced the static activity Spark with a 12-frame orange glyph loop at 120 ms per frame.
441
+ - Styled activity verbs orange and added the gray `(esc to interrupt · thinking)` status with bold `esc`.
442
+
443
+ ## [2.0.1] - 2026-08-08
444
+
445
+ ### Added
446
+
447
+ - Added a height-bounded question viewport with configured Pi controls, progress labels, and compact expandable history.
448
+ - Added an interactive `/goal` status and actions panel in TUI mode.
449
+ - Added live command-blue highlighting for recognized slash command prefixes in the prompt editor.
450
+
451
+ ### Changed
452
+
453
+ - Made reasoning colors contrast-safe, moved commands and links to the themed command-blue role, and changed activity to a static Spark with shuffled 2.5-second verb updates.
454
+ - Reserved footer goal status for active, paused, and blocked work; completed goals remain in history and `/goal` status.
455
+ - Made startup Git lookup asynchronous, cached footer session cost between content changes, and aligned the browser visual reference with v2.0.1 runtime behavior.
456
+
457
+ ## [2.0.0] - 2026-08-07
458
+
459
+ ### Changed
460
+
461
+ - Focused the package, runtime, tests, and documentation on KillerOS's current TUI, repository initialization, long-running goals, reasoning controls, interactive questions, command aliases, and concise-response guidance.
462
+
463
+ ## [1.5.8] - 2026-08-07
464
+
465
+ ### Fixed
466
+
467
+ - Bounded question filter input to 4,000 characters and 16,000 UTF-8 bytes, with a clear rejection notice for excess input.
468
+ - Reported goal start, resume, and edit success only after continuation dispatch succeeded, and paused the goal when dispatch failed.
469
+
470
+ ## [1.5.5] - 2026-08-05
471
+
472
+ ### Changed
473
+
474
+ - Replaced default deterministic context compaction with model-backed summaries at 40% remaining context, preserved manual focus prompts, and disclosed deterministic fallback after model retries fail.
475
+
476
+ ### Fixed
477
+
478
+ - Overrode vulnerable transitive `brace-expansion` and `undici` versions with patched releases in the development and CI install tree.
479
+
480
+ ## [1.5.4] - 2026-08-04
481
+
482
+ ### Fixed
483
+
484
+ - Added guarded automatic context compaction at 30% remaining, with structured summaries and goal continuation after the compaction is saved.
485
+
486
+ ## [1.5.3] - 2026-08-03
487
+
488
+ ### Fixed
489
+
490
+ - Made `/exit` abort an active run before requesting Pi's graceful shutdown.
491
+
492
+ ## [1.5.2] - 2026-08-03
493
+
494
+ ### Changed
495
+
496
+ - Hardened always-on concise guidance around low-friction action, visible multi-turn state, evidence-backed outcomes, material ambiguity, diagnostic resets, and explicit safety and correctness precedence.
497
+
498
+ ## [1.5.1] - 2026-08-03
499
+
500
+ ### Changed
501
+
502
+ - Added a fixed pragmatic response style, low GPT-5 Responses API verbosity, and concise reasoning summaries without changing reasoning effort.
503
+
504
+ ### Fixed
505
+
506
+ - Scoped native concise settings to supported Responses APIs while leaving completion and unrelated provider payloads unchanged.
507
+
508
+ ## [1.5.0] - 2026-08-03
509
+
510
+ ### Changed
511
+
512
+ - Split the main extension into feature modules under `killeros/` while keeping `Killeros.ts` as the stable entry point.
513
+
514
+ ## [1.4.9] - 2026-08-02
515
+
516
+ ### Changed
517
+
518
+ - Scoped atomic `/init` reads and writes.
519
+
520
+ ## [1.4.1] - 2026-08-01
521
+
522
+ ### Changed
523
+
524
+ - Hardened CI with Node floor/LTS checks, locked-dependency auditing, dependency review, package-content validation, and CodeQL analysis.
525
+
526
+ ## [1.3.0] - 2026-07-31
527
+
528
+ ### Added
529
+
530
+ - Claude Code-style `/init` that builds a bounded repository snapshot and generates a concise root `AGENTS.md` with one controlled write.
531
+ - Codex-style `/goal` with durable branch-scoped state, automatic one-turn continuation, pause/resume/edit/clear controls, and explicit model-reported completion or blocking.
532
+ - Trusted `AGENTS.local.md` personal guidance and project lifecycle hooks for tool-call, tool-result, and settled-agent events.
533
+ - Focused coverage for goal transitions, recovery paths, branch restoration, mode gating, footer cutdowns, and repository initialization safeguards.
534
+
535
+ ### Changed
536
+
537
+ - Extended the responsive footer with goal activity and terminal states while preserving context pressure at narrow widths.
538
+ - Hardened `/init` and `/goal` failure handling so interrupted work, provider errors, failed writes, and failed continuation starts stop safely.
539
+
540
+ ## [1.2.0] - 2026-07-30
541
+
542
+ ### Added
543
+
544
+ - A 52-column Compact startup card with inline version, polished model/provider identity, reasoning level, `/model`, working directory, and conditional Git branch.
545
+ - A shuffled startup-tip deck that keeps one tip stable per session and exhausts the bank before repeating.
546
+ - A responsive footer that preserves model and context while progressively removing lower-priority telemetry.
547
+ - Packaged KillerOS theme with coral accents and one neutral tool-call surface across pending, success, and error states.
548
+ - Single-glyph Spark activity indicator with a restrained color pulse.
549
+ - Claude-adjacent activity word bank that advances between agent runs.
550
+ - Static `└ Thinking…` label for hidden reasoning blocks.
551
+ - Responsive header and footer tests across narrow terminal widths.
552
+
553
+ ### Changed
554
+
555
+ - Replaced the animated startup illustration and capability inventory with the Compact startup card and one external tip.
556
+ - Standardized product branding on mixed-case `KillerOS` and the neutral lockup used in the v1.2.0 release.
557
+ - Made theme neutrals achromatic while preserving the coral accent.
558
+ - Replaced the footer progress bar with direct `percent left (tokens)` context telemetry and a critical `/compact` prompt.