feat(hub): exclude projects via right-click menu on project cards - #64
Merged
Conversation
Add the ability to hide projects from the hub without disabling them. Excluded projects stay enabled and keep syncing in the background, but are filtered out of the hub home, summary aggregates, project switcher, prev/next navigation, sync-all, and the recent/todo/queue feeds. Right-clicking a project card opens a context menu with "Sync this project now" and "Exclude this project". Exclusions persist to hub.json and broadcast to every open client. Hidden projects can be restored from the Manage projects settings panel.
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.
What
Adds the ability to exclude (hide) projects from the hub without disabling them, plus a right-click context menu on each project card.
Right-clicking a project card on the hub home opens a menu with:
Excluded projects stay enabled and keep syncing in the background; they are simply filtered out of the hub home grid, the summary aggregates, the project switcher, prev/next project navigation, "Sync all", and the recent / todo / queue feeds. This is intentionally lighter-weight than disabling a project (which tears the project down entirely).
Details
excludedProjectslist in~/.config/ghfs/hub.json, mirroringenabledProjects. The hub broadcastsonProjectsChangeon toggle, so every open client updates live.ProjectSummarynow carries anexcludedflag (alwaysfalsein single-project mode), which the client uses as the single source of truth for filtering.ghfs:hub-set-excluded(id, excluded). Disabling a project also clears any lingering exclusion, and removing a hub root prunes excluded paths under it.eexcludes it; both actions are registered commands (hub.exclude-project,hub.sync-project) surfaced in the help overlay.Notes
excludedProjectsconfig round-trip,setExcludedProjects, root-removal pruning, and never-set vs. explicitly-empty semantics. Fullvitestsuite green; CLI typecheck clean; UI + CLI production builds succeed.This PR was created with the help of an agent.