Skip to content

feat: dashboard favourites#9631

Draft
AdityaHegde wants to merge 45 commits into
mainfrom
feat/dashboard-faviourites
Draft

feat: dashboard favourites#9631
AdityaHegde wants to merge 45 commits into
mainfrom
feat/dashboard-faviourites

Conversation

@AdityaHegde

Copy link
Copy Markdown
Collaborator

Adds basic faviourites feature so that users can pin dashboards. Builds on top of tags PR.

https://www.loom.com/share/800b0c72fc46464eb9b9b95e82771514

Note: this is pending support for tags.

Checklist:

  • Covered by tests
  • Ran it and it works as intended
  • Reviewed the diff before requesting a review
  • Checked for unhandled edge cases
  • Linked the issues it closes
  • Checked if the docs need to be updated. If so, create a separate Linear DOCS issue
  • Intend to cherry-pick into the release branch
  • I'm proud of this work!

royendo and others added 30 commits April 22, 2026 14:32
…anization

- Add `tags` field to ExploreSpec and CanvasSpec protos and parsers
- Render tag chips on each dashboard row in the project dashboards list
- Add a tags filter dropdown to the left of search (OR semantics) on the project home page

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Tag filter is now stored in the `tags` query param (comma-separated), so the selection is shareable and survives navigating into a dashboard and back.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…zation

When `tagAsFolders` is enabled in rill.yaml:
- Dashboard list groups into collapsible tag folders; dashboards with
  multiple tags appear under each folder; untagged dashboards get an
  "Untagged" section
- Navigating into a dashboard from a folder carries ?tags=<tag> so back-
  navigation returns to the same folder context
- Breadcrumb gains a tag segment (> Tag > Dashboard) derived from the
  active ?tags= URL param; clicking it returns to the filtered list

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…order

- Tags dropdown is hidden when tagAsFolders is on (folders replace it)
- All tag folders share a single parent border+rounded container with
  divide-y separators instead of each folder having its own border

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The folder header already shows the tag, so the chips on each row are redundant.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…s is on

- Add depth:2 to visualization PathOptions so the tag segment in the breadcrumb
  does not leak into the dashboard URL path
- Hide tag pills in the composite cell whenever tagAsFolders is enabled, covering
  both the flat/home preview list and the folder grouped view

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…te syncs

The explore URL state system was replacing redirectUrl.search entirely when syncing
state, which stripped any non-explore params like ?tags= used for folder breadcrumb
context. Now unknown params are carried over when the URL is replaced.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Derive active tag from URL param, else the dashboard's primary tag, else "not-tagged" so the folder breadcrumb is always present on dashboard pages
- Render tag-level dropdown with per-tag submenus of dashboards ("^" lists tags, ">" expands to its dashboards)
- Sort dashboard-level dropdown by tag with group headers
- Use "not-tagged" as the untagged folder/URL key and handle it as a virtual tag in the list filter

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a tag folder is active, the dashboard-level dropdown now lists only dashboards in that tag (instead of all dashboards grouped by every tag).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…-dashboard-organization

# Conflicts:
#	web-admin/src/features/projects/status/resource-table/ProjectResources.svelte
#	web-admin/src/features/projects/status/tables/ProjectTables.svelte
Svelte couldn't resolve the dependency through the conditional spread,
so `filterGroups` ran with `availableTags` undefined and threw on
`.length`, crashing the component during hydration (SSR is disabled on
this page, so the crash produced a blank render).
The merge of main left two `onFilterChange` definitions in the file —
the existing one (line 147, handles `type` and `tags`) and a partial
new one main introduced (line 191, only `type`). Drop the partial
duplicate; the existing handler already covers both keys.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Display the untagged virtual group as "Not Tagged" in the dashboard
  folder header and the breadcrumb dropdown. Add a sibling
  `UNTAGGED_LABEL` constant alongside `UNTAGGED_KEY`; the kebab-case
  key still flows through URLs / state / map keys, while the
  human-readable label only surfaces at the two display sites
  (`DashboardsTagFolder`, `ProjectHeader`).
- Add the `tags?: string[]` field to `V1ResourceMeta` in the
  Orval-generated `index.schemas.ts`. The proto and swagger already
  declare the field, but `index.schemas.ts` is not part of
  `make proto.generate` so it had not picked up this branch's new
  field, breaking svelte-check on `DashboardsTable.svelte`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nishantmonu51 nishantmonu51 added Type:Feature New feature request Area:Dashboard Size:M Medium change: 100-499 lines labels Jun 30, 2026
Base automatically changed from worktree-feat-project-dashboard-organization to main July 7, 2026 15:01
@AdityaHegde AdityaHegde force-pushed the feat/dashboard-faviourites branch from 7b8c92f to 10fe792 Compare July 8, 2026 11:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area:Dashboard Size:M Medium change: 100-499 lines Type:Feature New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants