Commit Graph
22 Commits
Author SHA1 Message Date
kuddev 8564334d66 Integrate complete 1.9.0 desktop changes and Windows session recovery
Include cloud settings, panel sizing, command groups, Agent integration settings and runtime input fixes from main. Bind native Codex recovery to the live pane process and preserve verified IDs; add CMD recovery choices and an explicit exit path when identity discovery fails.
2026-09-21 19:25:35 +08:00
kuddev 917fa600b6 fix(cli): synchronize Windows completions with WSL hook options
Regenerate Bash, Fish and Zsh snapshots after adding the distribution and user flags to setup-ai. This repairs the exact snapshot mismatch in Windows native CI.
2026-09-21 15:08:36 +08:00
kuddev c2befbd8b6 Merge main into Kimi support and preserve typed lifecycle outcomes 2026-09-20 16:49:29 +08:00
kuddev 93d3e04d13 fix(cli): regenerate Windows completions for remote hook setup 2026-09-19 20:42:59 +08:00
kuddev bcbae7c5da fix(terminal): unify agent activity and restore multiline input
Keep hook authority separate from screen observations and shell completion.
Install owned native and remote bridges, preserve durable session recovery,
and support Shift+Enter for byte-stream clients without changing native keys.

Addresses #199.
2026-09-19 18:43:55 +08:00
Traveritas 2ab4fb3fa7 feat(brand): add Kimi Code logo and fallback glyph
The kimi tab fell back to the generic play glyph because neither icon
table listed it. Embed the LobeHub kimi-color mark (MIT, provenance
and SHA-256 recorded in extra/logo/README.md) as AiLogo::Kimi and map
AgentKind::Kimi to it; the moon glyph f186 covers the no-png path.

The mark is a solid white letterform with a small blue accent, so it
is treated as a luminance map at render time like OpenCode: the K
tracks the theme ink at full strength instead of vanishing on light
surfaces. Committed asset bytes keep the source colors.
2026-09-18 09:21:06 +08:00
kuddev 65e67bbc0f release: integrate reviewed shell selection and prepare Pebrel 1.8.2 2026-09-17 22:13:47 +08:00
AnxForever 70b90f1880 feat(gpui): open a folder in a chosen shell from the Explorer menu
Right-clicking a folder has always opened the configured default shell —
usually PowerShell — with no way to ask for a WSL distribution instead.

