- Replace emoji weather icons with OWM icon images to fix rendering
issues on Linux displays (e.g. ⛅ showing as a rectangle)
- Fix forecast daily max/min to use true high/low across all 3-hour
slots instead of just the first entry of the day
- Update README: correct BACKGROUND interval (60 min), update kiosk
setup for labwc/Wayland, add restart-calendar.sh instructions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BACKGROUND interval was set to 60000ms (1 minute) instead of
3600000ms (60 minutes) as intended.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove personal information and improve setup documentation:
**Code Generalization:**
- Updated .env.example with placeholder values
- Removed personal API keys and calendar IDs
- Removed all personal background images (15 images deleted)
- Added backgrounds directory README with usage instructions
- Updated .gitignore to exclude background images
**Documentation Improvements:**
- Added comprehensive Weather API setup instructions
- How to get OpenWeatherMap API key
- How to find location coordinates using LatLong.net
- Added detailed Google Calendar setup instructions
- Public iCal feed method (easiest, no auth required)
- Alternative Google Calendar API method
- Added background image specifications
- Supported formats, recommended resolution
- Where to add images and how to change rotation interval
- Added configuration section explaining all settings
- Environment variables documentation
- JavaScript intervals configuration
- How to change image rotation time in both .env and app.js
- Added dynamic text color feature to feature list
**Setup Instructions Now Include:**
- Step-by-step Weather API key acquisition
- Google Calendar public iCal URL setup
- Background image guidelines and rotation configuration
- All configuration options clearly documented
Users can now easily set up their own calendar display without any personal information in the codebase.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Automatically adjusts text color for optimal readability:
- Bright backgrounds: Text switches to dark color (#1a1a1a)
- Dark backgrounds: Text remains white (#ffffff)
- Uses luminance formula (0.299×R + 0.587×G + 0.114×B) for accurate brightness detection
- Analyzes images using canvas to sample 100x100 pixels
- Smooth color transitions (0.5s) between background changes
- Adjusts text shadows for better contrast in each mode
- Event time color adapts (#0066cc for light, #4a9eff for dark)
Technical implementation:
- Added calculateImageBrightness() function in app.js
- Modified updateBackground() to analyze and apply appropriate CSS class
- Added .light-bg and .dark-bg CSS classes for text color themes
- Brightness threshold set at 140 (out of 255)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Increased time display from 3rem to 4.5rem with font-weight 600
- Increased date from 1.1rem to 1.6rem with font-weight 500
- Increased current temperature from 2rem to 3rem with font-weight 600
- Increased weather labels from 0.85rem to 1.2rem with font-weight 600
- Increased weather icons from 1.8rem to 2.5rem
- Increased forecast icons from 1.5rem to 2.2rem
- Increased forecast temps from 0.9rem to 1.3rem with high temps at font-weight 700
- Increased section headers from 1.3rem to 2rem with font-weight 700
- Increased day names from 1rem to 1.5rem with font-weight 700
- Increased day dates from 0.85rem to 1.2rem with font-weight 600
- Increased event times from 0.75rem to 1.1rem with font-weight 700
- Increased event titles from 0.9rem to 1.3rem with font-weight 600
- Increased event locations from 0.85rem to 1.1rem with font-weight 500
- Increased joke text from 0.9rem to 1.3rem with font-weight 500
- Added new background images
- Removed old background images
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add -webkit-backdrop-filter for Safari/Chromium (e.g. Raspberry Pi)
- Use rgba(0,0,0,0.15) so header, section and footer show background through
Co-authored-by: Cursor <cursoragent@cursor.com>
- Added timezone support (Pacific/Auckland) for calendar events
- Implemented recurring event handling using recurring_ical_events library
- Created horizontal 5-day column layout for calendar display
- Fixed multi-day event rendering to show events across all active days
- Updated calendar to show next 5 days (today + 4)
- Reduced font sizes and padding for compact display
- Changed image rotation interval to 60 seconds
- Added pytz and recurring_ical_events dependencies
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Major improvements to the calendar display application:
- Redesigned weather display: moved forecast to header alongside time
- Added 3-day forecast with icons and high/low temps in header
- Simplified main layout: removed separate weather section, calendar now full-width
- Made layout more compact to fit on one screen without scrolling
- Added 2 new background images for rotation
- Updated image rotation interval to 1 minute
- Improved responsive design and spacing
The display now shows:
- Header: Time/date on left, current weather + 3-day forecast on right
- Main: Full-width calendar events section
- Footer: Dad joke
All elements now fit on a single screen with a clean, readable layout.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Built a full-featured smart display app with Flask backend and responsive frontend.
Features:
- Real-time clock display
- Weather integration (OpenWeatherMap API) for Hamilton, NZ
- Google Calendar integration (placeholder, needs credentials)
- Rotating background images from local directory
- Dad jokes display (icanhazdadjoke API)
Technical stack:
- Backend: Python Flask with API endpoints
- Frontend: HTML/CSS/JavaScript with auto-updating data
- Caching system to avoid API rate limits
- Responsive design for various screen sizes
Deployment ready for Raspberry Pi with systemd service and Chromium kiosk mode setup instructions.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>