Changelog
All notable changes to Kward will be documented in this file.
[Unreleased]
[0.71.0] - 2026-06-21
Fixed
- Fixed generated YARD guide links so doc-to-doc Markdown links point at the generated
file.*.htmlpages. - Fixed web-tool results with BINARY/ASCII-8BIT response bodies so RPC tool events and TUI rendering receive UTF-8-safe content.
Changed
- Changed transcript rendering so assistant, reasoning, and tool output starts on the same line as its label.
- Changed the interactive startup screen to an info block.”
- Changed shell command output capture to allow larger raw output for Kward's own compactor, preserving stdout/stderr structure and test failure summaries before model-context trimming.
- Tightened the built-in system prompt wording to reduce repeated instruction tokens.
- Changed generated runtime system prompts to use a stable timestamp anchor so time-based persona modifiers do not churn provider cache prefixes each turn.
- Changed tool schema properties to be emitted in deterministic key order for more stable provider request payloads.
- Changed large source-file reads to return an outline plus a short preview before requiring offset/limit continuation.
- Changed large search and fetched-content tool results to preserve file, line, URL, and heading anchors during model-context compaction.
- Changed large tool results to be compacted before they enter model context while preserving full originals in session tool-execution records, reusing existing artifact ids for repeated outputs, avoiding storage for verbatim outputs, preserving short errors exactly, reverting automatically when compaction would not reduce context, and teaching conversation compaction to preserve tool artifact ids.
- Changed model context-window resolution to prefer cached OpenRouter metadata, infer matching provider models from that metadata when possible, and use conservative fallbacks for unknown selected models.
- Updated the authentication guide to describe model picker selection and OpenRouter model cache refresh/list commands.
Removed
- Removed the
banner.enabledconfig setting and/settingstoggle for hiding the interactive startup screen. - Removed the generated table of contents and source-checkout launch snippet from the RPC protocol guide.
Added
- Added a Sessions guide covering saved sessions, cloning, forking, rewinding, tree navigation, compaction, and exports.
- Added Agent Tools documentation pages covering workspace tools, context tools, and token-saving tool-output behavior.
- Added an API reference overview page and API docs navigation dropdown for generated Ruby indexes and key namespaces.
- Added Turbolinks-style navigation to the generated documentation site for same-origin HTML links.
- Added a
docs:checkRake task and HTMLProofer development dependency for checking generated documentation links, images, and scripts. - Added a
docs:serveRake task and WEBrick development dependency for previewing the built YARD documentation site locally with automatic rebuilds. - Added optional
compactiontelemetry logging for tool-output context savings. - Added a
summarize_file_structuretool for compact source-file outlines before reading full files. - Added a
retrieve_tool_outputtool for inspecting original outputs that were compacted out of model context. - Added
kward openrouter refreshandkward openrouter listfor caching key-scoped text-capable OpenRouter models in the Kward cache directory. - Added
/forkfor creating a new session from an earlier prompt and pre-filling that prompt for editing. - Added
fin the/sessionspicker to open the fork prompt selector for the selected session. - Added
/rename <name>for renaming the current interactive session. - Added
rin the/sessionspicker to rename the selected session without closing the picker. - Added
cin the/sessionspicker to clone the selected session and open the new clone, with a cloning spinner while it runs. - Added
d din the/sessionspicker to delete the selected session after an inline confirmation.
[0.70.0] - 2026-06-19
Added
- Added
/rewindfor revisiting earlier user prompts and continuing from there as a branch, while/treeremains the advanced full session tree navigator.
Changed
- Changed TUI selection search to start only after pressing
/, hiding the composer cursor until search mode is active and supporting shell-style editing keys while searching. - Changed the
/sessionspicker to show right-aligned relative timestamps like/rewind. - Changed TUI list navigation to keep long
/sessionsand/treepickers centered while scrolling, and removed wrap-around at list edges. - Changed the saved session picker slash command to
/sessions, with/resumekept as an alias.
Fixed
- Fixed overlay open/close rendering so the interactive composer stays visible instead of briefly blinking away.
- Fixed interactive session diff totals to show the net workspace diff instead of counting repeated edits to the same lines multiple times.
- Fixed
/sessionspicker cancellation so Escape closes smoothly without a blink, while keeping the loading spinner visible as saved sessions are loaded. - Fixed root-prompt session tree navigation so it no longer persists an empty active branch that makes cloned sessions resume with a blank transcript.
- Fixed
/resumesession picker entries to show cloned session ancestry as a tree. - Made
/treebranch indentation more visible in the terminal session picker. - Fixed
Encoding::CompatibilityErrorcrash during compaction when tool results contained ASCII-8BIT (BINARY) strings from HTTP response bodies or shell output. Tool content is now normalized to UTF-8 on append.
[0.69.1] - 2026-06-18
Fixed
- Fixed
/treesession rendering to tolerate malformed cyclic tree records instead of overflowing the Ruby stack.
[0.69.0] - 2026-06-17
Added
- Added a
docs:buildRake task for building the YARD documentation site. - Reworked core guide documentation around developer workflows, setup, authentication, memory, personas, extensibility, plugins, web search, and code search.
- Added
fetch_contentandfetch_rawweb tools for reading specific URLs after search discovery. - Added
enforce_workspace_agents_fileconfig support for forcing full workspaceAGENTS.mdinjection. - Added config-directory
PRINCIPLES.mdas the preferred global principles file, withAGENTS.mdkept as a legacy alias. - Added
kward syspromptfor inspecting the effective system prompt, with--rawfor unannotated prompt content.
Changed
- Changed workspace
AGENTS.mdhandling to inject a compact read-when-relevant instruction by default instead of the full file. - Changed interactive runtime command/status messages to use a
Runtime>transcript label instead of the assistant label. - Changed terminal tool transcript rendering to show a single
Tool>block containing the tool invocation summary and result summary. - Changed transcript label colors to a quieter palette, with failed tool calls rendered in red.
- Separated conversation system prompt state from durable transcript messages; provider request context still includes the current system prompt on every model request.
- Persisted system prompt snapshots as session audit metadata when the prompt changes, without adding them to transcript messages.
Fixed
- Fixed custom
ask_user_questionanswers so trailing spaces remain visible while typing. - Fixed inferred soft memory learning to canonicalize user preferences and avoid storing near-duplicate memories with slightly different wording.
- Fixed in-flight steering messages so they appear in the interactive transcript as
You>entries. - Fixed interactive plugin slash commands and OAuth login so they show the running spinner while executing.
- Fixed
/reloadso terminal plugin footers use the newly loaded plugin renderer without restarting Kward. - Fixed Codex GPT-5.5 RPC model metadata to report a 400k context window instead of the upstream OpenAI API context window.
- Fixed a bug that prevented proper context window calculation whenever an image is attached to a session
- Fixed persona selection so workspace and model personas override the default base persona instead of appending duplicate base personas.
- Fixed Codex Responses streaming to preserve ordered response items, replay assistant phase metadata, and keep commentary/tool-planning text out of visible assistant output.
- Fixed Codex multi-turn requests with
store: falseby not replaying server-assigned response item ids. - Fixed RPC session listing to include each session's persisted provider, model, and reasoning effort so pickers can show session-specific runtime state.
[0.68.0] - 2026-06-14
In this release, most changes are under the hood, as it included massive refactors to have an even more robust way forward.
Added
- Added Anthropic Claude Pro/Max subscription provider support with OAuth login, static Claude model choices, and Anthropic Messages streaming.
Changed
- Changed known context windows and reasoning effort choices to use provider/model-specific metadata for Codex, OpenRouter, Copilot, and Anthropic models.
- Changed the default Anthropic model to Claude Sonnet 4.6 and expanded direct Anthropic model choices to include newer Claude Opus/Sonnet releases.
- Changed resumed sessions to restore the session's last-used provider, model, and reasoning effort without rewriting default config.
- Documented the tool contract: schemas define strict generated/returned payloads, while runtime accepts tolerant incoming tool-call input for compatibility.
- Expanded RDoc coverage past 50% across message compatibility, tool-call normalization, session persistence, session tree helpers, model/client boundaries, config paths, workspace operations, telemetry, RPC, plugins, memory, auth, compaction, search internals, CLI mixins, and prompt interface components.
Fixed
- Fixed session tree editing and RPC fork text so prompt-template turns use the original visible slash command instead of expanded model content.
[0.67.1] - 2026-06-14
Fixed
- Fixed RPC session listing so it no longer deletes the active empty session file while UI clients are starting a first turn.
[0.67.0] - 2026-06-13
Added
- Added optional startup resume for the last active session in each workspace through
sessions.auto_resume: true, including immediate restored transcript/persona data for RPC clients. - Added
tools.workspace_guardrails: falseconfig support for allowing file tools to access paths outside the active workspace. - Added
banner.enabled: falseconfig support for hiding the interactive terminal banner. - Added colored CLI help/version commands, command-specific help, and stricter command precedence over one-shot prompts.
- Added
--working-directory PATHas a global option for running any CLI mode from another workspace. - Added
kward initfor installing the starter pack;--install-starter-packremains as a compatibility alias. - Added
kward doctorto check local config, workspace, auth hints, Pan credentials, and writable directories. - Added
--as a prompt delimiter so option-like text can be sent as a one-shot prompt. - Added
kward auth statusandkward auth logoutfor checking and clearing saved credentials without printing secrets. - Added
/reloadand RPC runtime reload support for reloading installed plugins without restarting Kward. - Added Session Tree support with a CLI
/treecommand plus RPC persisted entry IDs, labels, label timestamps, and branch navigation. - Added RPC
ui/footernotifications for Kward plugin footers. - Added
!shell commands in the interactive CLI composer. - Added the active persona label to RPC
runtime/stateresponses.
Changed
- Expanded the interactive
/settingscommand into categorized settings for model, accounts, memory, interface, tools, compaction, personalization, logging, and advanced config info. - Changed RPC session deletion to use the OS trash/recycle bin when available before falling back to permanent file deletion.
- Changed automatic session naming to persist the first visible user turn, keeping slash prompt names unexpanded while still saving expanded prompt content.
- Changed Pan mode to start with the
kward pancommand;--pan-moderemains as a compatibility alias. - Changed memory retrieval and listing to use a global core, workspace core, workspace soft hierarchy, and added
/memory relaxfor downgrading global core memories to the current workspace. - Changed session tree rendering to match Pi's active-path-first branch display, markers, tool rows, and connector prefixes.
- Changed session tree navigation so all persisted entry points are selectable without automatically running anything.
Fixed
- Fixed RPC session deletion so empty unnamed sessions are explicitly deleted instead of being consumed by unused-session cleanup first.
- Fixed the TUI
/treeselector to start on the current tree position, or the last item for a fresh tree. - Fixed the normal session list/resume picker to stay in recent modification-time order, delete empty unnamed sessions, return the full list by default, and avoid test-created session pollution.
- Fixed RPC model selection to accept lowercase provider IDs from UI clients.
- Fixed cloned sessions to keep the current session name after renaming.
Removed
- Removed the obsolete
/crewcommand reservation and unreleased RPC compatibility aliases.
[0.66.0] - 2026-06-12 - Codename: Order
Added
- Initial public release.
- Prepare RubyGems packaging for the initial public release.