- TOTP 2FA: full setup/confirm/disable/login flow with Argon2id + ChaCha20-Poly1305 encrypted secret storage, QR code generation, and bcrypt-hashed backup codes - API key switcher: OAuth vs personal API key toggle in AIUI chat settings with status indicator, key validation, and help text - Login progress bar: server startup detection with health check polling, form disabled until server is ready - AI quarantine docs: comprehensive HTML page documenting all 6 security layers - Settings: AI Data Access permission toggles with per-category control - Alpha hardening plan: 28-task overnight automation plan across 7 phases (onboarding, login, app install, AIUI, UI polish, security, ISO build) - Backlog: node discovery spatial map feature for alpha demo Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
65 lines
3.4 KiB
Markdown
65 lines
3.4 KiB
Markdown
You are hardening Archipelago (Archy) for its first alpha release. People will flash this ISO to USB, install on their hardware, and use the web UI to manage their node. Everything must work flawlessly.
|
|
|
|
Read these files first:
|
|
|
|
1. `loop/plan.md` — Your task checklist (mark items `- [x]` as you complete them)
|
|
2. `CLAUDE.md` — Archy project conventions, architecture, coding standards
|
|
|
|
## What You're Doing
|
|
|
|
**No new features. No design changes.** You are:
|
|
- Hardening the first-time onboarding flow so it works perfectly
|
|
- Ensuring app installation is bulletproof
|
|
- Making the AIUI chat work reliably
|
|
- Fixing any UI bugs or rough edges
|
|
- Building the alpha ISO when everything passes
|
|
|
|
## Architecture Quick Reference
|
|
|
|
```
|
|
Server: 192.168.1.228 (ssh: archipelago@192.168.1.228, pass: EwPDR8q45l0Upx@)
|
|
Frontend: neode-ui/ → builds to web/dist/neode-ui/ → deployed to /opt/archipelago/web-ui/
|
|
Backend: core/archipelago/ → Rust binary → deployed to /usr/local/bin/archipelago
|
|
AIUI: /Users/dorian/Projects/AIUI/packages/app/ → builds to dist/ → deployed to /opt/archipelago/web-ui/aiui/
|
|
Claude Proxy: port 3141 → systemd service claude-proxy
|
|
Nginx: port 80 → proxies /rpc/, /ws/, /health, /aiui/
|
|
```
|
|
|
|
## Key Paths
|
|
|
|
- Onboarding views: `neode-ui/src/views/Onboarding*.vue`
|
|
- Router: `neode-ui/src/router/index.ts`
|
|
- App store: `neode-ui/src/stores/app.ts`
|
|
- RPC client: `neode-ui/src/api/rpc-client.ts`
|
|
- Container client: `neode-ui/src/api/container-client.ts`
|
|
- App manifests: `apps/*/manifest.yml`
|
|
- Context broker: `neode-ui/src/services/contextBroker.ts`
|
|
- AIUI composable: `/Users/dorian/Projects/AIUI/packages/app/src/composables/useAI.ts`
|
|
- Claude proxy: `/Users/dorian/Projects/AIUI/packages/app/server/claude-proxy.ts`
|
|
|
|
## For each task in loop/plan.md:
|
|
|
|
1. Find the first unchecked `- [ ]` item
|
|
2. Read the task description carefully — it tells you exactly what to do
|
|
3. Read the relevant source files before making changes
|
|
4. Make the change following CLAUDE.md conventions
|
|
5. Run `cd neode-ui && npm run type-check` — fix all errors
|
|
6. Run `cd neode-ui && npm run build` — must succeed
|
|
7. Deploy: `./scripts/deploy-to-target.sh --live`
|
|
8. If AIUI files were changed: build AIUI (`cd /Users/dorian/Projects/AIUI/packages/app && node node_modules/vite/bin/vite.js build`) and deploy to server (`tar czf /tmp/aiui.tar.gz -C dist . && sshpass -p 'EwPDR8q45l0Upx@' ssh archipelago@192.168.1.228 'mkdir -p /tmp/aiui-deploy' && sshpass -p 'EwPDR8q45l0Upx@' scp /tmp/aiui.tar.gz archipelago@192.168.1.228:/tmp/aiui-deploy/ && sshpass -p 'EwPDR8q45l0Upx@' ssh archipelago@192.168.1.228 'cd /tmp/aiui-deploy && tar xzf aiui.tar.gz && echo "EwPDR8q45l0Upx@" | sudo -S rsync -a --delete /tmp/aiui-deploy/ /opt/archipelago/web-ui/aiui/'`)
|
|
9. Verify the fix works on http://192.168.1.228
|
|
10. Mark it done `- [x]` in `loop/plan.md`
|
|
11. Commit: `type: description`
|
|
12. Move to next task immediately
|
|
|
|
## Rules
|
|
|
|
- Read files before editing — understand before changing
|
|
- Never skip build/typecheck — if it fails, fix before moving on
|
|
- Always deploy after completing a task — changes must be live
|
|
- If a task is proving difficult after 15+ genuine attempts, add `(BLOCKED: reason)` to the task and move on
|
|
- Test on the actual server, not just locally
|
|
- Do not stop until all tasks are checked or you hit rate limits
|
|
- AIUI files are outside the project — use Bash with python3 for edits if the Edit tool is blocked by hooks
|
|
- For ISO build: SSH to 192.168.1.228 and run the build script there
|