Problem
Cluster 1 of the #2502 CSS class drift audit: the v2026.3.22 upstream sync (commit 0667aa5596, PR #2400) replaced the config-sidebar + config-nav + config-search__tag-* family with a new .config-top-tabs layout. The fork's ui/src/ui/views/config.ts still renders the old vocabulary, so the settings view ships with an unstyled left-rail sidebar and broken tag picker.
This is the same class of regression documented in remoteclaw/hq#57 (definition-site sync without paired call-site update), same as #2501 but in a different cluster.
Orphaned class references (21)
All at ui/src/ui/views/config.ts:
| Orphaned class |
Callsites |
Likely upstream target |
.config-sidebar |
:441 |
.config-top-tabs (redesign — verify) |
.config-sidebar__header |
:442 |
N/A (sidebar removed) |
.config-sidebar__title |
:443 |
N/A |
.config-sidebar__footer |
:566 |
N/A |
.config-nav |
:542 |
.config-top-tabs__scroller (verify) |
.config-nav__item |
:544, :553 |
.config-top-tabs__tab (verify) |
.config-nav__icon |
:547, :556 |
verify |
.config-nav__label |
:548, :559 |
verify |
.config-subnav |
:706 |
verify |
.config-subnav__item |
:708, :716 |
verify |
.config-search__hint |
:485 |
verify |
.config-search__hint-label |
:486 |
verify |
.config-search__tag-picker |
:487 |
verify |
.config-search__tag-trigger |
:488 |
verify |
.config-search__tag-placeholder |
:492 |
verify |
.config-search__tag-chips |
:495 |
verify |
.config-search__tag-chip |
:500, :505 |
verify |
.config-search__tag-chip--count |
:505 |
verify |
.config-search__tag-caret |
:514 |
verify |
.config-search__tag-menu |
:516 |
verify |
.config-search__tag-option |
:522 |
verify |
Scope
Acceptance criteria
References
Problem
Cluster 1 of the #2502 CSS class drift audit: the v2026.3.22 upstream sync (commit
0667aa5596, PR #2400) replaced the config-sidebar + config-nav + config-search__tag-* family with a new.config-top-tabslayout. The fork'sui/src/ui/views/config.tsstill renders the old vocabulary, so the settings view ships with an unstyled left-rail sidebar and broken tag picker.This is the same class of regression documented in
remoteclaw/hq#57(definition-site sync without paired call-site update), same as #2501 but in a different cluster.Orphaned class references (21)
All at
ui/src/ui/views/config.ts:.config-sidebar.config-top-tabs(redesign — verify).config-sidebar__header.config-sidebar__title.config-sidebar__footer.config-nav.config-top-tabs__scroller(verify).config-nav__item.config-top-tabs__tab(verify).config-nav__icon.config-nav__label.config-subnav.config-subnav__item.config-search__hint.config-search__hint-label.config-search__tag-picker.config-search__tag-trigger.config-search__tag-placeholder.config-search__tag-chips.config-search__tag-chip.config-search__tag-chip--count.config-search__tag-caret.config-search__tag-menu.config-search__tag-optionScope
ui/src/ui/views/config.ts— migrate all 21 orphan references to the upstream dashboard-v2 config-top-tabs vocabulary. Where the upstream redesign removed a concept entirely (e.g. the sidebar footer), fork may need to add a fork-owned CSS file (as fix(ui): restore nav-section/topbar class names after v2026.3.13-1 sync — paired call-site update missed #2501 did withtopbar-brand.css) to preserve fork-specific UI. Investigate each case before deciding rename vs fork-owned restore.Acceptance criteria
config.tsemits only classes defined in theui/src/styles.cssimport graphnode scripts/audit-css-class-drift.mjs— cluster 1 (0667aa5) shows 0 orphanspnpm dev: sidebar/tabs, search with tag picker, subnavReferences
0667aa5596(sync: upstream to v2026.3.22 (2522 commits) #2400)remoteclaw/hq#57