* Fix visual baseline script execution
- Fix Makefile: bypass entrypoint with --entrypoint=''
- Add /tags/ to create-baseline.js pages
- Add /articles/, /project/github/ to capture.js pages
- Add 'tags' to compare.js pages
- Add run-baseline-in-docker.sh helper script
- Update CHANGELOG.txt
Fixes issue where npm test was executed instead of create-baseline
* Add visual baseline images
57 baseline screenshots (19 pages × 3 viewports)
Desktop: 1920×1080
Tablet: 768×1024
Mobile: 375×667
* Fix filename pattern: remove trailing underscore
- create-baseline.js: fix regex to strip trailing slashes first
- capture.js: same fix
- Renamed all baseline files: about_.png → about.png
This ensures filenames match what compare.js expects
* Fix visual-clean: ignore permission errors
Docker container creates files as root, user cannot delete them.
Use @- prefix to ignore errors and continue cleanup.
* Fix Dockerfile: use node user to prevent permission issues
- Keep root for installation steps (apt-get, npm ci, chmod)
- Switch to USER node at the end, before ENTRYPOINT
- Runtime scripts execute as node (UID 1000)
- Prevents root-owned files in mounted volumes
- Matches host UID 1000 (sandbox)
* Fix Docker permissions: pass host UID to container
- Add --user $(id -u):$(id -g) to docker run commands
- Remove USER node from Dockerfile (conflicts with mounted volumes)
- Files created in screenshots/ now owned by host user
- Fixes visual-clean permission errors
- Applied to both validate-graphics and visual-baseline targets
* Add visual baseline
* Fix homepage screenshot timing
- Add waitForSelector for .evento-card on homepage
- Add 1s additional wait for images to load
- Prevents screenshot before 3 events section loads
- Applied to both capture.js and create-baseline.js
* Add visual baseline
* Add global visual regression marker
- Added data-visual-regression-marker to default layout
- Scripts wait for marker instead of page-specific selectors
- Works for ALL pages automatically
- Prevents timing issues with lazy-loaded content
- Simplified capture.js and create-baseline.js
Marker: <div data-visual-regression-marker="ready" />
Placed at end of default.html (before </body>)
* Update CHANGELOG with visual regression fixes
* Fix visual regression marker timeout
- Increased timeout to 10s for marker detection
- Removed warning message (silent fallback to networkidle)
- Networkidle is sufficient for most pages
- Marker provides extra safety for lazy-loaded content
* Fix Docker interrupt handling with --init flag
- Added --init to docker run commands
- Properly forwards SIGINT (CTRL+C) to container
- Makes visual-baseline and validate-graphics interruptible
- Prevents zombie processes when terminating
* Fix homepage screenshots, speed, and interrupt handling
Homepage lazy loading:
- Wait for all images to load (not lazy anymore)
- Force eager loading on homepage
- 500ms wait after image load
Performance:
- Reduced marker timeout from 10s to 2s
- Only homepage has special image handling
Interrupt handling:
- Added SIGINT/SIGTERM handlers in both scripts
- Properly close browsers on interrupt
- Track multiple browsers in capture.js
- Exit codes 130 (SIGINT) and 143 (SIGTERM)
Now CTRL+C works immediately and cleanup is proper
* refactor: remove reveal/fade animations from all cards
- Remove 'reveal' class from all 6 event/article cards in index.html
- Remove .reveal CSS rules (opacity: 0, transform, transitions)
- Simplify capture-homepage.js (no animation waits needed)
- Update all baseline screenshots (desktop, mobile, tablet)
Cards now immediately visible without fade-in animations.
Fixes visual regression issues where cards were hidden by CSS.