Skip to content
This repository was archived by the owner on Sep 4, 2026. It is now read-only.

Releases: liangyou09/lyshell-archive

V1.0.7

Choose a tag to compare

@liangyou09 liangyou09 released this 04 Sep 12:33

LyShell v1.0.7

The headline of this release is a rework of environment variable groups — a global group library, structured credentials, and a dedicated management panel. It also adds document tabs (read-only preview), Ctrl+click link opening in the terminal, a Lark light theme, and agent / harness hosts now prefer PowerShell 7.

✨ New Features

Environment variable groups (headline change)

  • Global group library: the three per-kind variable group stores (dsh / codex / claude) merge into a single global library (env-profiles.json); "enabled" becomes a per-kind pointer, so one group can be enabled for several kinds at once. Existing data migrates automatically on startup (idempotent; the old file is kept as .bak).
  • New "Environment Variables" entry in the left rail: all group CRUD is consolidated into one global panel. The dsh / codex / claude switches on each card are both indicator and control — click to point that kind's enabled pointer at this group, click again to fall back to the system environment; an "n references" count reads back explicit bindings from agents and workspaces, with the referencing parties listed on hover.
  • Structured core — Base URL + API Key: credentials are injected via a per-consumer mapping — on the harness side dsh→DEEPSEEK_*, codex→OPENAI_*, claude→ANTHROPIC_*; generic agents declare their own mapping via envKeyMap, and without one only the extra variables pass through. On key collisions the structured core wins.
  • Explicit group binding for generic agents: resolution chain is bound group → inline env → system environment; dangling bindings are rejected at save time.
  • Hardening & normalization: agent env is sanitized on write (empty keys / non-string values dropped, so dirty data never reaches node-pty); the masked row editor is unified across agents and harness (sensitive keys masked, with an eye toggle for plaintext).

Document tabs

  • New document tabs with read-only preview — multiple can be open and split. Four entry points: double-click in the file tree, drop onto the window, Ctrl+Shift+O to open the system file dialog, or Ctrl+click a path in the terminal.
  • Links inside documents resolve through a unified merge (including relative paths in the SSH docs).

Terminal

  • Ctrl+click in the terminal: URLs open in a web tab, paths open in document preview — no more copying into a browser.

Agent / Harness host shell

  • Agents and harness workspaces now prefer PowerShell 7 as the launch shell: the system PATH, WindowsApps aliases, and well-known install locations are probed, so a freshly installed pwsh is picked up without restarting the app. Without pwsh, behavior is unchanged — user-created local sessions are unaffected.
  • The pwsh host adds -NoProfile: an interactive profile's Set-Location no longer silently overrides the workspace / worktree cwd, keeping the host transparent.

Themes & UI

  • New Lark light theme (Feishu-style: cool-gray chrome + pure-white canvas + ink-blue text + brand-blue focus).
  • Web tabs show the site favicon and adapt to light / dark themes.
  • Panel tabs and the rack layout language are unified; the MCP activity chip moves to the bottom of the left rail.

Misc

  • Harness worktree and default names switch to timestamps: the worktree key becomes <kind>-<workspace-name>-<seconds-level timestamp> (creation time is readable, replacing the random code), and empty names default to Workspace-<minute-level timestamp>.

🐛 Fixes

  • Shortcut conflict: opening a local document moves from Ctrl+O to Ctrl+Shift+O, no longer stealing the terminal's ^O control character — vim's jump-to-previous-position and bash's operate-and-get-next work again.
  • Panes: fixed drag-and-drop and overlay splitting on empty panes.
  • Persistence robustness (variable group / agent / workspace repositories):
    • unified atomic writes (temp file + rename), so a mid-write crash no longer leaves a truncated JSON behind;
    • save and delete failures are no longer silent — the form stays open with the reason shown, and errors distinguish "record not found" from "write failed";
    • the ENV panel warns when extra variables contain another protocol's credential keys, suggesting folding them into the core or splitting the group, to prevent credential cross-talk.
  • Session dedup & cloning: the dedup key and same-config check now compare shellArgs — the same shell with different arguments (e.g. pwsh -NoProfile vs interactive pwsh) is no longer misjudged as one session; cloneSession now deep-copies arrays, removing shared references across the disk boundary.
  • LocalConfig is unified into a single definition in @shared/types; the connectors-side copy and its dead fields are gone.

