1# pebblexus
2
3Pebble app for Plexus quotas.
4
5## Commands
6
7```sh
8mise run build # build the PBW
9mise run check # same as build; no emulator, tests, lint, or formatter
10mise run install # install on the Emery emulator
11mise run screenshot # writes screenshot_emery.png
12mise run logs # stream Emery emulator logs
13```
14
15Use `mise run emu:up`, `emu:select`, `emu:down`, and `emu:back` for button input.
16
17## Landmines
18
19- `mise.toml` and `package.json` both target `emery`; keep target/platform changes in sync.
20- Adding or renaming AppMessage keys requires updating `package.json` `pebble.messageKeys`, the C `MESSAGE_KEY_*` usage, and PebbleKit JS payload keys together.
21- The Plexus admin key belongs in phone-side PebbleKit JS storage only; never send it to the watch.
22- `mise run build` leaves `build/` and `.lock-waf_*_build`; they are ignored build artifacts.
23- PebbleKit JS here is written in ES5 style for Pebble compatibility: use `var` and functions, not modern syntax.
24- The watch row layout heights in `src/c/main.c` (`card_update_proc`: 42/28/50px rows, 3px separators) and the phone-side page packing in `src/pkjs/index.js` (`estimateRowHeightPx`, `PAGE_HEIGHT_BUDGET_*`) mirror each other; change them together.