Files
shiro-neko/CHANGELOG.md
T
Muhammad Zakir Ramadhan 8eebc0f4d6 release 1.0.1: fix resume showing a blank transcript
A resumed session loaded its wire messages but never rebuilt the on-screen
history, so -r/-c and /resume rendered a blank transcript. Convert the stored
messages back into transcript lines and seed the panel with them at mount and
after /resume.
2026-09-17 19:26:42 +07:00

126 lines
7.1 KiB
Markdown

# Changelog
All notable changes to this project are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.1]
### Added
- **Rendered, resumed history.** A session restored with `-r`/`-c` or `/resume` now shows
its saved conversation as real transcript lines instead of a blank prompt, converting the
stored wire messages (user, assistant, tool calls and their results) into the same view the
live loop paints.
- **`/undo` and `/redo`.** Every prompt snapshots the files on disk first (capped near the last
100), and `/undo` restores files, trims the conversation, or both. `/redo` reverses it. A
`bash` command's side effects are not files and cannot be rolled back, which is stated in the
command output rather than hidden.
- **Parallel subagents.** The `task` tool accepts several independent investigations under a
`tasks` array and runs them on separate context windows at the same time, joining their
reports. A single call behaves exactly as before.
- **Lazy MCP tools.** By default an MCP server now contributes three meta-tools (`mcp_list`,
`mcp_inspect`, `mcp_call`) instead of one schema per server tool, so a server exposing twenty
tools stops costing ~2750 tokens per request until one is actually called. Set
`"mcpMode": "eager"` to register every server tool up front. Named servers are still listed
in the prompt, and calls route through the same permission rules and guard as before.
- **Hot-reloaded skill installs.** A skill installed from `/registry` mid-session is callable
on the next turn without a restart (the `skill` tool reads its list live, so even the first
install works). Plugins and external tools still need a restart because they join the guard
chain and tool registry built once at boot.
### Fixed
- A resumed session rendered an empty transcript. Loading a saved session populated the wire
messages but never rebuilt the on-screen history, so after `-r`/`-c` or `/resume` the talk
was blank even though the session data was there.
- The walk behind `@file` completion refreshed only once per session; it now re-walks on a slow
cooldown so a file created after the first `@` shows up within a short window.
- A handful of plugin write tools were mutating but not gated by the permission defaults; the
tool set and the mutating list are now derived from a single `mutating()` marker, so a tool
can no longer be added to one and forgotten in the other.
## [1.0.0]
The first stable release. Cost control, a larger tool and skill surface, custom slash
commands, auto-loaded extensions, and a redesigned welcome interface, on top of the beta
line's agent loop, approval model, and safety guarantees.
### Added
- **Spend ceiling** ("maxSpendUsd" in config). Checked before each turn: past the limit the
model is never called, the turn is refused naming the ceiling, headless exits non-zero,
and it warns once at 80% of the limit. Unpriced models cannot be measured, so the ceiling
does not apply to them.
- **Cheaper subagent model** ("subagentModel" in config). "explore" subagents — search, not
reasoning — resolve against a configured cheaper model while "review" and "worker" keep the
parent's. "/cost" reports subagent spend separately, priced against the subagent's model id.
- **Twenty new built-in tools** (41 total) in a new "extra" tool set, across four families:
- line edits: insert_lines, delete_lines, replace_lines, append_file, prepend_file, count_lines
- filesystem: tree, file_info, find_files, recent_files, changed_files
- git (read-only, argv-spawned): git_log_file, git_diff_commits, git_show_file, git_current_branch, git_changed_in_ref
- code and environment: find_symbol, json_query, outline, read_symbol, env_info, count_tokens
- **Twenty new bundled skills** (29 total), including plan, docs, api-design, ci-cd, db,
docker, frontend, git-workflow, logging, optimize-sql, release, accessibility, data, i18n,
deps, onboarding, ux-copy, readme, incident, perf-frontend.
- **Ten new plugins**, all data. Safety refusals on by default — no-force-push, no-net-pipe,
no-root, no-env-write — and opt-in workflow plugins — no-main-commit, no-git-config,
confirm-delete, conventional-commit, tests-first, small-diffs.
- **Custom slash commands** from Markdown files in ".shiro/commands/" and
"~/.shiro-neko/commands/", with frontmatter "description"/"agent", "$ARGUMENTS" and
positional "$1", and shell substitution passed through the guard. A custom command can
never shadow a built-in.
- **Auto-loaded external extensions** from "~/.shiro-neko/{skills,tools,plugins}" and
".shiro/{skills,tools,plugins}". All data, never code: tools are bounded manifests (a shell
template through the guard, an HTTPS fetch, or a workspace read), plugins are refusal
manifests. Malformed files are reported and skipped, never fatal.
### Changed
- **Skills now live as Markdown files** in "src/skills-md/", embedded into the compiled binary
by Bun text imports, replacing the previous TypeScript string constants. A format test
enforces that each parses with valid frontmatter and a real body. The eleven pre-existing
skills were also deepened.
- **Welcome interface redesigned** into a structured dashboard: a session banner, a grouped
environment panel with attention-worthy facts coloured out of the quiet layer, and a meta
bar. The prompt input sits in a two-tone box with the agent and model row inside it and a
split footer beneath.
- **System prompt advanced** with a discrete failure-recovery loop, a delegation policy, and
compaction awareness.
### Fixed
- **Release workflow "dry_run" input is now honoured.** A manual dispatch publishes only when
it is unchecked; tag pushes always publish. Previously the input was declared but never read,
so a manual run could never publish regardless of its value.
- **Documentation drift** corrected across the tool count, the bundled-skill count, the plugin
defaults, and the README quickstart.
## [0.1.0-beta.5]
- A dead provider item no longer ends the turn: a 404 naming a missing item rewrites the
history inline and retries once.
- More tools (git_commit_message, git_branch, move_file, delete_file), the "protect" plugin,
the security/perf/migrate skills, the "/mcp add" wizard, and the farewell message.
## [0.1.0-beta.4]
- Compaction no longer stops the loop, and is bounded to keep the widest recent tool tail.
- The external registry for skills and plugins.
- Permission rules matched per command and path, replacing the per-tool list.
- apply_patch, web_fetch, and writable worker subagents.
## [0.1.0-beta.3]
- Fourteen built-in tools with gateable tool sets.
- Streaming reasoning display, the mid-turn prompt queue, multi_edit, list_dir, read-only git
tools, batch reads, @file completion, and interruptible commands.
## [0.1.0-beta.1]
- The core agent loop with SDK-enforced tool approvals, endpoint fallback, and retries.
- The initial tool set, Ink interface, agent variants, skills, plugins, per-project memory,
session persistence, subagents, MCP, and five-platform builds.
[1.0.0]: https://github.com/zakirkun/shiro-neko/releases/tag/v1.0.0