Skip to content

refactor(ui): migrate workbench to gpui-kit - #43

Merged
AshGreyG merged 7 commits into
mainfrom
ui/migrate-gpui-kit
Oct 1, 2026
Merged

AshGreyG merged 7 commits into
mainfrom
ui/migrate-gpui-kit

Conversation

@AshGreyG

@AshGreyG AshGreyG commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Summary

This PR merges ui/migrate-gpui-kit into main.

The branch migrates the desktop/workbench UI toward gpui-kit and substantially reorganizes the UI architecture, including:

  • gpui-kit dependency integration;
  • workbench extraction for activity bar, window bar, bottom dock, explorer, and document docking;
  • document dock/layout refactor with new tests;
  • migration of molecule, terminal, and command-palette code into feature-oriented modules;
  • removal of a large set of duplicated custom chitin-ui primitives/composites;
  • reorganization of chitin-ui into assets, views, widgets, workbench, and theme-oriented modules;
  • molecular viewport and options refactor;
  • structure-loading service extraction;
  • associated desktop/example updates and dependency lockfile changes.

The branch is currently 3 commits ahead of main and 0 commits behind.

Review notes

This is primarily an architectural UI migration rather than a small visual change. Review is best done by subsystem:

  1. dependency/runtime compatibility;
  2. workbench and document-dock ownership;
  3. molecule/WGPU viewport integration;
  4. terminal and command-palette feature migration;
  5. deletion/replacement of legacy chitin-ui primitives and composites;
  6. tests and examples.

Adopt the Chitin-patched gpui-kit and align all workspace crates with the
gpui-wgpu backend. Replace the custom panel, docking, primitive, toast, and
command-terminal UI implementations with GPUI Kit components, while adding a
desktop adapter that projects document state into the Kit dock model.

Update desktop examples, workspace wiring, assets, tests, and lockfile for the
new UI architecture.
Keep the selected document panel bound to representation controls so deferred
surface and style confirmations still update the correct panel after the options
menu closes. Add regression coverage for backend selection, refine terminal
profile selector spacing, and align dock tab styling with the segmented theme.

Update the pinned gpui-wgpu and gpui-kit revisions and refresh Cargo.lock.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, we are unable to review this pull request

The GitHub API does not allow us to fetch diffs exceeding 20000 lines

@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 134 files, which is 34 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: b325139a-d447-40da-b8b6-7519aebd1746

📥 Commits

Reviewing files that changed from the base of the PR and between c14c6b6 and 09f5039.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (134)
  • .github/workflows/weekly-release-build.yml
  • Cargo.toml
  • crates/chitin-desktop/Cargo.toml
  • crates/chitin-desktop/examples/chitin-wgpu-desktop.rs
  • crates/chitin-desktop/examples/chitin-wgpu/cube.rs
  • crates/chitin-desktop/examples/chitin-wgpu/molecule.rs
  • crates/chitin-desktop/examples/implicit-ses-debug/mod.rs
  • crates/chitin-desktop/examples/msms-debug/mod.rs
  • crates/chitin-desktop/examples/terminal-debug.rs
  • crates/chitin-desktop/src/app.rs
  • crates/chitin-desktop/src/commands/mod.rs
  • crates/chitin-desktop/src/commands/portable.rs
  • crates/chitin-desktop/src/commands/shell_host.rs
  • crates/chitin-desktop/src/components/activity_bar.rs
  • crates/chitin-desktop/src/components/bottom_dock.rs
  • crates/chitin-desktop/src/components/document_area/render.rs
  • crates/chitin-desktop/src/components/mod.rs
  • crates/chitin-desktop/src/components/terminal/render.rs
  • crates/chitin-desktop/src/components/window_bar.rs
  • crates/chitin-desktop/src/features/command_palette/controller.rs
  • crates/chitin-desktop/src/features/command_palette/form.rs
  • crates/chitin-desktop/src/features/command_palette/form/rcsb.rs
  • crates/chitin-desktop/src/features/command_palette/mod.rs
  • crates/chitin-desktop/src/features/mod.rs
  • crates/chitin-desktop/src/features/molecule/mod.rs
  • crates/chitin-desktop/src/features/molecule/options.rs
  • crates/chitin-desktop/src/features/molecule/scene.rs
  • crates/chitin-desktop/src/features/molecule/viewport.rs
  • crates/chitin-desktop/src/features/terminal/completion.rs
  • crates/chitin-desktop/src/features/terminal/controller.rs
  • crates/chitin-desktop/src/features/terminal/mod.rs
  • crates/chitin-desktop/src/features/terminal/presenter.rs
  • crates/chitin-desktop/src/features/terminal/render.rs
  • crates/chitin-desktop/src/keybindings/dispatch.rs
  • crates/chitin-desktop/src/lib.rs
  • crates/chitin-desktop/src/main.rs
  • crates/chitin-desktop/src/services/mod.rs
  • crates/chitin-desktop/src/services/structure_loader.rs
  • crates/chitin-desktop/src/services/tasks/mod.rs
  • crates/chitin-desktop/src/workbench/activity_bar.rs
  • crates/chitin-desktop/src/workbench/bottom_dock.rs
  • crates/chitin-desktop/src/workbench/documents/commands.rs
  • crates/chitin-desktop/src/workbench/documents/dock.rs
  • crates/chitin-desktop/src/workbench/documents/dock/tests.rs
  • crates/chitin-desktop/src/workbench/documents/layout/mod.rs
  • crates/chitin-desktop/src/workbench/documents/layout/model.rs
  • crates/chitin-desktop/src/workbench/documents/layout/operations.rs
  • crates/chitin-desktop/src/workbench/documents/layout/tests.rs
  • crates/chitin-desktop/src/workbench/documents/mod.rs
  • crates/chitin-desktop/src/workbench/documents/render.rs
  • crates/chitin-desktop/src/workbench/documents/state.rs
  • crates/chitin-desktop/src/workbench/documents/tests.rs
  • crates/chitin-desktop/src/workbench/explorer/mod.rs
  • crates/chitin-desktop/src/workbench/explorer/tree.rs
  • crates/chitin-desktop/src/workbench/explorer/tree/rows.rs
  • crates/chitin-desktop/src/workbench/mod.rs
  • crates/chitin-desktop/src/workbench/window_bar.rs
  • crates/chitin-ui/Cargo.toml
  • crates/chitin-ui/benches/tree_virtualization.rs
  • crates/chitin-ui/examples/composite-showcase.rs
  • crates/chitin-ui/examples/primitive-showcase.rs
  • crates/chitin-ui/src/assets.rs
  • crates/chitin-ui/src/composite/bottom_dock/render.rs
  • crates/chitin-ui/src/composite/command_terminal/mod.rs
  • crates/chitin-ui/src/composite/command_terminal/model.rs
  • crates/chitin-ui/src/composite/command_terminal/render.rs
  • crates/chitin-ui/src/composite/mod.rs
  • crates/chitin-ui/src/composite/panel.rs
  • crates/chitin-ui/src/composite/panel/drag.rs
  • crates/chitin-ui/src/composite/panel/render.rs
  • crates/chitin-ui/src/composite/panel/scroll.rs
  • crates/chitin-ui/src/composite/quickpick/mod.rs
  • crates/chitin-ui/src/composite/quickpick/model.rs
  • crates/chitin-ui/src/composite/quickpick/render.rs
  • crates/chitin-ui/src/composite/toast.rs
  • crates/chitin-ui/src/composite/window_bar.rs
  • crates/chitin-ui/src/lib.rs
  • crates/chitin-ui/src/primitive/button/event.rs
  • crates/chitin-ui/src/primitive/button/mod.rs
  • crates/chitin-ui/src/primitive/button/render.rs
  • crates/chitin-ui/src/primitive/button/state.rs
  • crates/chitin-ui/src/primitive/icon/mod.rs
  • crates/chitin-ui/src/primitive/input/appearance.rs
  • crates/chitin-ui/src/primitive/input/mod.rs
  • crates/chitin-ui/src/primitive/input/number/event.rs
  • crates/chitin-ui/src/primitive/input/number/mod.rs
  • crates/chitin-ui/src/primitive/input/number/render.rs
  • crates/chitin-ui/src/primitive/input/number/state.rs
  • crates/chitin-ui/src/primitive/input/select/event.rs
  • crates/chitin-ui/src/primitive/input/select/mod.rs
  • crates/chitin-ui/src/primitive/input/select/render.rs
  • crates/chitin-ui/src/primitive/input/select/state.rs
  • crates/chitin-ui/src/primitive/input/text/event.rs
  • crates/chitin-ui/src/primitive/input/text/mod.rs
  • crates/chitin-ui/src/primitive/input/text/render.rs
  • crates/chitin-ui/src/primitive/input/text/state.rs
  • crates/chitin-ui/src/primitive/menu.rs
  • crates/chitin-ui/src/primitive/mod.rs
  • crates/chitin-ui/src/primitive/popover.rs
  • crates/chitin-ui/src/primitive/progress.rs
  • crates/chitin-ui/src/primitive/resize.rs
  • crates/chitin-ui/src/primitive/scrollbar/event.rs
  • crates/chitin-ui/src/primitive/scrollbar/metrics.rs
  • crates/chitin-ui/src/primitive/scrollbar/mod.rs
  • crates/chitin-ui/src/primitive/scrollbar/render.rs
  • crates/chitin-ui/src/primitive/scrollbar/state.rs
  • crates/chitin-ui/src/primitive/sidebar.rs
  • crates/chitin-ui/src/primitive/text/event.rs
  • crates/chitin-ui/src/primitive/text/mod.rs
  • crates/chitin-ui/src/primitive/text/render.rs
  • crates/chitin-ui/src/primitive/text/state.rs
  • crates/chitin-ui/src/primitive/tree.rs
  • crates/chitin-ui/src/theme.rs
  • crates/chitin-ui/src/themes/builtins.rs
  • crates/chitin-ui/src/themes/mod.rs
  • crates/chitin-ui/src/themes/ui.rs
  • crates/chitin-ui/src/views/mod.rs
  • crates/chitin-ui/src/views/terminal/emulator.rs
  • crates/chitin-ui/src/views/terminal/mod.rs
  • crates/chitin-ui/src/views/terminal/model.rs
  • crates/chitin-ui/src/views/terminal/render.rs
  • crates/chitin-ui/src/views/terminal/state.rs
  • crates/chitin-ui/src/widgets/grouped_select.rs
  • crates/chitin-ui/src/widgets/mod.rs
  • crates/chitin-ui/src/widgets/progress.rs
  • crates/chitin-ui/src/widgets/select_item.rs
  • crates/chitin-ui/src/widgets/toast.rs
  • crates/chitin-ui/src/workbench/activity_bar.rs
  • crates/chitin-ui/src/workbench/bottom_dock/mod.rs
  • crates/chitin-ui/src/workbench/bottom_dock/model.rs
  • crates/chitin-ui/src/workbench/bottom_dock/render.rs
  • crates/chitin-ui/src/workbench/dock.rs
  • crates/chitin-ui/src/workbench/mod.rs
  • docs/src/architecture/desktop/command-panel.typ

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Run scheduled release builds once per week instead of daily, and publish the
latest prerelease under the rolling `weekly` tag. Preserve manual dispatch and
keep push and pull-request events limited to build validation.
@AshGreyG

AshGreyG commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

@codex review please

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8de891b87f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

.text_color(rgb(0xd7e0f2))
.child(self.scene.interaction_hint()),
.text_color(theme.popover_foreground)
.child(format!("{:.0} {}", self.display_fps, DEFAULT_FPS_POSTFIX)),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore the viewport interaction hint

When any WGPU document is displayed, this overlay now renders only the FPS counter and never calls WgpuPanelScene::interaction_hint(). As a result, the rotate/pan/zoom instructions and scene-specific status text—such as the active molecular representation—have disappeared, even though the trait still promises that the hint is displayed and every scene continues to implement it. Add the scene hint back to the viewport overlay.

Useful? React with 👍 / 👎.

@AshGreyG AshGreyG self-assigned this Oct 1, 2026
@AshGreyG AshGreyG added ui/ux User interface / user experience refactor code / architecture refactor labels Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactor code / architecture refactor ui/ux User interface / user experience

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant