Add manufacturer catalog, category/manufacturer library management, and built-in cable flag

Normalizes manufacturer as a shared catalog entity (like device categories)
instead of free text on each device, giving the admin duplicate-detection
nudge a reliable signal. Adds full CRUD (including Admin direct-publish,
bypassing the submission queue) for categories, manufacturers, port types,
and cable types, plus a Categories & Manufacturers library modal and a
browse-by-manufacturer/search view in the device palette. Adds
Port.builtInCable so a captive/permanently-attached cable (a keyboard's USB
lead, a budget AVR's power cord) can be flagged and excluded from the BOM.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017DUU6CnxECCDeqDNYJgr5x
This commit is contained in:
2026-09-28 10:04:05 -05:00
co-authored by Claude Sonnet 5
parent 00777077c2
commit 29c3ed46a3
28 changed files with 2201 additions and 320 deletions
@@ -0,0 +1,9 @@
-- Devices with a captive/permanently-attached cable (a keyboard's USB
-- cable, a budget AV receiver's power cord, some passive speakers' fixed
-- speaker wire, ...) — a property of the physical port, not of any one
-- wiring choice, so it lives on device_template_ports rather than on
-- connections (which aren't even a relational table — see diagrams' JSONB
-- `data` for those; nothing to migrate there, the domain type change alone
-- covers newly-placed devices, and this column is what the palette/library
-- side needs).
alter table public.device_template_ports add column built_in_cable boolean not null default false;