refactor(nav): 9 groups to 7, Power BI out of design/, implementation tabs #54
No reviewers
Labels
No labels
idea
points
1
points
13
points
2
points
3
points
5
points
8
priority
p0
priority
p1
priority
p2
priority
p3
state
blocked
state
done
state
in-progress
state
ready
state
review
state
triage
status
declined
status
in-progress
status
planned
status
proposed
status
shipped
status
under-review
type
bug
type
epic
type
feature
type
spike
type
story
type
task
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
tti/tti-ux!54
Loading…
Reference in a new issue
No description provided.
Delete branch "refactor/nav-7-groups"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sprawl pass plus the Power BI relocation. Shaped by a design panel — four independent IA proposals, each adversarially critiqued, then synthesised.
The measured problem
Four surfaces were answering two questions:
/kits/preview/examples/patternsMeanwhile
Toolinghad 2 entries, andkit/— nine shipped framework targets — had no page at all.Nav: 9 groups → 7
Composition,Forms,Toolingdie as groups. Composed pages → new Kits; Forms → nested branch under Components; Accessibility + Contrast audit → Foundations.Kitstakes the owner's word with the owner's meaning — "where do I look for an assembly of things." Composed examples, Patterns, frozen reference designs. Not the installablekit/directory: someone clicking Kits expecting the landscape dashboard should not findtux-tokens.css.Designnarrows 11 → 7 by re-homing, not hiding.components.mdleads Components,chart-foundations.mdleads Visualizations,compositions.mdleads Kits. Every doc keeps a sidebar home and its/design/<slug>URL./previewrelabelled Specimens; route unchanged.Honest arithmetic: hand-listed rows come out roughly flat. The real win is groups 10 → 7, three destinations deleted, and four surfaces collapsing to two.
Install
/install— one page for all nine targets, withkit-pipeline.mdas its doctrine body. Deliberately a page, not a group: a directory listing wearing an intent label is exactly what was already rejected as "Kit targets" / "Platforms" / "Integrations"./install/power-birenderskit/powerbi/README.mdverbatim — site and npm package stay single-source.Power BI leaves design/
design/powerbi-kit.mddeleted, content merged into the kit README.design/is doctrine about TUX itself; how to apply TUX to a specific host is a different kind of document.That doc was also the proof of a real bug: registering a design doc takes three edits (
design/index.vue,design/[doc].vue,app.vue) and it shipped with two — so it rendered but never appeared in the sidebar.Implementation tabs
Implementations are an attribute of a component, not a section of the nav — which is why there is no Power BI group anywhere in this tree.
TuxExamplegains apowerbitab, pushed conditionally exactly assourcealready was.tableauslots in the same way.chart-cartesian) and data-table (table-chrome), imported fromkit/powerbi/rather than retyped, so a tab cannot drift from the emitter.Verification
On the dev server: 7 groups render,
Composition/Tooling/Threadsgone, Install and Power BI setup linked, the Power BI tab shows the real fragment syntax-highlighted (categoryAxis,gridlineColorpresent), and every design doc exceptkit-pipeline.mdhas a sidebar home — that one renders inside/install, which is its home.115 tests, eslint clean.
Deferred
Merging
/patternsinto Kits, retiringapp/pages/kits.vueinto per-assembly rows, and thedesign/*.mdfrontmatter refactor that would collapse three registration points into one.Sprawl pass plus the Power BI relocation. Four surfaces were answering two questions, two groups had three entries between them, and kit/ — nine shipped framework targets — had no page at all. Nav - Composition, Forms and Tooling die as groups. Entries redistribute: composed pages to a new Kits group, Forms to a nested branch under Components, Accessibility and Contrast audit to Foundations. - Kits is the owner's word with the owner's meaning: "where do I look for an assembly of things" — composed examples, Patterns, and the frozen static reference designs. NOT the installable kit/ directory; a reader who clicks Kits expecting the landscape dashboard should not find tux-tokens.css. - Design narrows 11 -> 7 by re-homing, not hiding. components.md leads the Components group, chart-foundations.md the Visualizations group, compositions.md the Kits group. Every doc keeps a sidebar home and its /design/<slug> URL; only ownership moved. - /preview relabelled Specimens. Route unchanged. Install - /install — one page for all nine targets, kit-pipeline.md as its doctrine body. Deliberately a page, not a group: a directory listing wearing an intent label is what was already rejected as "Kit targets" / "Platforms" / "Integrations". - /install/power-bi — renders kit/powerbi/README.md verbatim, so the site and the npm package stay single-source. Power BI leaves design/ design/powerbi-kit.md deleted, content merged into the kit README. design/ is doctrine about TUX itself; how to apply TUX to a specific host is a different kind of document. That doc was also the proof — registering a design doc takes THREE edits (design/index.vue, design/[doc].vue, app.vue) and it shipped with two, so it rendered but never appeared in the sidebar. Implementation tabs The seam: how to style one chart lives on the chart; how to set up a report lives in the setup page. Implementations are an attribute of a component, not a section of the nav — which is why there is no Power BI group anywhere in this tree. - TuxExample gains a `powerbi` tab, pushed conditionally exactly as `source` already was; `tableau` slots in the same way. - Wired on chart-bar/line/area/scatter (chart-cartesian) and data-table (table-chrome), imported from kit/powerbi/ rather than retyped so a tab cannot drift from the emitter. - Coverage is partial and says so: the kit ships three fragment types, not one per chart, so a parity table on the Visualizations overview names what is covered. A missing tab reads as "no fragment yet", not "Power BI can't render it". Verified on the dev server: 7 groups render, Composition/Tooling/Threads gone, Install and Power BI setup linked, the Power BI tab shows the real fragment syntax-highlighted, and every design doc except kit-pipeline.md has a sidebar home — that one renders inside /install, which is its home. Deferred to a follow-up: merging /patterns into Kits, retiring app/pages/kits.vue into per-assembly rows, and the design/*.md frontmatter refactor that would collapse the three registration points into one.AI review · advisory
Verdict: 1 thing worth fixing (1 medium).
Findings that didn't map to a diff line:
app/app.vue:36· MEDIUM — Navigation labels contain leading spaces causing malformed IDsLabels prefixed with spaces (e.g., " · Tauri bindings") produce navigation IDs that start with a hyphen after lower‑casing and whitespace replacement, breaking the command‑palette and sidebar link IDs and risking duplicate entries.
⚑ panel: GPT-OSS 120B · Gemma 4 31B · Devstral 2 123B · Laguna S 2.1 — 9 distinct, 1 confirmed, 0 refuted · web: not used · context: 14 files · 90 codebase · 14 standards chunks (best-grounded: Laguna S 2.1; smaller windows saw less)
Panel debate — how this review was reached
Grounding — context: 14 files · 90 codebase · 14 standards chunks (best-grounded: Laguna S 2.1; smaller windows saw less)
Round 1 — independent reviews
Round 2 — cross-examination
Devstral 2 123B#8Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BDevstral 2 123B#5Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BGPT-OSS 120B#1Navigation labels contain leading spaces causing malformed IDs · confirmed: Gemma 4 31B, Devstral 2 123B · refuted: —Devstral 2 123B#6Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BDevstral 2 123B#2Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BDevstral 2 123B#7Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BDevstral 2 123B#1Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BDevstral 2 123B#3Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BDevstral 2 123B#4Inconsistent navigation structure · confirmed: — · refuted: GPT-OSS 120B, Gemma 4 31BSynthesis — Devstral 2 123B wrote the final review from 1 confirmed finding (+8 unconfirmed).
Transcript
rv-20260901174949-e21ee8— full round outputs, web results, and model reasoning are viewable by anyone with access to this repository via the AI gateway.Advisory — never a merge gate. Disagree with a finding? Reply on it, or use the finding board under this review. Transcript
rv-20260901174949-e21ee8.@ -40,23 +40,25 @@ const navTree = [children: [{ label: "Home", to: "/", icon: "lucide:home" },{ label: "Getting started", to: "/getting-started", icon: "lucide:compass" },{ label: "Install", to: "/install", icon: "lucide:package-plus" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree
@ -47,3 +52,4 @@// /design/<slug>, they just aren't listed twice.label: "Design",children: [{ label: "Doctrine", to: "/design/tux", icon: "lucide:book-open" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree
@ -78,2 +98,3 @@children: [{ label: "Examples", to: "/examples", icon: "lucide:layout-panel-left" },{ label: "Kits overview", to: "/examples", icon: "lucide:library" },{ label: "Compositions doctrine", to: "/design/compositions", icon: "lucide:blocks" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree
@ -79,2 +99,3 @@{ label: "Examples", to: "/examples", icon: "lucide:layout-panel-left" },{ label: "Kits overview", to: "/examples", icon: "lucide:library" },{ label: "Compositions doctrine", to: "/design/compositions", icon: "lucide:blocks" },{ label: " · Center landing", to: "/examples/center-landing", icon: "lucide:landmark" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree
@ -80,2 +99,4 @@{ label: "Kits overview", to: "/examples", icon: "lucide:library" },{ label: "Compositions doctrine", to: "/design/compositions", icon: "lucide:blocks" },{ label: " · Center landing", to: "/examples/center-landing", icon: "lucide:landmark" },{ label: " · Landscape dashboard", to: "/examples/landscape-dashboard", icon: "lucide:map" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree
@ -80,3 +100,4 @@{ label: "Compositions doctrine", to: "/design/compositions", icon: "lucide:blocks" },{ label: " · Center landing", to: "/examples/center-landing", icon: "lucide:landmark" },{ label: " · Landscape dashboard", to: "/examples/landscape-dashboard", icon: "lucide:map" },{ label: " · Paper page", to: "/examples/paper-page", icon: "lucide:file-text" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree
@ -80,4 +101,4 @@{ label: " · Center landing", to: "/examples/center-landing", icon: "lucide:landmark" },{ label: " · Landscape dashboard", to: "/examples/landscape-dashboard", icon: "lucide:map" },{ label: " · Paper page", to: "/examples/paper-page", icon: "lucide:file-text" },{ label: " · Research landing", to: "/examples/research-landing", icon: "lucide:milestone" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree
@ -81,4 +102,4 @@{ label: " · Landscape dashboard", to: "/examples/landscape-dashboard", icon: "lucide:map" },{ label: " · Paper page", to: "/examples/paper-page", icon: "lucide:file-text" },{ label: " · Research landing", to: "/examples/research-landing", icon: "lucide:milestone" },{ label: " · Sidebar shell", to: "/examples/sidebar-shell", icon: "lucide:panel-left" },MEDIUM — Inconsistent navigation structure
The navigation structure in app.vue does not match the documented structure in CHANGELOG.md, which could lead to confusion and broken links.
panel tally 1/4 · reply here or use the finding board to agree/disagree