Skip to content

Fix overlapping Google Calendar event lanes#45

Merged
michaelzick merged 3 commits into
mainfrom
codex/fix-overlapping-calendar-events
Jun 7, 2026
Merged

Fix overlapping Google Calendar event lanes#45
michaelzick merged 3 commits into
mainfrom
codex/fix-overlapping-calendar-events

Conversation

@michaelzick

Copy link
Copy Markdown
Owner

Summary

Fixes Google Calendar blockers on the planner timeline when multiple synced events share the same time range, and tightens the hide/sync behavior around those blockers.

  • Equal-width overlapping event lanes: synced Google events that occur at the same time now split horizontally across the timeline row instead of rendering on top of each other.
  • Shared-lane Hide controls: overlapping event cards keep the X Hide control pinned to the top-right corner, matching the full-width card layout while reserving space so title/time text truncates cleanly.
  • Stable hide behavior: hiding a Google blocker removes it immediately and keeps it hidden through normal refetch/background sync.
  • Explicit sync restore behavior: clicking Sync calendar restores hidden Google blockers from the fresh sync, while automatic syncs continue respecting local hides.
  • Typed sync query option: the calendar sync route now accepts a typed restoreHidden query flag so manual and background syncs can intentionally differ.

Changes

  • timeline-board.tsx - computes visible calendar-event overlap lanes and passes lane placement into each event card.
  • timeline-board-calendar-event.tsx - applies lane-based left/width styles and pins shared-lane Hide controls to the top-right.
  • timeline-board.test.tsx - adds regression coverage for three simultaneous synced events and top-right Hide controls.
  • planner-service-calendar.ts / planner route/service/client wiring - preserves dismissal markers for background sync and clears them only for explicit restore syncs.
  • day-plan.ts - adds the shared calendarSyncQuerySchema for the new sync option.
  • Hook/server/shared tests updated for hide persistence and manual restore behavior.

Test plan

  • corepack pnpm --filter @timefraim/web test -- src/components/timeline-board.test.tsx
  • corepack pnpm --filter @timefraim/server test -- src/services/planner-service.test.ts
  • corepack pnpm --filter @timefraim/web test -- src/hooks/use-planner-mutations.test.tsx src/hooks/use-auto-google-task-sync.test.tsx
  • corepack pnpm --filter @timefraim/shared test -- src/index.test.ts
  • corepack pnpm lint
  • corepack pnpm typecheck
  • git diff --check

Created by Codex

@michaelzick michaelzick marked this pull request as ready for review June 7, 2026 19:39
@michaelzick michaelzick merged commit 7ec495c into main Jun 7, 2026
10 checks passed
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.

1 participant