Releases: spectacular-voyage/kato
v0.2.10
v0.2.10 is a focused polish release: it tightens how Kato reports
daemon/web liveness, makes expired web auth fail closed instead of leaving
stale live data on screen, smooths out repeated Sessions-page create actions,
and makes the split root test flow easier to read and debug.
Primary changes:
- changed daemon/web liveness reporting so stale daemon heartbeat now renders
asunresponsiveinstead of still lookingrunning, andkato web status
now reports a definitively dead web process asstoppedwhile keeping the
last heartbeat only as diagnostic detail - updated the compact web header to match that liveness wording and removed the
separateHEARTBEATrow now that heartbeat freshness is folded into daemon
state - changed web auth-expiry handling so live/API polling treats
401as an
expired session, redirects the current tab to/login, and propagates that
expiry across sibling tabs viaBroadcastChannelwithlocalStorage
fallback - kept page-route auth behavior distinct from API behavior: page requests still
redirect to/login, while API/live routes now fail with401instead of
quietly continuing with stale rendered data - made the Sessions-page
New captureandNew recordingpopovers remember
the last submitted workspace in browser storage and reuse it as the default
next time, unless the current page filter already pins a workspace - kept the remembered Sessions workspace behavior conservative by ignoring
blank/stale stored ids and only updating the remembered default on actual
create submission, not on canceled popover browsing - improved the split root test workflow so
deno task testand
deno task test:coveragenow run throughscripts/run-root-test-slices.ts
with structured per-slice summaries plus a combined summary, while keeping
explicittest:parallel-safeandtest:enventrypoints available
Upgrade notes:
- if you were scraping human-readable CLI status text, update for the wording
change: stale daemon heartbeat is nowunresponsive, andkato web status
now saysstoppedwith optionallast heartbeatdiagnostics instead of
stale status; for automation, prefer JSON output over text parsing - expired web auth is now intentionally fail-closed across tabs; once one tab
detects expiry, sibling tabs should converge on/logininstead of keeping
stale live views open - Sessions create popovers now default to the last successfully used workspace
for that browser unless a page-level workspace filter is active
v0.2.9
v0.2.9 expands the browser-side operator workflow in two directions: richer
workspace labeling and a more durable, easier-to-scan Recordings page.
Primary changes:
- added optional workspace display labels that render as
<alias> (<displayName>)across the web UI when a meaningful label is set - added display-label entry during workspace registration from both the CLI and
the Workspaces page - added Workspaces-page editing for display labels plus per-workspace preferred
usernames, while keeping username persistence inkato-user-config.yaml - reformatted
kato workspace listto show clearer per-workspace blocks and
include display-label information - changed the Recordings page to show the latest state per output file instead
of expanding every recording cycle - persisted the last successful write time for each recording cycle so
Recordings recency survives daemon restarts and stale/live gaps instead of
depending entirely on live daemon state - added inline
[stop]controls for engaged recording rows and[re-arm]
controls for stopped rows on the Recordings page - polished Recordings rows so file, timestamps, workspace, and session metadata
render on separate lines with the filename de-emphasized - made Recordings session titles clickable alongside the short id and renamed
idle engaged rows toarmed for recordingwith[disarm]actions - sorted Recordings rows by most recent write, stop, or start activity instead
of grouping them by state first - made fresh web-created captures show as
recordingimmediately after the
initial snapshot write, even before daemon live-session state catches up - fixed a daemon/web metadata race that could make a freshly created capture
disappear from Sessions/Recordings until the next metadata reconciliation - made Recordings-page
Re-armreuse the exact saved file, fail fast if the
file is missing, and preserve write-policy denial as a distinct error - enforced single-writer-per-file behavior when starting or restarting a
recording, so an already-engaged writer on the same path is stopped first
Upgrade notes:
- the Recordings page is now a per-file status/control surface rather than a
cycle-history view; older cycles remain persisted but are not each rendered
as their own row - Recordings recency no longer depends on matching live daemon status; last
successful write times now keep per-file ordering stable across restarts Re-armis intentionally conservative: it reopens the exact saved file and
refuses to continue if that file no longer exists or no longer passes policy- capture behavior remains fresh-file-only and does not reuse existing output
files
v0.2.8
v0.2.8 adds the first browser-based workflow for starting and stopping
workspace-scoped recordings from the Sessions page.
Primary changes:
- added
New captureandNew recordingactions on the Sessions page with a
workspace chooser popover - made
New recordingcreate the output file immediately, including
frontmatter when enabled, while conversation content begins on the next event - added engaged-recording summaries on Sessions rows with deep links to the
matching workspace and Recordings entry - added inline
[stop]controls for engaged recordings plus a session-level
[stop all]control - improved Sessions-page UX with clearer operator labels, button tooltips, and
pending stop feedback
Upgrade notes:
- Sessions now exposes stop controls directly; stopping from the Sessions page
only affects engaged recordings - stopped recordings remain available through the Recordings page history view
v0.2.7
v0.2.7 is a small but useful ergonomics release: faster local web lifecycle
control, safer workspace bootstrap for shared repos, and a first pass at
website/brand groundwork.
Primary changes:
- added
kato web restartso the local web console can be bounced with one
command - changed
kato workspace registerto restart the daemon automatically when
registration expandsallowedWriteRoots, with--no-restartavailable to
opt out - fixed the macOS-reported
workspace register alias=<alias>compatibility
bug by recognizing barealias=...tokens instead of treating them as
positional arguments - changed
kato workspace initto generate and writeworkspaceId
immediately, reducing first-register churn in shared repos - made Summary metrics clickable so Sessions, Recordings, and Workspaces are
one click away - added initial website/brand groundwork, including static logo/wordmark
assets, asset helpers/redirects, and new planning/task-template docs for
site work
Upgrade notes:
- if you previously relied on registering a workspace without restarting the
daemon, usekato workspace register --no-restartto preserve that behavior - new workspaces initialized with
kato workspace initnow get a committed
workspaceIdimmediately; existing configs without one still backfill on
first register kato web restartis now the quickest way to reload the local web operator
console after config or code changes
Acknowledgements:
- this cut combined CLI/runtime tightening with website planning and continued
iteration using Codex and CodeRabbit
v0.2.6
v0.2.6 turns the new binary distribution pipeline into a usable public release
path.
Primary changes:
- switched the npm wrapper package to
@spectacular-voyage/kato - added native-runner npm install smoke on Linux, Windows, macOS x64, and
macOS arm64 - fixed packaged Windows
kato startso the daemon launcher no longer passes
an empty PowerShellArgumentList - added GitHub Release asset upload/update support to the manual release
workflow so per-platform archives and checksums ship alongside npm packages
Upgrade notes:
- install or update with
npm install -g @spectacular-voyage/kato npx @spectacular-voyage/kato@latest ...is now the zero-install path for
one-off use- Windows users should prefer
v0.2.6or later for packagedkato start
Acknowledgements:
- release hardening in this cut came from real Windows/npm smoke testing plus
continued Codex and CodeRabbit iteration on the packaging flow
v0.2.3
Privacy-and-maintenance release that separates live session ingestion from
persisted twin history, moves twin management out of primary navigation, and
hardens the new web/runtime flows around snippet reveal and cleanup.
Highlights
Sessionsis now the live provider-session inventory, while persisted twin
troubleshooting and cleanup now live underMaintenance.- The top-level
Twinspage is gone; twin status, create/update actions, and
per-row delete now live on theMaintenancepage instead. - Persisted metadata no longer stores snippets. Older sessions now use
on-demandshow snippetrecovery, with revealed snippets cached locally for
that operator afterward. Recordingsnow participates in the same snippet-reveal flow, so recording
rows can recover snippets without reintroducing durable snippet storage.kato clean --twinsnow names the cleanup surface directly and supports an
explicit--delete-metadataprivacy option when twin metadata files should
be removed too.
Notable Behavior Updates
- Live provider ingestion and command detection now remain independent from
whether Kato is persisting twin history for that provider/session. - Manual twin actions now mean exactly what they say:
create twinreplays from provider source start and writes a full twinupdate twinadvances an existing twin, or falls back to create if the
twin is missing
- Full-history
captureandexportcan now replay provider source on demand
when no twin exists, instead of depending on persisted twin history. - Maintenance twin rows now derive state from actual persisted twin condition
(current,behind source,no twin) instead of from reused Sessions-page
heuristics. - Snippet reveal failures now degrade cleanly to
snippet unavailableinstead
of surfacing replay/read errors through the web UI. - Summary wording now reflects twin generation semantics more explicitly, using
labels such asgenerating,not generating, and
No provider sessions are currently generating twins.
Upgrade Notes
- Config keys were renamed:
globalAutoGenerateSnapshots->globalAutoGenerateTwinsproviderAutoGenerateSnapshots->providerAutoGenerateTwins
- Old snapshot-generation keys are not supported for compatibility. Daemon
startup will fail fast until the config is renamed. - Web navigation changed:
- use
Sessionsfor routine live session inventory - use
Maintenancefor twin cleanup and troubleshooting
- use
- Cleanup naming changed:
- CLI
--sessionscleanup language is replaced by--twins - default twin cleanup preserves metadata and rewrites it to canonical
no-twin state - use
--delete-metadatawhen privacy cleanup should also remove matching
metadata files
- CLI
- Snippets are no longer persisted in session metadata. Expect older rows to
showshow snippetuntil an operator explicitly reveals the label.
Release Packaging
- Source-only release (
v0.2.3). - Kato Web remains a local Deno/Fresh app managed through
kato web .... - Prebuilt binaries remain deferred to the distribution hardening track.
v0.2.2 Kato Web
Web-and-observability release that adds a local authenticated dashboard,
expands operator workflows, and hardens CI/testing around the larger surface
area.
Highlights
- New Kato Web local dashboard with authenticated Summary, Ingestion,
Sessions, Recordings, Workspaces, Logs, Settings, and Maintenance pages. - New
kato weblifecycle commands:init,start,stop, andstatus,
with explicit config bootstrap and startup acknowledgement handling. - Live refresh now spans the main web surfaces, so daemon, session, recording,
workspace, and log state updates without full-page reloads. - User and workspace management are broader: settings now cover default
username, workspace-specific username mappings, andexclude-me, while
workspace registration can omit--aliasand default to the folder name. - Maintenance and observability are stronger: filtered operational/security log
views, web-aware status reporting, recording activity rollups, and persisted
session cleanup support even while the daemon is running. - Test and CI coverage expanded significantly with more direct command/parser/
runtime tests, parallel test execution, coverage artifact generation, and
added CodeQL/OSV automation.
Notable Behavior Updates
- Kato Web is explicitly opt-in and credentialed: run
kato web initbefore
kato web start, and provide credentials during init. - Authenticated web pages preserve existing query/filter semantics while
polling in the background instead of switching to client-owned mutation
flows. kato statusnow surfaces web runstate/version alongside daemon, workspace,
memory, recent-error, and session data.- The UI now distinguishes active ingestion, discovered session inventory, and
recording activity more clearly across Summary, Ingestion, Sessions, and
Recordings. clean --sessionsno longer requires stopping the daemon first.
v0.2.1
- Username-aware output templating now supports
{username}in both
filenameTemplateanddefaultOutputDir. - New workspace toggle
markdownFrontmatter.addParticipantUsernameToHeadingslets user-message
headings use the resolved username instead of genericUser. - Frontmatter
participantsnow emit plain usernames for user entries (for
exampledjradon) instead ofuser.djradon. - Windows daemon startup is more reliable via detached
Start-Processlaunch
semantics. - Status marks stale daemons faster by tightening heartbeat staleness detection
from 30s to 11s. - Fatal daemon startup/runtime failures now emit clearer critical diagnostics to
improve troubleshooting.
Initial Release
First release, delivered as a source-only cut.
Highlights
- CLI/daemon split is now in place, with cleaner lifecycle commands (
start,stop,restart,status) and more reliable runtime boundaries. - In-chat controls require workspace specification (via alias):
::capture-<alias>,::record-<alias>,::stop, and::export-<alias>. - Workspace-driven recording flow is established with alias registration and customizable workspace config at
<workspace>/.kato-workspace-config.yaml. - Export pipeline supports both markdown (with richer frontmatter) and JSONL for event-level workflows.
- Status and runtime observability are stronger, including surfaced recent errors and better stale-state/control healing behavior.
- Provider/session ingestion and recording durability were hardened across this release line, including snapshot/twin handling and broad test coverage improvements.
Notable Behavior Updates
- Runtime defaults to
~/.kato/daemon(global-first); useKATO_RUNTIME_DIRto opt into a specific runtime location. - No implicit
./.katofallback for runtime state.
Release Packaging
- Source-only release (
v0.2.0). - Prebuilt binaries are intentionally deferred to a follow-up hardening track.