Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .beads/issues.jsonl
Original file line number Diff line number Diff line change
@@ -1,2 +1,15 @@
{"id":"specter-playground-1yx","title":"Document MockUI screens with screenshots and descriptions","description":"","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-14T12:02:58.387577+01:00","updated_at":"2025-12-14T12:24:22.119037+01:00","closed_at":"2025-12-14T12:24:22.119037+01:00"}
{"id":"specter-playground-1yx.1","title":"Explore all MockUI screens via sim_cli","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-14T12:03:05.256524+01:00","updated_at":"2025-12-14T12:20:28.012108+01:00","closed_at":"2025-12-14T12:20:28.012108+01:00","dependencies":[{"issue_id":"specter-playground-1yx.1","depends_on_id":"specter-playground-1yx","type":"parent-child","created_at":"2025-12-14T12:03:05.25702+01:00","created_by":"daemon"}]}
{"id":"specter-playground-1yx.2","title":"Create /docs/MockUI folder structure with screenshots","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-14T12:03:05.501275+01:00","updated_at":"2025-12-14T12:21:46.0082+01:00","closed_at":"2025-12-14T12:21:46.0082+01:00","dependencies":[{"issue_id":"specter-playground-1yx.2","depends_on_id":"specter-playground-1yx","type":"parent-child","created_at":"2025-12-14T12:03:05.501716+01:00","created_by":"daemon"}]}
{"id":"specter-playground-1yx.3","title":"Write DESCRIPTION.md for each screen","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-14T12:03:05.747075+01:00","updated_at":"2025-12-14T12:21:46.008991+01:00","closed_at":"2025-12-14T12:21:46.008991+01:00","dependencies":[{"issue_id":"specter-playground-1yx.3","depends_on_id":"specter-playground-1yx","type":"parent-child","created_at":"2025-12-14T12:03:05.747522+01:00","created_by":"daemon"}]}
{"id":"specter-playground-1yx.4","title":"Note sim_cli improvements while exploring","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-14T12:03:05.993741+01:00","updated_at":"2025-12-14T12:24:21.907305+01:00","closed_at":"2025-12-14T12:24:21.907305+01:00","dependencies":[{"issue_id":"specter-playground-1yx.4","depends_on_id":"specter-playground-1yx","type":"parent-child","created_at":"2025-12-14T12:03:05.99417+01:00","created_by":"daemon"}]}
{"id":"specter-playground-3ew","title":"sim_cli: add 'reset' command to return to main menu","description":"","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-14T12:12:00.38653+01:00","updated_at":"2025-12-14T12:17:52.855975+01:00","closed_at":"2025-12-14T12:17:52.855975+01:00"}
{"id":"specter-playground-3sg","title":"Screenshot: update mcp_server.py handler","description":"Once control_server screenshot works, update mcp-servers/lvgl-sim/mcp_server.py to decode base64, convert XRGB8888 to PNG via Pillow. Current code at line 261 has partial impl.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-13T22:10:52.483166+01:00","updated_at":"2025-12-13T22:10:52.483166+01:00","dependencies":[{"issue_id":"specter-playground-3sg","depends_on_id":"specter-playground-oh2","type":"blocks","created_at":"2025-12-13T22:11:12.033212+01:00","created_by":"daemon"}]}
{"id":"specter-playground-42c","title":"MCP server for LVGL simulator control","description":"","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-13T21:32:37.272016+01:00","updated_at":"2025-12-13T21:42:07.288831+01:00","closed_at":"2025-12-13T21:42:07.288831+01:00"}
{"id":"specter-playground-9ys","title":"Screenshot: commit and test","description":"After screenshot works: 1) Test with sim_cli.py screenshot 2) Verify PNG output 3) Commit changes 4) Update docs/lvgl-sim-mcp.md","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-13T22:10:52.749809+01:00","updated_at":"2025-12-13T22:10:52.749809+01:00","dependencies":[{"issue_id":"specter-playground-9ys","depends_on_id":"specter-playground-3sg","type":"blocks","created_at":"2025-12-13T22:11:12.130759+01:00","created_by":"daemon"}]}
{"id":"specter-playground-a47","title":"sim_cli: add 'back' command for navigation","description":"","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-14T12:11:59.873153+01:00","updated_at":"2025-12-14T12:17:52.654102+01:00","closed_at":"2025-12-14T12:17:52.654102+01:00"}
{"id":"specter-playground-cmo","title":"Setup pytest for MockUI state classes","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T19:35:16.990552+01:00","updated_at":"2025-12-13T19:43:42.55607+01:00","closed_at":"2025-12-13T19:43:42.55607+01:00"}
{"id":"specter-playground-d47","title":"sim_cli: add 'capture' command (mkdir+labels+screenshot+tree)","description":"","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-14T12:11:59.625116+01:00","updated_at":"2025-12-14T12:11:59.625116+01:00"}
{"id":"specter-playground-e4q","title":"sim_cli: add 'explore' command for recursive screen capture","description":"","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-14T12:12:00.124814+01:00","updated_at":"2025-12-14T12:12:00.124814+01:00"}
{"id":"specter-playground-luv","title":"Bug: set is_locked via control server doesn't refresh UI to locked screen","description":"","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-14T12:24:12.771892+01:00","updated_at":"2025-12-14T12:37:32.728824+01:00","closed_at":"2025-12-14T12:37:32.728824+01:00"}
{"id":"specter-playground-oh2","title":"Screenshot: fix LVGL snapshot_take_to_buf","description":"LVGL snapshot APIs return None/fail. Tried: snapshot_take, snapshot_create_draw_buf, draw_buf_create - all fail despite 1.8MB free mem. LV_MEM_SIZE=64KB but using LV_STDLIB_MICROPYTHON. Current attempt: snapshot_take_to_buf with Python-allocated bytearray. Files: scenarios/sim_control/control_server.py:191","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-13T22:10:52.211282+01:00","updated_at":"2025-12-13T22:44:37.61643+01:00","closed_at":"2025-12-13T22:44:37.61643+01:00"}
33 changes: 33 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,39 @@
|-----------|-------------|
| `scenarios/` | **New MockUI** - clickable prototype, no real functionality yet |
| `specter-diy-src/` | **Old specter-diy** (symlink) - working code, ugly UI, reference implementation |
| `f469-disco/` | MicroPython + LVGL build system, C modules |
| `mcp-servers/lvgl-sim/` | MCP server + CLI for simulator control |

