Changelog

All notable changes to pi-muselinn-harness, in reverse chronological order.

0.9.22

Type-layer hardening — full-package tsc typecheck (first time):

0.9.21

Window-aware tool-result spill (issue #2):

RPC approval dialog (issue #4) — no more silent denials in RPC hosts:

0.9.20

Hotfix — npm package was missing the pause/ adapter directory (issue #3):

0.9.19

Freeze & steer — /pause · transcript · /steer:

0.9.18

Persistent startup permission mode:

0.9.17

Miscellaneous:

0.9.16

todo_list tool prompts de-ambiguated:

0.9.15

Todo widget auto-clear (OMP parity):

0.9.14

Startup fix:

TUI polish:

Docs & site:

0.9.13

Plan mode Kimi Code full alignment:

Permission dialog UX:

Subagent profile system:

Preview box fix:

Misc:

0.9.12

0.9.11

0.9.10

0.9.3–0.9.8

Integration & consistency fixes:

0.9.1

Bug fixes:

0.9.0

TODO Phase Model — phased task planning with reminders built in.

The todo system is rewritten with an oh-my-pi-style phase model (TodoPhase): per-task status (pending/in_progress/completed/abandoned), 7 ops (init/start/done/drop/rm/append/view), and auto-promote of the first task on phase init. The widget renders a roman-numeral phase tree (Ⅰ. Scanner · 2/4) with collapse/expand.

Reminder system: When the agent stops with incomplete todos, a <system-reminder> injects the task list into the next turn (max 3 reminders, debounced).

Markdown round-trip: /todo export/import serializes and restores phases as Markdown for sharing and persistence between sessions.

Plan Mode — Kimi Code permission model alignment.

Plan mode no longer maintains its own bash command whitelist. Instead, bash follows the normal permission mode (auto/yolo/manual) — the same design as Kimi Code. Only the following are blocked during planning:

The plan file path is matched by exact path, local:// scheme basename, and resolved absolute path under the session’s plans/ directory — all three paths accepted.

This eliminates the root cause of “stuck in plan mode” where common commands like cd were blocked by the bash whitelist, and plan file writes using the local:// scheme were rejected.

Plan mode bash permission model:

Before (0.8.2) After (0.9.0)
Static regex whitelist (~35 commands) No bash restriction — follows permission mode
cd not in whitelist → blocked cd, git push, npm install all allowed (permission mode decides)
local:// plan writes rejected (path mismatch) local:// basename matched against active plan file
Deny-by-default for unmatched commands Allow-by-default, permission chain controls

0.8.2

Custom Agent Files — Define agent profiles as Markdown files with YAML frontmatter:

---
name: my-coder
description: Custom coding agent with restricted tools
tools:
  - Read
  - Grep
  - Edit
  - Bash
disallowedTools:
  - Bash
---
You are a specialized coding agent.
${base_prompt}

Place them in .pi/agents/, .kimi-code/agents/, or .agents/agents/ (project or user scope). Use agent_file_list to browse, and pass agent_file="my-coder" to agent or agent_swarm.

Tool Gating — Three-layer tool policy integrated into the permission chain. Agent profiles can restrict which tools a subagent may use; the policy is enforced at the tool_call event level, before the 18-level permission chain.

Agent Lifecycle Events — agent.created / agent.disposed events tracked per subagent. Active agent count shown in the status bar ([3 agents running]).

Permission Mode Rework (kimi-code aligned):

Plan Mode improvements:

0.7.8

0.7.7

0.7.4

Closed-box editor with streaming state in the top border


Releasing (maintainers)

Changelog entries describe user-visible changes only — CI/tooling/docs housekeeping stays in git history, not release notes (the release body is generated from CHANGELOG.md, so it inherits this rule).

Tag to mark the release (CI publish removed — publish locally with OTP):

npm run version-patch                              # bumps package.json + lock (e.g. 0.9.16 → 0.9.17)
git tag v$(node -p "require('./package.json').version")
git push origin main --tags                        # tag push runs CI + auto-creates the GitHub Release
npm publish                                        # manual publish with OTP