From 329902d7d817cd147832c03c38a4296233e819ed Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Wed, 19 Aug 2026 05:30:37 +0200 Subject: [PATCH] feat(prefs): remember whether the board plots what hasn't started MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The timeline draws its window from what it plots, so a lane's next patch sitting on the board pushes every running bar right to make room for things nobody can do yet. That wants to be the reader's answer rather than ours, and it wants to survive a reload like `view` and `timelineGroup` do. Defaults to false, which is what every existing board already looks like — the rows were there but nothing was asked, so shipping this moves nobody. A stored pref wins either way. Co-Authored-By: Claude Opus 5 (1M context) --- src/client/state/usePrefs.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/client/state/usePrefs.ts b/src/client/state/usePrefs.ts index 58eb8cd..6f03aa2 100644 --- a/src/client/state/usePrefs.ts +++ b/src/client/state/usePrefs.ts @@ -86,6 +86,19 @@ export interface Prefs { * A stored pref wins, so shipping this moves nobody's view. */ timelineGroup: TimelineGroup; + /** + * Whether the board plots events that have not started yet. + * + * Off by default, and that is a claim about what the board is *for*: it + * answers "how does the time I am in lay out?", and a reader with fourteen + * lanes has a next patch queued behind every one of them. Plotting those by + * default pushes the right edge of the board weeks past today, shrinks every + * running bar to make room, and fills the space with things nobody can do + * yet. Nothing is lost by leaving them off — the checklist's "Not started + * yet" section has listed them all along, and the toggle in the board's + * header says how many are being held back. + */ + timelineUpcoming: boolean; /** * Whether to guess which events repeat daily from what the source printed. * Off leaves only the ones the reader marked themselves; it never discards a @@ -124,6 +137,7 @@ function defaults(): Prefs { view: "soon", timelineDayWidth: DEFAULT_DAY_WIDTH, timelineGroup: "game", + timelineUpcoming: false, detectDaily: false, showCompleted: true, showIgnored: false,