Skip to content

feat(marketplace): catalog storefront — index-backed package discovery in the dashboard #3976

Open

Description

@kvaps

Problem

#3940 lands the marketplace plumbing — publishing a repository, connecting it, materializing its PackageSources, and an official/community distinction. What it does not land is the catalog storefront: the part where an operator opens the dashboard after a fresh install and sees packages they could install.

Today, on a stock cluster:

  • The dashboard's Repositories view opens empty — "No repositories connected yet. Connect one above" — with a free-text oci:// field. Nothing is discoverable before you already know a URL.
  • The console never reads a package index. There are no references to an index anywhere under console/src.
  • No index is configured by default. resolveIndexDir (cmd/cozypkg/cmd/index.go) errors with no index configured; pass --index <path|oci-ref> or set COZYPKG_INDEX, so even cozypkg search needs the operator to supply a location.
  • The TapIndex cache described in community#23 as the backend for this view is not implemented.

The result reads as a marketplace with no goods in it: the mechanism works, but discovery — the reason a user opens the page — is absent.

Scope

Discovery only. Connecting, materializing, trust and the official/community distinction are #3940's and are not in scope here.

  • Ship a default index location so a fresh install points at the community index without configuration, in both the dashboard and cozypkg.
  • Implement the TapIndex cache from community#23 as the in-cluster reader, so the console does not fetch remote indexes from the browser.
  • Render the index in the marketplace: available repositories and the packages they expose, searchable, with the official/community badge already modelled on Tap.
  • Decide and document what a fresh cluster shows before anything is connected — the curated index only, or an empty state with a pointer to it.

Notes

The per-package metadata shown before connecting depends on what the index entry carries, not on pulling the artifact. Surfacing anything that requires the artifact itself (the privileged badge, for example) is a separate question already tracked on #3940 and should not be folded in here.

Related: cozystack/community#18 (repository as the versioned unit), cozystack/community#23 (backend, TapIndex), #3940 (implementation this builds on).

Activity

  1. added
    triage/acceptedIndicates an issue is ready to be actively worked on
    priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete
    and removed
    triage/needs-triageIndicates an issue needs triage by a maintainer
    on Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/dashboardIssues or PRs related to the dashboard / UIkind/featureCategorizes issue or PR as related to a new featurepriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to completetriage/acceptedIndicates an issue is ready to be actively worked on

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions