Skip to content

V1.0.7

Latest

Choose a tag to compare

@liangyou09 liangyou09 released this 04 Sep 13:17
· 5 commits to main since this release

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.