summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md13
1 files changed, 11 insertions, 2 deletions
diff --git a/README.md b/README.md
index bdfe0ea..e13b71e 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,12 @@
+<!--
+ Author: cirakg & claude ai
+ Summary: Project overview, design and build plan for the OTP Wallet Connect IQ app.
+-->
# OTP Wallet for Connect IQ
A Garmin Connect IQ watch app that shows one-time passwords (TOTP, HOTP, and optional Steam Guard codes) and stores barcodes and QR codes (loyalty cards, tickets) to show at a scanner. Everything lives encrypted on the watch. There is no cloud, no backend and no analytics, and the app requests no permissions, so it cannot use the network.
-> **Status: Phase 1 (plan), waiting for your approval.** Nothing is built yet. This README is the design and the build plan. The Phase 0 research, with sources, is in [docs/FEASIBILITY.md](docs/FEASIBILITY.md).
+> **Status: M0 (scaffolding) done.** The plan below was approved on 2026-10-18. The Docker toolchain, the build, test, screenshot, performance and packaging pipeline, and a placeholder app are in place and pass `make ci`. Next: M1, the settings spike (needs your phone and watch), alongside M2, crypto and OTP. The Phase 0 research, with sources, is in [docs/FEASIBILITY.md](docs/FEASIBILITY.md); the daily workflow is in [docs/DEVELOPER_GUIDE.md](docs/DEVELOPER_GUIDE.md).
"OTP Wallet" is a working title.
@@ -719,6 +723,8 @@ The Garmin SDK and device files are never baked into an image (Garmin's licence)
| `make test` | Unit tests in the headless simulator on the 3 test devices | no |
| `make sim` | Run the app in the simulator; view it at http://127.0.0.1:6080/vnc.html | localhost only |
| `make screenshots` | UI screenshot tests and barcode decoding from screenshots | no |
+| `make screenshots-approve` | Save the current screens as the approved images, after you've reviewed them | no |
+| `make icons` | Regenerate the per-size launcher icons after the product list changes | no |
| `make perf` | Performance measurements against the budgets | no |
| `make memtest` | Peak memory on Forerunner 255S, app and glance | no |
| `make lint` | Strict type check (`-l 3`) with warnings as errors, project lint rules, settings XML schema check, Python lint for the tools | no |
@@ -1019,13 +1025,16 @@ The simulator runs on your PC's CPU, so its timings don't represent a watch. In
│ ├── Dockerfile garmin-otp/dev
│ ├── docs.Dockerfile garmin-otp/docs
│ └── scripts/ SDK setup, headless simulator, test runner, VNC
+├── icons.jungle generated: each product's launcher-icon folder
├── source/
│ ├── app/ crypto/ otp/ codes/ storage/ import/ settings/ ui/ util/
├── test/ Monkey C (:test) modules, mirroring source/
-│ └── data/ generated vectors and fake fixtures
+│ ├── data/ generated vectors and fake fixtures
+│ └── golden/ approved simulator screenshots
├── resources/
│ ├── settings/ properties.xml, settings.xml
│ ├── strings/ drawables/ fonts/
+├── resources-icons/ generated: launcher icon at each size the products need
├── tools/ Python: vector generation, reference encoders, decoding, screenshots, reports, lint
├── docs/
└── .cache/ build/ git-ignored: SDK, device files, keys, outputs