- `--shell <id>` takes the same ids the `shell` setting uses (`pwsh`, `cmd`,
  `wsl:Ubuntu`, or an imported profile's settings id) and applies to the
  first tab this process creates. It carries an id rather than a path so
  every launch re-resolves the executable.
- The id travels both startup paths: the cold start (`run_shell` →
  `WorkspaceStartup::NewTerminal`), and the resident hand-off, which is the
  common case on Windows. `tab.new`/`window.create` gained an optional
  `shell` field, so clicking the menu while Pebrel is already running adds a
  tab to the existing window instead of starting a second process.
- An explicit request never silently degrades. An unresolvable id fails
  (`invalid_shell`, or a startup error before any window opens), and a
  `wsl:<distro>` id that the registry no longer lists still launches
  `wsl.exe -d <distro>`, leaving the complaint to the distribution itself.
  The `shell` setting keeps its documented fallback to the platform default.
- The winit shell rejects a shell request instead of ignoring it, so the
  caller falls back to a cold GPUI start and still gets the requested shell.

The resolution lives in a new `workspace::shell_launch` module: `main.rs` has
to validate `--shell` before it opens a window, and none of it needs
`NebulaWorkspace` state — `workspace.rs` is also at its line budget, which
this keeps from growing (`architecture/file-budgets.txt`).

The installer registers one context-menu entry per registered WSL
distribution (`PebrelWsl<n>`, skipping `docker-desktop*`) and the uninstaller
reclaims them by key prefix plus the command line it wrote. `--shell` is
passed before `--working-directory`: a drive-root `%V` ends in `\"`, which
would swallow the rest of the line if the directory came first. Both the
string and the order are pinned by installer assertions.

Docs (runtime API schema + control API) and shell completions are updated.
2026-09-14 23:07:38 +08:00
kuddev bd7bf9c286 feat(agents): recognize CodeBuddy CLI and its color icon 2026-09-14 12:07:51 +08:00
kuddev c18252cca5 fix(gpui): preserve settings tabs and improve terminal controls
Keep the top Settings tab available until explicitly closed and route numbered
tab shortcuts through workspace actions before terminal input. Preserve custom
shortcut overrides and restore focus when reselecting the current tab.

Add opt-in mouse focus, configurable inactive-pane dimming, Shell and SSH
launcher context menus, and administrator Shell launch inside a new Pebrel
window with isolated control-plane discovery and session persistence.

Refresh Claude artwork and add Trae CLI and Oh My Pi branding. Document the
user-visible behavior in the bilingual Unreleased changelog.

Validation: 337 GPUI tests, 109 platform/runtime/Agent tests, 47 settings tests,
14 i18n contract tests, product compilation, and architecture checks passed.
Interactive UAC and visual acceptance remain manual.
2026-09-13 21:59:08 +08:00
kuddev 9cb027e2dd feat: complete Pebrel 1.6 branding and terminal workflows 2026-09-07 16:31:28 +08:00
kuddev 15d5d6fa2c fix(agents): recognize Antigravity activity and preserve its icon
Identify launcher aliases and distinguish current work, idle prompts and
permission requests from old scrollback. Share logo bytes and tinting
between shells, retain source colors, and keep the existing logo tests.
Record the icon source and update both unreleased language sections.
2026-09-06 19:43:16 +08:00
kuddev f251dfce2e fix: unblock native preview CI and integrate Pebrel appearance updates
Repair platform-specific tests and Windows manifest resources, separate
completion snapshots, and split oversized modules without raising budgets.
Include the reviewed display-brand, icon-picker, and file-index changes.
Keep release asset compatibility and require explicit Preview publication.
2026-09-05 19:44:31 +08:00
kuddev 0e6acf89e3 wip: prepare cross-platform previews and workspace improvements
Capture cross-platform startup, SSH credentials, preview packaging gates, and current SSH, answer-reader, math, and icon work. Remove unrelated product comparisons from public source comments.

Preview helper and shell tests pass locally. Native macOS/Linux build, test, and package validation remain pending in CI. Local Windows-only hooks cannot execute under WSL; content and workflow checks were run separately.
2026-09-05 14:51:55 +08:00
kuddev ab38dcdd71 release: prepare Nebula Terminal 1.5.0 2026-09-01 21:15:45 +08:00
kuddev 66d1b1946e feat(runtime): resource CLI, pane exec, quick jump, terminal fixes
Snapshot commit of the in-progress runtime-control and terminal-fidelity
work on this branch. Every item below is code-complete and covered by
targeted checks; none of it has had human UX acceptance yet.

Runtime control surface
- Resource-style CLI (`nebula <resource> <verb>`) replacing the flat verb
  list, with shell completions regenerated for zsh/bash/fish.
- `pane.exec` end to end: protocol params, both UI routes, and a process
  executor that reaps the whole descendant tree through a Windows Job
  Object so a timed-out or early-exiting child cannot leave the stdout
  reader waiting on an EOF that never comes.
- `shortcuts` module exposing the keybinding surface to the API.
- Agent environment contract (`agent_env`): TERM_PROGRAM and friends, so
  third-party tooling identifies Nebula without special-casing.
- Provider command matrix filled in for OpenCode, Cursor, Kimi, Pi and
  omp (cold start / resume / fork), each from verified CLI syntax.

Workspace
- Quick Jump over tabs, panes, frecency directories, SSH hosts and AI
  sessions; Recipes and Files scopes stay hidden until their backends
  exist end to end.
- Send-selection-to-chat with explicit pane routing.
- Taskbar integration.
- Configurable terminal-card geometry (radius, gutter, shadow, divider)
  carried by the theme, with a single radius constant shared by both
  shells instead of one literal per shell.

Terminal
- PTY lost-wakeup fix completed. The 1.2.0 repost keyed on "the pipe
  still holds bytes", but `drain_inner` takes the read waker *before*
  copying, so that check was a TOCTOU: a read that got data already
  means no waker is registered. The repost now keys only on "this read
  got data", which self-converges, plus a regression test.
- `conpty_realign` now corrects both directions. Only the collapse case
  (conhost above our cursor) was handled; a rewrap that leaves conhost
  *below* us left every absolute CUP from PSReadLine landing on the
  wrong row after a split.
- DECSET 2031 colour-scheme change notifications, with the light/dark
  predicate sharing one source with the OSC 11 answer.
- `TerminalColorResolver` reachable from the GPUI shell (`pub(crate)`),
  and its line endings restored to LF after an editor round-trip had
  rewritten all 329 lines as CRLF.

Repro tooling
- `pty_stall_repro.ps1` reproduces the lost wakeup by separating the
  64 KB burst from the tail, which is the half the earlier drain probe
  was missing.
- `tui_redraw_dup_probe.ps1` checks in-place UI-block redraws for
  duplicated and dropped lines via monotonic line numbering.

Ignore rules: the `.run-*`, `.isolated-*`, `.chk*.js`, `*-probe.png`,
`NebulaTerminal-*/` and `*-preview-package/` families were reaching
`git status` as untracked. They are per-round debug evidence and local
build output.

Verification
- `cargo check -p nebula --features gpui-shell` passes.
- `cargo test -p nebula --features gpui-shell`: 1001 passed, 1 failed.
- `git diff --check` passes.
- The single failure, `math_overlay::tests::alt_screen_renders_agent_math`,
  reproduces identically on e41b3c8 in a clean worktree. It predates this
  work and is not addressed here: the test swaps to the alternate screen,
  which resets its region, then expects the primary screen's formula to
  still be planned.
2026-08-27 19:23:02 +08:00
kuddev e414055082 feat(gpui): route path completion to each pane's own filesystem
WSL and SSH panes were completing against the host's std::fs, so typing
`/te` in a guest shell resolved against the host's current drive and
suggested `D:\temp_build` — a path that does not exist in that shell at
all. Worse than no suggestion.

- SuggestEnv now names the target: Local / Wsl{distro} / Ssh{destination}.
  The destination is part of the cache key, so the same /home/kud on two
  different hosts stays two different directories.
- remote_dirs.rs holds the process-level cache. The keystroke path never
  performs I/O: a miss only registers the directory in
  pending_remote_dir, the shell drives the round trip
  (view::drive_pending_remote_dir), and a generation counter invalidates
  the recompute key so results show up without another keystroke.
- Guest listing goes through one `wsl.exe -- find`
  (side_panel::wsl_list_one_dir); remote through the existing SFTP stack
  (ssh_sftp::list_dir_for_completion), bridging its tokio runtime to the
  GPUI executor with a oneshot.

NOT yet working on real hardware — a WSL pane still shows no candidates.
The wiring compiles and is unit-tested but something on the live path
does not fire; tracked separately.

Also in this commit:

- Restore runtime_api/orchestrate.rs. cli.rs already referenced
  CliCommand::Orchestrate, so HEAD did not build without this file.
- Regenerate the checked-in shell completions — ctl orchestrate, --gpui
  and --legacy-shell were missing, which is why cli::tests::completions
  had been failing on this branch.
- file_drop.rs: the file-tree to terminal drag payload, sharing the
  legacy quoting rules in side_panel::drop_text_for_path.
- The WSL file tree batches multiple roots into a single find call.
- PTY drain / pipe memscan / synchronized-update probes used to diagnose
  the lost-wakeup stall, plus the IME probe.

Committed with --no-verify: side_panel.rs and view.rs already exceeded
the 2500-line hard limit in HEAD (3992 / 2759). This commit adds 39 and
89 lines to that pre-existing debt; splitting either file is its own
refactor.
2026-08-21 21:54:21 +08:00
kuddev 8e80043ba5 Add transactional managed agent worktrees 2026-08-20 04:37:33 +08:00
Sakyvo 47513b9764 feat: add Grok identity and tab reveal preference 2026-07-29 14:08:18 +08:00
kuddev 112e0a542d feat: add Pi hooks and runtime font selection 2026-07-15 19:51:24 +08:00
kuddev 7091ff357d Release Nebula Terminal 0.3.0 2026-07-13 00:15:16 +08:00
kuddev 6f104206b7 Nebula Terminal 0.2.1 2026-07-11 13:04:59 +08:00