WeatherFlow: Adaptive Background Watchface
· vv0.0.113
About
WeatherFlow is a clean, data-driven watchface for the Garmin Forerunner 255, designed to harmonize your environment with your watch display.
Key Feature: Dynamic Weather Background
The background of this watchface automatically adapts to your current local weather conditions using the Toybox.Weather module. This provides an intuitive visual cue of the outdoors at a glance:
Clear/Sunny: A bright, high-contrast layout optimized for direct sunlight.
Rainy: A specialized "Rain" theme with stylized precipiation elements.
Cloudy: A muted, overcast-inspired background for better visual comfort.
Snowy: A winter-themed display with high-visibility accents.
Functional Data Display
The layout prioritizes legibility and essential daily metrics:
Time & Date: Large, clear digital time with full date information.
Health Metrics: Real-time Heart Rate (BPM) monitoring.
Activity Tracking: Daily Step count and Battery percentage.
Status Icons: Bluetooth connection and Notification alerts.
Optimized for MIP Displays
Specifically engineered for Memory-In-Pixel (MIP) screens, the design uses a zero-gradient color palette to ensure maximum crispness and prevent the "washed-out" look often found in complex designs.
Battery Efficient
Built with performance in mind, the onUpdate logic is optimized to minimize CPU cycles, ensuring that your background transitions do not compromise your Forerunner 255's battery life.
What's new
# Changelog
All notable changes from `v0.0.23` through `v0.0.101`, full changelog available at: https://github.com/WangYihang/garmin-watch-face-weather-flow/blob/main/CHANGELOG.md
## v0.0.101 — 2026-05-21
### Features
- feat(trial): bouncing motion + per-char rainbow gradient label
- feat(trial): replace pill bg with 2-px white outline halo
- feat(metrics): add 'Clock Only' layout preset (no metrics)
- feat(metrics): implement Humidity/Wind/Sunrise/Sunset metrics
- feat(metrics): default new installs to 'Clock Only' layout preset
### Fixes
- fix(view): always full-draw in calm weather — disable PR #39 dirty-skip
- fix(boot): guard _registerSettingsObservers behind foreground sentinel
- fix(trial): guard against System.getTimer() Int32 overflow
- fix(boot): move _registerSettingsObservers to getInitialView (background-safe)
- fix(makefile): improve platform-specific configurations and simulator launch command
- fix(trial): drop trial-banner animation rate FAST → MEDIUM (OOM)
- fix(makefile): update simulator launch command for macOS and Linux
- fix(compat): support CIQ 3.x devices (9-arg limit, missing Activity fields)
- fix(metrics): use ASCII '/' instead of ↑↓ in HighLowTempMetric
### Other
- chore: update version to 0.0.100 in manifest and uv.lock
- chore(build): strip (:test) bytecode from production builds
- perf(layout): drop precomputed Y.width cache (~5 KB heap on fr255)
- perf(metrics-row): make PRESET_TOP/BOTTOM static const
- Bump version: 0.0.100 → 0.0.101
- Merge pull request #84 from WangYihang/claude/hotfix-disable-dirty-skip-blackscreen
- Merge pull request #85 from WangYihang/claude/fix-background-context-settings
- Merge pull request #86 from WangYihang/claude/fix-trialindicator-negative-timer-oob
- Merge pull request #87 from WangYihang/claude/fix-bg-settings-move-to-getinitialview
- Merge pull request #88 from WangYihang/claude/fix-trial-anim-medium-tier
- Merge pull request #89 from WangYihang/claude/memory-squeeze-phase-a
- Merge pull request #90 from WangYihang/claude/trial-bouncing-animation
- Merge pull request #91 from WangYihang/claude/fix-highlowtemp-ascii
- Merge pull request #92 from WangYihang/claude/trial-bouncing-animation
- Merge pull request #93 from WangYihang/claude/add-clock-only-preset
- Merge pull request #94 from WangYihang/claude/add-weather-metrics
- Merge pull request #95 from WangYihang/claude/set-clockonly-as-default