Skip to content

feat(header): gate consolidated <unraid-header> on Unraid 7.3+#2689

Open
elibosley wants to merge 12 commits into
masterfrom
feat/consolidated-header
Open

feat(header): gate consolidated <unraid-header> on Unraid 7.3+#2689
elibosley wants to merge 12 commits into
masterfrom
feat/consolidated-header

Conversation

@elibosley

Copy link
Copy Markdown
Member

Summary

Gates the new consolidated header web component on Unraid 7.3+, and keeps the existing multi-component header as the fallback for older releases. This is the mount/gate half of the header consolidation; the component itself is in unraid/api#2037.

Why

On a narrow (mobile) screen the current header — logo/version + "Reboot Required for Update" banner (<unraid-header-os-version>) on the left, and the server title + notification bell + avatar (<unraid-user-profile>, absolutely positioned) on the right — overlap and collide. Owning the whole header in one component (<unraid-header>) lets the API repo fix the responsive layout properly.

Change

DefaultPageLayout/Header.php now branches on version_compare(parse_ini_file('/etc/unraid-version')['version'], '7.3', '>='):

  • 7.3+: render a single <unraid-header server="…">, passing the same ServerState JSON myservers2.php uses, plus the sidebar array-usage graph for sidebar themes.
  • < 7.3: unchanged — <unraid-header-os-version> + array-usage graph + myservers2.php (<unraid-user-profile>).

Companion

Render the single consolidated header web component (<unraid-header>,
provided by the unraid-api web build) on Unraid 7.3 and later, passing the
server state JSON the same way myservers2.php does for <unraid-user-profile>.

On releases before 7.3 the existing multi-component header is unchanged:
<unraid-header-os-version> + the sidebar array-usage graph + the
myservers2.php user-profile include.

Gate uses version_compare against /etc/unraid-version. The consolidated
header owns the whole header layout, fixing the mobile overlap of the reboot
banner, server title, and notification bell.

Companion to unraid/api#2037.
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

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

Next review available in: 15 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

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 reviews.

How do review limits work?

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

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, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c4aa7543-e97e-4f4e-b29e-a12073054d8f

📥 Commits

Reviewing files that changed from the base of the PR and between 369f0b2 and 10f0985.

📒 Files selected for processing (4)
  • emhttp/plugins/dynamix/DisplaySettings.page
  • emhttp/plugins/dynamix/default.cfg
  • emhttp/plugins/dynamix/include/DefaultPageLayout/Header.php
  • emhttp/plugins/dynamix/styles/default-base.css
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/consolidated-header

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions

github-actions Bot commented Jul 9, 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.07.14.1408
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-2689/webgui-pr-2689.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/DisplaySettings.page
emhttp/plugins/dynamix/default.cfg
emhttp/plugins/dynamix/include/DefaultPageLayout/Header.php
emhttp/plugins/dynamix/styles/default-base.css

🔄 To Remove:

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

plugin remove webgui-pr-2689

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

elibosley and others added 11 commits July 9, 2026 00:16
Pass show-array-usage to <unraid-header> for sidebar themes with usage display
enabled, instead of the legacy #array-usage-sidenav placeholder span. The
consolidated header now renders the array-usage bar itself (GraphQL-driven), so
the Navigation/Main.php sidebar injection simply no-ops on 7.3+.
…er pop-in

Paint the Unraid logo inside <unraid-header> so it shows at first paint, before
the web-component bundle loads and Vue mounts. The mount engine calls
replaceChildren(), so this light-DOM fallback is discarded on upgrade. #header
already flex-centers its child, so the fallback logo sits where the mounted logo
does. Removes the header pop-in without a client-side fade.
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