You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tier 1 of #699 (VS Code visual-parity audit). Six metric changes; no new features, no
theme-colour work (that is Tier 2), no quadraui changes (that is Tier 3).
These are what make vimcode's chrome read ~15–25% larger than VS Code's at the same DPI.
Changes
Explorer row height 28.0 → 22.0 px — src/gtk/mod.rs:1572
(explorer_row_height_cell). Matches VS Code's list.rowHeight.
Decouple the tab-bar height from the editor font. Today it is ceil(line_height * 1.6), so raising settings.font_size inflates the chrome.
Make it a fixed 35 px (VS Code's tab height). Four duplicate sites compute
this — fix all of them, ideally by hoisting one shared constant/helper: src/gtk/mod.rs:1416, :2647, :10207, :10346.
Decouple the breadcrumb row from the editor font. Same four sites add a full line_height when settings.breadcrumbs is on, which is why the breadcrumb renders
as large as the code. Target: a 22 px row with ~12 px text, independent of font_size.
Drop the ordinal prefix from tab labels — src/render.rs:10017, plus the two [No Name] arms at :10022 and :10025. " {i+1}: {name} " → "{name}". Not purely cosmetic:quadraui::TabItem's doc contract says backends locate the
filename "after the last \": \"" in order to underline it, so re-check the tab-bar
underline and close-glyph hit path with the prefix gone — do not just change the
format string. src/gtk/mod.rs's CLOSE_* metrics and tighten_close_bounds are
the relevant hit-test code.
Stop underlining menu mnemonics unconditionally — src/render.rs:3265 passes format!("&{name}") for every item and quadraui's GTK menu bar underlines the char
after & with no Alt gate (quadraui/src/gtk/menu_bar.rs:105-108). VS Code reveals
mnemonics only while Alt is held. Prefer gating the & on Alt-held state; if that
state is not reachable from this call site, drop the & and say so in the PR.
Turn indent guides on by default — the feature is fully implemented on both
sides (quadraui::EditorLine::indent_guides, painted at quadraui/src/gtk/editor.rs:294) and gated on a vimcode setting that currently
defaults off. VS Code draws them by default. src/core/settings.rs.
Acceptance
Black-box via GtkDriver (src/gtk/testing.rs), asserting on rendered output:
explorer row pitch == 22 px
tab-bar height stays 35 px across at least two different settings.font_size
values — a single-font-size assertion passes with the bug reinstated, so it is not
coverage for v0.3.0: TUI-only binary (vcd) #2
breadcrumb row height and text size independent of font_size
a tab renders as main.rs, not 1: main.rs, and its close glyph still hit-tests at
the right x-range
menu-bar items render with no underline when Alt is not held
Follow the repo's RED-first rule: remove the fix, confirm the test goes red, restore,
and say so in the PR.
Tier 1 of #699 (VS Code visual-parity audit). Six metric changes; no new features, no
theme-colour work (that is Tier 2), no quadraui changes (that is Tier 3).
These are what make vimcode's chrome read ~15–25% larger than VS Code's at the same DPI.
Changes
Explorer row height
28.0→22.0px —src/gtk/mod.rs:1572(
explorer_row_height_cell). Matches VS Code'slist.rowHeight.Decouple the tab-bar height from the editor font. Today it is
ceil(line_height * 1.6), so raisingsettings.font_sizeinflates the chrome.Make it a fixed 35 px (VS Code's tab height). Four duplicate sites compute
this — fix all of them, ideally by hoisting one shared constant/helper:
src/gtk/mod.rs:1416,:2647,:10207,:10346.Decouple the breadcrumb row from the editor font. Same four sites add a full
line_heightwhensettings.breadcrumbsis on, which is why the breadcrumb rendersas large as the code. Target: a 22 px row with ~12 px text, independent of
font_size.Drop the ordinal prefix from tab labels —
src/render.rs:10017, plus the two[No Name]arms at:10022and:10025." {i+1}: {name} "→"{name}".Not purely cosmetic:
quadraui::TabItem's doc contract says backends locate thefilename "after the last
\": \"" in order to underline it, so re-check the tab-barunderline and close-glyph hit path with the prefix gone — do not just change the
format string.
src/gtk/mod.rs'sCLOSE_*metrics andtighten_close_boundsarethe relevant hit-test code.
Stop underlining menu mnemonics unconditionally —
src/render.rs:3265passesformat!("&{name}")for every item and quadraui's GTK menu bar underlines the charafter
&with no Alt gate (quadraui/src/gtk/menu_bar.rs:105-108). VS Code revealsmnemonics only while Alt is held. Prefer gating the
&on Alt-held state; if thatstate is not reachable from this call site, drop the
&and say so in the PR.Turn indent guides on by default — the feature is fully implemented on both
sides (
quadraui::EditorLine::indent_guides, painted atquadraui/src/gtk/editor.rs:294) and gated on a vimcode setting that currentlydefaults off. VS Code draws them by default.
src/core/settings.rs.Acceptance
Black-box via
GtkDriver(src/gtk/testing.rs), asserting on rendered output:settings.font_sizevalues — a single-font-size assertion passes with the bug reinstated, so it is not
coverage for v0.3.0: TUI-only binary (vcd) #2
font_sizemain.rs, not1: main.rs, and its close glyph still hit-tests atthe right x-range
Follow the repo's RED-first rule: remove the fix, confirm the test goes red, restore,
and say so in the PR.
Files
src/gtk/mod.rssrc/render.rssrc/core/settings.rssrc/gtk/testing.rs(tests)