Skip to content

v6.1

Latest

Choose a tag to compare

@skylord123 skylord123 released this 30 Aug 18:41
0eaa467

Summary

Adds native support for the newer PebbleOS watches, so Pebble Time 2 and Pebble 2 Duo draw at their real resolution instead of relying on the PebbleOS upscaler. Also fixes a group of settings and persistence bugs that could quietly reset your configuration or crash the watchface on open, along with day/night mode and weather refresh fixes.


Features

  • Support for Pebble Time 2, Pebble 2 Duo and Pebble Round 2
    ForeCal only shipped layouts for the 144x168 watches and the 180x180 round, so Pebble Time 2 owners had to switch on the PebbleOS upscaler and live with a soft, stretched face. There are now real layouts for emery (200x228), flint (144x168) and gabbro (260x260). The rectangular and round designs are scaled to each display, and the weather icons, battery and bluetooth indicators are redrawn at 1.5x rather than being stretched. Emery and gabbro also get a larger clock, sized to their display, because the stock Pebble clock font stops at 49px and looked lost on a taller screen. The existing watches are untouched and render exactly as before.

Fixes

  • Settings getting wiped and reset to defaults
    If the phone killed the JS process partway through a save, the stored config was left half written. On the next launch it failed to parse and every setting silently went back to defaults. Settings are now written alongside a backup copy, and an unparseable config falls back to that backup instead of starting over. Neither copy is deleted, so the raw bytes stay recoverable.

  • Watchface crashing when opened
    Corrupted persisted data could take the watchface down on launch, which is what showed up on the 2 Duo. Persisted strings and the weather icon index are now checked when they are read back, so bad data is ignored instead of crashing the face. A few undersized buffers were fixed at the same time.

  • Day/night mode getting stuck
    Daymode was only reconciled when a sunrise or sunset transition fired, so a missed transition left the face in the wrong mode until the next one came around. It is now checked against local time on every tick.

  • Weather going stale after quiet time
    The update delay applied during quiet time could leave the forecast hours out of date once quiet time ended. That delay is gone, so weather refreshes as normal as soon as quiet time is over.

  • Location search failing
    Nominatim rejects requests that do not identify the application, so looking up a location by name had stopped working. The geocoding request now sends the identification Nominatim asks for.

Internal

  • Layout moved into layout.h
    Every layer was created with its rectangular and round frames spelled out inline, which made the layout hard to follow and meant a new display size would have touched dozens of call sites. Frames, calendar geometry and font keys now live in src/c/layout.h, one block per display. The existing numbers were copied across unchanged, so this part makes no visual difference on its own.

  • CI bundles every platform
    The debug ELF step listed four platforms by hand and would have quietly skipped the new ones. It now loops over the full platform list.

  • README lists the supported watches
    A table mapping each platform name to the watches it covers and its display size.

What's Changed

Full Changelog: v6.0.0...v6.1