Security (33 pentest findings addressed): - CRITICAL: backend binds 127.0.0.1, path traversal in tor.rs/dwn fixed - HIGH: federation requires signatures, XSS login redirect, RBAC viewer restricted - HIGH: tar slip prevention, S3 SSRF validation, backup ID validation - MEDIUM: remember-me random secret, TOTP session rotation, password re-auth - LOW: CSP unsafe-inline removed, CORS dev-only, onion/webhook validation Container reliability: - Memory limits on all 37 containers (OOM prevention) - Exited vs stopped state distinction with health-aware status badges - Crash recovery coordination (no more restart cascade) - User-stopped tracking survives reboots - Tiered boot recovery (databases → core → services → apps) UI: - Wallet TransactionsModal, health-aware app status badges - Restart button on containers, exited/crashed red state - Mesh view overhaul, glass button updates, BaseModal/ToggleSwitch - Apps sticky header removed, dev faucet, mutable mock wallet Infrastructure: - LND REST port 8080 exposed over Tor (LND Connect fix) - Nginx cookie_session fix, deploy script Tor config updated - Dev environment: podman auto-start, boot mode simulation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4.5 KiB
4.5 KiB
name, description, type
| name | description | type |
|---|---|---|
| Repo Cleanup & Dev Environment Overhaul (2026-03-18) | Major session — repo cleanup to archy-archive, demo seeding, dev-start.sh rewrite, ThunderHub/Fedimint/ecash, Podman install, wallet mock endpoints | project |
What Was Done
1. Repo Cleanup
- Moved ~200 files (docs, scripts, loops, legacy Docker UIs, duplicate videos) to
~/Projects/archy-archive/(outside repo) - Kept: all active docs (BETA-PROGRESS, MASTER_PLAN, architecture, ADRs, api-reference, developer-guide, troubleshooting, operations-runbook), all source code, active scripts
- Three "user's call" docs kept:
multi-node-architecture.md,marketplace-protocol.md,app-developer-guide.md
2. docker-compose.yml Switched from Regtest to Signet
- All Bitcoin/LND/Fedimint containers now use signet (not regtest)
- Ports updated: RPC 38332, P2P 38333
- Removed archived
bitcoin-uiandlnd-uinginx services (referenced deleteddocker/dir) - Added ThunderHub service (port 3010) to main compose
3. New Testnet Compose (docker-compose.testnet.yml)
- Standalone signet stack: bitcoind + LND + ThunderHub + Fedimint
- Config at
testnet/thunderhub-config.yaml - README at
testnet/README.mdwith faucet links and commands
4. Mock Backend Enhancements (neode-ui/mock-backend.js)
- Container socket auto-detection: tries
DOCKER_HOST→ Podman TMPDIR socket → Docker socket → null (simulation). No more/var/run/docker.sockspam - 8 static dev apps (was 6): added ThunderHub (port 3010) and Fedimint (port 8175)
- 25+ new RPC endpoints: lnd.getinfo, lnd.newaddress, lnd.createinvoice, lnd.payinvoice, lnd.sendcoins, lnd.listchannels, lnd.openchannel, lnd.closechannel, wallet.ecash-balance, wallet.ecash-send, wallet.ecash-receive, wallet.ecash-history, wallet.networking-profits, bitcoin.getinfo, system.stats, update.status, network.list-requests, dev.faucet, etc.
- Fedimint version synced to 0.10.0, port fixed from 8174 → 8175
- 5 realistic notifications (was empty array)
- Mock ThunderHub UI at
/app/thunderhub/— full HTML dashboard
5. Dev Scripts Fixed
neode-ui/start-dev.sh: removed brokenstart-docker-apps.shcall, fixed EAGAIN via safewhile readloopneode-ui/stop-dev.sh: removed brokenstop-docker-apps.shcallneode-ui/package.json: removed staleprebuild, added--rawto concurrently (fixes EAGAIN pgrep spawn)scripts/dev-start.sh: complete rewrite with 8 options including boot mode and testnet stack
6. ThunderHub Added Everywhere
- Icon:
neode-ui/public/assets/img/app-icons/thunderhub.svg - Mock backend: portMappings, marketplaceMetadata, staticDevApps, marketplace.get()
- Marketplace.vue: getCuratedAppList(), recommended tier
- appLauncher.ts: PORT_TO_APP_ID
'3010': 'thunderhub'
7. Podman Installed on Mac
podman 5.8.1+podman-compose 1.5.0via Homebrew- Machine initialized and running
8. Home Wallet Card
- Fixed
lnd.getinforesponse to includebalance_satsandchannel_balance_sats - Fixed
lnd.gettransactionsto useamount_satsand includeincoming_pending_count - Added Faucet button (green) — calls
dev.faucetRPC - Grid changed from 3-col to 4-col (Send, Receive, Faucet, Web5)
9. Developer Onboarding Docs
neode-ui/README.md: full rewriteneode-ui/DEV-SCRIPTS.md: updated with actual 8 static apps
Current State / Resume Here
npm startworks — no Docker needed, all wallet actions mocked, 8 apps visible- Send/Receive modals open from Home wallet card — if still issues, check browser console
- Faucet button calls dev.faucet and refreshes balances
- Not yet tested:
podman-compose -f docker-compose.testnet.yml up(signet sync ~10 min) - Not yet committed — all changes are local, uncommitted
- Demo prod server not redeployed — push changes then redeploy via Portainer
Key Files Modified This Session
neode-ui/mock-backend.js(major — container socket, 25+ RPC endpoints, ThunderHub mock UI)neode-ui/src/views/Home.vue(faucet button, 4-col grid)neode-ui/src/views/Marketplace.vue(ThunderHub entry)neode-ui/src/stores/appLauncher.ts(ThunderHub port)neode-ui/start-dev.sh,neode-ui/stop-dev.sh,neode-ui/package.jsonscripts/dev-start.sh(complete rewrite)docker-compose.yml(regtest→signet, ThunderHub, removed archived UIs)docker-compose.testnet.yml(new)testnet/thunderhub-config.yaml,testnet/README.md(new)neode-ui/public/assets/img/app-icons/thunderhub.svg(new)neode-ui/README.md,neode-ui/DEV-SCRIPTS.md(rewrites)