Calendar Week/Day grid paints empty (DOM correct) with a busy week #1162

Open
opened 2026-10-05 19:55:32 +00:00 by kayg · 0 comments
Owner

Found while capturing website screenshots (#1143) on 2026-10-06. Build: dev 04afb00, runtime image from deploy/Containerfile.runtime, Playwright Chromium (headless shell and full Chromium), macOS arm64.

Symptom. Calendar Week and Day views paint an empty time grid: the hour labels show, but the day header row, the hour lines, Log entries and events do not paint. Month view and Agenda paint correctly with the same data. The phone Week view is also empty.

The DOM is correct. After load, 46 .block elements are inside the visible .tg-body rectangle with opacity 1, visibility visible, no filter, clip or mask, and elementFromPoint returns the block itself (nothing covers it). A Playwright element screenshot of one block paints it correctly. A viewport screenshot of the same moment shows the blocks missing.

Tried, no change: reduced motion; device scale 1 and 2; forcing .skip-offscreen { content-visibility: visible }; removing the .lane-track transform (translateX(-142875px)); an explicit viewport clip; full Chromium (new headless) instead of the headless shell.

Data at the time: about 150 events from a Radicale CalDAV calendar and 4-8 Log entries per day, so the grid used lod-2 and cram / has-more blocks. The first seed run had fewer items per day, and its Week view painted.

Not checked yet: headed Chrome or Safari with the same data. If it also shows an empty week there, users with busy weeks see a blank Calendar.

Repro: branch site/website, apps/website/shots: bun run image, bun run seed --reset, bun run shots -- calendar-week. The website uses the Month view as the Calendar hero until this is fixed.

Found while capturing website screenshots (#1143) on 2026-10-06. Build: `dev` 04afb00, runtime image from `deploy/Containerfile.runtime`, Playwright Chromium (headless shell and full Chromium), macOS arm64. **Symptom.** Calendar Week and Day views paint an empty time grid: the hour labels show, but the day header row, the hour lines, Log entries and events do not paint. Month view and Agenda paint correctly with the same data. The phone Week view is also empty. **The DOM is correct.** After load, 46 `.block` elements are inside the visible `.tg-body` rectangle with opacity 1, visibility visible, no filter, clip or mask, and `elementFromPoint` returns the block itself (nothing covers it). A Playwright element screenshot of one block paints it correctly. A viewport screenshot of the same moment shows the blocks missing. **Tried, no change:** reduced motion; device scale 1 and 2; forcing `.skip-offscreen { content-visibility: visible }`; removing the `.lane-track` transform (`translateX(-142875px)`); an explicit viewport clip; full Chromium (new headless) instead of the headless shell. **Data at the time:** about 150 events from a Radicale CalDAV calendar and 4-8 Log entries per day, so the grid used `lod-2` and `cram` / `has-more` blocks. The first seed run had fewer items per day, and its Week view painted. **Not checked yet:** headed Chrome or Safari with the same data. If it also shows an empty week there, users with busy weeks see a blank Calendar. Repro: branch `site/website`, `apps/website/shots`: `bun run image`, `bun run seed --reset`, `bun run shots -- calendar-week`. The website uses the Month view as the Calendar hero until this is fixed.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#1162
No description provided.