diff --git a/CLAUDE.md b/CLAUDE.md index f2a0c306..7fd6a5d0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -243,12 +243,47 @@ type: description ## App Integration Checklist -When adding or fixing apps: +When adding or fixing apps, **every file below must be checked**. Missing any one causes failures on fresh installs. -1. Test the app UI loads on its configured port -2. Auto-connect dependencies (Bitcoin RPC, LND, etc.) — apps must work out of the box -3. Ensure `get_app_config()` in `core/archipelago/src/api/rpc.rs` has correct env vars -4. Most apps launch in iframe; BTCPay (23000) and Home Assistant (8123) open in new tab (X-Frame-Options) +### Backend (Rust) + +- [ ] `core/archipelago/src/api/rpc/package.rs` — `get_app_config()`: ports, volumes, env vars, custom args +- [ ] `core/archipelago/src/api/rpc/package.rs` — `needs_archy_net`: add if app needs container DNS +- [ ] `core/archipelago/src/api/rpc/package.rs` — `get_app_capabilities()`: add required caps (CHOWN, etc.) +- [ ] `core/archipelago/src/api/rpc/package.rs` — dependency checks (e.g., electrs requires bitcoin) +- [ ] `core/archipelago/src/container/docker_packages.rs` — `get_app_metadata()`: title, description, icon, repo +- [ ] `core/archipelago/src/container/docker_packages.rs` — UI address mapping (e.g., `http://localhost:50002`) + +### Frontend (Vue) + +- [ ] `neode-ui/src/views/Marketplace.vue` — `getCuratedAppList()`: marketplace entry with dockerImage +- [ ] `neode-ui/src/stores/appLauncher.ts` — port-to-proxy mapping (if app has custom UI port) +- [ ] `neode-ui/src/views/AppDetails.vue` — route ID mapping (if app ID differs from container name) + +### Nginx + +- [ ] `image-recipe/configs/nginx-archipelago.conf` — `/app/{id}/` proxy in HTTP block +- [ ] `image-recipe/configs/snippets/archipelago-https-app-proxies.conf` — `/app/{id}/` proxy in HTTPS block +- [ ] Any custom status endpoints (e.g., `/electrs-status`) proxied before the SPA catch-all + +### Deploy & First Boot + +- [ ] `scripts/deploy-to-target.sh` — container creation/update logic +- [ ] `scripts/first-boot-containers.sh` — container created on fresh ISO install +- [ ] Custom UI containers (e.g., electrs-ui): built and started in both deploy and first-boot + +### ISO Build + +- [ ] `image-recipe/build-auto-installer-iso.sh` — `CAPTURE_PATTERNS`: image captured from live server +- [ ] `image-recipe/build-auto-installer-iso.sh` — `CONTAINER_IMAGES`: fallback image pulled from registry +- [ ] `image-recipe/build-auto-installer-iso.sh` — docker UI source files bundled for build fallback +- [ ] `image-recipe/build-auto-installer-iso.sh` — installer copies files to target disk + +### Runtime Verification + +- [ ] Test the app UI loads on its configured port +- [ ] Auto-connect dependencies (Bitcoin RPC, LND, etc.) — apps must work out of the box +- [ ] Most apps launch in iframe; BTCPay (23000) and Home Assistant (8123) open in new tab (X-Frame-Options) ## ISO Build