learning_ai_common_plat/dashboards
saravanakumardb1 2c4357b71b feat(tracker-web): make product switcher generic — configurable list + auto-hide
Steps toward a tenant-neutral platform (not hardcoded to the ByteLyst products):

- The selectable product list is now configurable via NEXT_PUBLIC_PRODUCTS
  (JSON array of { id, name, icon? }), defaulting to the built-in set. A pure,
  defensive parser (parseProductsEnv) falls back to the default on any malformed
  value so a bad env can never blank the switcher.
- The sidebar switcher auto-hides when there is <= 1 product, so a solo / freelance
  / single-tenant deployment shows no switcher clutter.
- Dedupe: the server product-config now re-exports the single client-safe list
  instead of keeping a second hardcoded copy.

NOTE: true per-user "only your projects" scoping + server-side tenant
authorization still requires an ownership/membership model that does not exist
yet (ProductDoc has no owner/members; products are a global registry). That is a
deliberate, separate effort needing a product decision and is not included here.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-06-01 16:27:14 -07:00
..
admin-web chore(deps): bump @types/node 22 -> 25 (dev types) 2026-05-31 04:02:56 -07:00
tracker-web feat(tracker-web): make product switcher generic — configurable list + auto-hide 2026-06-01 16:27:14 -07:00
ux-lab docs(ux-lab): consolidate each kit to single PROMPT.md + .gitignore only 2026-03-05 21:42:19 -08:00