diff options
| author | cirakg <cirakg@cirakg.xyz> | 2026-10-18 21:10:37 +0200 |
|---|---|---|
| committer | cirakg <cirakg@cirakg.xyz> | 2026-10-18 21:10:37 +0200 |
| commit | b70cde45b67e1f6bb65d598d25c1a5184bdab520 (patch) | |
| tree | 2460f861600912b4ab18eb7f672ab559729dd5cf /README.md | |
| parent | 773df56883b9961b607a1994920f5ef5299423b8 (diff) | |
docs: add developer, testing and performance guides; record M0 resultsv0.1.0
- DEVELOPER_GUIDE: workflow, how the tooling works (verified simulator
behaviour), conventions and how to add devices.
- TESTING and PERFORMANCE: test layers, M0 results and measured numbers.
- FEASIBILITY: what M0 verified (watchdog 120k/240k, 10 MB storage in
device profiles, unreliable monkeydo exit code, icon sizes).
- README status, new make targets and layout; CHANGELOG 0.1.0.
- Author/Summary headers on every document, including the original brief.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -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 |
