Files
clockwork-hero/nine-hazes-face/package.json
Mystica Venatus 917fdfa2f5 feat(face): idle-task sync, weather, health widgets, battery estimator v2
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.
2026-09-13 22:51:42 -04:00

27 lines
788 B
JSON

{
"name": "nine-hazes-face",
"author": "Artimidorus",
"version": "1.0.1",
"license": "Apache-2.0",
"keywords": ["pebble-app"],
"private": true,
"dependencies": {},
"pebble": {
"displayName": "nine-hazes-face",
"uuid": "cc8b7604-d956-4c6c-a0be-f33bec671181",
"sdkVersion": "3",
"enableMultiJS": true,
"targetPlatforms": ["emery"],
"watchapp": {
"watchface": true
},
"messageKeys": ["taskName", "syncTime", "clockOff", "boundSec", "used",
"taskCount", "curType", "curRem", "status", "abortCode",
"pendItems", "pendXp", "dictV", "serverDown", "requestSync",
"weatherTemp", "weatherHi", "weatherLo", "weatherTs", "weatherCond"],
"resources": {
"media": []
}
}
}