From fecb99d94aede7c078f20bb297ee7413815cbe97 Mon Sep 17 00:00:00 2001 From: kuddev Date: Fri, 21 Aug 2026 22:31:11 +0800 Subject: [PATCH] chore(release): prepare v1.2.0 --- CHANGELOG.md | 68 ++++++++++++++-- Cargo.lock | 14 ++-- docs/release-notes/unreleased.md | 121 +---------------------------- docs/release-notes/v1.2.0.md | 128 +++++++++++++++++++++++++++++++ nebula-completions/Cargo.toml | 2 +- nebula_app/Cargo.toml | 10 +-- nebula_config/Cargo.toml | 4 +- nebula_config_derive/Cargo.toml | 4 +- nebula_settings/Cargo.toml | 2 +- nebula_split/Cargo.toml | 2 +- nebula_terminal/Cargo.toml | 2 +- scripts/installer.iss | 4 +- 12 files changed, 214 insertions(+), 147 deletions(-) create mode 100644 docs/release-notes/v1.2.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index bc9df13..b1cea30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,25 +8,81 @@ Every release entry is provided in English and Simplified Chinese. ### English +No unreleased changes yet. + +### 简体中文 + +暂无未发布改动。 + +## 1.2.0 - 2026-08-21 + +### English + #### Added -- **`nebula ctl orchestrate`** — a strongly typed single-request workflow: a model submits its intent once and the Runtime performs the deterministic control steps locally, bounded by a step count, a byte ceiling and a readiness timeout, with per-workflow `stop`/`continue` error handling. +- **Deterministic Runtime orchestration** — `nebula ctl orchestrate` accepts one typed request and executes bounded local control steps with workflow-specific `stop`/`continue` failure handling. +- **Expanded Runtime control APIs** — named-agent operations, process and control-key commands, real command exit status, pane lifecycle events, and a stabilized transport/discovery path are available to automation clients. +- **Transactional managed-agent worktrees** — agent forks create isolated branches and worktrees, retain stable agent identity, and roll back resources only when failure is confirmed. +- **Packaged Runtime contract** — the versioned schema, control API documentation, and `nebula-runtime` Skill ship in both the ZIP and installer. +- **Horizontal title-bar tabs** — top-mode tabs support selection, drag reordering, docking and splitting, plus horizontal auto-scroll while selecting or dragging. Settings now lives in the three-dot menu, and the first tab aligns with the terminal/powerline edge. +- **SVN integration** — the GPUI repository workflow and status panel now support SVN working copies alongside Git. +- **SSH failure retry** — both shells show Retry immediately to the left of Close only after a connection failure and replace that failed pane in place. #### Fixed -- **The checked-in shell completions match the CLI again** — `ctl orchestrate`, `--gpui` and `--legacy-shell` were missing from the generated bash/fish/zsh scripts. +- **Second launches reach the resident window** — opening Nebula again hands the request to the running instance and creates the requested tab/window instead of exiting silently. Addresses [#39](https://github.com/Kuddev/nebula/issues/39). +- **Sogou and other IMEs keep ownership of unmodified text input** — ordinary letters and Space remain on the text-input path so IME composition can be confirmed. Addresses [#43](https://github.com/Kuddev/nebula/issues/43). +- **WSL keeps the guest's configured default shell** — Nebula no longer forces Bash when launching `wsl.exe`. Addresses [#44](https://github.com/Kuddev/nebula/issues/44). +- **Ctrl+C is conditional copy again** — with no selection it reaches the PTY; after an explicit copy, the selection is cleared before the next key event. Addresses [#48](https://github.com/Kuddev/nebula/issues/48). +- **Legacy `user@host:port` SSH targets no longer fail the Windows configuration probe with `11001`** — only the `ssh -G` probe target is normalized to `ssh://user@host:port`; the actual connection destination is preserved. +- **Codex Shift+Enter is encoded as a Win32 input record** — ConPTY Win32 input mode and DECSET 9001 tracking preserve the modified Enter key. +- **Background blur can be toggled at runtime** and hidden windows recover correctly when tray support is disabled. +- **Opacity sliders no longer rebuild fonts, themes, wallpaper textures, or DWM state on every drag event.** +- **WSL file trees no longer report cold or timed-out reads as empty folders** and the Files panel follows the active local/WSL/SSH pane after switches and manual navigation. +- **PowerShell startup injection is present before the first prompt** for three-dot launches, powerline-disabled sessions, and alternate profile paths. +- **Checked-in bash, fish, and zsh completions match the CLI** for `ctl orchestrate`, `--gpui`, and `--legacy-shell`. +- **Installer fallback and numeric version metadata now follow the application release version.** #### Improved -- **The WSL file tree builds from one `find` call** — multiple starting points are batched into a single guest round trip instead of one subprocess per root. +- **Completion is routed through each pane's filesystem** — local, WSL, and SSH panes fetch candidates from their own environment instead of the host filesystem. +- **WSL tree enumeration batches starting points into one `find` call** and uses a realistic cold-start timeout; refreshes are event-driven instead of running every four seconds. +- **Shell injection is selected by shell family** so PowerShell, cmd, Nushell, and fallback shells keep their compatible startup/completion behavior. +- **Mixed-DPI window dragging coalesces intermediate work** and separates the native move transaction from the final DPI/size commit. +- **GPUI split-pane chrome and title-bar integration were aligned**, while the sidebar mode and its settings control remain unchanged. +- **The shell-injected `fmt` command was removed** and the expanded sidebar toggle now uses the legacy shell's softer selected surface. +- **README Star History rendering was restored** by [@FaintFlower](https://github.com/FaintFlower) in [#49](https://github.com/Kuddev/nebula/pull/49). ### 简体中文 #### 新增 -- **`nebula ctl orchestrate`** — 强类型单请求编排:模型只提交一次意图,Runtime 在本地完成确定性控制步骤,受步数、字节上限与就绪超时三重约束,并支持按工作流选择 `stop`/`continue` 的错误处理。 +- **确定性的 Runtime 编排** — `nebula ctl orchestrate` 接收一次强类型请求,在本地执行受步数、字节上限和就绪超时约束的控制步骤,并支持按工作流选择 `stop`/`continue` 错误处理。 +- **扩展 Runtime 控制 API** — 新增命名 agent 操作、进程与控制键命令、真实命令退出码、pane 生命周期事件,并稳定了传输与发现路径。 +- **事务式托管 agent worktree** — agent fork 会创建隔离分支与 worktree,保存稳定 agent 身份,并且只在确认失败时回滚本次创建的资源。 +- **随包提供 Runtime 契约** — ZIP 与安装器都包含带版本的 schema、控制 API 文档和 `nebula-runtime` Skill。 +- **水平标题栏标签页** — 顶部模式支持选择、拖拽排序、停靠与分屏,选择或拖拽时可水平自动滚动;设置入口已收进三个点菜单,首个标签与终端/powerline 左边缘严格对齐。 +- **SVN 集成** — GPUI 仓库工作流与状态面板现在除 Git 外也支持 SVN 工作副本。 +- **SSH 失败重试** — 两套界面都只在连接失败后显示“重试”,位置紧邻“关闭”左侧,并在原位替换失败的 pane。 #### 修复 -- **签入的 shell 补全脚本与 CLI 重新同步** — 生成的 bash/fish/zsh 脚本里缺了 `ctl orchestrate`、`--gpui` 与 `--legacy-shell`。 +- **第二次启动会交给驻留窗口处理** — 再次打开 Nebula 会由现有实例创建所需标签/窗口,不再静默退出。对应 [#39](https://github.com/Kuddev/nebula/issues/39)。 +- **搜狗等输入法继续接管未修饰文本输入** — 普通字母与空格保留在 text-input 路径,输入法组合文本可以正常确认。对应 [#43](https://github.com/Kuddev/nebula/issues/43)。 +- **WSL 保留来宾系统配置的默认 shell** — 启动 `wsl.exe` 时不再强制使用 Bash。对应 [#44](https://github.com/Kuddev/nebula/issues/44)。 +- **Ctrl+C 恢复条件复制语义** — 没有选区时按键传给 PTY;明确复制后,在下一个按键事件前清除选区。对应 [#48](https://github.com/Kuddev/nebula/issues/48)。 +- **旧格式 `user@host:port` 不再让 Windows SSH 配置探测报 `11001`** — 只把 `ssh -G` 探测目标规范化为 `ssh://user@host:port`,实际连接目标保持不变。 +- **Codex 的 Shift+Enter 会编码为 Win32 输入记录** — ConPTY Win32 输入模式与 DECSET 9001 跟踪会保留带修饰键的 Enter。 +- **背景模糊开关可在运行时生效**,关闭托盘时也能正确找回之前隐藏的窗口。 +- **拖动不透明度滑块不再逐事件重建字体、主题、壁纸纹理或 DWM 状态。** +- **WSL 文件树不再把冷启动或超时误报为空目录**;切换 pane 或手动导航后,Files 面板会继续跟随当前本地/WSL/SSH pane。 +- **PowerShell 在第一条提示符前完成启动注入**,覆盖三个点启动、关闭 powerline 和备用 profile 路径。 +- **签入的 bash、fish、zsh 补全脚本与 CLI 重新同步**,补齐 `ctl orchestrate`、`--gpui` 与 `--legacy-shell`。 +- **安装器兜底版本与数字文件版本会跟随应用发布版本。** #### 改进 -- **WSL 文件树只发一次 `find`** — 多个起点合并成一次来宾往返,不再每个根目录起一个子进程。 +- **补全按 pane 使用各自的文件系统** — 本地、WSL 与 SSH pane 都从自己的环境获取候选,不再错误读取宿主文件系统。 +- **WSL 文件树把多个起点合并成一次 `find`**,采用符合冷启动实际的超时,并改为事件驱动刷新,不再每四秒全量扫描。 +- **按 shell 家族选择注入逻辑**,让 PowerShell、cmd、Nushell 和通用 fallback 保持各自兼容的启动/补全行为。 +- **混合 DPI 窗口拖动会合并中间更新**,原生移动事务与最终 DPI/尺寸提交彼此分离。 +- **GPUI 分屏边框与标题栏整合已对齐**,侧边栏模式及其设置按钮保持不变。 +- **移除 shell 注入的 `fmt` 命令**,展开的侧栏切换按钮改用旧界面更柔和的选中色。 +- **README Star History 图表已恢复**,由 [@FaintFlower](https://github.com/FaintFlower) 在 [#49](https://github.com/Kuddev/nebula/pull/49) 中贡献。 ## 1.1.0 - 2026-08-18 diff --git a/Cargo.lock b/Cargo.lock index c5b899d..ac232f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4629,7 +4629,7 @@ dependencies = [ [[package]] name = "nebula" -version = "1.1.0" +version = "1.2.0" dependencies = [ "ab_glyph_rasterizer", "aes-gcm", @@ -4706,7 +4706,7 @@ dependencies = [ [[package]] name = "nebula-completions" -version = "1.1.0" +version = "1.2.0" dependencies = [ "lscolors", "nu-ansi-term", @@ -4726,15 +4726,15 @@ dependencies = [ [[package]] name = "nebula-settings" -version = "1.1.0" +version = "1.2.0" [[package]] name = "nebula-split" -version = "1.1.0" +version = "1.2.0" [[package]] name = "nebula_config" -version = "1.1.0" +version = "1.2.0" dependencies = [ "log", "nebula_config_derive", @@ -4744,7 +4744,7 @@ dependencies = [ [[package]] name = "nebula_config_derive" -version = "1.1.0" +version = "1.2.0" dependencies = [ "log", "nebula_config", @@ -4761,7 +4761,7 @@ version = "0.6.0" [[package]] name = "nebula_terminal" -version = "1.1.0" +version = "1.2.0" dependencies = [ "base64", "bitflags 2.13.0", diff --git a/docs/release-notes/unreleased.md b/docs/release-notes/unreleased.md index 7d6b4dc..d2aa1e2 100644 --- a/docs/release-notes/unreleased.md +++ b/docs/release-notes/unreleased.md @@ -4,125 +4,8 @@ This file contains changes that are not part of a numbered release yet. ## English -### Fixed - -- Fixed Codex treating Shift+Enter as ordinary Enter in Nebula on Windows. The - terminal now enables ConPTY Win32 input mode, tracks DECSET 9001, and encodes - the corresponding Win32 key records. -- Fixed the installer's fallback and numeric version metadata still identifying - old 0.6.0 builds instead of the current 0.9.0 application version. -- Fixed PowerShell sessions created from the three-dot shell menu, and sessions - with Powerline disabled, losing Nebula's OSC prompt/command state until the - first interactive conversation. The OSC bridge is now installed before the - first prompt so Codex/CLI detection and the right-side activity state are - available immediately. -- Fixed PowerShell profiles created through the alternate profile path missing - the Nebula command-completion integration. -- Disabled the `fmt` command from Nebula's shell-injected command surface. -- Fixed the GPUI Windows background-blur switch doing nothing at runtime. The - window effects were applied inside `handle.update` while that same window was - already borrowed by the enclosing update, so the call always failed with - `window not found` and the error was discarded — blur only ever took effect at - startup, and once on it could not be turned off. Effects are now applied on a - deferred pass and update failures are logged. -- Fixed dragging the opacity sliders stuttering badly. Dragging no longer - reloads settings from disk, rebuilds every terminal's fonts and palette, - rebuilds the whole theme, re-bakes the wallpaper texture, or round-trips to - DWM on every event; it updates the shell alpha directly and persists once - after the drag settles. The blocking `DwmFlush` was removed and window-level - blur is only touched when the blur state actually changes. -- Fixed the WSL file tree showing "此目录为空" for guest directories. A fresh - `wsl.exe -d -- find` call takes about 7.5s on its cold path even when - the same distribution already has an interactive terminal running, so the 6s - budget always expired on the first snapshot, the worker was killed, and the - empty result was rendered as an empty directory. The budget is now 20s. -- The Files panel no longer re-scans the tree on a timer. It previously rebuilt - the whole snapshot (a WSL subprocess plus three git subprocesses) every 4 - seconds, which on WSL left the panel flipping between "正在读取目录…" and an - empty list. Refreshes are now driven by directory changes, the refresh button, - and finished git operations only. -- Fixed windows staying hidden when the tray was disabled while they were - minimized to it. The reveal path applied its effect inside `handle.update` on - an already-borrowed window, so it always failed silently while - `window_hidden` had already been cleared — leaving an app with no window and - no tray icon that could not restore itself. -- Fixed the shared Files panel losing the active pane after tab/pane switches - or manual tree navigation. WSL `/mnt/` paths map to the host drive, - while `/`, `/home`, `/etc`, and other guest paths are enumerated inside the - selected distribution. Directory rows are published before the slower WSL - VCS probe, refresh resumes following the active pane, and timed-out workers - can no longer disable later refreshes. - -### Improved - -- Added a default-selected installer task that adds Nebula to the current - user's PATH. The installer also registers `nebula.exe` with Windows App Paths - for Win+R, preserves the Explorer directory context menus, and removes only - its own PATH entry during uninstall. -- Shell injection is now selected by shell family. PowerShell uses its own - startup/status path; `cmd.exe` uses only the compatible minimal status path; - Nushell keeps its native completion behavior and is not replaced by Nebula's - completion script; other shells use the fallback OSC path where supported. -- Improved Windows mixed-DPI dragging between monitors by separating the - native move transaction from the final DPI/size commit. The Windows 11 - backend must use the native `WM_DPICHANGED` target rectangle, while the - Windows 10 compatibility reposition path remains gated to older builds. -- Improved cross-monitor drag performance by coalescing intermediate DPI, - physical-size, font, and UI updates until the native drag settles. Ordinary - native messages remain on the fast path. -- Matched the expanded sidebar toggle's selected background to the softer - surface color used by the legacy shell without changing other selected - buttons globally. +No unreleased changes yet. ## 中文 -### 修复 - -- 修复 Windows 下 Codex 把 Shift+Enter 当作普通 Enter 的问题。终端现在启用 - ConPTY Win32 输入模式、跟踪 DECSET 9001,并编码对应的 Win32 按键记录。 -- 修复安装器兜底版本与数字文件版本仍显示旧 0.6.0、没有跟随当前 0.9.0 - 应用版本的问题。 -- 修复通过三个点创建的 PowerShell,或关闭 Powerline 后的 PowerShell,在 - 第一次实际对话前丢失 Nebula OSC 提示符/命令状态的问题。现在启动阶段就 - 安装 OSC 桥接,因此 Codex/CLI 识别和右侧活动状态会在第一条提示符出现 - 时可用,不需要先发送一轮对话。 -- 修复通过备用 profile 路径创建的 PowerShell 没有命令补齐的问题。 -- 禁用 shell 注入命令面板中的 `fmt` 命令。 -- 修复 GPUI Windows 壳的背景模糊开关在运行中点了没反应的问题。窗口视效原先在 - `handle.update` 里应用,而那一刻这个窗口已经被外层 update 借出,调用必然返回 - `window not found`,错误又被丢弃——于是模糊只在启动时生效,一旦开着就再也 - 关不掉。现在改为延迟一帧统一应用,且 update 失败会留日志。 -- 修复拖动不透明度滑块严重卡顿的问题。拖拽过程不再每个事件都重新读设置文件、 - 重建每个终端的字体与调色板、重建整套主题、重烘焙壁纸纹理、以及和 DWM 往返; - 改为直接更新壳色 alpha,停手之后落盘一次。阻塞式 `DwmFlush` 已移除,窗口级 - 模糊只在模糊态真的改变时才动。 -- 修复共享 Files 面板在切换 tab/pane 或手动浏览目录后不再跟随当前 pane 的 - 问题。WSL `/mnt/<盘>` 映射到宿主盘,`/`、`/home`、`/etc` 等来宾路径则在 - 对应发行版内枚举;目录行会先于较慢的 WSL VCS 探测发布,刷新按钮会恢复 - 跟随当前 pane,WSL 工人超时也不会再让后续刷新永久失效。 - -### 改进 - -- 安装器新增默认勾选的当前用户 PATH 任务,并通过 Windows App Paths 注册 - `nebula.exe` 供 Win+R 直接启动;资源管理器目录右键菜单继续随包提供,卸载 - 时只移除安装器自己加入的 PATH 条目。 -- 按 shell 家族选择注入逻辑:PowerShell 使用专用启动/状态路径;`cmd.exe` - 只使用兼容的最小状态路径;Nushell 保留自身原生命令补齐,不被 Nebula - 的补齐脚本替换;其他 shell 在支持时使用通用 OSC 回退路径。 -- 改进 Windows 混合 DPI 多显示器拖动:把原生拖动阶段与最终 DPI/尺寸提交 - 分离;Windows 11 使用原生 `WM_DPICHANGED` 目标矩形,Windows 10 的兼容 - 重定位逻辑只对旧版本生效。 -- 改进跨显示器拖动性能:中间产生的 DPI、物理尺寸、字体和 UI 更新合并到 - 原生拖动结束后执行,普通系统消息仍走快速路径。 -- 左上角侧栏折叠按钮展开时改用与旧壳一致的柔和 surface 选中色,不全局 - 改动其他 selected 按钮的主题状态。 - -## Verification - -The PowerShell/OSC changes need first-prompt checks for all profile creation -routes. The mixed-DPI change still requires a real Windows two-monitor matrix, -including Windows 11 150% -> 125% and the reverse direction. A compile check -alone is not sufficient to claim that the physical monitor seam is fixed. The -WSL changes still require guest-path checks for both `/mnt/` and native -Linux repositories, and the blur change requires a live Windows DWM toggle -check in both directions. +暂无未发布改动。 diff --git a/docs/release-notes/v1.2.0.md b/docs/release-notes/v1.2.0.md new file mode 100644 index 0000000..d1c1ef7 --- /dev/null +++ b/docs/release-notes/v1.2.0.md @@ -0,0 +1,128 @@ +# Nebula Terminal 1.2.0 + +Nebula Terminal 1.2.0 expands the Runtime control surface, adds horizontal title-bar tabs and SVN support, and concentrates this cycle's Windows, WSL, SSH, IME, and GPUI reliability work into one release. + +Nebula Terminal 1.2.0 扩展了 Runtime 控制能力,加入水平标题栏标签页与 SVN 支持,并集中交付本周期的 Windows、WSL、SSH、输入法与 GPUI 稳定性改进。 + +## English + +### Highlights + +- Horizontal title-bar tabs support selection, drag reordering, docking, split creation, and horizontal auto-scroll. In top mode, Settings now lives in the three-dot menu and the first tab starts exactly at the terminal/powerline left edge; sidebar mode is unchanged. +- The Runtime can orchestrate typed workflows, control named agents and processes, report real exit status and pane lifecycle events, and create transactional managed-agent worktrees. +- Completion and file-tree work now follow each pane's real local, WSL, or SSH filesystem context. +- This release addresses the resident second-launch, Sogou IME, WSL default-shell, and conditional Ctrl+C Copy reports tracked in Issues #39, #43, #44, and #48. The mapping below keeps those fixes traceable while the Issues remain open for user verification. + +### Added + +- Added `nebula ctl orchestrate`, a typed single-request workflow whose deterministic local steps are bounded by step count, byte ceiling, and readiness timeout, with per-workflow `stop`/`continue` failure behavior. +- Added named-agent control, process and control-key APIs, real command exit status, and pane lifecycle events to the Runtime contract. +- Added isolated, transactional worktree creation for managed agents, including stable branch/path identity and failure-aware rollback. +- Added the versioned Runtime schema, control API documentation, and `nebula-runtime` Skill to the ZIP and installer payloads. +- Added the horizontal title-bar tab layout with drag reorder, dock/split targets, and drag/selection auto-scroll. +- Added SVN working-copy detection and repository status/workflow support to the GPUI shell. +- Added a failure-only SSH Retry action immediately to the left of Close in both the legacy and GPUI shells. Retry atomically replaces only the failed pane with the same destination. + +### Fixed + +- Fixed a second Nebula launch silently disappearing while a resident instance was running. The launch request is now handed to that instance, which creates and focuses the requested tab/window. Addresses [#39](https://github.com/Kuddev/nebula/issues/39). +- Fixed unmodified letters and Space bypassing the Windows text-input path, allowing Sogou and other IMEs to confirm composition normally. Addresses [#43](https://github.com/Kuddev/nebula/issues/43). +- Fixed WSL launches forcing Bash instead of honoring the guest account's `/etc/passwd` default shell. Addresses [#44](https://github.com/Kuddev/nebula/issues/44). +- Fixed Ctrl+C Copy consuming the key when there is no selection and repeatedly copying a stale selection. No selection now propagates Ctrl+C to the PTY; an explicit copy clears selection before the next key event. Addresses [#48](https://github.com/Kuddev/nebula/issues/48). +- Fixed legacy `user@host:port` SSH destinations failing the Windows `ssh -G` configuration probe with resolver error `11001`. Only the probe target is normalized to `ssh://user@host:port`; the real connection destination is unchanged. +- Fixed Codex treating Shift+Enter as ordinary Enter by enabling ConPTY Win32 input, tracking DECSET 9001, and encoding the corresponding Win32 key record. +- Fixed runtime background-blur toggling and the related path that could leave a window hidden after tray support was disabled. +- Fixed opacity sliders rebuilding fonts, terminal palettes, themes, wallpaper textures, and DWM state on every drag event. +- Fixed WSL cold-start/timeout failures being rendered as empty directories. The Files panel now keeps following the active local/WSL/SSH pane after tab changes, pane changes, and manual navigation. +- Fixed PowerShell sessions opened from the three-dot menu or with Powerline disabled missing OSC command state before their first interaction. +- Fixed alternate PowerShell profile launches missing Nebula command completion. +- Fixed checked-in bash, fish, and zsh completion scripts omitting `ctl orchestrate`, `--gpui`, and `--legacy-shell`. +- Fixed the installer's fallback and numeric file-version metadata lagging behind the application version. + +### Improved + +- Routed completion requests through each pane's own local, WSL, or SSH filesystem provider. +- Batched WSL file-tree starting points into one guest `find` call, increased the cold-start budget, and replaced the four-second polling scan with event-driven refreshes. +- Selected shell injection by shell family: PowerShell keeps its full integration, cmd uses its compatible minimal status path, Nushell keeps native completion, and other shells use the supported OSC fallback. +- Stabilized Runtime transport/discovery and kept pane/window ownership explicit across the agent-control path. +- Improved mixed-DPI dragging by separating native move handling from the final DPI/size commit and coalescing intermediate work. +- Matched split-pane chrome and title-bar integration in GPUI, moved only top-mode Settings into the three-dot menu, and preserved the sidebar-mode Settings button. +- Removed the shell-injected `fmt` action and aligned the expanded sidebar toggle with the legacy shell's softer selected surface. +- Restored the README Star History chart through [#49](https://github.com/Kuddev/nebula/pull/49). + +## 中文 + +### 重点更新 + +- 水平标题栏标签页支持选择、拖拽排序、停靠、创建分屏与水平自动滚动。顶部模式的设置入口已收进三个点菜单,首个标签与终端/powerline 左边缘严格对齐;侧边栏模式不变。 +- Runtime 新增强类型工作流编排、命名 agent/进程控制、真实退出码、pane 生命周期事件与事务式托管 agent worktree。 +- 补全与文件树会跟随每个 pane 的真实本地、WSL 或 SSH 文件系统上下文。 +- 本版处理了 Issue #39、#43、#44、#48 对应的驻留进程二次启动、搜狗输入法、WSL 默认 shell 与条件式 Ctrl+C 复制问题。下方保留明确定位,Issue 暂不自动关闭,等待用户实机验证。 + +### 新增 + +- 新增 `nebula ctl orchestrate` 强类型单请求工作流:本地确定性步骤受步数、字节上限与就绪超时约束,并支持按工作流配置 `stop`/`continue` 失败行为。 +- Runtime 契约新增命名 agent 控制、进程/控制键 API、真实命令退出码与 pane 生命周期事件。 +- 新增隔离、事务式的托管 agent worktree 创建,保留稳定的分支/路径身份,并按可确认的失败边界回滚。 +- ZIP 与安装器新增带版本的 Runtime schema、控制 API 文档和 `nebula-runtime` Skill。 +- 新增水平标题栏标签布局,以及拖拽排序、停靠/分屏目标和拖拽/选择自动滚动。 +- GPUI 界面新增 SVN 工作副本识别、仓库状态与操作工作流。 +- 旧界面和 GPUI 界面都新增仅在 SSH 连接失败后出现的“重试”按钮,位置紧邻“关闭”左侧;重试只会在原位原子替换失败的 pane。 + +### 修复 + +- 修复已有驻留实例时第二次启动 Nebula 会静默消失的问题。启动请求现在会交给驻留实例,由它创建并聚焦所需标签/窗口。对应 [#39](https://github.com/Kuddev/nebula/issues/39)。 +- 修复普通字母与空格绕过 Windows text-input 路径的问题,搜狗等输入法现在可以正常确认组合文本。对应 [#43](https://github.com/Kuddev/nebula/issues/43)。 +- 修复 WSL 启动时强制使用 Bash、忽略来宾账号 `/etc/passwd` 默认 shell 的问题。对应 [#44](https://github.com/Kuddev/nebula/issues/44)。 +- 修复没有选区时 Ctrl+C 被复制动作吞掉,以及旧选区导致反复复制的问题。无选区时 Ctrl+C 会传给 PTY;明确复制后会在下一个按键事件前清除选区。对应 [#48](https://github.com/Kuddev/nebula/issues/48)。 +- 修复旧格式 `user@host:port` 让 Windows `ssh -G` 配置探测报解析错误 `11001`。只有探测目标会规范化为 `ssh://user@host:port`,实际连接目标保持不变。 +- 修复 Codex 把 Shift+Enter 当作普通 Enter:启用 ConPTY Win32 输入、跟踪 DECSET 9001,并编码相应的 Win32 按键记录。 +- 修复运行时背景模糊开关无效,以及关闭托盘后窗口可能继续隐藏的同源问题。 +- 修复不透明度滑块每次拖动事件都重建字体、终端色表、主题、壁纸纹理与 DWM 状态的问题。 +- 修复 WSL 冷启动/超时被渲染成空目录的问题;切换标签、pane 或手动导航后,Files 面板会继续跟随当前本地/WSL/SSH pane。 +- 修复从三个点菜单启动或关闭 Powerline 的 PowerShell 在第一次交互前缺少 OSC 命令状态的问题。 +- 修复备用 PowerShell profile 启动路径缺少 Nebula 命令补全的问题。 +- 修复签入的 bash、fish、zsh 补全脚本缺少 `ctl orchestrate`、`--gpui` 与 `--legacy-shell` 的问题。 +- 修复安装器兜底版本与数字文件版本没有跟随应用版本的问题。 + +### 改进 + +- 补全请求现在通过每个 pane 自己的本地、WSL 或 SSH 文件系统提供器执行。 +- WSL 文件树会把多个起点合并成一次来宾 `find`,延长冷启动预算,并以事件驱动刷新代替每四秒轮询扫描。 +- 按 shell 家族选择注入:PowerShell 保留完整集成,cmd 使用兼容的最小状态路径,Nushell 保留原生补全,其他 shell 使用受支持的 OSC fallback。 +- 稳定 Runtime 传输与发现逻辑,并在 agent 控制路径中明确维护 pane/window 所属关系。 +- 改进混合 DPI 拖动:原生移动处理与最终 DPI/尺寸提交分离,中间更新合并执行。 +- 对齐 GPUI 分屏边框与标题栏整合;只移动顶部模式的设置入口,侧边栏模式设置按钮保持不变。 +- 移除 shell 注入的 `fmt` 动作,展开的侧栏切换按钮改用旧界面更柔和的选中色。 +- 通过 [#49](https://github.com/Kuddev/nebula/pull/49) 恢复 README Star History 图表。 + +## Issue status / Issue 状态 + +| Issue | Status in 1.2.0 / 1.2.0 状态 | Code location / 代码定位 | +| --- | --- | --- | +| [#39](https://github.com/Kuddev/nebula/issues/39) | Addressed; awaiting user verification / 已处理,等待用户验证 | Resident second-launch handoff / 驻留实例二次启动交接: `nebula_app/src/main.rs` | +| [#43](https://github.com/Kuddev/nebula/issues/43) | Addressed; awaiting user verification / 已处理,等待用户验证 | GPUI IME/text-input routing / GPUI 输入法与文本输入路由: `nebula_app/src/gpui_shell/terminal/keymap.rs` | +| [#44](https://github.com/Kuddev/nebula/issues/44) | Addressed; awaiting user verification / 已处理,等待用户验证 | WSL guest default-shell launch / WSL 来宾默认 shell 启动: `nebula_app/src/shell_detect.rs` | +| [#48](https://github.com/Kuddev/nebula/issues/48) | Addressed; awaiting user verification / 已处理,等待用户验证 | Conditional Copy and selection clearing / 条件复制与选区清理: `nebula_app/src/gpui_shell/workspace.rs`, `nebula_app/src/gpui_shell/terminal/view.rs` | +| [#45](https://github.com/Kuddev/nebula/issues/45), [#50](https://github.com/Kuddev/nebula/issues/50) | Known open / 已知未解决 | SSH TUI rendering and disconnects after an established session / SSH TUI 渲染与已连接会话自动断开 | +| [#46](https://github.com/Kuddev/nebula/issues/46) | Known open / 已知未解决 | Completion popup Enter behavior / 补全弹窗 Enter 行为 | + +The new `11001` probe normalization and failure Retry button do not claim to resolve the established-session disconnect or SSH TUI rendering reports in #45/#50. Issues not listed above retain their current GitHub state. + +本版的 `11001` 探测规范化和失败重试按钮不代表已经解决 #45/#50 中已建立会话后的自动断连或 SSH TUI 渲染问题。上表未列出的 Issue 保持其当前 GitHub 状态。 + +## Contributors / 贡献者 + +- [@FaintFlower](https://github.com/FaintFlower) restored the README Star History chart in [#49](https://github.com/Kuddev/nebula/pull/49). +- [@FaintFlower](https://github.com/FaintFlower) 在 [#49](https://github.com/Kuddev/nebula/pull/49) 中恢复了 README Star History 图表。 + +## Reporting issues / 反馈问题 + +[Issues → New issue](https://github.com/Kuddev/nebula/issues/new/choose) — include the Nebula version, shell type (local/WSL/SSH), reproduction steps, and relevant logs. For the four addressed Issues above, please report whether the original reproduction now passes before the Issue is closed. + +欢迎通过 [Issues → New issue](https://github.com/Kuddev/nebula/issues/new/choose) 反馈,并附上 Nebula 版本、shell 类型(本地/WSL/SSH)、复现步骤与相关日志。对于上面四个已处理 Issue,请先反馈原复现步骤是否通过,再决定是否关闭。 + +## Downloads and SHA256 / 下载与 SHA256 + +- `NebulaTerminal-v1.2.0-windows-x64.zip`: `SHA256_PENDING` +- `NebulaTerminal-1.2.0-windows-x64-setup.exe`: `SHA256_PENDING` diff --git a/nebula-completions/Cargo.toml b/nebula-completions/Cargo.toml index 16d0622..35105c1 100644 --- a/nebula-completions/Cargo.toml +++ b/nebula-completions/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nebula-completions" -version = "1.1.0" +version = "1.2.0" edition.workspace = true [features] diff --git a/nebula_app/Cargo.toml b/nebula_app/Cargo.toml index f3ca770..5a87f4c 100644 --- a/nebula_app/Cargo.toml +++ b/nebula_app/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nebula" -version = "1.1.0" +version = "1.2.0" license = "GPL-3.0-or-later" description = "Nebula Terminal — a premium GPU-accelerated terminal emulator" readme = "README.md" @@ -15,15 +15,15 @@ path = "src/main.rs" [dependencies.nebula_terminal] path = "../nebula_terminal" -version = "1.1.0" +version = "1.2.0" [dependencies.nebula_config_derive] path = "../nebula_config_derive" -version = "1.1.0" +version = "1.2.0" [dependencies.nebula_config] path = "../nebula_config" -version = "1.1.0" +version = "1.2.0" # 可选:GPUI UI 层(feature = "gpui-shell",模块 src/gpui_shell/)。 # gpui 与 gpui-component 成对锁定:0.5.1 编译在 gpui 0.2.2 上;两者由根 @@ -59,7 +59,7 @@ optional = true [dependencies.nebula-completions] path = "../nebula-completions" -version = "1.1.0" +version = "1.2.0" [dependencies] ahash = { version = "0.8.6", features = ["no-rng"] } diff --git a/nebula_config/Cargo.toml b/nebula_config/Cargo.toml index dc6b949..6d5776c 100644 --- a/nebula_config/Cargo.toml +++ b/nebula_config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nebula_config" -version = "1.1.0" +version = "1.2.0" license = "GPL-3.0-or-later" description = "Nebula configuration abstractions" homepage = "https://github.com/Kuddev/nebula" @@ -14,5 +14,5 @@ serde = "1.0.163" toml.workspace = true [dev-dependencies] -nebula_config_derive = { version = "1.1.0", path = "../nebula_config_derive" } +nebula_config_derive = { version = "1.2.0", path = "../nebula_config_derive" } serde = { version = "1.0.163", features = ["derive"] } diff --git a/nebula_config_derive/Cargo.toml b/nebula_config_derive/Cargo.toml index 315e03e..bb4dc14 100644 --- a/nebula_config_derive/Cargo.toml +++ b/nebula_config_derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nebula_config_derive" -version = "1.1.0" +version = "1.2.0" license = "GPL-3.0-or-later" description = "Failure resistant deserialization derive" homepage = "https://github.com/Kuddev/nebula" @@ -18,7 +18,7 @@ syn = { version = "2.0.16", features = ["derive", "parsing", "proc-macro", "prin [dev-dependencies.nebula_config] path = "../nebula_config" -version = "1.1.0" +version = "1.2.0" [dev-dependencies] log = "0.4.11" diff --git a/nebula_settings/Cargo.toml b/nebula_settings/Cargo.toml index 428f482..dda0966 100644 --- a/nebula_settings/Cargo.toml +++ b/nebula_settings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nebula-settings" -version = "1.1.0" +version = "1.2.0" license = "GPL-3.0-or-later" description = "Shared reader for Nebula runtime user settings (nebula_settings.txt) and theme terminal-color tables" publish = false diff --git a/nebula_split/Cargo.toml b/nebula_split/Cargo.toml index d9e3d48..0c1edc0 100644 --- a/nebula_split/Cargo.toml +++ b/nebula_split/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nebula-split" -version = "1.1.0" +version = "1.2.0" license = "GPL-3.0-or-later" description = "Shared split-pane rules: layout tree, geometry, divider drag and directional focus" publish = false diff --git a/nebula_terminal/Cargo.toml b/nebula_terminal/Cargo.toml index f37ba94..4e7c1fb 100644 --- a/nebula_terminal/Cargo.toml +++ b/nebula_terminal/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nebula_terminal" -version = "1.1.0" +version = "1.2.0" license = "GPL-3.0-or-later" description = "Nebula terminal emulation core" readme = "../README.md" diff --git a/scripts/installer.iss b/scripts/installer.iss index 1b3fa84..922e1af 100644 --- a/scripts/installer.iss +++ b/scripts/installer.iss @@ -1,9 +1,9 @@ #ifndef AppVersion - #define AppVersion "1.1.0" + #define AppVersion "1.2.0" #endif #ifndef NumericVersion - #define NumericVersion "1.1.0.0" + #define NumericVersion "1.2.0.0" #endif #ifndef Configuration