Fixed the math for people east of UTC that was causing a 1 hour and 1 day shift.
Fixed bug where every event on that day for every year was displayed.
⨠New Features & UI Enhancements
Manual Force-Sync: Users can now long-press the Select (middle) button on any event to bypass the cache timer and instantly fetch fresh data from Google.
"Toast" Notifications: Added a sleek, non-intrusive status bar at the bottom of the screen to provide real-time feedback (e.g., "Syncing data...", "Network Error", "Bad URL?").
Smart Error Handling: The app no longer hangs on "Loading..." if a URL is incorrect or the network drops. It gracefully displays the exact point of failure directly on the watch face.
Visual Polish: Restored the native Pebble Cyan highlighting for selected rows and ensured the Detail View properly wraps and displays full event titles without cutting them off.
š Critical Bug Fixes
The "Ghost Event" Fix: Eliminated the race condition where the watch would briefly display "Wed Dec 31" (Epoch 0) during a sync. The UI now remains perfectly stable until the new data is 100% ready.
The 256-Byte Persistence Wall: Solved a hardware limitation where only the first 4 events were saved when the app closed. Implemented "Data Sharding" to seamlessly split the calendar across multiple memory blocks, ensuring all events survive a reboot.
Double-Free Crash Resolved: Restructured the C memory management and .unload handlers so the app no longer faults or crashes when backing out of menus or closing the app mid-sync.
Ongoing Events Restored: Fixed a server-side logic flaw where meetings currently in progress were dropped from the list. The app now accurately tracks events by their end time rather than their start time.
āļø Under the Hood (Performance & Battery)
Battery-Saving Cache: The JavaScript bridge now acts as a strict gatekeeper, only waking up the phone's Bluetooth radio to poll Google if the local data is older than 30 minutes (unless manually overridden).
Double-Buffered Memory: The watch now downloads incoming Bluetooth chunks into a hidden background buffer. The main screen continues to display the old data flawlessly until the final byte of the new sync arrives, allowing for "seamless" swapping.
"Help Signal" Boot Sequence: If the watch's internal memory is completely empty on launch, it instantly pings the phone with an emergency request to bypass all timers and fetch data immediately.
Industrial-Strength iCal Parser: Completely rewrote the Google Apps Script backend to handle massive calendar files (up to 1MB+). It now features:
RRULE Fast-Forwarding: Safely processes recurring events (like weekly meetings) even if their original start date was 5 years ago.
Line-Unfolding: Properly merges long, wrapped descriptions that normally break naive parsers.
European DST Support: Dynamically calculates Daylight Saving Time offsets for complex timezones (like Europe/Paris) to ensure the watch displays the exact local time.
Added notification that data is being synced.
Fixed issue where current events were being dropped because current time was after start time.
Fixes an issue where only the first 4 events were saved and all future were dumped causing a refresh and delay upon entering the app. It should remember up to 20 events and only update every 30min.
No release notes available