upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/docs/REBASE-SQUASH-MERGE-PLAN.md
diff options
context:
space:
mode:
authorYour Name <you@example.com>2026-05-19 13:21:25 +0530
committerYour Name <you@example.com>2026-05-19 13:31:08 +0530
commiteeba74a4a1c011e85e33dea4252b381e35a64ea4 (patch)
tree14862e7d300511e28e214c743fd2f699bc54c5b8 /docs/REBASE-SQUASH-MERGE-PLAN.md
parentb0d9d494f00ee77f9efc22d1ef2ea3c94b23ddbd (diff)
feat: multi-mint wallet with health tracking, WPA auto-detect, display gating
Squash merge of feature/multi-mint-support (21 commits): Multi-mint wallet: - Accept payments from 4 mints: minibits, coinos, 21mint, lnvoltz - Periodic health probing (300s interval, 3 recovery threshold) - Multi-wallet init with nucula_wallet_init_multi() - /mints and /wallet API endpoints WPA auto-detect: - wifi_auth_mode config field (default WPA2, supports WPA3) - Runtime mapping to wifi_auth_mode_t in STA config Display gating: - display_enabled config field (default true) - Guards display_init/display_update per-board Bug fixes: - 3s delay before service start prevents lwip mem_free assertion - Real npub in discovery (identity_get()->npub_hex) - Health probe interval 300s (production value) - Duplicate services_start_task call removed - UTF-8 arrow replaced with ASCII in log message Tests: 61+14 unit tests passing, firmware builds clean
Diffstat (limited to 'docs/REBASE-SQUASH-MERGE-PLAN.md')
-rw-r--r--docs/REBASE-SQUASH-MERGE-PLAN.md92
1 files changed, 92 insertions, 0 deletions
diff --git a/docs/REBASE-SQUASH-MERGE-PLAN.md b/docs/REBASE-SQUASH-MERGE-PLAN.md
new file mode 100644
index 0000000..f4bd98f
--- /dev/null
+++ b/docs/REBASE-SQUASH-MERGE-PLAN.md
@@ -0,0 +1,92 @@
1# Multi-Mint Support — Rebase, Backup, Squash & Merge Plan
2
3## Goal
4Rebase `feature/multi-mint-support` onto `master`, create a backup branch, squash all 20 commits into one clean commit, then merge to master.
5
6## Current State
7- **Branch**: `feature/multi-mint-support` in worktree `/home/c03rad0r/esp32-tollgate-multi-mint`
8- **Commits on branch**: 20 (since `master` at `77031f0`)
9- **Remote**: `origin` → Nostr relay `relay.ngit.dev` (currently down)
10- **Worktree**: shared repo — other sessions use other worktrees on different branches
11
12## Procedure
13
14### Phase 1: Pre-flight
151. Verify working tree is clean (no uncommitted changes)
162. Verify build passes
173. Verify unit tests pass (75/75)
18
19### Phase 2: Backup
204. Create backup branch `backup/multi-mint-support-pre-rebase` at current HEAD
215. Create backup branch `backup/multi-mint-support-pre-squash` (same point, used after rebase)
22
23### Phase 3: Rebase
246. `git rebase master` — rebase all 20 commits onto master
257. Resolve any conflicts
268. Verify build + tests still pass after rebase
27
28### Phase 4: Post-rebase Backup
299. Create `backup/multi-mint-support-rebased` at the rebased HEAD
3010. This preserves every individual commit even after squashing
31
32### Phase 5: Squash
3311. `git reset --soft master` — soft reset to master, keeping all changes staged
3412. `git commit -m "feat: multi-mint Cashu wallet with health tracking, WPA auto-detect, CVM"` — single clean commit
3513. Verify build + tests pass after squash
36
37### Phase 6: Merge
3814. Merge to master (fast-forward since squashed branch sits on top)
3915. Verify master builds and tests pass
40
41## Checklist
42
43### Pre-flight
44- [ ] Working tree clean
45- [ ] Build passes (`idf.py build`)
46- [ ] Unit tests pass (`make test-unit`)
47
48### Backup
49- [ ] `backup/multi-mint-support-pre-rebase` created at current HEAD (`3aa372c`)
50
51### Rebase
52- [ ] `git rebase master` completed
53- [ ] Conflicts resolved (if any)
54- [ ] Build passes after rebase
55- [ ] Unit tests pass after rebase
56
57### Post-rebase Backup
58- [ ] `backup/multi-mint-support-rebased` created at rebased HEAD
59
60### Squash
61- [ ] `git reset --soft master` done
62- [ ] Single commit created with clean message
63- [ ] Build passes after squash
64- [ ] Unit tests pass after squash
65
66### Merge
67- [ ] Merged to master (fast-forward)
68- [ ] Master builds and tests pass
69- [ ] Worktree updated
70
71## Remaining Work After Merge
721. **Push to Nostr relay** — blocked until `relay.ngit.dev` recovers
732. **NVS keyset storage** — `ESP_ERR_NVS_NOT_ENOUGH_SPACE` errors; factory partition at `0x10000` limits NVS to 24KB. Options:
74 - Store keysets in SPIFFS instead of NVS
75 - Compress keyset data
76 - Only cache active keysets
773. **Board A crash** — hardware-specific (~50s uptime), not software. Possible causes:
78 - Bad power supply on QinHeng UART adapter (serial `5A84017819`)
79 - Failing flash chip on that ESP32-S3 board
80 - Swap physical boards between UART adapters to isolate
814. **Integration test WiFi stability** — `test-multi-mint-*` targets fail on early steps because WiFi disconnects during 30s probe wait. Fix: `_connect-b-if-needed` should run before each curl call
825. **Display AXS15231B `ESP_ERR_NO_MEM`** — SPI flush fails every ~1s (307KB PSRAM framebuffer). The `display_enabled` config field allows disabling, but proper fix needs:
83 - Reduce framebuffer (partial refresh instead of full-screen)
84 - Or use SPI DMA with larger chunk sizes
856. **Health probe recovery threshold** — 3 consecutive successes × 300s interval = 15min before a mint is marked reachable. Consider reducing `MINT_HEALTH_RECOVERY_THRESHOLD` to 1 for initial probes
867. **Makefile WPA auto-detect** — `detect-wpa-security` + `generate-spiffs` + `flash-spiffs-{a,b,c}` targets added to `physical-router-test-automation/esp32/Makefile`. Needs separate commit/merge there
87
88## Backup Branch Names
89| Branch | Purpose | Created At |
90|--------|---------|------------|
91| `backup/multi-mint-support-pre-rebase` | Full history before rebase | Before `git rebase master` |
92| `backup/multi-mint-support-rebased` | All 20 commits after rebase | After `git rebase master` |