-
feat(ui): add "How do I use this?" usage instructions to repo detail pages (#105)
ci/woodpecker/tag/docker Pipeline was successfulreleased this
2026-07-25 14:16:22 +10:00 Why
A repository detail page in the ArtifactAPI UI showed configuration and stats, but nothing that told a user how to actually consume the repo. You had to already know the per-package-type URL scheme (yum baseurl, pip index-url, docker registry host, terraform source address, ...) by hand. This adds an in-page, copy-pasteable "How do I use this?" panel so each repo page tells you exactly how to point a Linux host at it.
Changes
- Add a
UsageInstructionscomponent: a collapsible "How do I use this?" panel with monospace code boxes and copy-to-clipboard buttons, styled to match the existing detail-section / badge theme. - Generate instructions per package type (rpm, pypi, npm, docker, terraform, helm, alpine, goproxy, puppet, generic) and per class:
- remote — consume via the caching proxy (
/api/v1/remote/<name>/...). - local — consume via the real registry endpoint, plus a publish/push example (rpm
PUT .../files/, docker Registry V2 push, terraform provider upload). - virtual — consume the merged index via
/api/v1/virtual/<name>/...using the same per-type client config.
- remote — consume via the caching proxy (
- Interpolate the repository's real name into every snippet so it is genuinely copy-pasteable.
- Resolve the instance base URL from
window.location.origin(the UI is served on the API origin, clientBASE='') instead of hardcoding a hostname; falls back to the public host only whenwindowis unavailable. - Render the panel on
RemoteDetail,LocalDetail, and theVirtualsmember-expand panel.
Verification
npm run build(tsc typecheck + vite build) passes.- Rendered the component in headless Chromium against real repo data for rpm remote, rpm local (with publish), docker local (with push), terraform local (HCL
required_providers+ signing note), and a pypi virtual — all snippets render with the correct URLs and theme.
Reviewed-on: #105
Co-authored-by: Ben Vincent ben@unkin.net
Co-committed-by: Ben Vincent ben@unkin.netDownloads
- Add a