Conversation
When docker.versions is installed, a Changelog link appears next to the SHA comparison for each container with a pending update. Clicking it opens the docker.versions changelog in a sized iframe modal via Nchan, matching the existing Docker tab experience. docker.versions is an optional dependency: the PHP endpoint detects it via is_dir(), the JS flag defaults false, and the NchanSubscriber guard prevents any breakage if the plugin is absent or removed while the page is open. A 10-second timeout shows a fallback message if no data arrives. Dialog sizing is applied via inline styles rather than borrowing docker.versions' CSS classes.
Tests cover all three response paths (no file, valid file, invalid file) against both the docker.versions-installed and not-installed states. Uses UnraidStreamWrapper to map the plugin directory to a controlled temp path without touching the real filesystem.
When the user closes the changelog modal (OK button or outside click), re-open the Update Stack dialog for the same stack so they can continue reviewing other containers or proceed with the update. Pass path and profile through to showComposeChangelog via data attributes so the callback has enough context to reopen the dialog.
/sub/changelog is a shared channel: Nchan delivers the last buffered message to every new subscriber, and docker.versions' own subscriber may be actively publishing output for other containers concurrently. Both cases caused wrong containers' changelogs to appear in the dialog. GetChangelog.php always publishes <h3 class='loading'> as its first message. Use that as a start-of-stream marker: discard everything received before it, clear the iframe on arrival, and suppress loadingInfo progress messages that are noise in this context.
docker.versions publishes many message types — Container: headers, URL links, warnings, empty <pre> containers, loadingInfo progress — that are structural scaffolding for its own full-page view and are noise in our modal. Replace the loadingInfo-only blacklist with a whitelist: accept only class='releasesInfo' release entries and the version-summary <h3> containing '---->', and discard everything else.
Replace the custom NchanSubscriber, message filtering, and markdown renderer with a direct call to docker.versions' own showChangeLog() function, which already handles all of that correctly. Hide the OK/confirm button (it would call updateContainer, bypassing compose_plugin's update mechanism) and poll for dialog close to reopen the Update Stack dialog afterward.
…abled Two bugs found in code review: 1. The setInterval poll had no escape hatch when showChangeLog() opened no SweetAlert dialog (e.g. container unknown to docker.versions), so the 'appeared' flag never flipped true and clearInterval was never reached. Cap at 300 ticks (30 s) so it always self-cleans. 2. When DISABLE_ACTION_WARNINGS is true, renderStackActionDialog() has a fast-path that calls UpdateStackConfirmed() directly without showing a dialog. Reopening the update dialog after changelog dismiss would trigger an immediate update rather than a confirmation prompt. Skip the reopen in that mode by checking the setting via getConfig().
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
feat: show docker.versions changelogs in the update dialog
…ys triggering force update
…t works when compose is on its own tab
…ner structure changes
…ersions if available
… changelog assets
… rows and update loading status on success
Add support for additional compose files per stack (extra -f flags)
Fix dropdown z-index on docker page when clicking on stack icon
- Implemented server-side handling for getting and saving column visibility preferences. - Introduced a new JavaScript module for managing column customization in the UI. - Updated the main JavaScript file to integrate the new column visibility features. - Added a new Nchan publisher for real-time container metrics, replacing the deprecated docker_load script. - Enhanced the UI to support new metrics display including CPU, Memory, Network I/O, and Disk I/O. - Adjusted CSS styles for better layout and visibility of new columns and modal components. - Updated unit tests to reflect changes in column structure and ensure new features are covered.
… publishing to ensure data shows during progressive loading
Reduce composeListRefreshed event churn while rows are appended progressively. This avoids repeated dockerload/listener invalidation work for every single row. - Add debounced composeListRefreshed trigger helper - Add flush helper for immediate final refresh - Use debounce in initializeProgressiveLoadedRows - Flush pending debounce in finalizeComposeLoadlist Behavior preserved: final load still emits immediate refresh.
…inserts Remove applyListView(false) from initializeProgressiveLoadedRows so each new row only runs row-local setup. This prevents repeated full-table readmore re-initialization and reduces reflow churn while progressively loading stacks. Global applyListView behavior remains intact in the normal load lifecycle.
Introduce a small render scheduler for compose dockerload updates and switch message handling from immediate full repaint to timed rendering (120ms min interval). - Add scheduled/forced render helper for compose load cache - Use scheduled render on websocket message events - Keep immediate render for snapshot seed and tab-visible resume - Clear pending render timers during subscriber teardown This reduces DOM update churn and CPU usage while preserving live metric behavior.
…stack and container views
…ved UI consistency
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR delivers a major Compose Manager upgrade focused on faster perceived load time, richer update metadata, and safer/more flexible compose operations.
Core goals:
Major Enhancements
1) Progressive Loading and Runtime Data Flow
2) Update Metadata, Icons, and docker.versions Integration
3) Multi-Compose File Support
4) Safer Compose Command Execution and Options
5) UI/UX and Table Improvements
6) Reliability and Behavior Fixes
Packaging and Distribution
Tests and Documentation
Notable User Impact
Compatibility Notes
Closes #6
Closes #119