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|fishprints 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./contextprints a projection-backed context diagnostics report into the transcript with occupancy, provider usage, and heuristic prompt composition./sessionsopens 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 favoriteand cycled withCtrl+PorAlt+P;Ctrl+Tcycles 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
PgUpandPgDninstead 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.
/loginlists 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
/accessalias. Use/permissionto 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.
/loginnow 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./logoutomits 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.
/logoutof 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 wheelfrom 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;Tabinserts a session mention, and sending the prompt captures a read-only snapshot for the model. Quoted@"…tokens stay file-only. File rows come from Harnessfile-referencediscovery and still insert a path without uploading contents. - Send composer images with
/goaland/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
· interruptedsuffix instead of presenting it as a complete reply. A turn interrupted before any visible content still prints the plaininterruptednotice.
Changed
- Upgraded every direct DeepSeek Harness dependency to the coherent
0.1.0-rc.8release. Failed model requests now retry up to five times by default (previously two), and an inapplicable or valuelesscompatswitch in a hand-editedllm-pi-aisettings 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
/goaland/planafter 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 Harnessfile-referenceresults 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/hellothroughdsh-commands. - Install user DSH bundles into
$OMDSH_HOME/profiles/omdshwithomdsh plugin addandomdsh plugin remove, and compose them after the shipped@agi-fans/oh-my-dshlayer at boot. - Apply
$OMDSH_HOME/cordis.patch.ymlover the shipped composition at boot, and print the composed plugin tree withomdsh --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, andlist_agentscards 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.
/logincan store a catalog key or add a custom route (id, base URL, protocol, optional key, and model ids),/logoutcan drop that route, and/modellists every live provider.
Changed
- Split the tutorials into one page per walkthrough, with docs/tutorials.md as the index.
- Highlight leading
/commandtokens 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 addis given a missing filesystem path, instead of installing a broken link, and resolve./examples/hellofrom a subdirectory of a checkout. - Keep ↑/↓ inside the current
/settingstab 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
/settingsStatus 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.7release 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
/agentchanges 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-tuiis 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
/helpa compact command directory with essential shortcuts by default, added/help fullfor the complete key catalog, and limited the default/changelogview 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
/steeraffects the active turn's next model step, rejected idle steering, and normalized/sessionpermission 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.0placeholder 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
/modewith an agent-scoped/permissionselector 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-dshSkill 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
/queueand/dequeuewith 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
/helpso commands and controls live in one discoverable surface. - Manual
/compactnow enters a visibleCompactingstate, locks composer actions until settlement, and remains cancellable withCtrl+C.
Fixed
- Prevented exact-width terminal paints from triggering pending-wrap phantom rows, including duplicate
Deep Drivingindicators. - 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
/pwdand/dirscommands because the fixed status footer already shows workspace, model, and Git context. - Removed
/searchand its SQLite session index; prompt-history search remains available throughCtrl+R.
0.1.1 - 2026-08-15
Added
- DeepSeek
/loginand/logoutflows 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_HOMEso tests and alternate profiles do not read the user's default Harness state.
0.1.0 - 2026-08-15
Added
- Plugin-first
omdshterminal 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.