project-nomad/admin
Chris Sherwood 009e12fdd7 fix(system): disable Update button while a service update is in flight (#931)
A multi-GB service update (e.g. nomad_ollama pulling ~6.5 GB) left the
Update button clickable with no feedback, so users clicked again thinking
it was stuck. The second click raced a concurrent updateContainer run into
Docker 304/400 errors (stop/rename on a container the first run had already
moved). The backend lock was in-memory only and never written to the DB, so
nothing durable signaled "update in progress" to the UI, and a page reload
mid-pull re-enabled the button.

Backend (docker_service.updateContainer):
- Set installation_status='installing' when the update starts and reset it
  to 'idle' in a finally on every exit path. This mirrors the install path,
  survives a page reload, and is visible to other tabs/clients.
- Reject a second update with a clear message when installation_status is
  already 'installing', instead of letting it race into Docker errors.

Frontend (settings/apps.tsx):
- Track in-flight updates per service. Seed optimistically on click and
  reconcile with the durable installation_status from the server.
- Disable the per-service Update button and show "Updating..." while in
  flight. Drop the fullscreen spinner for updates so the table and the
  activity feed (live pull/stop/start progress) stay visible.

Closes #931
2026-06-08 15:54:59 -07:00
..
app fix(system): disable Update button while a service update is in flight (#931) 2026-06-08 15:54:59 -07:00
bin feat: curated content system overhaul 2026-02-11 15:44:46 -08:00
commands feat(supply-depot): opt-in automatic updates for installed apps 2026-06-07 15:56:42 -07:00
config feat(config): respect REDIS_DB env var for queue and transmit 2026-06-07 15:11:22 -07:00
constants feat(supply-depot): opt-in automatic updates for installed apps 2026-06-07 15:56:42 -07:00
database feat(supply-depot): add custom launch URLs for apps 2026-06-08 15:35:44 -07:00
docs feat(supply-depot): per-app onboarding docs, install fixes, and in-app Docs links 2026-06-06 11:08:52 -07:00
inertia fix(system): disable Update button while a service update is in flight (#931) 2026-06-08 15:54:59 -07:00
providers fix(kiwix): self-heal a missing or corrupt library XML on startup 2026-06-08 15:45:06 -07:00
public feat: switch all PNG images to WEBP (#575) 2026-04-03 14:26:50 -07:00
resources feat(Maps): regional map downloads via go-pmtiles extract (#780) 2026-05-20 10:16:00 -07:00
scripts fix(supply-depot): correct Meshtastic Web internal port (80->8080); add catalog port audit script 2026-06-06 11:08:52 -07:00
start feat(supply-depot): add custom launch URLs for apps 2026-06-08 15:35:44 -07:00
tests fix(security): harden assertNotPrivateUrl with ipaddr.js + host normalization 2026-06-08 15:34:17 -07:00
types feat(supply-depot): add custom launch URLs for apps 2026-06-08 15:35:44 -07:00
util feat: display model download progress 2026-02-06 16:22:23 -08:00
views feat: initial commit 2025-06-29 15:51:08 -07:00
.editorconfig feat: initial commit 2025-06-29 15:51:08 -07:00
.env.example feat(config): respect REDIS_DB env var for queue and transmit 2026-06-07 15:11:22 -07:00
ace.js feat: initial commit 2025-06-29 15:51:08 -07:00
adonisrc.ts feat(GPU): auto-remediate nomad_ollama passthrough loss on admin boot (#755) 2026-05-20 10:16:00 -07:00
eslint.config.js feat: openwebui+ollama and zim management 2025-07-09 09:08:21 -07:00
package-lock.json chore: align package license with Apache-2.0 and fix README docs links/typos 2026-06-07 14:57:26 -07:00
package.json chore: align package license with Apache-2.0 and fix README docs links/typos 2026-06-07 14:57:26 -07:00
tailwind.config.ts feat: initial commit 2025-06-29 15:51:08 -07:00
tsconfig.json feat: initial commit 2025-06-29 15:51:08 -07:00
vite.config.ts fix(Maps): ensure proper parsing of hostnames (#640) 2026-04-03 14:26:50 -07:00