Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Added

  • Published the official documentation site at https://omdsh.agi.fans/, a bilingual VitePress build synced from docs/ and deployed to GitHub Pages with canonical language links, social metadata, structured data, a sitemap, and crawler guidance.

0.10.0 - 2026-08-26

Added

  • omdsh completions bash|zsh|fish prints an instant, network-free completion script generated from the canonical CLI metadata.
  • /export html [path] creates a standalone, CSP-locked HTML transcript alongside the existing complete Markdown export.
  • /context prints a projection-backed context diagnostics report into the transcript with occupancy, provider usage, and heuristic prompt composition.
  • /sessions opens a searchable Session Library where durable sessions can be pinned or renamed with the keyboard before resuming.
  • Optional terminal notifications can report completed long-running turns and prompts that need human input; they are disabled by default and configurable in /settings.
  • Added /trajectory, a keyboard-driven full-screen session event ledger with Turn/Step grouping, live following, search, folding, timing and token details, and tool payload, result, and schema inspection.
  • Models can now be favorited through /model favorite and cycled with Ctrl+P or Alt+P; Ctrl+T cycles the active model's supported reasoning efforts.
  • Agent Hub now opens as a keyboard-driven roster and inspector with responsive split-pane details, hierarchy, elapsed time, recent activity, and direct transcript access.

Fixed

  • The first startup header now includes durable recent sessions instead of rendering before persistence discovery completes.
  • Terminal layouts now count common emoji symbols such as at their actual two-cell width, preventing Trajectory and other vertical dividers from shifting on emoji-containing rows.
  • Long Trajectory payload, result, schema, timing, and summary details can now be paged with PgUp and PgDn instead of being clipped to the visible pane.

0.9.0 - 2026-08-26

Added

  • Edit-card context lines are now syntax-highlighted from the changed file's language, while added and deleted lines keep their green and red colors with inverse intra-line highlighting. Unknown file types keep the previous dim context.
  • /login lists registered Harness authorization flows and their methods when a mounted provider offers them. The terminal renders notices and keyboard-selectable prompts; the provider plugin owns the protocol. DeepSeek API-key login remains available when no flow claims that route.

Changed

  • Composer image submissions now admit every attached image in one ordered batch. A failed member keeps the composer text and image drafts instead of saving a partial set.

Removed

  • Removed the duplicate /access alias. Use /permission to choose Read only, Workspace write, or Full access through the same keyboard selector and Full access confirmation.

Fixed

  • The startup Header now moves its column divider to fit longer model names when terminal space is available, while preserving the Tips and recent-session column at narrower widths.
  • /login now keeps the official DeepSeek route first, orders signed-in authorization flows before unconfigured providers, and distinguishes environment, local-store, external, in-progress, and signed-in credential ownership with badges. It hides the dormant pi-ai DeepSeek flow, retains an explicitly configured compatibility route, and capitalizes the custom-provider option. /logout omits an environment-owned or already-inactive official route when a removable stored sign-in is available and consistently labels every removable provider as signed in.
  • A retried model request replaces the live retry notice, drops stale live mutable assistant and partial-tool rows from the failed attempt, and keeps one final terminal error after retries are exhausted. Output that already reached native terminal scrollback is not rewritten.
  • /logout of a provider authorization record deletes only that credential record. Independent settings profiles, environment credentials, and credential records owned by other plugins stay in place, while a stored pi-ai DeepSeek compatibility credential remains removable even when its login flow is hidden by default.

0.8.0 - 2026-08-20

Changed

  • TUI input is now keyboard-only: mouse tracking sequences are no longer emitted and SGR mouse reports are consumed and discarded instead of being typed into the composer or driving state.
  • Finalized transcript rows now flow into native terminal scrollback while the live viewport remains keyboard-driven and mouse tracking stays disabled. Production startup waits for the initial session projection, idle replacement replays the complete Header, transcript, and composer, and running replacement pins its mutable tail until settlement. Direct terminals can clear stale scrollback and borrow the alternate screen for transient full-screen surfaces; multiplexers and ConPTY preserve host scrollback, and multiplexer resize bursts are coalesced. Large resumed transcripts replay completely rather than being truncated, while ordinary paints remain one DEC 2026 synchronized write.
  • Long sessions now reuse the settled transcript as a stable render prefix, avoiding full-history display-width measurement on every streaming, status, or composer frame.
  • Append-only assistant reasoning and text now scroll naturally with the Header and user messages, while mutable running-tool previews remain pinned to the live viewport.
  • Dense assistant streaming deltas are now coalesced into short render windows, reducing redundant formatting and terminal writes while preserving immediate interaction, tool, and settlement updates.

Fixed

  • The live Agents roster now exposes a Down-to-focus task launcher plus its Alt+A direct shortcut. Enter opens a searchable fullscreen Agent Hub for arrow-key selection and Enter-to-inspect after mouse interaction was removed.

Removed

  • Removed all mouse-driven interactions, including click-to-caret in the composer, wheel-based transcript and overlay scrolling, and click-to-select in overlays and the subagent roster. Use the existing keyboard shortcuts (arrow keys, PgUp/PgDn, Shift+Up/Down, Tab, Enter, Esc) for the same actions.
  • Removed Mouse wheel from the help/hotkeys surface.

0.7.0 - 2026-08-20

Added

  • Mention other sessions from the composer @ menu. Unquoted @ lists project files first, then session titles; Tab inserts a session mention, and sending the prompt captures a read-only snapshot for the model. Quoted @"… tokens stay file-only. File rows come from Harness file-reference discovery and still insert a path without uploading contents.
  • Send composer images with /goal and /plan. Commands that do not accept attachments return an error and keep the original image draft in the composer.
  • Mark an assistant reply cut off by an interrupt with a dim · interrupted suffix instead of presenting it as a complete reply. A turn interrupted before any visible content still prints the plain interrupted notice.

Changed

  • Upgraded every direct DeepSeek Harness dependency to the coherent 0.1.0-rc.8 release. Failed model requests now retry up to five times by default (previously two), and an inapplicable or valueless compat switch in a hand-edited llm-pi-ai settings section fails startup with an error naming the offending key.
  • Refuse attached images over 3.5 MiB or larger than 2000px per side, matching the new Harness admission defaults. The composer checks admission when an image is pasted: a refused image shows an immediate error notice and stays out of the prompt instead of failing the completed submission on send.

Fixed

  • Route /goal and /plan after dropping TUI image placeholders that match attached drafts, leave handwritten [Image #N] text unchanged when nothing is attached, pass command whitespace through to Harness, and keep the original image draft when those commands fail.
  • Keep @ file rows on Harness file-reference results when that service is composed, including empty matches; local path search remains only when it is not.

0.6.1 - 2026-08-19

Fixed

  • Load user-installed DSH bundles from the omdsh Profile when running the published npm package.

0.6.0 - 2026-08-19

Added

  • Add Write a plugin, a walkthrough for writing, installing, and publishing an omdsh plugin bundle.
  • Ship examples/hello, an installable bundle that registers /hello through dsh-commands.
  • Install user DSH bundles into $OMDSH_HOME/profiles/omdsh with omdsh plugin add and omdsh plugin remove, and compose them after the shipped @agi-fans/oh-my-dsh layer at boot.
  • Apply $OMDSH_HOME/cordis.patch.yml over the shipped composition at boot, and print the composed plugin tree with omdsh --dump-config.
  • Show live descendant subagents above the composer, with each child's label, run state, and current tool, and present subagent, send_message, interrupt_agent, and list_agents cards by their task description instead of raw JSON.
  • Open a subagent's own transcript from the Agents roster by clicking a row or pressing Alt+A, and return to the parent with Escape.
  • Steer a continuable subagent from its inspect view: the composer delivers a follow-up to that child, while one-shot runs stay read-only.
  • Acknowledge Pi among the project's design influences.
  • Add catalog and custom model providers through the published Harness pi-ai adapter. /login can store a catalog key or add a custom route (id, base URL, protocol, optional key, and model ids), /logout can drop that route, and /model lists every live provider.

Changed

  • Split the tutorials into one page per walkthrough, with docs/tutorials.md as the index.
  • Highlight leading /command tokens in the composer, and paint slash-command names in the completion list, so those lines read as commands rather than ordinary prompt text.
  • Use monochrome Unicode marks for pending, warning, todos, and settings instead of emoji-presentation glyphs.

Fixed

  • Fail loud when omdsh plugin add is given a missing filesystem path, instead of installing a broken link, and resolve ./examples/hello from a subdirectory of a checkout.
  • Keep ↑/↓ inside the current /settings tab instead of crossing into the other section.
  • Hide the blinking composer cursor while a read-only subagent transcript is open.
  • Paint idle subagents with a check instead of the hourglass pending glyph.

0.5.1 - 2026-08-18

Fixed

  • Resume sessions that recorded the omdsh tool-presentation event instead of refusing the log as an unknown harness type.

0.5.0 - 2026-08-18

Added

  • Added four independent, Harness-backed session controls: Agent presets (Standard, PTC, Minimal, and Cordis), Workflow (Default or Plan), tool presentation (Native, Code, or Both), and Access (Read only, Workspace write, or Full access).
  • Added /settings Status line items that match the preview: each of Model, Effort, Path, Git, and the telemetry groups has its own color, left/right column, show/hide, and order.
  • Show the session permission mode on the top-right of the composer, opposite the whale label.
  • Add catppuccin, dracula, nord, gruvbox, and rose-pine palettes from the oh-my-pi coding themes.

Changed

  • Upgraded every direct DeepSeek Harness dependency to the coherent 0.1.0-rc.7 release and adopted its published Agent preset and Code runtime packages.
  • Keep the lowercase Agent mode visible in the fixed footer, reveal Workflow only while Plan is active, show non-default tool presentation without category labels, keep lowercase Access on the composer boundary, and report all four separately in /session.
  • Reset SGR attributes independently so nested color, bold, italic, and underline no longer wipe each other.
  • Paint thinking traces in a quieter gray italic so they stay distinct from assistant body text, including after inline Markdown.
  • Let the terminal own body ink across every palette while keeping thinking traces explicitly muted, so themes respect the user's foreground and background pairing.
  • Paint thinking traces as readable comment-gray italic on dark palettes, including code, links, and headings inside those traces, so they recede from body text without collapsing into the background or being boosted to white.
  • Use a quieter muted border for idle frames, quotes, rules, and tables, and complete the midnight and solarized palettes.

Fixed

  • Refresh the footer's Agent and tool-presentation labels immediately after /agent changes a blank session's composition.
  • Restore distinct Header title, body, metadata, and frame tones across every palette, including monochrome and 16-color terminals.
  • Keep the welcome card on the visible dim frame so Tips, Recent sessions, and the slogan do not sit on a near-invisible border.
  • Paint fenced-code keywords with a dedicated syntax color instead of the UI accent.
  • Soften inline Markdown code so codespans use a muted gray instead of accent-like orange or lavender; fenced blocks keep a separate, slightly stronger color.
  • Render transcript Markdown through a GFM lexer so paragraphs reflow, nested emphasis and escapes stay intact, list items keep their continuations, and reference links resolve.
  • Paint file-edit tool cards as aligned diffs: unchanged context stays dim, deletions are red, additions are green, one-line replacements mark the changed tokens, and the header shows +N/-M.
  • Generate the CLI package README from the repository overview during packing, with npm-safe GitHub links, so npm documentation stays synchronized with the project homepage.
  • Clarify that @agi-fans/dsh-tui is a non-executable integration library, direct end users to @agi-fans/oh-my-dsh, and enforce that distinction during package checks.

0.4.0 - 2026-08-16

Added

  • Added an oh-my-pi-inspired /loop [count|duration] [prompt] plugin with atomic next-prompt capture, actionable waiting guidance, explicit repeat progress, duration countdown, Ctrl-C pause and resume guidance, transient completion feedback, active-session isolation, and no routine control-message transcript noise.
  • Added one-time startup release summaries, /changelog [full], and cached non-blocking npm update notifications with controls in /settings.
  • Added repository-local Skills for change validation, architecture and UX review, simplification audits, prose maintenance, bilingual documentation synchronization, and reproducible TUI demonstrations.

Changed

  • Made /help a compact command directory with essential shortcuts by default, added /help full for the complete key catalog, and limited the default /changelog view to the latest release.
  • Adapted model selectors to use compact prompt cards for short lists and searchable full-screen pages only when the option set is large.
  • Clarified that /steer affects the active turn's next model step, rejected idle steering, and normalized /session permission and token labels with the fixed footer.
  • Made the repository release Skill hand npm publication to the user for interactive OTP completion, then resume registry verification and GitHub finalization without repeating completed work.
  • Separated tool-call input from output in a single framed card, preserving long inputs after settlement and giving terminal output its own labeled, tail-focused preview.
  • Consolidated architecture guidance into one current-state reference covering plugin ownership, runtime composition, data flow, terminal guarantees, public exports, and verification boundaries.

Fixed

  • Made the startup header read the current TUI package version instead of retaining the original 0.1.0 placeholder after releases.

Removed

  • Removed completed implementation plans, a stale oh-my-pi feature-gap snapshot, and the superseded plugin-migration review after preserving their durable constraints in the architecture reference.

0.3.0 - 2026-08-16

Changed

  • Replaced /mode with an agent-scoped /permission selector that offers fixed Harness permission presets and requires confirmation before enabling full access.
  • Refined the composer Todo HUD into a bounded tree preview with completion progress, active-work visibility, completed-item strikethrough, and overflow summaries.

Fixed

  • Restored the latest Harness Todo projection above the composer, including live updates, replay restoration, and turn-boundary clearing.
  • Prevented stale transcript viewport indicators from stacking after terminal cursor drift by absolutely reanchoring changed paints and filtering content-owned cursor controls.

0.2.0 - 2026-08-16

Added

  • Repository-local publish-oh-my-dsh Skill for preparing, publishing, recovering, and verifying synchronized npm and GitHub releases.
  • Double-Escape conversation rewind with an interactive human-turn selector, non-destructive session forks, and editable restoration of the selected text and images.

Changed

  • Replaced /queue and /dequeue with a composer-level view of the durable Harness inbox; repeated presses walk backward through follow-ups for editing without changing their send order.
  • Merged the keyboard-shortcut catalog into /help so commands and controls live in one discoverable surface.
  • Manual /compact now enters a visible Compacting state, locks composer actions until settlement, and remains cancellable with Ctrl+C.

Fixed

  • Prevented exact-width terminal paints from triggering pending-wrap phantom rows, including duplicate Deep Driving indicators.
  • Removed long-session input and activity lag by caching transcript layout per immutable message block and recomputing only animated or changed blocks.
  • Reduced large-session resume work from quadratic to linear by using a private mutable replay builder with indexed tool-call lookup while preserving immutable live updates.
  • Avoided rescanning the complete event log for every streaming update when durable Harness statistics, token usage, and context projections are available.

Removed

  • Removed the redundant /pwd and /dirs commands because the fixed status footer already shows workspace, model, and Git context.
  • Removed /search and its SQLite session index; prompt-history search remains available through Ctrl+R.

0.1.1 - 2026-08-15

Added

  • DeepSeek /login and /logout flows with masked input, API-key validation, persistent Harness credentials, user-selected credential priority, and environment fallback.

Changed

  • Made the model selector skip a sole provider, use compact option rows, and preserve the current model and reasoning choices.
  • Made ordinary notices unframed by default while retaining explicit frames for real component and interaction boundaries.

Fixed

  • Isolated settings and credentials under OMDSH_HOME so tests and alternate profiles do not read the user's default Harness state.

0.1.0 - 2026-08-15

Added

  • Plugin-first omdsh terminal application built on the published DeepSeek Harness runtime.
  • Durable conversations with resume, search, retry, compaction, Markdown export, prompt history, and queued follow-up messages.
  • Interactive model, reasoning-effort, access-mode, settings, tools, hotkeys, Skills, and MCP surfaces.
  • Project-aware @ file search, highlighted path mentions, and clipboard image paste.
  • Fixed two-line status footer with model, reasoning, workspace, Git, context, token, latency, cache, timing, turn, and step information.

Changed

  • Split the TUI into Cordis plugins for presentation, session runtime, human interaction, tool presentation, commands, and the runner.
  • Redesigned the startup header, composer, status footer, command output, tools, hotkeys, settings, resume, and model-selection experiences around compact terminal interaction.

Fixed

  • Preserved terminal-cell alignment and right padding for long commands, CJK text, emoji, ANSI styling, and narrow viewports.
  • Stabilized incremental rendering, transcript scrolling, cursor placement, tool-output folding, and queued input during active turns.