Skip to content

feat: open-source vs proprietary product marker + optional repo link#5

Merged
windischb merged 1 commit into
developfrom
feature/product-openness-marker
Jul 19, 2026
Merged

feat: open-source vs proprietary product marker + optional repo link#5
windischb merged 1 commit into
developfrom
feature/product-openness-marker

Conversation

@windischb

Copy link
Copy Markdown
Contributor

Why

Host documentation for closed-source products on docs.cocoar.dev so they're findable, alongside the open-source ones — but clearly labeled which is which, and without forcing a repo link on the proprietary ones.

What

A new display-only dimension on products (orthogonal to Visibility and Restricted — it does not gate access; use Restricted to hide):

  • ProductConfig.Openness (ProductOpenness: Unspecified / OpenSource / Proprietary, default Unspecified) + optional RepositoryUrl. Marten persists both with no schema change; GET /products[/{p}] project them and Create/Update round-trip them (an empty RepositoryUrl clears the link).
  • Admin product form (General tab): a Source select + Repository URL field. The product grid gains a Source column (persistColumnState bumped to v4).
  • Landing page: a colored openness badge (green Open Source / muted Proprietary, none when unspecified), a discreet "Source ↗" link when a repo URL is set, and Open Source / Proprietary filter chips (persisted in preferences.store).
  • Docs: CHANGELOG (2.2.0), CLAUDE.md, and the admin-ui / product-registration / configuration guides.

Tests

  • 3 new round-trip integration tests: persists openness + repo URL; defaults to Unspecified with null repo URL; clears the repo URL when sent an empty string.
  • Full suite 128/128 green; client build, whitespace format all green.
  • Verified end-to-end in the browser (dev): badges, "Source ↗" link, and the openness filter all render and filter correctly; admin form fields + grid column present.

🤖 Generated with Claude Code

…link

Lets closed-source product docs be hosted and found on the landing page
alongside open-source ones while being clearly distinguished.

- ProductConfig gains Openness (ProductOpenness: Unspecified/OpenSource/
  Proprietary, default Unspecified) and an optional RepositoryUrl. Both are
  display-only — orthogonal to Visibility and Restricted. Marten persists them
  with no schema change; the API projects them and Create/Update round-trip
  them (empty RepositoryUrl clears the link).
- Product form (General tab): a Source select + Repository URL field; the
  product grid gains a Source column (persistColumnState v4).
- Landing page: a colored openness badge (green Open Source / muted Proprietary,
  none when unspecified), a discreet "Source ↗" link when a repo URL is set,
  and Open Source / Proprietary filter chips (persisted in preferences).
- Docs: CHANGELOG (2.2.0), CLAUDE.md, admin-ui / product-registration /
  configuration guides.

Tests: 3 new round-trip tests (persist, default Unspecified, clear repo URL via
empty string); full suite 128/128 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@windischb
windischb merged commit ecc96a9 into develop Jul 19, 2026
2 checks passed
@windischb
windischb deleted the feature/product-openness-marker branch July 19, 2026 13:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant