Commit Graph

21 Commits

Author SHA1 Message Date
57cd9809e0 Landscape kiosk overhaul: 3-column layout, resilient updates, visual polish
- Add 3-column balanced site distribution using greedy weight algorithm
- Build new DOM off-screen in DocumentFragment, swap atomically (no flash)
- Skip empty API responses and preserve display on transient errors
- Remove news ticker from UI and grid layout
- Add blue-to-red gradient on site header bars
- Bump font sizes: destinations 1.4em, countdowns 1.5em, line numbers 1.6em
- Add breathing pulse animation on daylight bar sun/moon icons
- Fix daylight bar indicator snapping to position on first render
- Make config button visible in landscape with semi-transparent background
- Add weather forecast strip as grid row 4 with compact styling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:07:10 +01:00
5f60ed88c8 chore: remove unused legacy departure card styles and dead code
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 20:04:09 +01:00
4a6012b097 feat: Swedish weather bar with wind speed display
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 20:01:39 +01:00
f0b04a7a0d fix: use 2-column grid for normal mode on large screens
Change from 4-column to 2-column grid in the @media (min-width: 1200px)
block for body.normal, giving each departure card ~580px width on 1080p
monitors. Also add font-size increases for destination text (1.1em),
countdown numbers (1.4em), and next departures (0.9em) to improve
readability at the wider card size.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 20:00:26 +01:00
84ce6efb2d fix: reduce clock and site header visual weight for better information hierarchy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:59:26 +01:00
92166cea6e feat: improve departure information hierarchy with clearer time display
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:57:53 +01:00
98441bc906 feat: full-width departure rows for landscape kiosk mode
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:55:33 +01:00
3c9ae03cb6 fix: replace noisy striped direction arrows with clean circular indicators
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:53:56 +01:00
1b1460fd45 feat: translate all user-facing text to Swedish for consistency
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:51:49 +01:00
2b7fc6b016 refactor: consolidate hardcoded colors into CSS custom properties
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:49:39 +01:00
1e776c1c9a feat: unify typography with tabular-nums for stable number alignment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:45:52 +01:00
f2e5f23b18 Merge pull request 'UI overhaul: kiosk-optimized landscape mode' (#23) from ui-overhaul into main 2026-02-15 10:15:16 -08:00
60e41c2cc4 Kiosk UI/UX overhaul: dark landscape mode with hero countdowns and full-width layout
Redesign the landscape orientation for kiosk readability at 3-10m distance:

- Add dark kiosk background (#1a1a2e) with high-contrast light text
- Replace 2-column grid with 5-row full-width stacking layout
- Add compact weather bar (temp + sunrise/sunset) replacing full widget
- Enlarge countdown to 2em hero size in landscape
- Replace time ranges with next 2-3 absolute departure times
- Add 3-tier urgency colors: Nu (green), 1-2min (red), 3-5min (orange)
- Make site headers full-width blue gradient bars in landscape
- Tighten card spacing (65px min-height, 8px gap) for 4-stop visibility
- Add scrolling news ticker with /api/ticker fallback messages
- Fix daylight bar from position:fixed to relative in landscape grid
- Hide background overlay in landscape for maximum contrast
- Fix weather-section HTML missing closing div tags

All changes scoped behind body.landscape CSS selectors; other orientations unaffected.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:12:08 +01:00
6565661740 Fix map selector to load nearby stops from SL API
Replace hardcoded single-stop search with /api/sites/nearby endpoint
that loads all transit stops within radius of map center. Stops load
dynamically as user pans/zooms the map. Also unified marker layer
management and consistent CSS class for select buttons.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 15:17:33 +01:00
cdfd32dc69 Items 16-22: Icon classification, accessibility, responsive design, API params
- Consolidate 5 weather icon methods into classifyWeatherIcon/applyWeatherIconClasses
- Add focus-visible styles, ARIA attributes, keyboard nav on config button/modal
- Add responsive breakpoints for departure cards, weather widget, config modal
- Simplify CSS selectors: replace :not(:is(...)) chains with body.normal
- Fix upsidedown layout margin assumption with transform-based centering
- Upgrade weather icons from @2x to @4x for high-DPI displays
- Add forecast window and transport filter params to SL departures API

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:39:45 +01:00
1fdb3e48c7 Items 10-15: ES modules, inline style cleanup, template modal, code modernization
- Item 10: Convert to ES modules with import/export, single module entry point
- Item 11: Replace inline styles with CSS classes (background overlay, card
  animations, highlight effect, config modal form elements)
- Item 12: Move ConfigManager modal HTML from JS template literal to
  <template> element in index.html
- Item 13: Replace deprecated url.parse() with new URL() in server.js
  and update route handlers to use searchParams
- Item 14: Replace JSON.parse/stringify deep clone with structuredClone()
- Item 15: Remove dead JSON-fixing regex code from departures.js route

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:30:03 +01:00
392a50b535 Refactor: Complete codebase reorganization and modernization
- Split server.js routes into modular files (server/routes/)
  - departures.js: Departure data endpoints
  - sites.js: Site search and nearby sites
  - config.js: Configuration endpoints

- Reorganized file structure following Node.js best practices:
  - Moved sites-config.json to config/sites.json
  - Moved API_RESPONSE_DOCUMENTATION.md to docs/
  - Moved raspberry-pi-setup.sh to scripts/
  - Archived legacy files to archive/ directory

- Updated all code references to new file locations
- Added archive/ to .gitignore to exclude legacy files from repo
- Updated README.md with new structure and organization
- All functionality tested and working correctly

Version: 1.2.0
2026-01-01 10:52:21 +01:00
d15142f1c6 Add sun/moon emojis to sunrise/sunset and fix direction sorting (direction 1 always on top) 2025-12-31 18:50:33 +01:00
8ff9b43247 Enhance README with comprehensive documentation and screenshot placeholders 2025-12-31 16:30:53 +01:00
738a422dc9 Optimize landscape layout: 4-column grid, transport icons, improved sizing and spacing 2025-12-31 16:27:55 +01:00
a0c997f7d4 Initial commit: Digital signage system for transit departures, weather, and news ticker 2025-12-31 13:53:19 +01:00