Repository navigation
Releases: liangyou09/lyshell-archive
Release list
V1.0.7
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 viaenvKeyMap, 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+Oto 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+clickin 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'sSet-Locationno 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 toWorkspace-<minute-level timestamp>.
🐛 Fixes
- Shortcut conflict: opening a local document moves from
Ctrl+OtoCtrl+Shift+O, no longer stealing the terminal's^Ocontrol 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 -NoProfilevs interactive pwsh) is no longer misjudged as one session;cloneSessionnow deep-copies arrays, removing shared references across the disk boundary. LocalConfigis 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_sessionlocalparameter deliberately does not exposeshellArgs(internal plumbing only); interactive terminals keep default-shell behavior — the external surface is unchanged.
v1.0.6
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 isgit 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-permissionsto 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-openwhen embedding in the webview so the system default browser is no longer spawned alongside.
v1.0.5
LyShell v1.0.5
Release date: 2026-08-19
✨ Features
- First-class codex & claude agents:
codexandclaudejoindshas 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:
dshwas 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 areOPENAI_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 webat the dsh-specific$DSH_HOME/webdirectory, decoupled from the TUI workspace list.
🗑️ Removed
- Workspace pinning: the workspace pin (置顶) control and its
setPinnedIPC, 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 newlaunch.test.tssuite.
🐛 Bug Fixes
- Sessions panel drag reset: the drag handler now resets
draggedIndexononDragEnd, 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
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 asdsh 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
cwdis 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
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
roundline 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
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