Skip to content

feat(docker): add update actions to container context menu - #1867

Merged
Pujit Mehrotra (pujitm) merged 2 commits into
mainfrom
fix/docker-container-update
Jan 9, 2026
Merged

feat(docker): add update actions to container context menu#1867
Pujit Mehrotra (pujitm) merged 2 commits into
mainfrom
fix/docker-container-update

Conversation

@pujitm

@pujitmPujit Mehrotra (pujitm) commented Jan 8, 2026

Copy link
Copy Markdown
Member

Summary

  • Add "Check for updates" action to container right-click context menu
  • Always show "Update" option (enabled when update available, disabled with "Up to date" label otherwise)
  • Group update actions together in the context menu for better UX

Previously, users could only check for updates or trigger updates via the bulk actions toolbar. Now these actions are available directly in the context menu when right-clicking a container.

Test plan

  • Right-click a container → verify "Check for updates" option appears
  • Right-click a container with no detected update → verify "Up to date" option is disabled
  • Right-click a container with update available → verify "Update" option is enabled and functional
  • Click "Check for updates" → verify digest refresh is triggered for that container

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Check for updates on individual Docker containers directly from the containers table.
    • Reorganized update-related actions into a dedicated, clearer section.
    • Show per-container update status and disable actions while an update check is in progress.

✏️ Tip: You can customize this high-level summary in your review settings.

Add "Check for updates" and "Update" options to the right-click context
menu for individual Docker containers. Previously, users could only
access these actions via the bulk actions toolbar.
- Add "Check for updates" action that triggers digest refresh for a
single container
- Always show "Update" option - enabled when update available, disabled
with "Up to date" label otherwise
- Update actions are now in their own menu group for better organization
Addresses task: https://app.asana.com/0/0/1212596388177290
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jan 8, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Added per-row update-check support for Docker container rows by introducing a checkingForUpdates state and onCheckForUpdates callback into the row actions composable and wiring them into the Docker containers table, exposing a dedicated "Check for updates" action per row.

Changes

Cohort / File(s)Summary
Component Integration
web/src/components/Docker/DockerContainersTable.vue
Wire new checkingForUpdates prop and onCheckForUpdates handler into row actions setup in two action-item construction sites to enable per-row update checks.
Action Composable
web/src/composables/useDockerRowActions.ts
Extend DockerRowActionsOptions with checkingForUpdates: Ref<boolean> and onCheckForUpdates callback; add updateActions group with "Check for updates" action (disabled while checking) and move existing "Update"/"Up to date" items into this group.
Update Actions Comment
web/src/composables/useDockerUpdateActions.ts
Add clarifying comment above handleCheckForUpdates describing backend behavior (refreshes digests for all containers) and note possible backend scoping improvement.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Table as DockerContainersTable.vue
participant RowActions as useDockerRowActions
participant UpdateHandler as useDockerUpdateActions
participant API as Backend API
User->>Table: Click "Check for updates" on row
Table->>RowActions: invoke onCheckForUpdates(row)
RowActions->>UpdateHandler: call handleCheckForUpdates([row])
UpdateHandler->>API: trigger refresh digests mutation
API-->>UpdateHandler: mutation result
UpdateHandler-->>RowActions: update checking state
RowActions-->>Table: reflect updated checkingForUpdates state
Table-->>User: UI shows check progress/result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰
I poked a row to see what's new,
A tiny check, a gentle cue.
Containers whisper, digests hum,
Row by row the updates come.
Hooray — a little rabbit drum!

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title accurately describes the main change: adding update-related actions to the Docker container context menu, which is the core objective across both modified files.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e2a8562 and 8b35a93.

📒 Files selected for processing (1)
  • web/src/composables/useDockerUpdateActions.ts

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:e2a85622cd

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "Codex (@codex) address that feedback".

onViewLogs: handleViewLogs,
onOpenConsole: handleOpenConsole,
onManageSettings: handleManageSettings,
onCheckForUpdates: (row) => void handleCheckForUpdates([row]),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid per-row “Check for updates” implying a scoped refresh

The new row action wires onCheckForUpdates to handleCheckForUpdates([row]), but that handler (in useDockerUpdateActions) always calls the global REFRESH_DOCKER_DIGESTS mutation with no container IDs and then refetches all containers. That means right‑clicking a single container will refresh every container while the toast and busy state suggest only that one was checked. This is a functional mismatch introduced by the new row action; either update the action/label to reflect a global refresh or pass a container ID if the backend supports a scoped refresh.

Useful? React with 👍 / 👎.

@codecov

codecovBot commented Jan 8, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 23 lines in your changes missing coverage. Please review.
✅ Project coverage is 46.47%. Comparing base (9ef1cf1) to head (8b35a93).
⚠️ Report is 2 commits behind head on main.

Files with missing linesPatch %Lines
web/src/composables/useDockerRowActions.ts0.00%21 Missing ⚠️
...eb/src/components/Docker/DockerContainersTable.vue0.00%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1867 +/- ##
==========================================
- Coverage 46.49% 46.47% -0.02% 
==========================================
Files 954 954 Lines 59788 59810 +22 Branches 5552 5552 ==========================================
Hits 27799 27799 - Misses 31870 31892 +22 
Partials 119 119 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pujitm

Copy link
Copy Markdown
MemberAuthor

Though I haven't tested "Right-click a container with update available → verify "Update" option is enabled and functional", I'm merging because the code seems benign, and this feature is in testing, not prod.

