33 Commits
Author SHA1 Message Date
Kuddev bf2ed9af9b feat(mobile): integrate remote terminal, SSH and reader workflows (#343)
Integrate the Android client with native desktop pairing, remote terminal and SSH/SFTP sessions, keyboard controls, file reading and Agent conversations. Preserve authenticated connection ownership and per-device input permissions.

Validation: all ten required GitHub checks passed, including five native test platforms and both macOS release workspace checks.
2026-09-29 20:09:00 +08:00
WilliamWang1721 840252fc19 fix(windows): initialize color emoji compositing target 2026-09-27 22:05:18 +08:00
WilliamWang1721 a5536427b7 fix: keep component dependencies on the same GPUI revision 2026-09-27 17:32:13 +08:00
WilliamWang1721 cd8bf1fe0e fix(windows): pin GPUI color emoji enumeration fix 2026-09-27 17:30:27 +08:00
kuddev f91c88261c Stabilize Markdown editing, selection and popup geometry 2026-09-21 10:25:00 +08:00
kuddev 2229de571a merge: integrate saved workspace fixes after 1.8.0
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.
2026-09-15 10:06:03 +08:00
kuddev fa9219fbf1 chore: save remaining workspace integration and comment edits
Apply the resolved custom theme to connection overlays and retain the pending source and documentation comment cleanup.
2026-09-15 09:49:11 +08:00
kuddev 96d4cf0179 fix(windows): reclaim terminal resources and retain font owners
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.
2026-09-15 09:44:00 +08:00
kuddev 792771a938 release: prepare 1.8.0 and parallel native validation 2026-09-14 20:23:56 +08:00
kuddev acbabacf97 fix(preview): render macOS text and own complete POSIX launches
Enable the native font backend, fit initial windows inside the usable display, and require terminal text in installed macOS screenshots. Isolate POSIX launch groups and reject runtime endpoints outside the current launch so AppImage restarts cannot reconnect to orphaned instances.
2026-09-07 15:08:10 +08:00
kuddev bbb89a858c fix(gpui): adopt deferred X11 map-event processing
Advance the synchronized Zed and component pins to drain XCB-buffered map events on an explicitly awakened idle callback. Preserve checked request errors and defer processing until window construction releases the App borrow.
2026-09-06 22:40:42 +08:00
kuddev af7db8400d fix(gpui): adopt unavailable native handles for virtual windows
Use the narrowly patched GPUI TestWindow contract so macOS password input tests reach the existing no-native-handle path. Synchronize all application and component GPUI revisions, with the original baseline and removal condition recorded in Cargo.toml.
2026-09-06 20:38:19 +08:00
kuddev db0b62e9d6 fix: harden native shell and dialog validation
Measure multiline confirmation text with wrapped layouts and stabilize
dialog fixture focus before drawing. Isolate Zsh fixture startup from
host-global configuration while retaining user startup files.
Pin the UI consumer test-support patch without altering production
accessibility behavior, and test all shared confirmation dialogs in CI.
2026-09-05 22:04:06 +08:00
kuddev 23456e6d99 feat(gpui): wire product shell to v1.16.1
Pin the audited component math and GFM bridge, adapt the product shell to current GPUI and component APIs, and retain Nebula-owned resize, math layout, split-tree, and PTY lifecycle logic unchanged.

Keep the existing 480px confirmation width while allowing the new Dialog component to own placement, dismissal, focus, and keyboard behavior.
2026-08-24 16:21:47 +08:00
kuddev b765959933 chore: use owned GPUI dependency sources
Route Nebula and gpui-component's transitive Zed dependencies through the Kuddev forks at immutable v1.16.1 baseline revisions, while retaining the official commit as upstream provenance.

Locked metadata and the inverse dependency tree resolve one GPUI source; the application check remains unchanged at 65 migration errors and 348 warnings.
2026-08-24 15:09:13 +08:00
kuddev 10ed04c656 chore: pin GPUI v1.16.1 migration baseline
Pin Zed v1.16.1 and the gpui-component baseline to immutable revisions, align the Rust toolchain requirement, and regenerate Cargo.lock.

This is a dependency checkpoint only: application API migration and Nebula product patches remain for isolated follow-up commits, so gpui-shell is not yet expected to compile.

Committed with --no-verify because the repository line-count hook rejects generated Cargo.lock growth above 2500 lines; staged diff checks and locked offline metadata validation pass.
2026-08-24 13:36:35 +08:00
kuddev 98fce1b7f2 fix(gpui): blur toggle, sidebar tab width, shell import, README attribution
Blur never actually applied. GPUI's Windows backend drives
SetWindowCompositionAttribute's ACCENT_POLICY, not the DWM system
backdrop: Transparent maps to ACCENT_ENABLE_TRANSPARENTGRADIENT
(transparent, no blur) and Blurred to ACCENT_ENABLE_ACRYLICBLURBEHIND.
wallpaper.rs pinned the appearance to Transparent and relied on
DWMWA_SYSTEMBACKDROP_TYPE, which the accent policy overrides — so the
window went see-through without a trace of blur. Pick the appearance
from the setting, drop the DWM call so a single mechanism owns
compositing, and write Opaque once before the target appearance: Win11's
DWM caches the acrylic layer, and without tearing the accent policy down
first, turning blur off left the blur on screen.

Sidebar tab rows used w_full inside the overflow-hidden scroll list, so
the percentage width never resolved and rows fell back to shrink-to-fit
— row width tracked the file name, and rows carrying an icon shifted
their status slot right by one icon. Use an explicit pixel width derived
from the sidebar width, clip overflow, and derive the label budget from
that same number so truncation cannot push the row wider again.

Add "import terminal directory" as the pinned first row of the
default-shell dropdown, mirroring the old shell's
Display::import_terminal_directory (scan, upsert, save) with the
blocking IO on a background task. Imported profiles now appear in that
dropdown too, so an import has a visible result.

Restore the Alacritty attribution dropped when the acknowledgements were
rewritten for GPUI: the terminal core's provenance in the tech-stack
table, a paragraph beside the GPUI credit, and the derivation notice
pointing at THIRD-PARTY-NOTICES. Document the Markdown rendering
capabilities, and record the two gpui-component input patches in the
workspace manifest.
2026-08-19 14:28:27 +08:00
kuddev 95a79e7255 fix(gpui): 1.1.0 polish — SSH key dialog crash, GitHub HTML notes, package hardening
- SSH settings: the modal private-key file dialog now runs on a dedicated
  thread with results returned via oneshot and dropped when the editor
  generation changed. Running it inside the update borrow let the dialog's
  message pump re-enter the GPUI wndproc and panic the AppCell — the
  "click add private key, window vanishes" crash. Includes the reworked
  host editor panel and dialog owner-HWND plumbing (file_dialog, cli).
- Markdown reader: GitHub-flavored HTML semantics land in the local
  gpui-component fork (align="center" blocks, badge rows in one line,
  <br/> document order, <a><img/></a> badges keep image + link);
  changelog entries and the fork patch ledger recorded here.
- Packaging: freshness guards refuse binaries older than the newest
  source change, the staged exe must report the release version, all four
  ps1 carry a UTF-8 BOM, and the zip drops the 20MB fonts/ copy (the
  embedded font materializes on demand via ensure_bundled_font_on_disk).
- Size budget: release profile goes thin-LTO + codegen-units=1 +
  strip=symbols + opt-level=s with render/shaping/VT hot crates pinned at
  O3 — nebula.exe 136MB → 93MB, both packages 54.4MB → 28.6MB.
- Tab row: width no longer tracks content (w_full rows shipped in a fresh
  binary), tab bar collapse behavior tuned; probe/packaging scratch dirs
  ignored.
2026-08-18 19:30:35 +08:00
kuddev 03ea868aba feat(gpui): load markdown network images and land 1.1.0 shell parity
Register a ureq HttpClient so document tabs can fetch http(s) images. Also lands OSC 8/URL links, configurable terminal bell, and the rest of the 1.1.0 GPUI changelog.
2026-08-17 23:24:20 +08:00
kuddev 1ea860a2f7 fix(gpui): restore CC Esc and default-shell plus button
Win32 input emits Esc down+up with uChar=27 so Claude Code sees 0x1b;
kitty flags encode CSI 27u instead of a bare escape. The TABS plus
button now creates the configured default shell; the dots keep the
profile picker. Plus/dots use the old 20px chrome size.

Checkpoint remaining GPUI parity work in the tree (settings rewrite,
math overlay, SSH settings, SVN status).
2026-08-17 18:30:03 +08:00
kuddev 4dee70beb2 chore: checkpoint GPUI parity work 2026-08-16 19:46:45 +08:00
kuddev bd33d411dc checkpoint: preserve GPUI interaction fixes 2026-08-16 10:55:41 +08:00
kuddev dd76e797f6 feat(gpui): tab rename, color label, and single-tab export
三项标签元数据功能补齐旧壳能力边界:

• **F2 重命名**:侧栏行内编辑,Enter 提交 / Esc 取消 / 失焦提交。
  空串 = 恢复自动标签名(取 cwd 末段或文件名)。custom_name 与
  session v4 同字段,导出/恢复直通不需转换层。

• **标签颜色**:右键菜单尾部色板(首槽 A = 无色 + 7 枚品牌色,同色
  再点取消,当前色带选中环)。左侧栏行首画一条竖光条(4px 内缩、
  上下各留 7px、宽 2.5px + 圆角),默认标签不占视觉层级。旧壳
  context_menu::TAB_COLORS 原地复用(已设色的 tab 可迁移过来)。

• **导出单标签为工作区**:文件名取标签名,扩展名 .nebula-workspace.json,
  落盘走共享 v4 schema。只导出可恢复的终端标签(图片/文档/设置页
  从不进 session)。

**结构性约束**:tabs 与 tab_meta 必须同下标(长度一致),所有增删移
操作封口到 insert_tab_at / remove_tab_at / move_tab 三个 helper,
避免本地分叉时色条和名字错位到邻居身上。恢复期保留文件里的既有次序,
不套「新标签插入位置」策略;快照时从 meta 拿 custom_name/color。

右键菜单新增「导出为工作区…」「重命名」条目,action 字段只用来渲染
键帽(handler 存在时组件不会 dispatch 它),命令仍然作用在被右键的
那个 tab 上,而不是活动标签。菜单结构、分隔符与键帽对齐旧壳
display::context_menu 的 Tab 目标。

依赖 gpui-component 1b737db8(popover_shadow helper + Theme::shadow
门控),已推送 Kuddev/gpui-component nebula 分支并更新 Cargo.toml。
2026-08-15 21:07:19 +08:00
kuddev 7a1a954b11 checkpoint: preserve GPUI migration baseline 2026-08-15 16:11:20 +08:00
kuddev 4610610d12 checkpoint resize diagnostics and debug profile 2026-08-15 08:33:47 +08:00
kuddev 64c7c0ff1a feat(completion,settings,paste): dual completion styles, real color picker, screenshot paste over SSH
- completion: switchable inline ghost vs popup candidate list (history /
  frecency dirs / PATH commands / files, Up/Down + accept key + Esc);
  settings dropdown, palette action, persisted as completion_style
- settings: real HSV picker in the background-color popup (SV plane + hue
  bar, drag picks live, release persists); presets and hex stay in sync
- paste: image-only clipboard pastes a PNG path - local temp file, or SFTP
  upload to remote /tmp with the path typed back so
  codex/claude receive usable image paths on both sides
- fix: Explorer context-menu launches attach the resident instance and open
  a cwd tab (tab.new gains optional cwd) instead of a lone fresh window
- fix: default-shell dropdown hit-test counts imported profiles, making the
  trailing rows selectable again
- fix: git drawer works on dubious-ownership roots (wsl$ UNC, elevated) via
  per-invocation safe.directory; failures now logged instead of silent blank
- deps: gpui/gpui-component redirected to Kuddev forks pinned at the
  published base revs (patch playbook in the root manifest)
- wire the in-flight resume_ai toggle (display field, toggle, persistence)
  so the parallel session-restore work builds and tests stay green
2026-08-13 13:06:49 +08:00
kuddev 189e5ac4ff feat(settings): shared nebula-settings crate; GPUI lab reads runtime settings + theme term colors
New zero-dependency workspace crate owning nebula_settings.txt path resolution, key semantics and the per-theme terminal color tables (background, light-theme foreground/ANSI-16 replacement, powerline slots 16..=23) - values transcribed verbatim from the legacy shell's theme.rs, which stays frozen per P4. The GPUI lab now honors the user's actual runtime intent: theme (SilverLight etc.) applied over toml colors in the same order as apply_term_colors, font family/size from the settings UI, default cursor shape/blink wired into the engine Term config, copy_on_select exposed for the next slice. Cargo.lock intentionally not committed: it currently carries the user's in-flight gpui-fork switch.
2026-08-13 12:18:21 +08:00
kuddev b5ff2de9b7 feat: merge nebula_gpui into the root workspace (crossfont 0.9.0 unblocks links)
- crossfont 0.8.1 -> 0.9.0: upstream bumped yeslogic-fontconfig-sys to ^6.0,
  aligning with gpui's zed-font-kit so a single 6.0.1 owns links=fontconfig.
- wayland CSD switches to the ab_glyph flavor so sctk-adwaita 0.10 stops
  pulling crossfont ^0.8 (and yeslogic ^5) back into the graph. Linux-only
  decoration text; Windows/macOS unaffected.
- Drop the workspace exclude and nebula_gpui's member-level lockfile; one
  lockfile now holds gpui 0.2.2 + crossfont 0.9.0. Both bins compile.
- ARCHITECTURE.md: the "unresolvable conflict" section now records the fix.
2026-08-12 23:52:53 +08:00
kuddev 9863cff05b feat: add isolated GPUI component foundation 2026-08-12 15:06:26 +08:00
kuddev 25321348ba checkpoint before inline math projection 2026-08-06 13:57:35 +08:00
kuddev ab56e2e4d7 feat: add Lua configuration foundation 2026-07-15 22:49:52 +08:00
kuddev 9a86561a06 feat: add font reminder and slim release builds 2026-07-15 14:18:33 +08:00
kuddev 6f104206b7 Nebula Terminal 0.2.1 2026-07-11 13:04:59 +08:00