docs: handoff — session 2 progress (#12/#2/#3 code-complete, deploy held)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
archipelago 2026-06-20 08:52:07 -04:00
parent a8c668ee0a
commit 2761f0d70f

View File

@ -39,8 +39,33 @@ claude-login.html, chown 1000:1000, restart, verify sha256+health). Recreate fro
`2679725907` = federation_peer_contact_id(.120 pubkey 535fb91f…), name "Archy-X250-EXP".
It's a **duplicate-contact SURFACING** problem (user confirmed doubles).
## TODO (resume here)
### #12 Fix duplicate mesh contacts ← user chose this NEXT
## SESSION 2 PROGRESS (2026-06-20, code-complete — NOT yet deployed; user held deploy)
All committed to local `main`; NOT pushed to gitea-vps2/origin yet, NOT sideloaded.
- **#12 dup contacts DONE** (`f92e442b`, +3 unit tests pass). Backend `group_peer_twins()`
helper (mesh/mod.rs) dedups by `arch_pubkey_hex`, radio twin = canonical send id, unions
messages; wired into conversations.list/messages + mesh.contacts-list. **KEY FINDING:**
conversations.list/messages have NO frontend consumer — the live chat list renders the
*frontend* merge `mergedPeers` (Mesh.vue), which matched twins by the `Archy-z6Mk…` advert
prefix that the device RENAME broke. Real fix = merge by `arch_pubkey_hex` (now exposed on the
MeshPeer TS type). Should also clear `.120→.89` and likely **#5** (Arch Mobile on .116, same bug).
- **Companion crash diagnostic SHIPPED** (`b3633ec5`): main.ts global handler now shows the REAL
error + keeps a 25-entry `window.__archyErrors` ring buffer + catches async/unhandledrejection.
Still need to deploy + repro on the optiplex node (read `window.__archyErrors` via chrome://inspect)
to get the actual throw. User says LAN/mobile-browser fine → Tailscale-WebView-specific.
- **#3 dual-ecash pay-for-file DONE** (`8f06d88f`, compiles): payer tries Cashu→Fedimint, seller
accepts both (verify_and_receive_payment: non-"cashu" = reissue_into_any), new
fedimint_client::spend_from_any(), wallet.ecash-balance reports total_sats. LIVE federation
validation pending (two nodes sharing a federation).
- **#2 mobile scroll cutoff DONE** (`a8c668ee`): DashboardMobileNav wrote `--mobile-tab-bar-height:0px`
when the bar was hidden/unlaid-out, defeating the `,88px` fallback → bar covered last row. Now never
writes 0 (removes var → fallback), re-measures on rAF + post-WebView-injection. Backup hypothesis if
it persists: `.dashboard-view` is `min-h-screen`(100vh) → mobile-browser toolbar overlap, switch to dvh.
NEXT when deploying: build release binary (opt-level 3, ~13min) + frontend, sideload to .116 first
(verify #12 dedup + #5), then .198/.228/.89 (.89 was stale 7c17a96). Confirm "optiplex" node id.
## TODO (original resume — #12 now DONE above)
### #12 Fix duplicate mesh contacts ← DONE this session (see SESSION 2 PROGRESS)
Root cause: `handle_mesh_contacts_list` (api/rpc/mesh/typed_messages.rs:1126) and
`handle_conversations_list` (api/rpc/mesh/status.rs:89) emit **one row per `state.peers` entry** with
**no cross-transport dedup**. A node can have TWO peers: a radio peer (low contact_id, firmware key)