Remote / URL / namespaced registries + patties ui build
Accept — promoted from backlog. Previously parked as the lowest-priority parity
Review verdict (2026-05-29)
Accept — promoted from backlog. Previously parked as the lowest-priority parity item, now brought onto the implementation path alongside the other specced rows. The full design was already on record in cli/15-registry-distribution; this promotion flips its status from "design of record, build on demand" to "scheduled work."
Scope pins (unchanged from the on-record spec):
- Source kinds: name | namespaced (
@ns/name) | local path | URL. ui.registriesnamespace→base map, extending theuiconfig block ([[rfc-patties-ui-config-block]]).- HTTPS-only fetch,
ComponentEntry-schema validated, source shown before stamp; fetched source written as text, nevereval/import-ed. - Never runs
npm/bun install— preserves the CI-safe divergence (add.ts:73). patties ui buildis for third-party catalog authors; first-partypatties-uistays hand-maintained TS and is not required to be built.
Lowest priority among the specced rows (see the matrix Implementation order), but no longer gated behind a "third-party ecosystem exists" trigger.
Encoded into cli/15-registry-distribution.
Summary
Extend patties add to resolve components from URLs, local paths, and namespaced third-party registries (@acme/fancy-button), and add patties ui build to compile a registry.ts + templates/ into a fetchable registry.json for third-party authors.
Full design is on record in cli/draft/15-registry-distribution.
Motivation
patties resolves only by name, from the single first-party patties-ui registry in node_modules (load-catalog.ts:20). To support company-internal catalogs and a community ecosystem, add needs to resolve from URLs / local paths / namespaces, and catalog authors need a build step to emit a fetchable artifact.
Design highlights (from cli/15)
- Source kinds: name | namespaced (
@ns/name) | local path | URL. ui.registriesnamespace→base map ([[rfc-patties-ui-config-block]]).- HTTPS-only fetch,
ComponentEntry-schema validated, source shown before stamp; fetched source is written as text, nevereval/import-ed. - Never runs
npm/bun install— preserves the CI-safe divergence (add.ts:73). patties ui build --out dist/remits schema-validregistry.json+ per-component JSON with inlined source. First-partypatties-uistays hand-maintained TS and is not required to be built.
Open questions
- Integrity: do remote registries need a lockfile/hash pin to detect tampering?
- Caching: cache fetched registries under a project-local dir, or always re-fetch?