1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<!--
Author: cirakg & claude ai
Summary: Text and images for the Connect IQ Store listing, ready to paste into the Garmin developer page.
-->
# Connect IQ Store listing
Copy each block into the matching field of the app page on the Garmin developer site. The text inside each block is plain text: the Store shows line breaks but no Markdown. The character counts were measured when the text was written: title 32, description 2385, What's New 755.
## Title (max. 50 characters)
```text
OTP Wallet: 2FA Codes & Barcodes
```
## Description (max. 4000 characters)
```text
Your two-factor codes and your loyalty cards on your wrist, with no phone and no network.
OTP Wallet shows one-time passwords (TOTP, HOTP and Steam Guard) and stores barcodes and QR codes to show at a scanner. Everything is encrypted on the watch. There is no cloud, no account and no analytics, and the app requests no permissions, so it cannot use the network.
ONE-TIME CODES
- TOTP (SHA-1, SHA-256, SHA-512; 6 to 8 digits; any period), HOTP and Steam Guard.
- A ring shows the seconds left; the next code is shown before the current one expires.
- Optional glance with your favourite code.
- Codes use the watch's clock. Keep the watch synced with your phone for the right time.
BARCODES AND QR CODES
- QR, Aztec, Data Matrix, PDF417, Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, ITF and Codabar, all drawn on the watch.
- Black on white with full brightness on AMOLED watches (backlight on MIP watches) for easy scanning.
- The watch tells you if a code is too large for its screen.
SECURITY
- Secrets and codes are stored encrypted on the watch.
- Optional 4-digit app PIN: entries marked "Require PIN" are encrypted with a key only the PIN opens.
- Auto-lock, a growing wait after wrong PINs, and an option to erase the locked entries after 10 wrong PINs.
- A 4-digit PIN stops someone using your watch, not someone who copies its storage to a computer.
- Secrets only flow into the watch. The app never exports them.
ADDING ENTRIES
Open the app settings in Garmin Connect on your phone:
- Paste otpauth:// links (from most authenticator apps' export or "show secret" screens).
- Or paste an unencrypted Aegis export (JSON).
- Or fill in the "Add OTP" and "Add code" forms by hand.
The watch parses the text itself and shows an import report. Changes to entries marked "Require PIN" wait on the watch until you confirm them with your PIN.
GOOD TO KNOW
- App settings work with the Store version only.
- Garmin Connect refuses text that contains a backslash. If an Aegis export is refused, replace every \/ with / in a text editor, or use otpauth:// links.
- Encrypted Aegis exports and Google Authenticator export links are not supported.
- Keep a backup of your secrets in your phone authenticator. The watch is not a backup.
Needs a watch with Connect IQ API 5.0 or newer and enough app memory (72 models, including Forerunner, fenix, epix, Venu and Instinct models).
```
## What's New (max. 4000 characters)
```text
1.0.0: first public release.
Tested on a Forerunner 70: one-time codes, the PIN, touch scrolling, otpauth:// import and Aegis JSON import.
Since the beta (0.9.0):
- On touch screens, START no longer submits an old-style PIN by accident.
- "Change PIN" after an old-style PIN asks for the new PIN once, not twice.
- Entering the PIN with many waiting phone changes no longer stops the app; the changes are applied in small steps.
- Large waiting changes no longer stop the app at start.
- A replacement secret or code is checked as soon as it arrives.
- "Confirm all" and "Reject all" act only on the changes shown.
- A full storage reports "Storage full" instead of stopping the app.
- Pasting about 100 otpauth:// links at once no longer stops the app.
```
## Images
Built by `python3 tools/store_assets.py` from the Forerunner 70 goldens (`test/golden/fr70/`) into [docs/store/](store/). Re-run it after the goldens change.
| Store field | File | Size limit |
| --- | --- | --- |
| Hero image (1440 × 720) | [hero-1440x720.png](store/hero-1440x720.png) | 2048 KB |
| Cover image (500 × 500) | [cover-500.png](store/cover-500.png) | 300 KB |
| Screen images (390 × 390, round, transparent corners) | [screen-1-list.png](store/screen-1-list.png), [screen-2-otp.png](store/screen-2-otp.png), [screen-3-qr.png](store/screen-3-qr.png), [screen-4-glance.png](store/screen-4-glance.png), [screen-5-pin.png](store/screen-5-pin.png), [screen-6-pdf417.png](store/screen-6-pdf417.png), [screen-7-import.png](store/screen-7-import.png) | 150 KB each |
All images show fake data only.
|