🔄 Upgrade notes

  • Existing variable groups migrate to the global library and are structured (Base URL / API Key) on first launch; the original file is kept as .bak — nothing to do manually.
  • The MCP lyshell_create_session local parameter deliberately does not expose shellArgs (internal plumbing only); interactive terminals keep default-shell behavior — the external surface is unchanged.

v1.0.6

Choose a tag to compare

@liangyou09 liangyou09 released this 28 Aug 11:18

LyShell v1.0.6

Release date: 2026-08-28

✨ Features

  • Readable Harness worktree names: worktree-isolated workspaces now get a stable, human-readable key (<kind>-<name>-<code>, e.g. claude-myrepo-x7k2) generated on first launch and persisted — no more UUID-suffixed directories. The workspace edit dialog previews the resulting worktree path and lets you pick an existing key from the repo.
  • In-place legacy worktree migration: workspaces previously launched under the old <kind>-<id> key are migrated on next launch — the directory is git worktree moved and the branch renamed in place, uncommitted changes carry over, so a saved workspace keeps the exact tree it had last time.
  • Serialized launch resolution: harness launch (read record → resolve worktree) is serialized per workspace, closing the concurrent-double-launch race that could roll back a just-persisted key or hand out a stale path.
  • Claude skip-permissions toggle: per-workspace switch that appends --dangerously-skip-permissions to the Claude launch command (worktree isolation recommended when enabled).
  • Generic web tab with recent history: any URL can be opened as a web tab, with recent-visit history; the dsh Web tab and MCP audit view ride the same mechanism.
  • Harness session tab brand badges: terminal tabs for harness sessions show which agent (dsh / codex / claude) spawned them.
  • Named environment variable groups: harness environment variables moved from inline editing to reusable named groups, with Codex upstream configuration support.
  • Browser-style tab row: terminal tabs promoted to a first-class top row with sidebar-collapse L-shaped inset; quick commands merged into the session rail and the bottom status bar removed.

🔄 Changed

  • Harness detection caching: dependency detection results are cached per session instead of re-probing on every panel open.
  • Workspace dialog layout: selecting an env profile auto-fills the model field (manual edits opt out); name/model fields are single-row, env-profile section moved above the skip-permissions section.

🔒 Security

  • Sensitive variable masking: environment-variable values marked sensitive are masked in the Harness UI instead of shown in clear text.

🐛 Bug Fixes

  • MCP / web tab interaction & split-pane drag: fixed focus conflicts between the MCP view and web tabs, plus drag glitches when dropping on pane edges.
  • dsh web embedded launch: appends --no-open when embedding in the webview so the system default browser is no longer spawned alongside.

v1.0.5

Choose a tag to compare

@liangyou09 liangyou09 released this 19 Aug 07:45

LyShell v1.0.5

Release date: 2026-08-19

✨ Features

  • First-class codex & claude agents: codex and claude join dsh as first-class Harness agents — each gets its own left-rail tab, a dedicated workspace list, dependency detection, and per-workspace model & environment variables.
  • Shared Harness framework: dsh was migrated onto a generic framework (detect / cwd / storage / launch), with the three agents' IPC channels registered from a single loop instead of three copies of duplicated logic.
  • Instant PATH refresh: the environment now reads the registry PATH live and injects it consistently across local sessions, dsh web, and dependency detection — newly installed CLIs are picked up without restarting the app.
  • Per-workspace model for codex/claude: the model is passed as codex --model <model> / claude --model <model> (left blank to omit); environment defaults are OPENAI_API_KEY / ANTHROPIC_API_KEY.
  • dsh Web tab drag-to-split: the dsh Web tab can now be dragged — to a pane's center to remount it, or to an edge to split into its own pane; the webview is hidden during the drag so it doesn't swallow drag events.
  • Overlay pane keep-alive: empty panes hosting the dsh Web / MCP audit view are no longer accidentally removed by pane cleanup.

🔄 Changed

  • dsh Web entry reworked: the per-workspace globe icon is gone — the panel title is now the single Web UI entry, opening dsh web at the dsh-specific $DSH_HOME/web directory, decoupled from the TUI workspace list.

🗑️ Removed

  • Workspace pinning: the workspace pin (置顶) control and its setPinned IPC, introduced in v1.0.4, have been removed.

🔒 Security

  • Model-name whitelist: codex/claude model strings are validated against a strict [A-Za-z0-9._:-] whitelist before being appended as --model. This is the sole defense against command injection, since model strings are typed into an interactive shell via the PTY. Covered by a new launch.test.ts suite.

🐛 Bug Fixes

  • Sessions panel drag reset: the drag handler now resets draggedIndex on onDragEnd, fixing rows stuck in the dragging state when dropped on an invalid target.

🎨 Polish

  • Harness panel title / workspace header restyled for clearer visual hierarchy, and the environment-variable fill button was de-crowded from its hint text.

v1.0.4

Choose a tag to compare

@liangyou09 liangyou09 released this 17 Aug 09:32

LyShell v1.0.4

Release date: 2026-08-17

✨ Features

  • DeepSeek Harness workspace: a dedicated panel for managing DeepSeek Harness workspaces — create, edit, pin, and delete, with per-workspace environment variables (DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL, DSH_HOME, …) and model presets.
  • TUI & Web UI launch: each workspace can open in a terminal TUI (dsh-tui) or an embedded Web UI. The Web UI is spawned as dsh web --port 0, its real port parsed from stdout, and rendered inside LyShell as a <webview> tab.
  • Web UI behaves like a terminal tab: closable via ✕ and switchable back and forth — switching away hides it while keeping the page state and subprocess alive, and only ✕ tears it down.

🔒 Security

  • Web UI navigation and popups are locked to the workspace's loopback origin; the echoed URL is validated (loopback + explicit port, no embedded credentials) before the <webview> ever loads it.

🐛 Bug Fixes

  • Workspace cwd is now validated on save and launch (expands ~, must be an absolute existing directory).
  • Workspace storage is hardened: dedup by id, reindex on load and delete, rollback on save failure.
  • Workspace deletion now requires a two-step confirmation.
  • The DSH web subprocess is fully reclaimed on every exit path — tab close, window close, pane merge, dragging the last terminal away, and rapid workspace switching.

v1.0.3

Choose a tag to compare

@liangyou09 liangyou09 released this 14 Aug 09:45

LyShell v1.0.3

Release date: 2026-08-14

✨ Features

  • Multi-format MCP registration: MCP registration now emits JSON / CLI / TOML configs and unifies panel monospace fonts for direct client integration.
  • Agent icon redesign: rounded robot head with a smile and round line caps.
  • Rack bar icon upgrade: icons enlarged to 24px with hover scale, active glow, and an online breathing animation.
  • Persistent quick-command bar: the quick-command bar is now always visible with a "New" button, plus required name / command validation.
  • Settings merged into the rack bar: settings now lives in the left rack bar's bottom slot; removed the title-bar ⚙ and floating panel.

🐛 Bug Fixes

  • Terminal auto-focus: auto-focus the terminal after creating a session or switching tabs, limited to the active, unhidden instance to avoid focus contention.
  • First-column text drift: switched to a Unicode 15 width table with floating-point width measurement, fixing first-column drift with CJK / emoji.

📖 Docs

  • Documented plugin sub-process isolation and new MCP tools in the README.

v1.0.2

Choose a tag to compare

@liangyou09 liangyou09 released this 12 Aug 08:09

LyShell v1.0.2 — Plugins, MCP Audit & Terminal Polish

🧩 Plugin System

A full plugin host with per-plugin capability gates, token-based auth, and local dev installation UI. Plugins run inside the host with scoped API tokens
(Python one-shot/persistent, Node.js persistent); they can also spawn controlled external processes that connect back over stdio MCP. Install from a dev
directory, ZIP, or URL all sandboxed behind granular capability gates.

🛡 MCP Security & Audit

  • Activity audit panel real-time MCP call log with calendar picker, filtering, and pagination, accessible from the title bar
  • Destructive command confirmation guard
  • Per-session token model with fine-grained capability toggles (read / interactiveWrite / execute / localExecute / fileWrite / sessionControl /
    sessionMetadataWrite)
  • Built-in brand icon matching by command name + emoji picker overlay
  • Agent sessions are now transient (never leak into the session list)

🖥 Terminal

  • Canvas now follows light/dark theme with a unified terminal background color
  • CJK IME candidate positioning fixed
  • First-column text drift on xterm resize eliminated
  • Ctrl+F1F12 shortcuts now work even when the terminal is focused

🪟 Window

  • Built-in Chinese and English language bundles

🔧 Fixes

  • Closing a tab now fully removes the runtime session entry no more leaked temporary sessions
  • File transfer Worker security hardening
  • Settings panel split into Terminal / MCP tabs with improved readability
  • Status bar cols rows indicator now clickable to clear screen (Ctrl+L), scrollback line counter clickable to scroll to bottom / double-click to clear