Skip to content

Changelog

0.13.21 — Capability catalog unique-match fix

  • Natural-language catalog results fixed. capability_catalog now returns a uniquely routed tool or skill match directly instead of incorrectly reporting no matching capabilities after a literal full-query fallback.

0.13.20 — DeepSeek V4.1 Flash and typo-tolerant capability routing

  • DeepSeek V4.1 Flash added to the default catalog. The new deepseek-v4.1-flash model accepts text and image input with a 512K context window and 128K max tokens, using the deepseek thinking format.
  • DeepSeek V4 Pro now supports vision. deepseek-v4-pro accepts text and image input and its max tokens are raised to 128K.
  • Typo-tolerant capability routing. A tool or skill name one character off from the catalog (e.g. inercomintercom) now scores as an exact match, so a uniquely identifiable typo auto-activates the tool instead of returning a hint.

0.13.19 — Conditional web-search default and Brave onboarding removal

  • Conditional web-search default. With an active TokenIn account, default search uses TokenIn with DuckDuckGo fallback; without one, it uses keyless DuckDuckGo. TokenIn search requests now time out after 10 seconds and fall back instead of hanging.
  • Brave web-agent onboarding removed. The web-agent-onboarding extension, its /setup-web-search flow, and its docs are gone; existing manually configured Brave keys in settings.json are still honored.
  • Web agent guide updated. The research guide now documents the conditional TokenIn/DuckDuckGo default and the remaining key-based backends.

0.13.18 — Skill cleanup and Herdr pane launch fix

  • Unused bundled skills removed. Removed imagegen-frontend-mobile, imagegen-frontend-web, implanger, output, planger, and workflow.
  • Herdr pane launch command fixed. The Selesai binary is passed directly to herdr pane run instead of receiving literal shell quotes.

0.13.17 — Pi v0.85.1 sync and vendored-extension upgrades

  • Pi v0.85.1 upstream sync. Ported the coding-agent source from v0.84.4 to v0.85.1 per file: tool ctx.cwd handling, proxy/CONNECT tunneling, skills with Bash-only tools, session import/fork/share fixes, EXIF orientation, musl fd/ripgrep downloads, model catalog updates, per-turn thinking effort, prompt-cache TTL, compaction abort, signal exit codes, fullscreen transcript controls, and more.
  • Vendored extension upgrades. pi-subagents 0.64.0 → 0.66.0, pi-intercom 0.12.1 → 0.13.0, pi-zentui 0.22.3 → 0.23.0, pi-hermes-memory 0.9.7 → 0.9.8, with all Selesai fork deltas re-applied.

0.13.16 — Gateway inline-skill routing and TokenIn search fixes

  • Capability gateway inline-skill routing. Skills expanded inline via $skill references are no longer re-recommended through capability_skill_show.
  • TokenIn search backend URL. A custom baseUrl ending in /v1 no longer produces a doubled /v1/v1/search/… path, and accounts with a blank apiKey are treated as unconfigured.

0.13.15 — Progressive capability gateway and stale-session hardening

  • Progressive capability gateway. Optional extension tools and skills stay out of the default model context while remaining discoverable through capability_catalog, capability_discover, and capability_skill_show. Built-in tools are unchanged, and the gateway can be disabled with SELESAI_CAPABILITY_GATEWAY=0.
  • Capability catalog metadata. Disabled skills recover their frontmatter descriptions, and catalog results are no longer capped at 20 entries.
  • Zentui stale-session hardening. Timer-driven working-line updates fail open when a captured extension context becomes stale after session replacement or reload.

0.13.13 — Zentui Thinking (Experimental), pi-subagents 0.64.0, design skills reorganized

  • Zentui Thinking (Experimental). The bundled pi-zentui extension adds an opt-in private thinking renderer with three modes — rail (every parsed label in each native contiguous thinking run), tree (latest five labels per run), and streaming (host-rendered final rows with folding and timing). Disabled by default; configure via /zentui or components.thinkingSteps in zentui.json. Active Streaming can switch live to Rail or Tree, and Rail and Tree can switch live between each other; first enable, re-enable after a live disable, and entering Streaming from a structural mode require a Pi restart. Fail-open: startup failures, missing constructors, incompatible private child layouts, parser limits, theme/render/width errors, and displaced patch ownership all fall back to complete native thinking. Tested against Pi 0.80.5, 0.82.1, 0.83.0, 0.84.0, and 0.84.4.
  • pi-subagents ported to upstream v0.64.0. Watchdog launch rules (subagents.watchdog.rules) with per-role model allow/deny globs, a read-only watchdog_diff tool, configurable child review cadence, WATCHDOG.md reviewer instructions, watchdog warnings surfaced in parent results and acceptance evidence, and quieter workflow/async status. Unsupported watchdog settings that never took effect are now rejected, and watchdog auto-follow was removed. The fork-local async-status repair-write hardening is preserved.
  • Bundled design skills reorganized. The design skills now ship as a single canonical copy per skill: brutalist, minimalist, output, redesign, soft, stitch, taste, and taste-v1 replace the previous duplicate *-ui / *-skill / *-v1 variants, and the category/license frontmatter fields were dropped from the remaining skills.

0.13.12 — Auto-continue after output token limit

  • Responses cut off by the output token limit now continue automatically. When the model stops because it reached the maximum output token limit (stopReason: "length") mid-response, Selesai queues a follow-up “continue from where you left off” message and re-prompts the model instead of stopping with the “response may be incomplete” error. Truncated tool calls were already re-issued by the agent loop; this covers truncated text. The continuation is capped at 3 consecutive length stops (the counter resets on any normal stop) so a model that keeps hitting the cap doesn’t loop forever, and length stops caused by context pressure still trigger compaction first.

0.13.11 — RPC get_skills command, working loader parity, herdr-agent-state extension

  • RPC get_skills command. New RPC command returning the resolved skill catalog (one entry per discovered skill with its effective enablement) plus the raw merged global + project settings.skills patterns, so hosts can mirror the TUI /skills toggle surface without reimplementing isEnabledByOverrides semantics. Exposed on the typed client as RpcClient.getSkills().
  • RPC working loader parity. ctx.ui.setWorkingMessage(), setWorkingVisible(), and setWorkingIndicator() now emit a fire-and-forget extension_ui_request {method: "working"} (message/visible/frames/intervalMs patch fields) instead of no-oping in RPC mode, so the host can render the streaming loader row.
  • herdr-agent-state extension. New bundled extension that reports session/lifecycle state (working/blocked/idle) plus session references to the Herdr pane over HERDR_SOCKET_PATH. Instance state lives inside the factory so successor sessions after /new, fork, resume, or reload keep reporting; only the monotonic reportSeq stays module-level to satisfy Herdr’s per-source sequence guard.

Fixed

  • handoff-new no longer fails session creation. The setup callback read the session name from the (already replaced) extension ctx, throwing the stale-ctx error and aborting newSession with “Failed to create session”. The name is now captured before newSession() and passed into setup as a plain value; the session name still carries over as before.

0.13.10 — RPC rev-3 commands, handoff-new session name, builtin-only subagents

  • RPC rev-3 parity batch. New RPC commands for headless hosts: navigate_tree (session-tree leaf navigation with summarization/instructions options), list_sessions (session discovery across cwd or all scopes), rename_session, delete_session (trash-first, rejects the active session), and set_session_models (ephemeral scoped-model mutation). New option fields: prompt.queueWhileCompacting (buffer prompts during compaction), cycle_model.direction (forward|backward), get_available_models.refresh (on-demand model catalog refresh), and export_html.themeName / share_gist.themeName theme passthrough.
  • handoff-new carries the session name. The new session started by /handoff-new or RPC handoff_new now inherits the current session’s name instead of starting unnamed.
  • pi-subagents ships only built-in agents. The bundled pi-subagents extension now ships only the built-in agents (advisor, delegate, oracle, researcher, reviewer, scout, worker) and drops the custom agent definitions plus the Claude Code / Codex / Cursor agent adapters, so subagent runs are compatible in any host without external CLIs.

0.13.9 — Auto session naming only for unnamed sessions

  • The bundled auto-session-name extension now names a session only when it has no name yet. If the session already has a name (set manually with /name or generated earlier), naming is skipped entirely — no extra LLM call and no clobbering of your existing name. Unnamed sessions are still auto-named as before.

0.13.8 — Selesai-native unlazy skill, ponytail test command

  • The bundled unlazy skill is now Selesai-native: its Claude Code / Codex specific parts were removed (Stop-hook installer and scripts, --bind session binding, Codex/Claude launch adapters), and parallel dispatch now uses Selesai’s native async subagent runs.
  • The ponytail extension’s test script now runs vitest run test/; the node builtin test run stays available as test:node.

0.13.7 — pi-intercom session alias command

  • Added a /alias command to pi-intercom: set the current session alias from the CLI with /alias <name> (or /alias menu in the TUI to prompt for one), so broker peers see the new session identity immediately instead of relying only on the auto-assigned name.

0.13.6 — Packaging fix for the web-agent YouTube reader

  • Fixed the bundled pi-web-agent YouTube reader dependency: the published @selesai/code package now includes the root youtube-caption-extractor runtime dependency, so pasting a YouTube URL loads the transcript in source checkouts and global npm installs instead of failing with Cannot find module 'youtube-caption-extractor'.

0.13.5 — Packaging fixes for web-agent PDF loading and zentui startup

  • Fixed the bundled pi-web-agent package wiring: the published @selesai/code package now includes the root unpdf runtime dependency, so the PDF reader loads correctly in source checkouts and global npm installs instead of failing startup with Cannot find module 'unpdf'.
  • Fixed the bundled pi-zentui packaging path: Zentui no longer imports core/usage-totals.ts through a relative path that breaks from dist/extensions, so installed CLIs no longer fail startup with Cannot find module '../../../../core/usage-totals.ts'.

0.13.4 — Web-agent search expansion, subagents 0.60, cost reconciliation fix

  • Upgraded the bundled pi-web-agent to 1.10.0: added You.com, Exa, and Tavily search backends, optional search fanout across configured providers with dedupe and cross-provider agreement ranking, a keyless Tavily fallback when DuckDuckGo is bot-blocked, DuckDuckGo hardening (browser headers and one retry), direct GitHub/PDF/YouTube readers, URL canonicalization, and a model tool result that always carries the full findings/sources/caveats regardless of terminal presentation.
  • Upgraded the bundled pi-subagents to 0.60.0: subagent({ action: "list", capabilities: true }) returns a compact capability catalog, fork-context children reuse prompt caches, timeout-recovery evidence is surfaced in async status and subagent_wait completions, runs.lanes plans render as workflow-graph stages, and runs.host rejects per-step cwd with a hint.
  • Fixed cost reconciliation keying: streamed responses repeat the response id across chunks and carry tool-call ids, so the wrapper now captures every id and message_end consumes only the one matching the finalized message’s responseId.
  • Released pi-intercom 0.12.1: during an inbound-ask turn a non-reply send to a different target is refused, and the toolVisibility setting was removed (obsolete keys are ignored).
  • Added GLM-5.3 to the default model catalog and upgraded glm-5.3-flash to text+image input with a full thinking map.

