Skip to content

feat(timeline): add now pill and time indicator#204

Open
chiptus wants to merge 5 commits into
claude/188-193-day-jump-toolbarfrom
claude/188-194-now-indicator
Open

feat(timeline): add now pill and time indicator#204
chiptus wants to merge 5 commits into
claude/188-193-day-jump-toolbarfrom
claude/188-194-now-indicator

Conversation

@chiptus

@chiptus chiptus commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Adds a Now pill in the day-jump toolbar and a dashed current-time indicator on the Timeline strip, both present only while now (festival timezone) falls inside the festival window. Mount precedence now includes a now−1h rule between the day filter and the festival-start fallback.

Closes #194. Stacked on #193 (day-jump toolbar) - base branch is claude/188-193-day-jump-toolbar, not main.

Verification

  • With now inside the seeded edition's window (supabase/seed.sql, "test"/"2025"): Timeline opens near now minus ~1h, the Now pill renders in the toolbar, and the dashed indicator sits at the right offset on the strip.
  • Tap the Now pill: scrollTo is written to the URL and the strip smooth-scrolls to center on now; the viewport never auto-scrolls on its own as the indicator ticks.
  • With now outside the window (before or after), neither the Now pill nor the indicator render (absent, not disabled).
  • pnpm run lint, pnpm run typecheck, and pnpm vitest run all pass.
  • New/updated unit tests: src/lib/timelineMountMoment.test.ts (now-1h precedence rule, isNowWithinFestivalWindow boundaries). New e2e spec: tests/e2e/timeline-now-indicator.spec.ts (controlled clock via page.clock.setFixedTime; not run locally, no local Supabase in this environment).

Generated by Claude Code

Adds a Now pill in the day-jump toolbar and a dashed current-time
indicator on the Timeline strip, both rendered only while now (festival
timezone) falls inside the rendered timeline's festival window. Extends
resolveTimelineMountMoment's precedence with a now-1h rule (scrollTo ->
day filter -> now-1h inside window -> festival start), backed by a new
isNowWithinFestivalWindow pure function and a useNow(60s) hook that is
the sole place `new Date()` is read for this feature.

Closes #194
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@vercel

vercel Bot commented Jul 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
upline Ready Ready Preview, Comment Jul 16, 2026 2:26pm

Active stage/time filters shrank TimelineData's bounds and hid the Now
pill mid-festival; the pill and the mount now-rule are now gated on a
new calculateScheduleWindow(scheduleDays) computed from the unfiltered
schedule, while the indicator stays gated on the rendered strip's own
bounds. Also clamps the mount now-rule to max(now - 1h, window start)
so a now within the window's first hour can't resolve before it opens.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AziTqr3f12fxALYD6jhrW8
… into claude/188-194-now-indicator

# Conflicts:
#	src/hooks/useTimelineScrollSync.ts
#	src/pages/EditionView/tabs/ScheduleTab/horizontal/Timeline.tsx
#	src/pages/EditionView/tabs/ScheduleTab/horizontal/TimelineContainer.tsx
#	src/pages/EditionView/tabs/ScheduleTab/horizontal/TimelineToolbar.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants