Preserve the committed memory and scrolling work from local main together with
update recovery and the default font rollback. Resolve terminal initialization
at its new lifecycle owner and keep native WSL lookup in the platform layer.
Document the seven history limits, wheel-speed settings, allocation tradeoffs
and connection-specific completion behavior in both release-note languages.
Synchronize package versions and bilingual notes with verified issue references.
Allow releases without PR contributors to omit that section, with positive and
negative format coverage as requested by the maintainer.
Keep native update process operations and default-shell resolution inside the
platform boundary. Preserve transaction authority in the updater and tighten
the platform condition budget to the measured 484.
Persist native AI recovery targets and per-pane launch contexts without treating
command submission as provider confirmation. Keep window partitions and the
active window in the durable session snapshot for immediate and scheduled updates.
Coordinate draft approval, snapshot writes, helper readiness, process exit and
installation with a committed transaction. Reverify packages and retain recovery
state on failure. Isolate acceptance installers from production integrations and
reject same-version setup that leaves the executable unchanged.
Validation: Windows GPUI suite 1552 passed; settings 55 passed; i18n 20 passed;
9 native helper scenarios; 77 installer migration checks and 41 static invariants.
Full interactive packaged upgrade acceptance remains separate.
Preserve the current main updates together with active SSH/WSL completion
ownership and native PowerShell predictions. Renumber the completion ADR
after the existing font ownership decision.
Track completion history, candidates and async directory results by the active
SSH/WSL connection, and restore the parent shell when the connection returns.
Use shared ownership rules in both UI adapters and report expanded arguments
from shell execution hooks. Preserve user PSReadLine prediction settings.
Add regression coverage for context transitions, stale results and actual
Windows ConPTY transport. Validate native SSH, WSL, local PowerShell and SSH
from PowerShell, including cross-environment negatives and native predictions.
History deletion and migration remain outside this change.
Combine custom themes, updater proxies and native resource fixes with the published release source. Preserve independent interface and CJK fonts, selection visibility, saved-session startup and all existing release checks. Remove the retired terminal-view size exception after the capability extraction brought it below the standard limit.
Persist the pending ConPTY lifetime, process snapshot and native font ownership fixes. Keep lifecycle regression tests and the Windows memory stress tool together with the ownership contracts.
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.
Search filenames on demand with bounded caches and streamed uncached paths.
Cancel obsolete queries, release view-owned results, and execute WSL find directly.
Cover repeated folder and panel cycles with allocation and memory regressions.
Load and downsample background images asynchronously within explicit budgets,
reuse image resources through window resizing, and retire replaced GPU images.
Preserve the original extended-background scrim and opaque text while sharing
fit and alignment rules between renderers. Cover budgets, stale requests,
resource reuse, geometry, and surface opacity with regression tests.
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.
Add Frappe and Macchiato, unify themed pane surfaces, and default to opaque
backgrounds without blur while preserving explicit appearance settings.
Keep default dividers one physical pixel wide at high display scaling.
Align rounded box strokes with adjacent cells and preserve modern Grok
console rendering for new local Windows terminals unless overridden.
Include the regression coverage and synchronized bilingual release notes.
File tabs now save Markdown, code and text edits through one document
lifecycle, with dirty indicators, close protection, external-change checks,
and BOM/newline preservation. Markdown gains heading navigation and file
information alongside preview and source editing.
Add named tab/window layout recipes using the existing session schema,
remember quick-terminal dimensions, and allow the global hotkey to recall
an existing window. Dock previews and insertion use the hovered pane, with
an outer-edge target for a full row or column.
Add Breeze and Mint light/dark themes, filter settings navigation as the
query changes, expose a font dropdown arrow, and redraw the command icon.
Validated on the isolated commit snapshot with Windows GPUI compilation,
editor and settings interaction tests, workspace/theme tests, shared
settings/split and i18n contracts, architecture checks, and formatting.
Adopt the shared source budgets, local dependency rules and tested Python
checkers. Add the architecture workflow and metadata-only cross-target
tools, and make existing filesystem test waits deterministic.
Document contributor checks in both unreleased notes without claiming
server-side branch protection or native platform validation.
Preserve compact and pretty JSON while handling broken output pipes in
responses and subscriptions. Continue reporting unrelated I/O errors.
Update English and Chinese unreleased notes.
Honor negotiated key modifiers and report the current keyboard flags.
Keep completion navigation and pointer scrolling aligned with visible rows.
Deliver completion and attention notifications to the live source pane,
with request-bound binary confirmation actions that reject stale input.
Synchronize bilingual changelog and release-note entries.
Wait for PTY and shell confirmation, cancel pending startup, and retain
unexpected-disconnect failures without reviving connection overlays.
Preserve the remote directory when duplicating tabs and improve host
editing, username suggestions, icon selection and pinned indicators.
Update both unreleased language sections.
Keep a process-owned session snapshot across window close and quit,
retry failed writes, and preserve explicit all-tabs-closed behavior.
Integrate Settings with top tabs and restore sidebar layout consistently.
Synchronize English and Chinese unreleased notes.