Phase 1: drop Diun, fix update bug, dashboard UX overhaul#7
Merged
Conversation
Make the app self-contained and fix the blocking update failure. - Fix the compose-mount bug: docker compose runs inside this container and reads the compose file from its own filesystem, so check fs.existsSync up front and return an actionable "mount your stacks at the same path" error instead of a cryptic "no such file or directory". Add GET /api/diagnostics + a dashboard banner that warns when STACKS_DIR isn't mounted, before an update is even attempted. - Drop Diun entirely: remove the webhook ingest, the /api/diun/webhook route, and the DIUN_WEBHOOK_TOKEN requirement. The active registry check (checker.js + registry.js) is now the sole source of update info. Scrub Diun from README, docker-compose.yml, .env.example, API_CONTRACT.md. - Collapse "Check" + "Refresh" into one "Check for updates" action and auto-run it on first open each session. - Group containers by stack (compose project) in collapsible sections that remember open/closed; sort containers with updates to the top. - Default to showing only containers that need an update, with an All/Updates-only filter. - Show real version numbers (org.opencontainers.image.version label, else the tag) instead of digest hashes; demote the digest to a tooltip. - Relabel pinning as "Pin Version". Server tests 60/60; client builds clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First phase of the self-contained rework (per the approved plan). Unblocks daily use and addresses the most-felt UX feedback.
The blocking bug
docker compose pull failed ... open /opt/stacks/notes/compose.yaml: no such file or directory. Thedocker composeCLI runs inside this container and reads the compose file from this container's filesystem, so the stacks dir must be mounted at the same absolute path. Fixes:updateContainernowfs.existsSync(composeFile)up front and returns an actionable error ("mount your stacks at the same path") instead of the cryptic one.GET /api/diagnostics+ a dashboard banner that warns whenSTACKS_DIRisn't mounted, before you click Update./opt/stacks(Dockge default), not the placeholder path.Drop Diun
/api/diun/webhookroute, and theDIUN_WEBHOOK_TOKENrequirement. The active registry check (checker.js+registry.js) is now the sole source of update info — no external notifier required.docker-compose.yml/.env.example/API_CONTRACT.md.Dashboard UX
org.opencontainers.image.versionlabel, else the tag) instead of digest hashes; digest demoted to a tooltip.Not in this PR (later phases, per plan)
Test plan
cd server && node --test→ 60/60cd client && npm run build→ clean/opt/stacks:/opt/stacksmounted, Update succeeds; without it, the banner + clear error showGenerated by Claude Code