Clear the stack update pill immediately after a manual/auto update (0.38.4)
The amber image-update indicator is fed from update_service._CACHE, which only the background loop refreshed — after a per-stack Update/Pull the stale digests kept the pill on until the next pass. Now the local digests are reconciled with the cached remote digests right after a successful pull/update (local backend, agent lifecycle, auto-update pass), and the frontend invalidates the stack-updates queries after actions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
e651029ab2
commit
9119f94536
@@ -269,6 +269,25 @@ async def stack_updates(stack_id: str, refresh: bool = True) -> dict:
|
||||
}
|
||||
|
||||
|
||||
def refresh_stack_local(stack_id: str) -> None:
|
||||
"""Re-read the local digests of one stack's images and reconcile them with
|
||||
the cached remote digests (no registry calls). Called right after a manual
|
||||
pull/update so the amber indicator clears immediately instead of lingering
|
||||
until the next background pass."""
|
||||
for image in stack_images(stack_id):
|
||||
status = _CACHE.get(image)
|
||||
if status is None:
|
||||
continue
|
||||
local = _local_digest(image)
|
||||
status.current_digest = local
|
||||
status.update_available = bool(
|
||||
local and status.remote_digest and local != status.remote_digest
|
||||
)
|
||||
status.checked_at = time.time()
|
||||
if not status.update_available:
|
||||
_NOTIFIED.discard(image)
|
||||
|
||||
|
||||
async def check_all() -> dict[str, dict]:
|
||||
images = _all_running_images()
|
||||
for image in images:
|
||||
|
||||
Reference in New Issue
Block a user