AppMessage transport (face ↔ pkjs ↔ mock Task API) validated end-to-end: - GameSnapshot full-field inbox handler (13 protocol keys) - serverDown signaling; oxblood "!" indicator on task strip, gated by strip visibility (ASCII placeholder; PDC later) - requestSync watch→phone wake on launch (deferred 300ms send) - inbox_dropped/outbox_failed diagnostics; 256-byte inbox - pkjs: timeout-guarded single-callback XHR; dictionary cache with version compare; last-good weather resend (fail-dead-silent) Widgets: - W_HEART: 1-min avg BPM, state-colored H marker (green=reading, oxblood=no signal), HealthServiceTimeScope API per SDK 4.33 - S/D placeholders for steps/distance; WB battery with PDC-pending icon - Weather: NWS primary / Open-Meteo fallback, CONUS geo auto-switch, cond/temp/hi-lo packet, ASCII condition glyph. Wire unit °F; metric toggle deferred to settings (render-time conversion, DESIGN §5) - Battery estimator: hours-based regression, 5% power-save floor, ~Nd / ~Nh under 24h display; DEV_BATT_TEST sample injection Layout: LAYOUT_VERSION 3 (W_HEART appended; version-gated regeneration). Known: emoji in FROZEN strip replaced with plain dash; battery modes (BAT_PERCENT/DAYS/BOTH) parsed but renderer honors BAT_BOTH only. Refs: PROTOCOL.md v3.0 §9 build order items 2-4; DESIGN.md Laws 5/6.
nine-hazes-face
A Pebble watchapp/watchface written in C using the Pebble SDK.
Building & running
pebble build # build for all targetPlatforms
pebble install --emulator emery # install on the emery emulator
pebble install --phone <ip> # install to a paired phone
Target platforms
targetPlatforms in package.json controls which watches you build for. The
modern Pebble hardware is emery (Pebble Time 2), gabbro (Pebble Round
2), and flint (Pebble 2 Duo); the original Pebble platforms (aplite,
basalt, chalk, diorite) are included by default for backwards compatibility.
Project layout
src/c/ C source for the watchapp
src/pkjs/ PebbleKit JS (phone-side) source, if any
worker_src/c/ Background worker source, if any
resources/ Images, fonts, and other bundled resources
package.json Project metadata (UUID, platforms, resources, message keys)
wscript Build rules — usually no need to edit
By default this project is configured as a watchapp. To make it a watchface,
set pebble.watchapp.watchface to true in package.json.
Documentation
Full SDK docs, tutorials, and API reference: https://developer.repebble.com