@pujitm
Pujit Mehrotra (pujitm) merged commit 4ca3e06 into mainJan 9, 2026
7 of 8 checks passed
@pujitm
Pujit Mehrotra (pujitm) deleted the fix/docker-container-update branch January 9, 2026 16:07
@github-actions

Copy link
Copy Markdown
Contributor

This plugin has been deployed to Cloudflare R2 and is available for testing.
Download it at this URL:

https://preview.dl.unraid.net/unraid-api/tag/PR1867/dynamix.unraid.net.plg

@github-actionsgithub-actionsBot mentioned this pull request Jan 9, 2026
Eli Bosley (elibosley) pushed a commit that referenced this pull request Mar 18, 2026
🤖 I have created a release *beep* *boop*
---
## [4.30.0](v4.29.2...v4.30.0)
(2026-03-18)
### Features
* add internal boot step to onboarding flow
([#1881](#1881))
([337aecc](337aecc))
* Add TPM licensing availability to registration
([#1908](#1908))
([aa162eb](aa162eb))
* add UPS power ([#1874](#1874))
([b531aed](b531aed))
* **api:** alert when usb boot has internal boot target
([#1898](#1898))
([b94df47](b94df47))
* **api:** expose internal boot devices in array GraphQL
([#1894](#1894))
([0736709](0736709))
* docker overview ([#1855](#1855))
([9ef1cf1](9ef1cf1))
* **docker:** add update actions to container context menu
([#1867](#1867))
([4ca3e06](4ca3e06))
* **docker:** disable containers page file modification
([#1870](#1870))
([aaa0372](aaa0372))
* issues/1597: Temperature Monitoring - Thanks @MitchellThompkins
([a1be458](a1be458))
* New Crowdin updates
([#1809](#1809))
([a7b3f07](a7b3f07))
* New Crowdin updates
([#1883](#1883))
([14a8fa8](14a8fa8))
* **onboarding:** add new onboarding flows for Unraid OS
([#1746](#1746))
([15bd747](15bd747))
* registration and trial actions use Account app
([#1928](#1928))
([c2c0425](c2c0425))
* share internal boot state
([#1921](#1921))
([8e4d44d](8e4d44d))
* **web:** show TPM move control for trial licenses
([#1911](#1911))
([d00fb63](d00fb63))
### Bug Fixes
* Add dedicated TPM license move option
([#1909](#1909))
([36c56f7](36c56f7))
* allow free USB targets in onboarding internal boot setup
([#1903](#1903))
([298da54](298da54))
* API key key display truncation
([#1890](#1890))
([b12f75c](b12f75c))
* **api:** harden PHP wrapper args for newer PHP versions
([#1901](#1901))
([849f177](849f177))
* **api:** prevent flash notification startup fd exhaustion
([#1893](#1893))
([4b231ad](4b231ad))
* clear stale onboarding modal session state
([#1904](#1904))
([23f7836](23f7836))
* consistently clear onboarding draft
([#1916](#1916))
([199d803](199d803))
* correct graphql-api.log timestamp formatting
([#1918](#1918))
([243c5a8](243c5a8))
* **deps:** pin dependencies
([#1878](#1878))
([db88eb8](db88eb8))
* **docker:** change "visit" to "webui" & use correct link
([#1863](#1863))
([cab0880](cab0880))
* **docker:** improve start/stop UX with visual feedback
([#1865](#1865))
([c084e25](c084e25))
* **docker:** remove aggressive caching to ensure data correctness
([#1864](#1864))
([1c1bae8](1c1bae8))
* **docker:** sync template mappings in organizer to prevent false
orphan warnings ([#1866](#1866))
([38a6f0c](38a6f0c))
* onboarding internal-boot warning panel contrast and semantics
([#1927](#1927))
([bb6f241](bb6f241))
* **onboarding:** add explicit EFI loader path for flash entry
([#1926](#1926))
([429b438](429b438))
* **onboarding:** extend onboarding refresh timeout
([#1925](#1925))
([e2a5f44](e2a5f44))
* **onboarding:** persist installed plugins in summary
([#1915](#1915))
([07f4ebd](07f4ebd))
* **onboarding:** refine storage boot setup UX
([#1900](#1900))
([1108d0a](1108d0a))
* polish onboarding flow
([#1902](#1902))
([8742cac](8742cac))
* preserve registration device limits after refresh
([#1905](#1905))
([234bfc7](234bfc7))
* prevent onboarding on API errors
([#1917](#1917))
([540d6f9](540d6f9))
* remap TPM guid prefix to 01
([#1924](#1924))
([5360b5b](5360b5b))
* Return null for corrupted/invalid API key files and add Connect
fixtures test ([#1886](#1886))
([013e6c5](013e6c5))
* share internal boot state across onboarding
([#1920](#1920))
([f9b293f](f9b293f))
* too many file descriptors with thousands of notifications
([#1887](#1887))
([7956987](7956987))
* Treat onboarding patch updates as completed
([#1884](#1884))
([d03b25e](d03b25e))
* unify onboarding internal boot state refresh
([#1923](#1923))
([d3032c1](d3032c1))
* **web:** refresh internal boot onboarding state
([#1913](#1913))
([1ca2129](1ca2129))
* **web:** stop showing callback errors after successful key installs
([#1892](#1892))
([45f1402](45f1402))
---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@pujitm