You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Catalogs: named collections of catalog records (grilled 2026-08-16 — the one-giant-pile problem). A Catalog is a sectioned record (canonical.name + provenance-tagged members) at /api/v1/catalogs. Membership is organization, never identity: many-to-many, uncataloged records allowed (surfaced as Uncataloged), deleting a catalog deletes no records, and the account-wide natural key is untouched. Importers auto-catalog each run — records land in a catalog named from the source, idempotently. The Web UI Catalog tab groups by catalog; each record's page gets a membership checklist.
Account backup: GET /api/v1/account/export — the owner-operated escape hatch (first slice of #46): one zip with every record collection as sectioned JSON, labels, referenced media blobs, and a manifest. The Account tab gains a "Download backup (.zip)" card.
Changed
Web UI: /ui/ lands on a dashboard — attention first (pending proposals, NOT READY setups), then count cards per area, then a map of how the pieces fit.
Web UI: every list is a table (presets-table style) with browse-level row actions: tools (rename/retire/delete), machines, tool sets, catalog records, set members, and the Labels lists.
Web UI: all label printing lives on the Labels tab — blank labels plus a spec-label section with one kind combo (spec QR+specs / spec plaque / inventory QR-only), stock picker, and tool multiselect with select-all/deselect-all.
DEPLOYMENT.md: media persistence is part of the sample compose — the database volume alone does not persist media; a redeploy without a MEDIA_DIR volume silently discards every blob.
Removed
The v1 ManufacturerCatalog table and router (an R6 slice): deep-model substrate unreachable from the v2 facade, squatting on the name and route the first-class Catalog needed. Migration 0008 drops the table; v1 rows are pre-facade data, deliberately not migrated.