Repository navigation
Rebuild the node cards on the app's own controls - #388
Merged
Merged
Conversation
The Qt-to-React move modernized the app chrome and left the canvas node
views behind. The cards were still rendering controls the rest of the app
had already replaced, and two of them could not size or bound their own
content.
Controls:
- Gitlink's Context scope was the last native <select> in the app.
CustomSelect is what Settings, Builder, Chat Library and the View
popover all render; it portals to the body and positions off
getBoundingClientRect, so React Flow's viewport transform does not
affect it.
- The drawn checkbox that replaced "the last engine-drawn controls" in the
View panel becomes a shared .gl-checkbox class. Web Research's
retain-to-knowledge opt-in and Gitlink's per-file rows were still raw OS
checkboxes - most visible in the file list, where the control repeats
once per row. The View panel adopts the extracted class unchanged.
Sizing:
- Artifact's and Conversation's instruction inputs were rows=1 textareas
with no height in CSS at all, so they stayed one line no matter how much
was typed. They auto-size natively now, the same posture .composer-input
and .code-sandbox-node-input already take.
- Artifact's card bounded its BODY and left the document preview
unbounded, so a long draft pushed the turn history and the instruction
row out of the visible card. The preview and the history each scroll
themselves now, children no longer shrink below their content, and the
instruction row can never be scrolled out of reach.
- Gitlink's Setup tab had the same squeeze, and scrolled its file list
INSIDE an already-scrolling body - two nested scrollbars on one card.
Children keep their size now and the budget is raised, leaving a single
scroll region.
Copy and affordances:
- Artifact's submit states that it is busy ("Generating…" / "Refining…")
instead of staying on "Generate" while merely disabled, matching the
sandbox card's "Running…".
- Gitlink's Setup tab labels all four of its fields; two were
placeholder-only, so they announced themselves only until you typed.
Load Repo Tree becomes the tab's one primary among what were four
equal-weight buttons.
- Web Research renders an empty state before its first run instead of a
query box above blank space.
- The HTML card's Popout button is gone. It shipped permanently disabled
with its reason in a tooltip; a control that can never be used is noise,
and the reason lives in the module doc now.
Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The Qt-to-React refactor modernized the app chrome and left the canvas node views behind. A QA pass over the seven plugin cards - read statically, then measured in the running app at 1440x900 with a fixture holding one node of every kind - found them still rendering controls the rest of the app had already replaced, and two cards unable to size or bound their own content.
<select>in the app.CustomSelectbacks every dropdown in Settings, Builder, Chat Library and the View popover, and no node view at all.rows={1}textareas with no height in CSS at all - they stayed one line regardless of how much was typed.bodyClipped: truewith a nested inner scroller, the same defect the code-sandbox card had before its rebuild: a max-height flex column shrinks its children below their content size unless told not to.Change
Frontend and CSS only - no backend, no wire change, no contract regeneration.
CustomSelect. It portals to the body and positions fromgetBoundingClientRect, so React Flow's viewport transform does not affect it..gl-checkboxclass and adopted by both node-view checkboxes; the View panel itself renders identically.field-sizing: contentwith real bounds), the posture.composer-inputand.code-sandbox-node-inputalready take..library-empty-state's idiom at card scale.Test plan
npm run check(schema drift, typecheck, lint, vitest, build, bundle size) against a clean checkout of this branch: all green.<select>and exposes the Context scope trigger; its file-row checkboxes carry.gl-checkbox; the scope-mode test drives the real dropdown through the same trigger-then-option idiomSettingsDialog.test.tsxuses; Web Research shows the empty state initially, hides it beside a failure banner, and carries the drawn checkbox; Artifact asserts both the busy label and the disabled state, for the Generate and Refine cases; the HTML card asserts Popout's absence and that no window is opened.