- gpui-kit(feigeCode/gpui-kit port-ce-generic-to-main)升到 23c8e5b78:合入上游 45 个提交(0.6.1 → 0.6.4)。其中 QuickJS JIT 升到 0.12.9,与本分支的 32 位改动 重叠,冲突已在 gpui-kit 侧解决(保留按位宽拆分 + i686 补丁;上游把软换行的行换成 `InputLine`、对话框 button props 改为合并语义,内联 widget 布局与 alert/confirm 已相应适配)。Cargo.toml 的 8 处 pin 一起回填到新 rev,Cargo.lock 重新解析 (gpui-wry 0.6.4、rquickjs 0.12.9,旧 rev 无残留)。 - 宿主 gpui-shell 版本 0.6.1 → 0.6.4:extension-runtime 的 GPUI_SHELL_VERSION 与 各处测试清单、文档示例同步提升。该校验对 0.x 按 minor 精确匹配,旧值会被直接拒绝。 验证:cargo check -p remote_desktop_view(新 gpui-kit + quickjs-jit i686 分支) → Finished dev profile,0 error。
3.7 KiB
External GPUI Component
Navop no longer embeds gpui-component, its macros, or its assets in this
workspace. CI, release, and normal development use the fork pinned in the
workspace manifest:
https://github.com/feigeCode/gpui-kit.git
rev 23c8e5b787baa06b08a84e1d3f80c241eb07fc0b
The checkout belongs to https://github.com/feigeCode/gpui-kit and the
Navop compatibility branch is navop-gpui-ce. It is based on the upstream
gpui-component adaptation and pins GPUI to:
https://github.com/feigeCode/gpui-pre.git
tag fork-0.3.108
Ownership Boundary
gpui-component: generic controls, assets, theme compatibility, icons, dialog lifecycle, and small backward-compatible builder aliases.crates/one_ui: Navop composite UI includingEditTable,LargeTextEditor,ContentState,PanelHeader,StatusBar,IconButton, resize handles, and date/time editors.crates/extension-runtime: language extension manifests, installed extension discovery, SHA-256 verification, and lazy WASM language loading.- feature crates: page-specific presentation and business interactions.
one_ui must not depend on one-core. Settings persistence and shortcut
resolution are injected by main.
Updating
Use the synchronization script from the Navop repository:
# Verify the merge in a temporary worktree without changing either branch.
script/sync-gpui-component.sh \
--component-dir /path/to/gpui-component \
--no-fetch \
--dry-run
# Merge, verify, push the compatibility branch, and update Navop revisions,
# package versions, shell compatibility constants, examples, docs, and lockfile.
script/sync-gpui-component.sh \
--component-dir /path/to/gpui-component \
--fetch-source git@github.com:feigeCode/gpui-kit.git \
--push \
--update-navop
The script merges in a temporary worktree first and enables Git rerere for known conflicts. Unknown conflicts or failed verification stop without changing the compatibility branch or Navop files. It never guesses a semantic conflict.
To update only Navop after an already-pushed component commit:
python3 script/update_gpui_component_revision.py \
--component-dir /path/to/gpui-component \
--revision <commit>
The updater reads actual package versions from cargo metadata; do not edit the
five dependency versions or GPUI_SHELL_VERSION independently.
For network fetches on this machine, Clash is available at
http://127.0.0.1:7897.
Verification
cargo check -p main
cargo test -p main --no-run
cargo test -p one-ui
cargo test -p extension-runtime
cargo test -p extension-wasm
cargo test -p extension-plugin-adapter
cargo check -p terminal_view --all-targets
The retired declarative UI crate is intentionally absent. Plugin UI uses
gpui-component-shell; Navop keeps only the generic shell embedding lifecycle
and provider HostModules.
SQL Editor Extensions
SQL Editor remains a first-class capability. The component fork exposes generic, SQL-neutral Editor contracts for:
- monotonic document revision tracking;
- gutter markers, stable lane layout, hitboxes, and click events;
- continuous multi-line range fills and frames;
- non-document inline widgets;
- completion request invalidation and explicit metadata refresh.
one_ui::ExtendedEditor owns generic signature-help lifecycle and presentation.
db_view owns all SQL parsing, metadata, statement execution, marker state,
INSERT hints, diagnostics, completion, hover, signature providers, and SQL menu
actions. Keep this split when syncing upstream: add generic Editor hooks to the
component layer, reusable presentation to one_ui, and SQL behavior to
db_view. Do not reintroduce a separate Navop Input engine.