11# Sidebar grouping
22
33The probe sidebar turns a manufacturer's flat probe list into a hierarchy from
4- an explicit, hand-curated config. There are no rules and no inference: every
4+ an explicit, hand-curated config. The goal is a more human-friendly menu: users
5+ may not know the probes' SKUs and instead recognize the marketing names and
6+ categories. There are no rules and no inference: every
57probe is placed by model id under a path of named nodes. A manufacturer with no
68config (everything except IMEC today) renders as a flat list.
79
8- This replaced an earlier rule-based engine that derived the grouping by regex on
9- the part number and substring-matching the free-text description. Those rules
10- were fragile because the probe metadata does not carry the facts we group on
11- (generation, family, length), so we were reconstructing editorial decisions from
12- strings. The explicit file states those decisions directly instead.
13-
1410## Format
1511
1612JSON (` imec_neuropixels.json ` ), because Vite imports it with no extra
@@ -21,7 +17,9 @@ order) at the leaves.
2117` collapsible ` is a per-node property that ** defaults to ` true ` ** , so only the
2218exceptions need stating: the length bands set ` collapsible: false ` , while every
2319other node omits it. ` true ` is a foldable header with a caret; ` false ` is a
24- static, always-open divider.
20+ static, always-open divider. This is useful for divisions worth mentioning but
21+ not worth occluding, usually the finer levels, like the length bands of the
22+ non-human-primate (NHP) probes in Neuropixels.
2523
2624The walker (` groupEntries.ts ` ) attaches each manifest entry to the node listing
2725its model, prunes empty branches, and collects anything not placed into a
@@ -32,5 +30,11 @@ manifest needs a home in the config.
3230
3331Edit the relevant ` probes ` list. To add a new manufacturer, add its JSON file
3432and one line in ` index.ts ` . No engine changes. JSON has no comments, so if a
35- placement is non-obvious, record the rationale here or in a ` note ` field on the
36- node.
33+ placement is non-obvious, record the rationale in a ` note ` field on the node
34+ (documentation only, not rendered). For example, the Neuropixels NXT node:
35+
36+ ``` json
37+ { "label" : " Neuropixels NXT" ,
38+ "note" : " NP3023/NP3024 describe themselves as 'Neuropixels 3.0' but belong to the NXT generation." ,
39+ "children" : [ ... ] }
40+ ```
0 commit comments