## Simulator Control

### Quick Start
```bash
# Start simulator with control server
bin/micropython_unix scenarios/mock_ui.py --control

# Test with CLI (in another terminal)
cd mcp-servers/lvgl-sim
.venv/bin/python sim_cli.py ping
.venv/bin/python sim_cli.py screenshot /tmp/screenshot.png
```

### sim_cli.py Commands
- `ping` - test connection
- `state` - show SpecterState + UIState
- `labels` - list visible button labels
- `click "Button Text"` - click a button
- `set attr value` - modify state (e.g. `set seed_loaded true`)
- `screenshot /path/to/file.png` - capture PNG screenshot
- `tree` - dump full widget tree JSON

### Protocol (TCP:9876)
```bash
echo '{"action":"ping"}' | nc 127.0.0.1 9876
echo '{"action":"screenshot"}' | nc 127.0.0.1 9876
echo '{"action":"click","text":"Manage Device"}' | nc 127.0.0.1 9876
```

See `docs/lvgl-sim-mcp.md` for full documentation.

## RAG Code Search

Expand Down
15 changes: 15 additions & 0 deletions docs/MockUI/add_wallet/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Add Wallet

## Purpose
Create a new wallet or import an existing seed phrase.

## User Actions
- **Generate New Seedphrase** - Create new BIP39 mnemonic
- **Import from SmartCard** - Read seed from inserted SmartCard
- **Import from QR Code** - Scan seed as QR
- **Import from internal Flash** - Load previously stored seed
- **Import via Keyboard** - Manual entry of seed words

## Navigation
- Parent: main
- Children: generate_seedphrase, manage_seedphrase (import flows)
8 changes: 8 additions & 0 deletions docs/MockUI/add_wallet/labels.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
eng
Add Wallet
Generate New Seedphrase
Import Seedphrase from
SmartCard
QR Code
internal Flash
Keyboard
Binary file added docs/MockUI/add_wallet/screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading