Changelog

Projected completion times and timeline UI

Related projects: Fuscalendar

Adds projected completion times to the task list so users can see what time they'll finish each task without mental math.

Added

  • Projected end times on tasks: Each incomplete task displays its projected completion time (e.g. "9:47 AM") calculated from the current time plus cumulative task durations in list order.
  • Vertical timeline UI: A column on the right side of the task list with connecting dots and lines. Active tasks get blue glowing dots; completed tasks get gray dots.
  • formatClockTime utility: New time formatting function in both frontends for displaying clock times via toLocaleTimeString.
  • neu-chip-inset CSS class (web2): Neumorphic inset chip style for the projected time display, complementing the existing raised neu-chip.
  • Changed

  • Completed task opacity (web2): Reduced from 0.9 to 0.6 for stronger visual distinction between active and completed tasks.
  • Task title row (web2): Added flex-wrap to prevent layout overflow on narrow screens.
  • Technical

  • Implemented in both Svelte (web) and React (web2) frontends with identical logic
  • Time calculation walks tasks in position order, skipping completed tasks and advancing a cursor by each task's estimated_time_minutes
  • React implementation uses useMemo keyed on tasks array; Svelte uses reactive $: declaration
  • Deployed to production on both /fuscalendar and /fuscalendar_v2 (S3 + CloudFront cache invalidation)