From fdc035dda7badff90ce197fef3fa5f550cbbd3b9 Mon Sep 17 00:00:00 2001 From: archipelago Date: Thu, 23 Apr 2026 09:32:41 -0400 Subject: [PATCH] docs: release-note image-versions fix, add marketplace QA tracker, update RESUME - AccountInfoSection.vue: append 5th bullet to v1.7.43-alpha entry explaining that update-available badges and version comparisons work again now that the pinned-image catalog is found at the correct deployed path. - docs/MARKETPLACE-QA.md: new tracker for the upcoming app-by-app install walk on .228. Documents the per-app fix workflow, the four layers we might need to fix at (app recipe, registry image, backend orchestrator, frontend), status-key table for tracking each catalog entry, and the release-notes policy for the walk. - docs/RESUME.md: refresh with a9908597 commit, updated binary md5 on .228, and split Immediate Next Step into Phase 1 (browser verification) and Phase 2 (marketplace walk) with a pointer to the new tracker. --- docs/MARKETPLACE-QA.md | 58 +++++++++++++++++++ docs/RESUME.md | 26 ++++++--- .../src/views/settings/AccountInfoSection.vue | 1 + 3 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 docs/MARKETPLACE-QA.md diff --git a/docs/MARKETPLACE-QA.md b/docs/MARKETPLACE-QA.md new file mode 100644 index 00000000..44adbc78 --- /dev/null +++ b/docs/MARKETPLACE-QA.md @@ -0,0 +1,58 @@ +# Marketplace QA — app-by-app install walk + +Purpose: track install/launch/uninstall health for every app in the marketplace catalog on `.228`. User installs each app one by one; for each broken one we triage, fix at the right layer (app recipe / registry image / backend / frontend), commit, redeploy, and re-verify. + +Target build: `v1.7.43-alpha` + backend md5 `9b8ead06aaf210b85cd78fce270384e3` (image-versions path fix included). + +## Status key + +- ✅ install, launch, uninstall all clean +- ⚠️ installs and runs but has cosmetic or partial issues (note in details) +- ❌ broken — fix needed +- ⏳ pending verification + +## Catalog + +Pull the authoritative list from Marketplace page on `.228` during the walk. Fill in as you go. + +| App | Status | Notes / fix applied | +|---|---|---| +| _(to be filled during walk)_ | ⏳ | | + +## Known issues going in + +- **Vaultwarden** — container exits immediately on start. Pre-existing. Backend async wrapper correctly detects + removes the install state entry. Needs container-config investigation (image pin / env vars / volume layout). + +## Fix layers cheat-sheet + +When an app breaks, identify which layer to fix at: + +1. **App recipe** — `apps//package.yaml` or wherever the Podman manifest lives. Ports, volumes, env vars, healthcheck, resource caps. +2. **Registry image** — if image itself is missing/wrong-tag on `.168`:3000/lfg2025 or `git.tx1138.com`. Push corrected image, bump `scripts/image-versions.sh`. +3. **Backend orchestrator** — `core/archipelago/src/container/` or `core/archipelago/src/api/rpc/package/` if the install flow mishandles this app's shape. +4. **Frontend** — `neode-ui/src/views/marketplace/` or curated data in `neode-ui/src/views/marketplace/marketplaceData.ts` if catalog entry is wrong or UI can't render this app correctly. + +## Per-app fix workflow + +For each broken app: + +1. Capture failure mode: + ``` + ssh archy228 'sudo journalctl -u archipelago --since "5 minutes ago" --no-pager | tail -80' + ssh archy228 'podman ps -a --format "{{.Names}}\t{{.Status}}\t{{.Image}}" | grep ' + ssh archy228 'podman logs 2>&1 | tail -60' + ``` +2. Diagnose — which layer. +3. Fix in repo (use SSHFS mount for edits). +4. `cargo check` if backend changed; `npm run build` if frontend changed. +5. Commit with `fix(app/): ...` or `fix(registry/): ...` etc. +6. Redeploy as needed (binary via Mac ferry; frontend via rsync; registry via podman push). +7. User re-verifies on `.228`. Mark ✅. + +## Release-notes policy + +For each app fix, append a bullet to the current in-flight release entry in `neode-ui/src/views/settings/AccountInfoSection.vue`. If the fix pile gets large enough to warrant its own release, bump to v1.7.44-alpha and start a new block at the top. Keep entries operator-focused ("Nostr Relay no longer crashes on first start"), not implementation-focused. + +## Running log + +_Add dated notes here as we progress through the catalog._ diff --git a/docs/RESUME.md b/docs/RESUME.md index 4123199e..b3a7431f 100644 --- a/docs/RESUME.md +++ b/docs/RESUME.md @@ -8,9 +8,11 @@ Read this first if you're a fresh OpenCode session resuming the install/uninstal ## Where we are right now -**v1.7.43-alpha shipped and deployed to .228**. 5 commits on `.116:main`, unpushed per user mirror protocol. +**v1.7.43-alpha shipped and deployed to .228**. Latest addition: image-versions.sh path bug fixed (silent update-check failure on all production nodes). User is about to walk the marketplace app-by-app on `.228` to shake out any remaining broken apps. Tracker for that walk: `docs/MARKETPLACE-QA.md`. -Commits (newest first): +Commits on `.116:main` (newest first, unpushed per user mirror protocol): +- `a9908597` fix(image-versions): locate image-versions.sh at its actual deployed path +- `013e8df0` docs(resume): add RESUME.md for context-restart recovery - `f9fef8d2` docs(status): record rounds 3-5 + config migration + changelog as shipped - `008da477` docs(changelog): add v1.7.43-alpha entry covering async lifecycle + .23 retirement - `0ee16820` fix(config): auto-purge decommissioned .23 VPS from saved registry/mirror configs @@ -22,8 +24,8 @@ Commits (newest first): - `e471ef75` fix(rpc): empty icon in transient install entry (Round 2) **Deployed artifacts on .228**: -- Backend: `/usr/local/bin/archipelago` md5 `d2b619949f19815faaeab10429e36ba0` -- Frontend: `/opt/archipelago/web-ui/` (v1.7.43-alpha changelog + .168-only registry) +- Backend: `/usr/local/bin/archipelago` md5 `9b8ead06aaf210b85cd78fce270384e3` (includes image-versions path fix) +- Frontend: `/opt/archipelago/web-ui/` (v1.7.43-alpha changelog with 5 bullets, .168-only registry) - Rollback backups: `/usr/local/bin/archipelago.bak-pre-async-install` + `/opt/archipelago/web-ui.bak-pre-async-install/` **Rollback command** (if catastrophic): @@ -35,15 +37,25 @@ ssh archy228 'sudo cp -a /usr/local/bin/archipelago.bak-pre-async-install /usr/l ## Immediate next step -**User is doing browser verification on https://192.168.1.228/** right now. Checklist they were given: +**Phase 1 — browser verification of v1.7.43-alpha on https://192.168.1.228/** -1. Settings → About: top changelog entry reads "v1.7.43-alpha · Apr 23, 2026" with 4 bullets starting "Installing, updating, and removing apps no longer freezes…". Hard-refresh (Cmd+Shift+R) if stale. +1. Settings → About: top changelog entry reads "v1.7.43-alpha · Apr 23, 2026" with **5** bullets. Last bullet mentions "Update-available badges and version comparisons work again across every app." Hard-refresh (Cmd+Shift+R) if stale. 2. Settings → App Registries: only `146.59.87.168:3000/lfg2025` + `git.tx1138.com`. No .23. 3. Settings → System Update → Update Mirrors: only `.168` (Server 1 primary) + `tx1138` (Server 2). No .23. 4. Install SearXNG (small, fast image). Expect: instant button response, 7 phase labels in progress bar (Preparing → Pulling image → Creating container → Starting container → Waiting for healthy → Finalizing → Done), Launch button appears within ~3s of "Done". 5. Uninstall: snappy, no freeze. -**When user reports back**: if any item fails, investigate that item. If everything passes, ask user for the next install/uninstall/update UX issue to tackle (they work "one by one in order"). +**Phase 2 — marketplace walk (app-by-app on .228)** + +Once Phase 1 is clean, user will install every app in the marketplace catalog one by one. Tracker: `docs/MARKETPLACE-QA.md`. For each broken app: +- Triage via `journalctl -u archipelago`, `podman ps -a`, `podman logs `. +- Identify layer: app recipe / registry image / backend / frontend. +- Fix, commit `fix(app/): ...` or similar. +- Redeploy as needed. +- Append release-note bullet for the fix (to current in-flight version, or bump to v1.7.44-alpha if the pile grows). +- User re-verifies, mark ✅ in the tracker. + +Known pre-existing issue to expect: **Vaultwarden** container exits immediately on start. Backend correctly detects + removes state entry; needs container-config debug. --- diff --git a/neode-ui/src/views/settings/AccountInfoSection.vue b/neode-ui/src/views/settings/AccountInfoSection.vue index 87fe3f9a..3b72f1ae 100644 --- a/neode-ui/src/views/settings/AccountInfoSection.vue +++ b/neode-ui/src/views/settings/AccountInfoSection.vue @@ -191,6 +191,7 @@ init()

Install progress bar actually reflects reality now. It previously stayed at 0% until the very end because podman doesn't emit parseable progress when run without a TTY. Replaced byte-counting with seven clearly-labelled phases — Preparing, Pulling image, Creating container, Starting, Waiting for health, Finalizing, Done — each mapped to a fixed percentage so the bar only moves forward.

Launch button now appears the moment an install finishes, instead of waiting up to 60 seconds for the next container scan. After a successful install or update, the backend kicks the scanner and waits for a fresh manifest to land before flipping the app to Running, so the UI always has real port and UI-route info by the time the card becomes clickable.

Retired the decommissioned .23 Hetzner VPS mirror. New nodes default to OVH (146.59.87.168) as Server 1 and tx1138 as Server 2 for both system updates and the app registry. Existing nodes auto-purge any saved .23 entries on next load so they stop paying connection-timeout penalties against a dead host.

+

Update-available badges and version comparisons work again across every app. The backend was looking for its pinned-image catalog at the wrong path and silently getting an empty result on deployed nodes, which meant the UI never showed "update available" even when a newer image was ready. The search path now matches where the image recipe actually installs the file.