0.13.3 — Token-In key rotation and live cost reconciliation

  • Added multi-key auto-failover to Token-In: the tokenin-onboarding extension now registers a tokenin provider whose streamSimple automatically rotates to an alternative saved account when the active key hits a 401, 429, or budget/quota error. Failed keys go on a 5-minute cooldown before being retried, and the newly active credential is persisted to both tokenin-auth.json and auth.json.
  • Changed cost reconciliation to replace the finalized assistant usage.cost.total with the provider-reported billed cost before the message is persisted. The fetch wrapper now finishes capture before the provider SDK finalizes the message, so message_end applies the reconciled total directly instead of only recording a custom session entry; providers whose payloads carry no cost keep their rate-card estimate.
  • Updated default model catalog reasoning maps: added thinkingLevelMap entries across bundled defaults and enabled reasoning on Qwen3.8 27B and Gemini 3.7 Flash so thinking budgets map correctly.

0.13.2 — Rewind submodule support, Herdr status bridge cleanup

  • Added submodule support to pi-rewind-hook: exact rewind now snapshots gitlink commits and checks out target submodule commits, with safety checks — submodule paths must stay unchanged, worktrees must be clean and initialized, and target commits must be available locally. Unsupported submodule states (dirty, uninitialized, added/removed paths, nested submodules) are refused with a clear error instead of being reported as exact restores.
  • Fixed retention sweep races: the rewind store ref is now updated with a compare-and-swap and retries, so concurrent sessions adding snapshots mid-sweep are preserved; the startup sweep is reused across session replacement instead of racing a second sweep.
  • Changed the Herdr status bridge in pi-subagents to stop passing --agent pi / --applies-to-source herdr:pi; state labels are reported under the pi-subagents:herdr source directly.
  • Changed pi-rewind-hook packaging to declare @selesai/code as a peer dependency (was devDependency) and bumped it to 1.8.6.

0.13.1 — Config-dir hardening, session-scoped subagent artifacts, workflow skill rewrite

  • Fixed pi-hermes-memory config-dir resolution: the bundled memory extension no longer honors the upstream PI_CODING_AGENT_DIR env var, which could silently point memory at ~/.pi/agent while the host reads ~/.selesai/agent. Memory now always routes through the host agent-dir resolver.
  • Changed subagent artifact storage to default to the session directory instead of the project checkout (.pi-subagents/), so delegated runs no longer pollute the working tree.
  • Changed the builtin reviewer agent to return its report normally instead of forcing a review.md artifact.
  • Added launch-directory preflight to foreground subagent runs, matching background runs: unsafe cwd values are rejected before children start.
  • Rewrote the bundled workflow skill as delegation-first orchestration: subtask→agent mapping, workflowScript examples for single/uncertain/parallel work, and the parent as coordinator/reviewer.
  • Fixed startup logo alignment in the interactive TUI so the gradient renders evenly.

0.13.0 — Sub-cent cost display

  • Fixed cost labels rounding small per-call costs to $0.000: the footer, zentui footer, and usage popup now format costs adaptively (3 decimals at $1+, 4 decimals at $0.01+, 6 decimals below), so gateway-reconciled costs like $0.000336 are visible.

0.12.0 — Token-In usage, terminal capability overrides, and pi 0.84.4 ports

  • Added /tokenin usage: the tokenin-onboarding extension now queries the LiteLLM /key/info endpoint with the active Token-In token and shows a boxed spend/budget/remaining/reset display with a progress bar.
  • Added terminal capability overrides: new terminal.images ("kitty", "iterm2", "auto", or false), terminal.trueColor, and terminal.hyperlinks settings pin terminal capabilities instead of relying on auto-detection.
  • Added fullscreenCopyOnSelect (default true) with a /settings toggle: automatically copy selected text in fullscreen mode; disable to copy selections with Ctrl+X.
  • Added ui_prompt_start / ui_prompt_end extension events so extensions can observe when the agent starts and stops waiting on a blocking UI prompt (select, confirm, input, editor, custom).
  • Added llama.cpp router autoload support: unloaded preset models are selectable when the router has models_autoload enabled, loading on first use.
  • Added the RPC clear_queue command for dropping pending steering/follow-up messages.
  • Changed custom-message ordering during streaming: context-only custom messages are flushed at turn end (after tool results) instead of landing between a tool call and its result.
  • Changed auto-compaction to run before the next assistant response when the context threshold is hit, keeping long conversations inside the model window.
  • Changed scoped model lists (--models) to include the persisted default model and register it in enabledModels.
  • Fixed the footer’s available-provider count not refreshing immediately after switching models in the model selector.
  • Fixed summarization responses that hit the token cap being persisted as session checkpoints (partial summaries are now treated as failures).
  • Ported pi 0.84.4 runtime changes: agent-session ordering/compaction/model-scope, terminal capability and fullscreen copy settings, extension UI-prompt events, llama router autoload, RPC clear_queue, and Windows taskkill via the trusted System32 path.

0.11.0 — Auto session naming, cost reconciliation, and bundled tool display

  • Added auto session naming: the session is named on every user message using the currently selected model. Only user-message history is sent (no tool results, assistant replies, or thinking), output is capped at 10 tokens with a 5-word name limit, and the call runs in the background so it never delays your message. Thinking is explicitly disabled for gateways that ignore the standard thinking: {type:"disabled"} field.
  • Added cost reconciliation: real billed costs reported by gateways (LiteLLM x-litellm-response-cost header, OpenRouter usage.cost/total_cost) are recorded as session entries, and the zentui footer prefers these authoritative amounts over rate-card estimates.
  • Added tool display as a bundled extension: compact OpenCode-style tool rendering, diff visualization, output truncation, a native user message box, and the /tool-display command with presets.
  • Changed read-only tool bootstrap: grep, find, and ls are registered only when not already owned by another extension, so boxed renderers are no longer discarded on startup.
  • Changed zentui user messages to use the accent color, and the footer now refreshes once after settle so late cost reconciliation is picked up.

