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 logicTime calculation walks tasks in position order, skipping completed tasks and advancing a cursor by each task's estimated_time_minutesReact implementation uses useMemo keyed on tasks array; Svelte uses reactive $: declarationDeployed to production on both /fuscalendar and /fuscalendar_v2 (S3 + CloudFront cache invalidation)