fix: add 6 missing apps to first-boot and fix penpot icon path

Added searxng, onlyoffice, filebrowser, nginx-proxy-manager, portainer,
and tailscale to first-boot-containers.sh so fresh ISO installs have all
marketplace apps ready. Fixed penpot icon path in Marketplace.vue to use
the correct app-icons directory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-09 00:18:28 +00:00
co-authored by Claude Opus 4.6
parent e8a0e1af19
commit c45de13752
34 changed files with 428 additions and 107 deletions
+65 -38
View File
@@ -1,64 +1,91 @@
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.
You are running a 2-year production roadmap for Archipelago (Archy) — taking it from developer preview to a flawless, mass-market Bitcoin Node OS (v1.0).
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@)
Server: 192.168.1.228 (ssh -i ~/.ssh/archipelago-deploy archipelago@192.168.1.228)
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/
Nginx: /etc/nginx/sites-available/archipelago (source: image-recipe/configs/nginx-archipelago.conf)
Systemd: /etc/systemd/system/archipelago.service (source: image-recipe/configs/archipelago.service)
Deploy: scripts/deploy-to-target.sh, scripts/first-boot-containers.sh
ISO: image-recipe/build-auto-installer-iso.sh
```
## Key Paths
- Onboarding views: `neode-ui/src/views/Onboarding*.vue`
- Views: `neode-ui/src/views/*.vue`
- Components: `neode-ui/src/components/*.vue`
- Stores: `neode-ui/src/stores/*.ts`
- API clients: `neode-ui/src/api/*.ts`
- Global styles: `neode-ui/src/style.css`
- 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`
- Types: `neode-ui/src/types/*.ts`
- Backend entry: `core/archipelago/src/main.rs`
- RPC handlers: `core/archipelago/src/api/rpc/*.rs`
- Container mgmt: `core/container/src/*.rs`
- Security: `core/security/src/*.rs`
- Identity: `core/archipelago/src/identity/` (to be created)
- Network: `core/archipelago/src/network/` (to be created)
- Wallet: `core/archipelago/src/wallet/` (to be created)
- Nginx config: `image-recipe/configs/nginx-archipelago.conf`
- Systemd service: `image-recipe/configs/archipelago.service`
- Web5 docs: `docs/WEB5_NOSTR_IDENTITY.md`
- Three-mode UI spec: `docs/three-mode-ui-design.md`
- Port assignments: `apps/PORTS.md`
## 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
3. Read ALL relevant source files before making changes
4. Make the change following CLAUDE.md conventions strictly:
- Global CSS classes in style.css, NEVER inline Tailwind in components
- `<script setup lang="ts">` only, no Options API
- No `any` types — use proper TypeScript types
- No `unwrap()`/`expect()` in Rust production code — use `?` operator
- Use `tracing` for Rust logging — never `println!`
5. For frontend changes:
- Run `cd neode-ui && npm run type-check` — fix ALL errors
- Run `cd neode-ui && npm run build` — must succeed
- Deploy: `./scripts/deploy-to-target.sh --live`
- Verify at http://192.168.1.228
6. For backend changes:
- Do NOT build Rust on macOS — the deploy script handles it
- Deploy: `./scripts/deploy-to-target.sh --live`
- Verify the service is running on the server
7. For nginx/systemd/infra changes:
- Deploy the config file to the server (commands in the task description)
- Validate config before applying (nginx -t)
- Verify the service works after applying
8. For new feature development:
- Create new files in the appropriate module directories
- Follow existing patterns in the codebase
- Wire new RPC endpoints through the existing RPC system
- Add new views to the router
- Add new stores as needed
9. Mark it done `- [x]` in `loop/plan.md`
10. Commit: `type: description`
11. Move to the next unchecked task immediately
## Rules
## Critical 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
- **Do NOT break existing functionality** — if your change breaks something, fix it before moving on
- **Read files before editing** — understand before changing
- **Never skip type-check or build** — if it fails, fix before moving on
- **Always deploy after completing a task** — changes must be live
- **Use SSH key, not password**: `ssh -i ~/.ssh/archipelago-deploy archipelago@192.168.1.228`
- For sudo: pipe the password `echo "EwPDR8q45l0Upx@" | sudo -S <command>`
- **Follow the design system** — glass cards, glass buttons, existing color tokens, no gradient buttons
- **Replace dummy data with real backends** — no more hardcoded values in Web5.vue
- **New Rust modules** go in `core/archipelago/src/` with proper error types
- **New Vue views** go in `neode-ui/src/views/` with `<script setup lang="ts">`
- 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
- Commit after each completed task