Context
The catalog schema already defines rowPosition and columnPosition fields on IO entries (schema/json/hardware.json), and the Studio app types include them (CatalogIO in apps/studio/src/lib/types/catalog.ts), but no entries use them yet.
These fields describe the spatial arrangement of ports on a given side of a device — e.g., on the "Top" position, column 1 is leftmost, row 1 is closest to front. This enables accurate visual rendering of hardware I/O layouts in the setup graph.
Problem
- Port rendering in the setup graph currently has no spatial ordering information
- All ports on a given side are treated as an unordered list
- This matters most for devices with dense I/O (audio interfaces, mixers, synths)
Proposal
-
Define conventions for how row/column values are assigned:
- Column: left-to-right ordering (1-based)
- Row: front-to-back or top-to-bottom ordering (1-based)
- Document in
schema/CONTEXT.md
-
Create an enrichment workflow (not part of bulk import) that:
- Takes a hardware entry slug
- Displays the product images
- Lets you assign row/column positions to each IO port interactively
- Writes back to the YAML
-
Backfill existing hardware entries with high IO counts first (audio interfaces, mixers)
Why not in catalog-import?
Product pages rarely describe port layout in text — it's visual/spatial info from photos. Automated extraction would be unreliable. Better as a manual enrichment pass.
Related
- Schema:
schema/json/hardware.json (columnPosition, rowPosition fields)
- App types:
apps/studio/src/lib/types/catalog.ts (CatalogIO interface)
- No entries currently use these fields
Context
The catalog schema already defines
rowPositionandcolumnPositionfields on IO entries (schema/json/hardware.json), and the Studio app types include them (CatalogIOinapps/studio/src/lib/types/catalog.ts), but no entries use them yet.These fields describe the spatial arrangement of ports on a given side of a device — e.g., on the "Top" position, column 1 is leftmost, row 1 is closest to front. This enables accurate visual rendering of hardware I/O layouts in the setup graph.
Problem
Proposal
Define conventions for how row/column values are assigned:
schema/CONTEXT.mdCreate an enrichment workflow (not part of bulk import) that:
Backfill existing hardware entries with high IO counts first (audio interfaces, mixers)
Why not in catalog-import?
Product pages rarely describe port layout in text — it's visual/spatial info from photos. Automated extraction would be unreliable. Better as a manual enrichment pass.
Related
schema/json/hardware.json(columnPosition,rowPositionfields)apps/studio/src/lib/types/catalog.ts(CatalogIOinterface)