feat(board): hide empty status columns when configured (BACK-466)#660
Open
napter wants to merge 1 commit into
Open
feat(board): hide empty status columns when configured (BACK-466)#660napter wants to merge 1 commit into
napter wants to merge 1 commit into
Conversation
Add `hideEmptyColumns` config (default false). When true, the kanban board hides status columns with no tasks; columns reappear while a task is being dragged so they remain valid drop targets. Surfaces in Settings → General. CLI: `backlog config set hideEmptyColumns true`. Refs BACK-466
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.
Summary
Adds
hideEmptyColumnstoBacklogConfig(defaultfalse). When enabled, the kanban board hides status columns whose status currently has no tasks. To preserve drag-and-drop usability, empty columns reappear while a task is being dragged, so they remain valid drop targets — when the drag ends, the empty column hides again.Why opt-in and default off:
The mechanism mirrors the existing empty-lane filter in milestone mode (
Board.tsxalready filtersvisibleLanes), so it's consistent with how upstream already treats empty groupings.Where it appears
backlog config get hideEmptyColumnsbacklog config set hideEmptyColumns true|falsebacklog config list(shows the field with current value)hide_empty_columns: trueinbacklog/config.yml.Implementation notes
BacklogConfig. Mirrored everywhereautoOpenBrowseris touched except the init-wizard plumbing — this is a discover-in-Settings preference, not an init choice. Defaulting tofalsemeans a missing field behaves correctly without migration.Board.tsxcomputesvisibleStatusesviauseMemo. WhenhideEmptyColumnsis on and no drag is active, it filtersstatusesto those with at least one task in any visible lane (using the samedisplayTasksByLanemap already used for rendering — no extra traversal). Otherwise it returnsstatusesunchanged.dragSourceStatusstate (already wired byTaskColumn'sonDragStart/onDragEnd). No new state.gridTemplateColumns: repeat(N, ...)) and the flex fallback both usevisibleStatuses.length, so layout collapses cleanly when columns are hidden.Test plan
bunx tsc --noEmit— cleanbunx biome check <changed files>— cleanbun test— 1244 pass / 0 fail (2 skipped; interactive PTY tests gated by env var)src/test/config-commands.test.ts: round-tripshideEmptyColumnsviaconfig set/get/listsubprocess invocations/api/configPUT round-tripshideEmptyColumns: trueand persists to diskManual verification I'd suggest before merge:
🤖 Generated with Claude Code