project-nomad/admin/app/services
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_auto_update_service.ts feat(supply-depot): opt-in automatic updates for installed apps 2026-06-07 15:56:42 -07:00
auto_update_service.ts feat(supply-depot): opt-in automatic updates for installed apps 2026-06-07 15:56:42 -07:00
benchmark_service.ts fix(docker): reject failed image pulls instead of treating them as success 2026-06-08 15:27:46 -07:00
chat_service.ts fix(AI): qwen2.5 loading on every chat message (#649) 2026-04-21 14:26:28 -07:00
collection_manifest_service.ts fix(content): show selected tier on cards while downloads are in flight 2026-05-20 10:16:00 -07:00
collection_update_service.ts feat(content-updates): show size, surface downloads in Active Downloads 2026-05-20 10:16:00 -07:00
container_registry_service.ts feat(system): add opt-in automatic updates for the core NOMAD app 2026-06-07 15:52:56 -07:00
countries_service.ts feat(Maps): regional map downloads via go-pmtiles extract (#780) 2026-05-20 10:16:00 -07:00
custom_app_guard.ts feat: supply depot 2026-06-06 11:08:52 -07:00
docker_service.ts fix(system): disable Update button while a service update is in flight (#931) 2026-06-08 15:54:59 -07:00
docs_service.ts feat(supply-depot): per-app onboarding docs, install fixes, and in-app Docs links 2026-06-06 11:08:52 -07:00
download_service.ts feat(Maps): regional map downloads via go-pmtiles extract (#780) 2026-05-20 10:16:00 -07:00
kiwix_library_service.ts fix(kiwix): self-heal a missing or corrupt library XML on startup 2026-06-08 15:45:06 -07:00
map_service.ts fix: minor type guarding fixes after axios bump 2026-06-07 21:18:42 +00:00
ollama_service.ts refactor(AI): single source of truth for embedding model name 2026-05-20 10:16:00 -07:00
queue_service.ts fix(queue): singleton QueueService to stop ioredis connection leak 2026-05-20 10:16:00 -07:00
rag_service.ts fix(KB): stop partial_stall warning firing on atypical ZIMs (link-out/PDF-heavy) 2026-06-08 14:23:40 -07:00
system_service.ts feat(supply-depot): add custom launch URLs for apps 2026-06-08 15:35:44 -07:00
system_update_service.ts feat(system): add opt-in automatic updates for the core NOMAD app 2026-06-07 15:52:56 -07:00
zim_extraction_service.ts fix(RAG): report ZIM ingestion progress in overall-file frame 2026-05-20 10:16:00 -07:00
zim_service.ts feat(zim): add "Rescan Library" button for sideloaded ZIM files 2026-06-06 11:04:53 -07:00