Fix Plugin Manager UI: iframe height and Developer Settings accordion#1211
Conversation
Added notes on security advisories and submission process.
Update CHANGELOG.md
The plugin UI iframe was sized to the left sidebar's (#mainmenu) height, with the viewport-based height only used as a fallback when the sidebar measured 0. On browser windows taller than the sidebar, the Zoraxy footer filled the leftover space, shrinking the usable plugin area to less than half the window height. Size the iframe to the larger of the sidebar height and the viewport height so it fills the window on tall browsers. Already re-runs on window resize and tab switch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Developer Settings accordion in the Plugin Manager
(div.ui.accordion.advanceSettings) was never initialized, so clicking it
did nothing and produced no console error — an uninitialized Fomantic
accordion is inert markup with no click handler bound. Every other
component using this pattern calls $(".advanceSettings").accordion();
(redirection, access, status, sso), but plugins.html was missing it.
Add the accordion initialization alongside initDeveloperSettings().
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Hey, thanks for the PR!
A few places need some final touch-up, and this should be good to merge.
Also, it seems that you are using a low effort mode for submitting changes, next time please consider using a higher effort mode for proposing changes which properly remove functional duplication and avoid introducing other potential issues.
| } | ||
|
|
||
| initDeveloperSettings(); | ||
| $(".advanceSettings").accordion(); |
There was a problem hiding this comment.
There are a few .advanceSettings class in the webmin panel due to the design that the contents are dynamically loaded via $ajax. You need to be more specific on which advance settings to toggle accordion to prevent duplicate calls to other page's elements here.
There was a problem hiding this comment.
Fixed in latest commit.
redirection.html, status.html, and access.html also use the unscoped $(".advanceSettings").accordion() and have the same latent issue.
| @@ -48,7 +48,9 @@ | |||
| if (mainMenuHeight == 0){ | |||
There was a problem hiding this comment.
Since your logic already use Math.max which covered the case where mainMenuHeight is 0 (i.e. in this case the window.inner height - 198px must be larger than 0), you should also remove this redundant if case.
There was a problem hiding this comment.
Fixed in latest commit.
…llback
Scope the Developer Settings accordion initialization in plugins.html to
its own element via a new #pluginDeveloperSettings id. Webmin components
are loaded dynamically via ajax and several of them (redirection, status,
access) reuse the .advanceSettings class, so the bare
$(".advanceSettings").accordion() would re-initialize other pages'
accordions.
Also remove the redundant mainMenuHeight == 0 fallback in
plugincontext.html: Math.max(mainMenuHeight, window.innerHeight - 198)
already resolves to window.innerHeight - 198 when mainMenuHeight is 0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Thanks for the tip. I will investigate my settings. The accordion fix also applies to 3 other pages. Should I submit another PR for those? Or add them to this one? redirection.html, status.html, and access.html still use the unscoped $(".advanceSettings").accordion() and have the same latent issue. |
I think those need to be updated as well, you can do them in this PR if you wish, or I can fix them later. |
…ents
redirection.html, status.html and access.html each called the unscoped
$(".advanceSettings").accordion(), which re-initializes every loaded
page's accordion because webmin components are loaded dynamically via
ajax and share the .advanceSettings class. Give each accordion a unique
id and scope its init accordingly, matching the plugins.html and sso.html
pattern.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Added the fix to the other 3 pages. |
Match the concise comment wording used in the other webmin components. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Summary
Two small, web-asset-only fixes for the Plugin Manager UI.
1. Plugin UI iframe sized to viewport height
resizeIframe()insrc/web/components/plugincontext.htmlsized the plugin iframe to the left sidebar's (#mainmenu) height, using the viewport-based height only as a fallback when the sidebar measured 0. On browser windows taller than the sidebar, the Zoraxy footer filled the leftover space, shrinking the usable plugin area to less than half the window height.Now sizes to the larger of the sidebar height and the viewport height, so the iframe fills the window on tall browsers. It already re-runs on window resize and tab switch.
2. Developer Settings accordion never expanded
The "Developer Settings" accordion in
src/web/components/plugins.html(div.ui.accordion.advanceSettings) was never initialized, so clicking it did nothing — and produced no console error, since an uninitialized Fomantic accordion is inert markup with no click handler bound. Every other component using this pattern calls$(".advanceSettings").accordion();(redirection, access, status, sso);plugins.htmlwas the only one missing it.Added the initialization alongside
initDeveloperSettings().Testing
Built and deployed to a live Zoraxy instance; both behaviors confirmed fixed in-browser (accordion expands/collapses; plugin iframe fills tall windows). Web UI is served from embedded assets (
//go:embed web/*), so this requires a rebuild to take effect — no Go logic changed.🤖 Generated with Claude Code