4a841d5acb
CI / Architecture Guardrails (pull_request) Successful in 17m31s
CI / Assistant Split Regression (pull_request) Successful in 9m42s
CI / Typecheck (pull_request) Successful in 20m48s
CI / Lint (pull_request) Successful in 8m6s
CI / Unit Tests (pull_request) Failing after 7m32s
CI / Build (pull_request) Successful in 9m12s
CI / E2E Tests (pull_request) Successful in 6m12s
CI / Fresh-Linux Docker Deploy (pull_request) Successful in 6m58s
CI / Release Images (pull_request) Has been skipped
Previously viewStart defaulted to today-30 and the scroll container had no left-edge expansion logic, so users hit a hard wall when scrolling left. This change: - Sets viewStart default to today so the viewport opens with today at the left edge (URL ?startDate= override still respected). - Adds left-edge auto-expansion in handleContainerScroll: when the user scrolls within 40 cells of the left boundary, 120 days are prepended and a useLayoutEffect applies the matching scrollLeft compensation in the same paint frame to prevent a visual jump. - Floors backward navigation at 5 years (minDate) to prevent unbounded viewDays growth. - Updates handleNavigateToday to match: resets to today rather than today-30. Both resource view and project view use the same TimelineContext / TimelineView, so both are fixed by this change. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>