fix: BUG-33 CPU threshold, TASK-27 tab icons, TASK-36 iframe errors
- BUG-33: CPU load alert threshold increased from 2x to 4x core count (8→16 on 4-core machine) to reduce false alerts during container ops - TASK-27: Launch buttons for new-tab apps now show external link icon (BTCPay, Grafana, PhotoPrism, Portainer, OnlyOffice, etc.) - TASK-36: Iframe error screen now distinguishes between X-Frame-Options blocked vs container not reachable, with appropriate messaging Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,91 +0,0 @@
|
||||
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
|
||||
|
||||
## Architecture Quick Reference
|
||||
|
||||
```
|
||||
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
|
||||
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
|
||||
|
||||
- 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`
|
||||
- Context broker: `neode-ui/src/services/contextBroker.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 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
|
||||
|
||||
## Critical Rules
|
||||
|
||||
- **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
|
||||
- Do not stop until all tasks are checked or you hit rate limits
|
||||
- Commit after each completed task
|
||||
Reference in New Issue
Block a user