Skip to content

feat(task-tray): show target name in background-task progress headings [OS-460]#2668

Closed
elibosley wants to merge 1 commit into
masterfrom
feat/task-tray-titles
Closed

feat(task-tray): show target name in background-task progress headings [OS-460]#2668
elibosley wants to merge 1 commit into
masterfrom
feat/task-tray-titles

Conversation

@elibosley

@elibosley elibosley commented Jun 18, 2026

Copy link
Copy Markdown
Member

Summary

Background-operation progress headings use generic labels that don't say what is being acted on — ambiguous when several operations run at once (and especially in the multi-task tray landing in #2665). The specific target is already in scope at each call site; this folds it into the title that openDocker/openPlugin render.

Call site Before After
docker.js updateContainer() Updating the container Update container: <name>
docker.js updateAll() Updating all Containers Updating all Containers (N)
Apps.page / Tailscale.page installPlugin() Install Plugin Install Plugin: <plugin>
Language.page installXML() Install Language Install Language: <pack>

This improves the existing swal "In Progress" modal heading today, and the multi-task tray tiles once #2665 merges (titles flow through unchanged).

Safety

The legacy openPlugin/openDocker swal heading is rendered with html:true and is not escaped, so injected names must be HTML-safe:

  • Container names are constrained by Docker's naming charset ([a-zA-Z0-9][a-zA-Z0-9_.-]+) — safe.
  • Plugin / language names are reduced to a sanitized basename slug ([^\w.\- ] stripped, trailing extension removed) before display.
  • Counts are numeric.

Scope / conflicts

Validation

  • node --check passes on docker.js.
  • Title strings keep the translatable verb (_()) and append the in-scope name; the ellipsis/min-width:0 handling already covers longer headings.

Follow-ups (not here)

Closes OS-460

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Improvements
    • Docker container updates now display the specific container name in progress dialogs.
    • Batch container updates show the total number of containers being updated.
    • Plugin and language pack installations now display the package name in progress dialogs instead of generic text.

@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown

🔧 PR Test Plugin Available

A test plugin has been generated for this PR that includes the modified files.

Version: 2026.06.19.1437
Build: View Workflow Run

📥 Installation Instructions:

Install via Unraid Web UI:

  1. Go to Plugins → Install Plugin
  2. Copy and paste this URL:
https://preview.dl.unraid.net/pr-plugins/pr-2668/webgui-pr-2668.plg
  1. Click Install

Alternative: Direct Download

⚠️ Important Notes:

  • Testing only: This plugin is for testing PR changes
  • Backup included: Original files are automatically backed up
  • Easy removal: Files are restored when plugin is removed
  • Conflicts: Remove this plugin before installing production updates
  • Post-merge behavior: This preview stays available after merge until preview storage expires or it is manually cleaned up

📝 Modified Files:

Click to expand file list
emhttp/plugins/dynamix.docker.manager/javascript/docker.js
emhttp/plugins/dynamix/Apps.page
emhttp/plugins/dynamix/Language.page
emhttp/plugins/dynamix/Tailscale.page

🔄 To Remove:

Navigate to Plugins → Installed Plugins and remove webgui-pr-2668, or run:

plugin remove webgui-pr-2668

🤖 This comment is automatically generated and will be updated with each new push to this PR.

@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@elibosley, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 53 minutes and 10 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: f0ca1566-893e-4857-a6d4-9a34a342c090

📥 Commits

Reviewing files that changed from the base of the PR and between 6ade786 and 339777d.

📒 Files selected for processing (4)
  • emhttp/plugins/dynamix.docker.manager/javascript/docker.js
  • emhttp/plugins/dynamix/Apps.page
  • emhttp/plugins/dynamix/Language.page
  • emhttp/plugins/dynamix/Tailscale.page

Walkthrough

Progress dialog and heading strings are updated across four files. Docker update dialogs now include the container name or container count. Plugin install functions in Apps.page, Tailscale.page, and Language.page now derive sanitized display names from file paths before embedding them in the openPlugin heading.

Changes

Dialog Title and Heading Improvements

Layer / File(s) Summary
Docker update dialog titles
emhttp/plugins/dynamix.docker.manager/javascript/docker.js
updateContainer now passes "Update container: <name>" to openDocker; updateAll appends "(<N>)" with the container count to the bulk update title.
Plugin/language install heading sanitization
emhttp/plugins/dynamix/Apps.page, emhttp/plugins/dynamix/Tailscale.page, emhttp/plugins/dynamix/Language.page
installPlugin and installXML each extract the file basename, strip the extension, remove unsafe characters, and trim the result, then pass the sanitized name into the openPlugin heading string instead of using a generic or raw value.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Poem

🐇 A name for each box, a count for the herd,
No raw path injected — just safe, readable word.
The dialog now greets with a tidy display,
Sanitized slugs keep the bad chars at bay.
Hippity-hop, the UI is sharp today! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring 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 (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: adding target names to background-task progress headings, with reference to the tracking issue (OS-460).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/task-tray-titles

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

Generic progress headings ("Updating the container", "Install Plugin")
don't say what is being acted on, which is ambiguous when several
operations run at once. The target is already in scope at each call
site, so fold it into the title that openDocker/openPlugin render:

- docker update:          "Update container: <name>"
- docker update all:      "Updating all Containers (N)"
- plugin install:         "Install Plugin: <plugin>"   (Apps, Tailscale)
- language install:       "Install Language: <pack>"

Names that aren't charset-constrained (plugin/language files) are reduced
to a sanitized basename slug before display, since the swal heading is
rendered with html:true. Container names rely on Docker's naming charset;
counts are numeric. Stays out of HeadInlineJS so it does not conflict with
the backend task-queue work in #2665.

OS-460

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@elibosley elibosley force-pushed the feat/task-tray-titles branch from 6ade786 to 339777d Compare June 19, 2026 14:37
@elibosley

Copy link
Copy Markdown
Member Author

Folded into #2665 (the consolidated task-queue PR) — cherry-picked feat(task-tray): show target name in background-task progress headings (d36abaa). Closing in favor of #2665.

@elibosley elibosley closed this Jun 22, 2026
@github-actions

Copy link
Copy Markdown

🧹 PR Test Plugin Cleaned Up

The test plugin and associated files for this PR have been removed from the preview environment.


🤖 This comment is automatically generated when a PR is closed without merging.

Sign up for free to 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