feat: dashboard favourites#9631
Draft
AdityaHegde wants to merge 45 commits into
Draft
Conversation
…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).
…-dashboard-organization
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>
…/dashboard-faviourites
…/dashboard-faviourites
Base automatically changed from
worktree-feat-project-dashboard-organization
to
main
July 7, 2026 15:01
7b8c92f to
10fe792
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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: