From ad3647bee211ca7266727f93946196d601dc9b0b Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Sat, 15 Aug 2026 21:16:48 +0200 Subject: [PATCH] fix: dim only finished events in the timeline The bar tested for an entry in the progress store, but an entry appears there the moment a reader records an effort or a note. Recording "this looks like a grind" greyed the event out as though it were already done. Ask whether it is done instead. Co-Authored-By: Claude Opus 5 (1M context) --- src/client/App.tsx | 7 +------ src/client/components/Timeline.tsx | 11 ++++++++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/client/App.tsx b/src/client/App.tsx index 3d5e717..b86604d 100644 --- a/src/client/App.tsx +++ b/src/client/App.tsx @@ -260,12 +260,7 @@ export function App() { )} ) : ( - + )} void; - completions: Record; + /** + * Asked rather than derived from the progress store: an entry exists there + * the moment a reader records an effort or a note, and dimming a bar for + * that would say "finished" about something they have not started. + */ + isDone: (id: string) => boolean; }) { const scroller = useRef(null); @@ -119,7 +124,7 @@ export function Timeline({ const clippedStart = clock.startsMs < min; const left = Math.max(x(clock.startsMs), 0); const right = x(clock.endsMs ?? clock.startsMs + 14 * DAY); - const done = completions[event.id] !== undefined; + const done = isDone(event.id); return (