0.10.2 — Startup banner, skill categories, and theme loading fix

  • Added a startup brand banner in the interactive TUI: an ASCII logo followed by boxed listings of loaded skills (grouped by category) and active tools, dismissed automatically on the first user message.
  • Skills can now declare a category frontmatter field; the startup skills box labels each skill with its category (e.g. [design] brandkit).
  • Changed quietStartup: it no longer hides the brand banner — only the keybinding help and the loaded-resources listing. The logo always appears.
  • Fixed theme loading: bundled themes now load directly from the installed package instead of being copied into ~/.selesai/agent/themes, eliminating duplicate-theme name collisions on startup. Stale copies left by older releases are removed only when byte-identical to the bundled files, so user-edited themes survive.

0.10.1 — Vision caption model picker fix

  • Fixed the “Vision caption model” picker in /settings: selecting a model (or off) now updates the displayed value and closes the submenu correctly. Previously the selection was saved to settings.json but the settings row kept showing the old model, so the change appeared to have no effect.

0.10.0 — Zentui TUI, TPS tracker, and new defaults

  • Added the bundled pi-zentui extension: a Starship-inspired statusline, Opencode-style editor and user-message surfaces, working-line takeover, and a hidden zero-row footer option. Editor, user messages, working line, and selector borders have independent enabled fields; the footer uses one style (native, starship, or hidden). Configure live with /zentui, persisted to ~/.selesai/agent/zentui.json.
  • Added the bundled TPS tracker: live tokens-per-second for the main model and subagent runs in the status area, gated against stalls, short streams, sparse updates, and implausible rates.
  • Added 58 new terminal themes (Catppuccin Mocha, Dracula, Gruvbox, Nord, Rose Pine, Solarized Dark, Tokyo Night, and more) under src/themes/.
  • Added the bundled design-references skill for looking up DESIGN.md references from VoltAgent’s awesome-design-md collection.
  • Default thinking level is now high (was max); the default image caption model is now tokenin/qwen3.8-27b (was tokenin/gemma-4).
  • Celestial Max and Celestial Ultra now accept image input.
  • Removed the bundled auto-model, pi-powerline-footer, preview-tools-disabled, and custom-provider-ollama extensions; the orphaned powerline setting was dropped.
  • The documentation site now uses a ClickHouse-inspired black-and-yellow design language, and capability cards gained a core-differentiator badge variant.

0.9.15 — Bundled automatic model routing

  • Added the bundled auto-model extension, disabled by default.
  • Configure it with /auto-model-settings: classify eligible idle prompts into simple, medium, complex, or reasoning, then route to configured models available in the current scope.
  • Manual model selection suspends routing until /auto-model-settings enable; routing is serialized and skips busy, extension, and streaming input.

0.9.14 — Adaptive workflows and tool bootstrap

  • Replaced the fixed /workflow-* extension with the bundled $workflow skill, which selects only the planning, research, writing, review, and fix stages a task needs.
  • Workflow agent reports now persist named artifacts so later stages can consume only the context they need.
  • Choice questions now include an Other option by default; pass allowOther: false to restrict answers to listed choices.
  • The standard read-only tool catalog now becomes available after the first durable tool call, while preview-export tools stay hidden from agents without disabling Markdown previews.

0.9.13 — Documentation refresh

  • Reworked the documentation homepage with sharper hero typography, tighter installation and capability copy, and reduced-motion-safe capability reveals.
  • Updated documented Selesai source version.

This history follows Selesai release tags reachable from the main branch. Tags from unrelated Pi history are excluded. Starting with 0.8.0, Selesai uses selesai-v* tags to avoid collisions with imported Pi tags.

0.9.12 — Configurable tools, upgraded extensions & design skills

  • Built-in tools are now configurable: defaultTools selects the built-ins enabled by default, and SDK callers can use tools/excludeTools to allowlist and remove individual tools. powershell, grep, find, and ls participate in this unified tool configuration.
  • Bundled pi-subagents upgraded to 0.56.0: fast OpenAI-Codex child runs, extension bindings, maxThinking/default-provider model controls, external-job follow-ups, child-scoped stops, durable workflow receipts, and safer workflow safeguards.
  • Bundled pi-intercom upgraded to 0.12.0: consent-aware extension outbox sends, scoped session routing, endpoint-bound delivery with safe retries, pending-ask records, and optional after-first-use tool visibility.
  • Embedded Pi runtime updated to 0.84.3 with selected agent-session behavior updates.
  • Added bundled skills for premium branding, frontend taste, image-to-code and image-generation workflows, complete-output enforcement, and web-design reviews.

0.9.11 — Pi-compatible automatic skill discovery

  • Skills in ~/.agents/skills/ and project/ancestor .agents/skills/ directories are now enabled automatically, matching the Pi coding agent. No skills section is required in settings for normal skill discovery.
  • Automatic skills from .pi/skills/ and the Selesai agent skill directory are enabled by default as well; explicit skills patterns still control overrides and exclusions.

0.9.10 — Handoff in RPC hosts

  • /handoff-new now works in RPC/non-TUI hosts such as VS Code: it generates the handoff directly and starts the child session without the terminal loader.
  • Terminal-only /cp copy markers are no longer added in RPC hosts, keeping host transcripts and handoff context clean.

0.9.9 — Bundled handoff extension loading

  • /handoff-new now resolves shared core modules from packaged .js files, so it loads correctly in installed builds.

0.9.8 — RPC session handoff

  • RPC clients can now send handoff_new with an optional goal to summarize the current session and start a clean child session seeded with the generated handoff.
  • Handoff generation is shared between the TUI /handoff-new extension and RPC mode, preserving compaction-aware conversation handling and sensitive-data redaction guidance.

0.9.7 — RPC queue state and replacement

  • RPC get_state now exposes pending steering and follow-up messages so hosts can restore queue state.
  • The new replace_queue RPC command replaces both pending queues while preserving steering versus follow-up routing.
  • RPC-created parent sessions are passed directly to the session manager, keeping parent-session relationships intact.

0.9.6 — Vision caption model selector fix

  • The /settings vision caption model selector now opens with the full list of image-capable models instead of using the configured model ID as a search query.
  • The configured caption model is highlighted as the current selection, and the Disabled option remains available when switching between all and scoped models.

0.9.5 — Questions outside the TUI

  • The bundled question tool now works in non-TUI modes such as RPC/VS Code hosts: questions are answered through the host’s extension_ui_request dialogs instead of throwing a TUI-only error.
  • Multi-select questions keep full multi-selection in hosts that support the new multiselect UI method; older hosts fall back to a single choice.
  • RPC clients can now handle method: "multiselect" requests and reply with a values array.

0.9.4 — Extensible pi-subagents workflows

  • The bundled /workflow-* extension is now a thin registry-based adapter over pi-subagents orchestration, so source-owned modes can use ordered runs, parallel discovery, or scripted conditional loops without new command plumbing.
  • The prototype workflow now runs external research and codebase exploration in parallel.
  • A build/review/fix loop completes only when the reviewer reports clean and no Remaining work: section, preventing premature completion of a multi-step plan.

0.9.3 — Token-In model identifiers

  • Replaces the provider’s removed auto/auto-premium identifiers with the bundled celestial-pro, celestial-max, and celestial-ultra models.
  • Factory defaults and model-prompt injection now target the supported Celestial IDs.

0.9.2 — Token-In premium model availability

  • Restores the bundled tokenin/auto-premium model for existing premium model selections; the default remains the supported tokenin/auto:max.

0.9.1 — Token-In default model hotfix

  • The main session and core subagent roles now default to the supported tokenin/auto:max model instead of the removed tokenin/auto-premium:max model.
  • The bundled Token-In auto model context window is 384K.

0.9.0 — Local Ollama, vision model selection, resilient captions, and a leaner subagent surface

  • Bundled Ollama provider: Selesai now includes a tested OpenAI-compatible local Ollama provider in its bundled extensions, with setup guidance in the provider documentation.
  • Vision model selector: /settings now opens the shared model selector for image-caption models, shows only image-capable models, supports an explicit Disabled choice, and does not change the main session model. Token-In defaults include Gemma vision captioning and a 16,384-token context budget; Qwen3-VL is also bundled.
  • Resilient image captioning: caption requests retry up to four times with fresh 60-second timeouts and backoff, preserving the original image when all attempts fail.
  • Model defaults: Token-In auto and auto-premium now use 256K context windows; auto-premium is the default main model and most subagent roles, while exploration/research roles use auto. The model-prompt-injector applies its bootstrap prompt to auto too.
  • Workflow reliability: auto-relaunch rounds clear stale projected steps/traces, preserve workflow state safely, and report whether fan-out, usage budgets, or lack of progress prevented another round.
  • Bundled skills: additional bundled skills are enabled by default while explicit user overrides remain authoritative.
  • Pi Subagents cleanup: FleetView/fleet inspector, durable schedules, and watchdog model recommendation/configuration actions were removed; run status, missions, watchdog status/check, and normal async controls remain. The shipped API/configuration/observability/workflow references now describe the reduced surface.

0.8.12 — Token-In auto-premium model default

  • The Token-In provider now bundles an auto-premium model alongside auto. Like auto, it is a reasoning model with a 512K context window and 64K max tokens, passing every thinking budget through (minimalxhigh map to the provider default, max maps to "max"), so the provider picks the best premium model for each request.

0.8.11 — Vision for text-only models, Gemma default, and context-aware captions

  • Image captioning relay lets a text-only main model (e.g. DeepSeek deepseek-v4-* / auto) work with images: when a vision model is configured via images.imageCaptionModel, pasted images and image files read through the read tool are described by that vision model and the caption text reaches the main model in place of the raw image. Pick the vision model and its context budget in /settings (“Vision caption model” / “Vision context tokens”).
  • Gemma 4 31B (Vision) (tokenin/gemma-4, input: ["text", "image"]) is now a bundled default on the Token-In provider — usable as a captioner or as a main model.
  • Context-aware captions: the caption request includes the user’s current prompt plus a bounded recent user/assistant conversation slice (whole messages, no tool output), capped by images.imageCaptionContextTokens (default 16384). Full history is never sent, keeping the caption model’s context window safe.
  • Captioning status spinner in the TUI while an image is being described (per-image 15s timeout; a notice is shown only if every caption fails), so captioning no longer looks stuck.
  • Skill enablement overrides are now applied to built-in and additional skill resources, and the resource loader exposes getResolvedSkills().
  • The model-prompt-injector Token-In rule now matches deepseek-v4-*.

0.8.10 — Higher agent retry budget and clearer powerline cache stats

  • The bundled settings now allow 10 automatic agent-level retries (retry.maxRetries) on transient provider errors instead of 7, so brief provider hiccups are less likely to surface before a recovery succeeds.
  • The powerline footer now shows cache-read tokens and the cache-hit percentage together by default: the bundled settings set powerline.cache_read.format to "both" (previously the extension’s fallback of "tokens" applied). Change it in settings via powerline.cache_read.format ("tokens", "percent", or "both").

0.8.9 — Token-In auto model

  • The Token-In provider defaults now include an auto model. It is reasoning-capable with a 512K context window and 64K max tokens; its thinking-level map forwards every thinking budget (minimal through xhigh resolve to provider defaults, max maps to "max") using the deepseek thinking format, letting the provider auto-select the best available model for the request.

0.8.8 — Theme-on-startup, quieter managed-tool downloads, and Pi 0.84.2

  • New --use-theme <name> CLI flag sets the initial interactive theme for a run, and the fullscreen theme controller now applies an invocation-level theme before settings load. The TUI took on a live transcript search highlighter (themeable via new optional searchMatchBg/searchMatchText colors that fall back to selectedBg/text).
  • /settings gained a Fullscreen exit output option: exiting fullscreen can print the transcript as before or only a session resume hint (fullscreenExitOutput, default "transcript").
  • New defaultTools setting seeds the initial built-in tool selection (read, bash, edit, write) for createAgentSession, so the SDK start with only the tools you want.
  • Managed-tool downloads (fd/rg) moved off the startup path: the TUI mounts and stays responsive while they install, and progress/warnings are reported as chat status lines instead of raw console output.
  • Large tool output now previews the first 10 lines with an inline ... (N more lines) expand hint instead of dumping the whole block.
  • Model-catalog refreshes are shared: concurrent interactive refreshes reuse one in-flight refresh while keeping each caller’s cancellation independent, and refreshes are bounded by a short timeout.
  • Experimental strict tool sampling enabled under PI_EXPERIMENTAL=1 (json_schema / strict: "prefer") for the built-in read/edit/write/bash tools.
  • sendUserMessage gained an expandPromptTemplates option for dispatching extension commands, skills, and prompt templates from extensions.
  • Updated the coding-agent foundation and exact Pi runtime dependencies to 0.84.2.

0.8.7 — Smaller model-facing prompts and Pi Subagents 0.50

  • Model-facing tool surface is smaller on every request: per-field schema descriptions are pruned on the wire by default (pruneToolDescriptions, opt out in settings), the subagent tool description defaults to a compact variant (~3 KB smaller per model turn), and the always-on Pi-docs block in the system prompt is down to two lines.
  • Bundled Pi Subagents updated through upstream 0.50.0 with the Selesai fork layers (branding, .selesai config routing, SELESAI_SUBAGENT* env vars, declarative chain/tasks modes, workflow auto-relaunch).
  • New bundled model-prompt-injector extension injects model-specific prompts into the system prompt; supports prepend, append, and replace modes.
  • Updated the pi-subagents configuration catalog: toolDescriptionMode now documents its compact default.
  • Fixed the subagent prompt-runtime test suite so it passes when run inside subagent child environments (steer env vars scrubbed).

0.8.6 — Auto-relaunching workflows and goal visibility

  • The four /workflow-* modes (task, prototype, quicktype, loop) now run fully unattended: when a scripted workflow exhausts its per-run fan-out budget before the goal is clean, the async executor mints a fresh budget and re-runs the same script with the same mission and progress file, up to maxWorkflowAutoRelaunches (default 12; 0 = unlimited). Only budget results relaunch — real child failures still surface immediately.
  • Each /workflow-* launch emits its goal at start (visible in subagent status workflow emits) and names the auto-created mission after the goal (mission.list / mission.show).
  • The build→review→fix loop now works in bounded slices: the builder implements one small, self-contained step per round instead of the whole plan, with per-run timeouts (build/fix 45m, review 15m).
  • Reviews are scoped to a progress ledger: the builder appends a ## Round N entry (files, summary, validation) to .pi-subagents/progress/<mode>.md, and the commentator reviews only the latest round plus the preceding fix entry, falling back to the full uncommitted diff when the ledger is missing. Blocking reviews list Remaining work: notes that seed the next build round — previous review feedback now actually reaches the next builder.
  • Packaged pi-subagents prompts (review-loop.md, parallel-*.md, gather-context-and-clarify.md) are now loaded via resources_discover; the workflow-drive.md prompt was removed as superseded by auto-relaunch.
  • Updated the delegation capability guides (EN/ID) and the pi-subagents configuration catalog with maxWorkflowAutoRelaunches.

0.8.5 — Factory reset settings, simpler install, and repo installs

  • New /settings-factory-reset slash command: warns before replacing ~/.selesai/agent/settings.json with the bundled factory defaults, saves a settings.json.bak backup, leaves credentials (auth.json), sessions, extensions, skills, and themes untouched, and reloads settings live.
  • The install guide is now a single plain command: npm install -g @selesai/code. The old --ignore-scripts advice was removed because @ast-grep/cli (a runtime dependency) needs its install script to fetch its platform binary.
  • You can now install straight from the public repository — npm install -g github:SelesaiInTech/selesai-code builds the latest main from source (the package gained a prepare build script).
  • Bundled defaults now set retry.maxRetries to 7.

0.8.4 — Live workflow progress on slash launches

  • Slash-launched scripted workflows now show a live progress card (per-child status, phases, and durations) instead of a static “Running…” placeholder. The pi-subagents slash bridge was dropping the workflow trace and chat-progress projection; it now forwards both, and the slash live-state renders a workflow-shaped snapshot, so /run (without --bg), /chain, /parallel, and /run-chain update in place while children run.

0.8.3 — Native fullscreen TUI and Pi 0.84.1

  • Selesai now defaults to Pi 0.84.1’s native fullscreen TUI: the transcript scrolls in an alternate-screen viewport while the editor, status, extension widgets, and footer remain in a fixed dock. Mouse/trackpad scrolling and PageUp/PageDown/Home/End navigate the transcript; tuiMode: "regular" or --tui-mode regular opts out.
  • Removed Powerline’s unsupported terminal-split compositor and its fixed-editor, mouse-scroll, and chat-jump controls. Powerline now uses the native dock through standard extension APIs.
  • /settings can switch TUI modes immediately and configure the fullscreen scrollbar. The Pi AI, TUI, and agent-core runtimes now use 0.84.1.

0.8.2 — Guide version marking no longer pins the default mode

  • Marking a new guide version as seen no longer persists the implicit compact mode into settings.json; an explicit full, compact, or off choice is still preserved, so the guide keeps following the current default until you opt in.

0.8.1 — Quieter default guide

  • The powerline /guide tour now defaults to compact mode when selesaiGuide.mode is not set; explicit full, compact, and off settings are still honored.

0.8.0 — Powerline inbox, flexible terminal workspace, and smoother setup

  • Updated the bundled pi-powerline-footer fork through upstream 0.12.3. It now includes a file-backed queue/inbox (# <idea>, /idea, /ideas, /queue), safe post-compaction delivery, /cd session-directory switching, currency and subagent-cost display, git-host icons, cached token statistics, and configurable footer layout, placement, separators, segments, and welcome overlay.
  • Known inline #agent-name mentions can now start a subagent run from anywhere in a message; ordinary mid-message hashes such as issue #42 remain normal text.
  • Added bundled Agent Browser setup and guidance. Selesai asks before installing the external CLI and performs its setup without blocking startup.
  • Fixed #/$ inline completion reliability, including on WSL, and deferred RTK provisioning until after startup.

0.7.0 — Inline skills ($), inline subagents (#), managed RTK, and Subagents 0.41

  • Skills are now invoked inline with $skill-name (e.g. $grill-me, $pdf-tools extract) instead of #skill-name; typing $ opens the skill picker and text after the token stays in the user message. /skill:name slash commands and the enableSkillCommands setting are removed — the / command list now shows only extensions, prompt templates, and built-in commands.
  • Subagents are invoked inline: #agent-name at the start of a message runs that agent directly (like /run), and # autocompletes installed agents. Unknown or ambiguous names produce a notification and consume the input.
  • The bundled rtk extension provisions a verified managed binary (pinned 0.42.4, checksum-verified) when no usable system binary exists, reusing PATH otherwise; PI_OFFLINE=1 prevents downloads and RTK_DISABLED=1 bypasses rewriting and managed installation.
  • Updated bundled Pi Subagents through 0.41.0 with live subagent_wait status streaming, durable project-scoped schedules, non-blocking wait subscriptions, inline one-row result summaries, FleetView model/thinking display, and workflow chat progress.
  • Bundled default subagent models now use Token-In thinking budgets (kimi-k3:high, deepseek-v4-flash:max).

0.6.3 — Install repair: pin Readability to the published 0.6.0

  • Repaired package install: the root and bundled pi-web-agent manifests declared @mozilla/readability ^0.6.1, but the npm registry publishes no 0.6.1 (latest is 0.6.0), so fresh installs of 0.6.2 failed with ETARGET. Both manifests now declare ^0.6.0 and the root lockfile resolves the published 0.6.0 release, so clean installs succeed again.

0.6.2 — Reference-first terminal output and safe skill/settings seeding

  • Made foreground terminal output reference-first for delegated results: the renderer never re-reads or re-inlines saved child output files; settled file-only results show the saved-output reference, legacy path-only results get a synthesized reference without touching the file, and outputMode: "inline" results keep their full text.
  • Made bundled skill and settings seeding safe: first-run bootstrap adds a missing top-level subagents key to an existing user settings.json without reformatting it or touching unrelated settings, never overrides user-configured subagents, and installs newly bundled skills (including pi-subagents) without overwriting user-edited skill files.
  • Shipped the delegation skill as a top-level bundled skill: pi-subagents now loads from the package at boot and seeds into the agent dir on first run, so parent-orchestration guidance is available without relying on the extension’s internal copy.
  • Aligned the bundled web-agent manifest’s @mozilla/readability range to ^0.6.1, matching the version resolved in the root package.

0.6.1 — Delegation catalog, advisory routing, and reference-first results

  • Added a runtime delegation catalog: subagent({ action: "list" }) now shows executable and capability-restricted agents with source, aliases, role, context, tools, and description, plus the same catalog as versioned machine metadata (details.catalog).
  • Added task-aware advisory routing: pass an optional task to action: "list" to receive a recommendation for one canonical agent (implementation or read-only), or guidance when the intent is unclear or no safe candidate exists. The advice never launches work — execution stays an explicit separate call.
  • Made delegated results reference-first by default: completions return saved-output references plus status/lifecycle information instead of child prose; full output is available through the saved output path, async status/transcript, or resume. outputMode: "inline" restores legacy inline delivery, output: false disables durable output persistence, and per-child debug artifacts remain opt-in.
  • Added always-visible delegation guidance: default and custom system prompts now include the delegation contract (inspect the catalog before selecting; keep tiny local reads local; delegate broad local, external, and mutation work; the parent stays the decision-maker and sole writer).
  • Corrected bundled subagent documentation and contracts: six builtin roles with accurate fresh/fork context defaults, .selesai discovery paths, executable builder instructions, and declared read-only/writer roles.

0.5.29 — Pi 0.83 foundation and stronger coordination

  • Synced the coding-agent foundation and exact Pi runtime dependencies from 0.81.1 to 0.83.0, including provider, model-catalog, RPC bash, session, resource-loading, and terminal fixes.
  • Added selesai auth print-api-key and selesai auth print-bearer-token for explicitly exporting configured credentials to external clients, with OAuth refresh and minimum-validity controls.
  • Exposed scoped models to extensions and PI_SESSION_* model/session metadata to LLM-callable bash tools.
  • Updated llama.cpp integration with persisted model catalogs, streaming usage accounting, and server-reported context limits.
  • Updated bundled Pi Subagents through 0.40.0 with fleet steering/stopping, capability ceilings, checkpoints, usage budgets, and richer runtime status.
  • Updated bundled Pi Intercom through 0.9.2 with stable identities, cwd-scoped discovery, queued delivery, delivery diagnostics, and local broker hardening.

0.5.28 — Faster question flow

  • Committed select, multi-select, text, and custom answers now advance automatically; a single answered question submits without a redundant review step.
  • Batch Grill Me now merges duplicate-intent frontier items and keeps question context concise.

0.5.27 — Fleet inspector key routing

  • Fixed Powerline fixed-editor PageUp/PageDown handling so it scrolls the main chat only while the main editor has focus. Focused custom views, including the subagent fleet inspector, now receive those keys.

0.5.26 — Durable direct-loop handoffs

  • Added a handoff phase to direct loop workflows: a forked recapper captures the agreed conversation into durable handoff.md before fresh builder and commentator agents begin.
  • Persisted reviewer feedback now gives resumed builder rounds the durable handoff and latest loop-review-N.md as their source of truth.

0.5.25 — Clean release builds

  • Clean dist before building so removed bundled files are not included in npm packages.

0.5.24 — Direct workflow loop and documentation refresh

  • Added loop, a direct builder/reviewer workflow for plans already agreed in the parent conversation.
  • Renamed the quicker, no-research prototype workflow from quick to quicktype.
  • Expanded bilingual capability and customization documentation, including local Llama guidance.

0.5.23 — Documentation site and workflow fix

  • Launched the Selesai documentation site at GitHub Pages, with English and Indonesian capability guides, local search, accessible navigation, and content/link validation.
  • Fixed workflows so they read review output sent through Intercom.

0.5.22 — Inline skills and question flow

  • Added an inline-skill picker, support for multiple inline skill blocks, and restored saved question answers.
  • Reworked the batched question wizard and improved Powerline throughput reporting.

0.5.21 — Batched questions and subagents

  • Added batched question forms and automatic submission of handoff prompts.
  • Updated the bundled Pi Subagents extension to version 0.37.0.

0.5.20 — Windows Intercom fix

  • Fixed bundled tsx resolution for Intercom on Windows.

0.5.19 — Batch design-tree grilling

  • Added batched design-tree grilling to workflows.

0.5.18 — Reliable workflow transitions

  • Made workflow phase transitions exclusive, hidden continuations so the next phase is queued reliably.

0.5.17 — Workflow simplification

  • Simplified workflow adapter behavior and updated workflow documentation and tests.

0.5.16 — Default settings refresh

  • Refreshed bundled default settings.

0.5.15 — Local Llama support and model system overhaul

  • Added local Llama model support and redesigned model, provider, credential, and runtime configuration.

0.5.14 — Powerline guidance and project cleanup

  • Added Powerline Footer guidance and refreshed project documentation, skills, and bundled extension metadata.

0.5.13 — Shared terminology and skill refinements

  • Added the project’s ubiquitous-language reference and refined Caveman, Ponytail, and workflow behavior.

0.5.12 — Grep.app result summaries

  • Added concise rendered summaries for Grep.app searches and GitHub file fetches.

0.5.11 — Grep.app extension and task workflows

  • Added the Grep.app code-search extension.
  • Improved task-workflow planning and execution.

0.5.10 — Subagent metadata refinement

  • Refined bundled subagent researcher instructions and extension metadata.

0.5.9 — Token-In model compatibility

  • Marked Token-In models as not supporting the developer role.

0.5.8 — Bundled defaults update

  • Updated bundled settings defaults.

0.5.4 — Safer generated handoffs

  • Rejected empty generated handoffs.

0.5.3 — Release update notices

  • Added notifications for new npm releases.

0.5.1 — Auto-handoff defaults

  • Seeded the automatic-handoff configuration in settings.

0.5.0 — Automatic handoff and subagent improvements

  • Added automatic session handoff, improved subagent execution, and expanded Powerline session-usage reporting.

0.4.0 — Resumable workflows

  • Added task and quick workflow modes.
  • Added resumable workflow runs and simplified session handoff behavior.

0.3.10 — Upstream sync

  • Synced with upstream Pi version 0.80.6.

0.3.9 — Workflow and Caveman fixes

  • Fixed workflow artifact fallback behavior and Caveman mode handling.

0.3.7 — Workflow gate recovery

  • Kept workflow phases armed after a failed semantic gate.

0.3.6 — Extension manifest cleanup

  • Removed a stale gitignore-guard extension export.

0.3.5 — Initial tagged Selesai release

  • Added first-time setup guidance, shared-host extension support, Token-In onboarding, Caveman, and handoff skills.
  • Routed bundled extension configuration paths through Selesai directory resolvers.

Future entries

Use the following format for subsequent releases:

## <version> — <title>
- Added/updated capability guide for <name>.
- Updated comparison evidence for <area>.
- Accessibility or build fixes.
- Updated documented Selesai source version.