All notable changes to ProxMorph will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Release checksums and provenance: every release now publishes a
SHA256SUMSmanifest and a GitHub build-provenance attestation. The installer verifies the downloaded tarball againstSHA256SUMSand refuses to install on a mismatch or when the manifest is missing (fail closed). Verify a release yourself withsha256sum -candgh attestation verifybefore running; see the README "Verify before you run" section. PROXMORPH_RELEASE_BASE: point the installer at an internal mirror of the release artifacts (air-gapped or policy-controlled installs). Checksum verification still applies against the mirroredSHA256SUMS.- README audit transparency: documented exactly what the installer changes on the system, the review-then-run clone path, and honest framing of what checksums vs. attestation guarantee.
- The release download path is no longer trust-on-first-download: artifacts are integrity-checked against a published manifest before extraction as root.
- Server-side default theme (#52): set a default theme for browsers that have not picked one yet with
./install.sh default-theme <key>(menu option 8). New visitors get the default on first load, a user's own selection always wins. Works on PVE, PBS and PDM, survives Proxmox updates via the APT hook. Clear with./install.sh default-theme none. - UniFi OLED theme (#46): true-black variant of UniFi with pure
#000000backgrounds and a tuned blue accent, built for OLED panels. PVE/PBS + PDM, includes a chart patcher.
- All themes — Task Viewer window no longer loses its scrollbar. The blanket
.x-window .x-panel-body { overflow: visible !important }rule was overriding ExtJS's own inlineoverflow: autoon scrollable panel bodies (.x-scroller). Fixed by scoping the rule to:not(.x-scroller). Issue #49 - All themes — CT and VM creation dialog tabs are no longer pushed off-screen.
position: relative !importanton.x-tabwas overriding ExtJS box layout's absolute positioning, causing each tab's offset to double-count (natural flow position + intended left = tabs spreading ~1.5× wider than the container). Removed the offending declaration. Issue #50 - Catppuccin Latte — Text on colored elements (progress bar fill, active buttons, badges) is now visible.
--ctp-on-accentwas set tovar(--ctp-base)(#eff1f5, near-white), which is invisible on the light Latte background. Changed to#fffffffor proper contrast against vivid Latte accent fills (mauve, red, yellow). Issue #51
- Sensors — Added pre-patch Perl syntax check on Nodes.pm before applying the sensor patch. If Nodes.pm is already broken (e.g. from the v2.7.0 APT-hook heredoc bug), the user now gets an actionable error: "Run 'apt install --reinstall pve-manager' to restore it, then re-run ProxMorph install." instead of a misleading post-patch rollback message. Issue #47
- Sensors — Rollback on post-patch syntax failure now restores from
Nodes.pm.originalbackup when available, falling back to sed marker removal only if no backup exists.
- APT Hook — Fixed broken heredoc escaping in
post-update.shthat caused the Nodes.pm sensor patch to be injected as a single malformed line, breaking Perl syntax and preventingpveproxyfrom starting after a PVE update. Issue #45- Added Perl syntax check (
perl -c) after patching with automatic rollback if validation fails
- Added Perl syntax check (
- Sensor Selector — Interactive per-sensor filtering for hardware monitoring. Issue #44
enumerate_sensors()discovers all available sensors (CPU, NVMe, HDD, Fan) viasensors -jconfigure_sensor_filter()interactive multi-select menu to choose which sensors to display- Filter stored in
/opt/proxmorph/.sensors-filter(chip:label format), synced to cluster nodes manage-sensorsmenu gains option 4) Configure sensor selectionsensors configureCLI subcommand for non-interactive reconfiguration- Backwards-compatible: missing/empty filter file shows all sensors
- proxmorph-sensors.js (v1.2.0) — Client-side sensor filtering
- Reads
sensorsFilterfrom API on each render (no first-load flash) - CPU cores shown individually when filter selects specific cores without Package sensor
- APT hook updated to persist filter across PVE updates
- Reads
- Proxmox Datacenter Manager (PDM) Support — Full theme support for PDM 1.x:
- New
install.shproduct detection: auto-detects PDM alongside PVE and PBS - 22 PDM-specific CSS override themes injected as
<link>tags intoindex.hbs, activated via JavaScript based onlocalStorageselection proxmorph-pdm-base.css— always-on component styling (rounded corners, shadows, button/panel/grid refinements)pdm-theme-selector.js— MutationObserver-based patch that injects ProxMorph themes into PDM's native Theme dialog dropdown alongside built-in Desktop/Crisp options- PDM themes use CSS custom property overrides to remap
--pwt-color-*tokens from the WASM-loaded base theme - Inline
<script>inindex.hbsactivates saved theme before WASM loads (prevents flash of default theme) - APT hook updated with PDM-specific repatch logic (CSS re-injection + JS patch re-copy)
- Clean uninstall: removes theme directory, JS patches, and injected
index.hbsblock; restores backup
- New
- Installer (
install.sh):- Now supports PVE 8.x/9.x, PBS 3.x/4.x, and PDM 1.x
manage-sensorscommand now shows interactive menu instead of requiring subcommandverifycommand (option 7) added to diagnose installation issuespveproxyrestart changed from background to synchronous for reliability- Prominent cache warning displayed after install/uninstall
- Catppuccin Latte light theme icon/logo inversions — Theme was generated from dark Catppuccin Mocha and retained dark-mode
filter: invert()rules on loading indicators, folder icons, image-based icons (.fa-ceph,.fa-sdn,.pve-itype-icon-qemu, etc.), hardware icons, counter-invert cells, and the Proxmox logo. All are nowfilter: noneas required by a light theme. - Sensors: Perl taint mode error on node status API — Issue #38:
- The
Nodes.pmpatch now setslocal $ENV{PATH} = '/usr/bin:/bin';before all backtick (sensors -j,upsc) calls, satisfying Perl's-Ttaint mode requirement that$ENV{PATH}be untainted before external command execution - The UPS device name (
$ups_name), obtained from tainted backtick output, is now validated and untainted via regex (/^([\w@.-]+)$/) before being passed to theupsccommand — prevents an additional taint violation in the UPS data collection path - Affected users: anyone running ProxMorph sensors on a Proxmox host where
Nodes.pmstill has the old patch; fix requires re-runninginstall.sh(orinstall.sh manage-sensors disable && install.sh manage-sensors enable) to re-apply the corrected patch
- The
- Sensors: sed regex escaping for UPS untaint — Issue #38:
- GNU sed's
i\command drops backslash before unknown escapes (\w→w) patch_nodes_pm()bash double-quoted sed now uses 4 backslashes (\\\\w)- APT hook post-update heredoc (3-level escaping chain) now uses 8 backslashes for correct
\woutput
- GNU sed's
- Theme visibility after install — Issue #40:
- Added
verifycommand (option 7) to diagnose installation issues (checks theme files, theme_map entries, JS patches, index template) - Changed
pveproxyrestart from background (&) to synchronous to ensure theme_map changes take effect before user checks browser - Added prominent cache warning after install/uninstall reminding users to hard-refresh (Ctrl+Shift+R)
- Fixed
seddelimiter inpatch_theme_mapto use|instead of/for consistency with uninstall path handling
- Added
- Cluster-aware sensor deployment — Installer now detects PVE cluster nodes and deploys the sensor API patch to all remote nodes automatically
- Uses
pvecm nodesto discover cluster members, scp to copy patchedNodes.pm, and restartspveproxyon each node - Version check ensures local and remote PVE versions match before deploying
sensors disablecleanly removes the patch from all cluster nodes- Prompts before deploying to remote nodes; can be skipped to run
install.shon each node individually
- Uses
- System Log scroll to bottom — Issue #36:
- Removed
scroll-behavior: smooth !importantfrom.x-panel-body-defaultin UniFi and UniFi Light themes - This CSS rule broke ExtJS's synchronous scroll position tracking — the JournalView
scrollTo()call would animate instead of applying instantly, causing the position read-back to return 0 and preventing auto-scroll to the newest log entries - The
html { scroll-behavior: smooth }rule is preserved for page-level smooth scrolling
- Removed
- Sensor row hidden when not enabled — Sensor row in node Status panel now hides completely when the API patch is not applied, instead of showing "N/A"
- Missing VMs/LXCs in backup job dialog — Issue #37:
- The
.x-form-trigger-wrap-defaultheight rule (height: 28px !important) was matching the VMSelector grid body, collapsing it to a single visible row - Added
:not(.x-grid-body)exclusion to the selector in UniFi and UniFi Light themes
- The
- Native Hardware Sensor Monitoring — Issue #22:
- New
proxmorph-sensors.jspatch injects CPU/Storage thermal readings, fan speeds, and UPS status directly into the node Summary dashboard - Auto-detects
lm-sensorshardware: coretemp (Intel), k10temp (AMD), NVMe, SATA/drivetemp, and fan sensors - Optional UPS monitoring via
upsc(Network UPS Tools) — shows status, charge, load, and runtime - Color-coded temperature warnings (yellow at 80°C, red at 95°C) using theme CSS variables (
--pm-warning,--pm-error) - Installer auto-detects available sensors and prompts to enable during
install.sh— patchesNodes.pmAPI to exposesensors -joutput - Fully optional: can be enabled/disabled independently via
install.sh manage-sensors - Graceful degradation: shows "N/A" when lm-sensors is not installed or no sensors detected
- New
- UniFi Light Theme — contributed by @OiCkilL (PR #34):
- Light variant of the UniFi theme with Tier 3 comprehensive coverage
- Includes custom chart patching (
unifi-light-charts.js) for consistent light-mode chart colors
- Blue Slate Theme — Issue #25:
- Complete v2.0.0 overhaul — ported all Tier 2 fixes from the Dracula reference theme (1068 → 1568 lines)
- Fixed close "X" button white background — added
background-color: transparenton.x-panel-header-default .x-tool-tool-eland.x-window-header-default .x-tool-img - Ported FontAwesome tool icon replacements (close, gear, refresh, collapse/expand, maximize/restore, zoom) with hover, disabled, and inline FA states
- Added global border-radius architecture (reset-everything/re-apply pattern) replacing simple
border-radius: 6px - Fixed hardware icon text invisible — changed
invert(90%)→invert(100%)with double-cancellation on.x-grid-cell-innerchildren + transparent borders on<td>cells - Added 28px button height consistency with
:not()exclusions,.x-btn-wrapflex centering, icon-only button fix,.fa-desktoptranslateY (Issue #17 port) - Added custom checkbox/radio styling with SVG checkmark and animated radio dot
- Added dropdown/boundlist fixes:
border: none,outline: none,cursor: pointer(Issue #24 port) - Added menu item flexbox reordering for icon-left layout (Issue #24 port)
- Added column panel
max-width: nonefix (Issue #23 port) - Added segmented button radius consistency
- Added console/terminal, legend/chart, progress bar, date picker, tag edit, APT repo, markdown
.pmx-md,.pmx-hint, and usage bar styling - Added smooth transitions on grid rows, tree items, menus, boundlists, tabs, splitters, tooltips, progress bars
- Added Firefox scrollbar support (
scrollbar-width: thin) - Added keyboard focus outline removal,
cursor: pointeron interactive elements - Added
display: none !importantrespect for hidden dialog buttons - Added login dialog border cleanup
- 20 Themes — Issue #24:
- Fixed dropdown context menu icons aligned to the right instead of left — root cause: CSS targeted non-existent
.x-menu-item-link-defaultclass; changed selector to.x-menu-item-default > .x-menu-item-linkacross all affected themes - Fixed ugly dotted focus borders on boundlist dropdown items (e.g. Server View selector) — added
border: none !importantandoutline: none !importantto.x-boundlist-itemrules - Standardized boundlist item padding (
4px 8px) and cursor (pointer) across all themes for consistent dropdown appearance
- Fixed dropdown context menu icons aligned to the right instead of left — root cause: CSS targeted non-existent
- 9 Theme Families — Issue #17:
- Fixed icons misaligned in larger top-bar buttons (Create VM, Create CT, root@pam) across all UniFi-based themes except UniFi itself
- Ported 5 missing CSS blocks from the UniFi reference:
.x-btn-wrapflex centering,.x-btn-innerflex centering, dropdown arrow alignment, icon-only button fix, and.fa-desktoptranslateY compensation - Affected base themes: Catppuccin Mocha, Dracula, Tokyo Night, Nord Dark/Light, Solarized Dark/Light, Gruvbox Dark/Light (plus all generated variants)
- All Themes (22 files) — Issue #18:
- Fixed panel title text being clipped by removing
overflow: hidden !importantfrom.x-panelrules across all themes - Fixed Hardware tab text becoming invisible on SVG-icon rows (
pve-itype-icon-*) due tofilter: invert()— changed toinvert(100%)with double-cancellation on.x-grid-cell-innerchildren for perfect text brightness matching (7 dark themes + variants) - Fixed bright border artifacts on inverted Hardware icon rows — added
border-color: transparent !importanton affected<td>cells (7 dark themes + variants) - Fixed SCSI Controller icon (
fa-database) being incorrectly dimmed — removed.fa-database::beforefrom the broad icon color override selector in all 13 base themes - Fixed panel title/header text clipped by border-radius — added
overflow: visible !importanton.x-title-text,.x-title-text-default,.x-panel-header, and.x-panel-header-defaultacross all 11 non-UniFi base themes (root cause: global.x-border-box *border-radius interacting with ExtJS nativeoverflow: hidden)
- Fixed panel title text being clipped by removing
- 19 Themes — Issue #28:
- Fixed table hover/selection border-radius inconsistencies — removed
border-radius: var(--pm-radius-lg) !importantfrom.x-grid-item-overand.x-grid-item-selectedrules across all derivative themes (Catppuccin ×5, Dracula ×6, Nord ×2, Solarized ×2, Gruvbox ×2, Tokyo Night, Blue Slate) - Removed dedicated
border-radius: 8px !importantgrid rounding block from GitHub Dark - Root cause: UniFi's rounded hover/selection looked fine with its complex grid handling, but derivatives ported the radius without the supporting rules, causing visual artifacts (hover backgrounds bleeding into adjacent row borders)
- Fixed hardware grid icon rendering across all 17 dark themes — replaced
filter: invert(100%)+ counter-invert approach with CSSmask-imageSVG rendering for allpve-itype-icon-*(VM Hardware) andpmx-itype-icon-*(LXC Resources) grid cells; icons now render original SVG shapes in theme text color viabackground-color: currentColorwith proper spacing matching FontAwesome icons (18px width, 10px right margin) - Fixed LXC Resources tab darkened text on Memory and Cores rows — PVE 9.x uses
pmx-itype-icon-*classes (notpve-itype-icon-*) on LXC Resources grid cells; the Issue #18 fix only targetedpve-prefixed selectors - Icon types covered: cpu, memory, cdrom, pci, serial, die (VM Hardware via
/pve2/images/*.svg) + processor, memory (LXC Resources via../images/*.svg) - Fixed grid container border-radius clipping first/last row hover backgrounds — removed
border-radius: 12px !importantfrom.x-panel-default .x-gridand.x-container .x-grid-viewselectors (keeping only.pve-info-grid), and changed.x-grid, .x-grid-viewre-apply rule fromvar(--pm-radius-lg)to0across all 22 themes; root cause:overflow: hiddenon.x-gridcombined withborder-radiusclipped hover/selection backgrounds at rounded corners of first and last grid rows
- Fixed table hover/selection border-radius inconsistencies — removed
- All Themes (21 files) — Issue #30:
- Fixed toolbar buttons (Shutdown, Console, More, etc.) vibrating/changing width when dropdown menus open — added
padding: 4px 8px !importantto.x-btn-default-toolbar-small.x-btn.x-btn-menu-activeand.x-btn-default-toolbar-small.x-btn.x-btn-pressedrules across all themes; root cause: ExtJS default CSS increases padding from4px 8pxto4px 10pxon menu-active/pressed state, causing a 4px total width increase
- Fixed toolbar buttons (Shutdown, Console, More, etc.) vibrating/changing width when dropdown menus open — added
- All Themes (19 files) — Ported FontAwesome tool icon replacements from UniFi v5.86:
- Replaced sprite-based ExtJS tool icons (close, gear, refresh, collapse/expand, maximize/restore, zoom) with crisp FontAwesome glyphs
- Added hover, disabled, and inline FontAwesome states for consistent tool icon theming
- All Themes (21 files) — Fixed Documentation button height mismatch (Issue #15):
- Documentation/Help inline buttons (
proxmox-inline-button) were 24px while Create VM/CT/root buttons were 28px — added explicitheight: 28px,display: flex,align-items: center, and consistent padding to.proxmox-inline-buttonacross all themes
- Documentation/Help inline buttons (
- All Themes (19 files) — Issue #23:
- Fixed summary panel data values (Status, CPU, Memory, etc.) being invisible on node/VM/storage summary pages — removed
max-width: calc(50% - 10px)constraint on.x-panel.x-columnthat clipped ExtJS-calculated inner widths, restoring native stacked vertical layout
- Fixed summary panel data values (Status, CPU, Memory, etc.) being invisible on node/VM/storage summary pages — removed
- UniFi Theme — Issue #19, Issue #20:
- Fixed Maximum/Average segmented toggle buttons having incorrect rounded interior corners and hover border overlapping adjacent button
- Fixed hover glow effect on Max/Avg toggle being cut off due to missing padding/overflow
- Blue Slate Theme — Issue #26:
- Fixed inconsistent dotted borders between dropdown list elements
- UniFi Theme (v5.94) — Issue #11:
- Fixed PBS summary panel clipping after "Boot Mode" row — reduced widget padding (5px→3px) and added PBS-specific body padding rule
- Fixed CPU/RAM icons not loading on PBS — changed absolute paths (
/pve2/,/pwt/) to relative paths (../images/) for PVE+PBS compatibility - Fixed grid status icons (
.good/.warning/.critical) showing grey instead of green/yellow/red — added specificity-matched color overrides after the broad.facolor rule - Increased navigation tree icon-to-label gap (margin-left 20px→28px) for better readability
- 7 New Theme Collections — contributed by @W0CHP (PR #12):
- Gruvbox Dark — warm retro groove colors with yellow accent
- Gruvbox Light — light variant of Gruvbox palette
- Nord Dark — arctic, bluish-cold palette from Nord
- Nord Light — light variant of Nord palette
- Solarized Dark — dark variant of precision colors for machines
- Solarized Light — light variant of Solarized palette
- Tokyo Night — dark theme inspired by Tokyo's neon lights
- Installer (
install.sh) — contributed by @W0CHP:- Now prioritizes local script directory over
/opt/proxmorphcache for development workflows - Syncs themes and JS patches to
/opt/proxmorph/cache when installing from local source - Improved theme discovery for dynamic registration
- Now prioritizes local script directory over
- Light Themes (Nord/Gruvbox/Solarized Light):
- Removed dark mode icon inversions (
filter: invert(90%)) that caused icons to appear washed out - Removed logo inversion (
filter: invert(1) hue-rotate(180deg)) for proper display on light backgrounds - Removed brightness filters designed for dark backgrounds
- Removed dark mode icon inversions (
- Variable Prefixes (all new themes):
- Replaced inherited
--drac-*prefix with theme-specific prefixes (--grv-*,--nord-*,--sol-*,--tn-*)
- Replaced inherited
- Catppuccin Theme Collection (5 themes):
- Catppuccin Mocha — darkest flavor with mauve accent
- Catppuccin Macchiato — mid-dark flavor with blue-tinted base
- Catppuccin Frappé — lightest dark flavor with muted blue base
- Catppuccin Latte — official light variant with purple accent
- Catppuccin Mocha Teal — Mocha palette with teal accent
- Dracula Theme Collection (6 themes):
- Dracula — classic dark with purple accent
- Dracula Pink — pink accent variant
- Dracula Cyan — cyan accent variant
- Dracula Midnight — near-black backgrounds from Dracula UI spec
- Dracula Green — forest-tinted backgrounds with green accent
- Dracula Orange — warm-tinted backgrounds with orange accent
- Variant Generator (
generate-variants.ps1) for creating theme variants from templates - Screenshots for all 14 themes in README gallery
- UniFi Theme — Issue #9:
- Chart Layout (all new themes + GitHub Dark):
- Fixed RRD chart panels stacking in single column instead of 2-column grid
- Root cause:
padding: 0 !importanton.x-paneloverrode ExtJS inlinepadding: 5px, triggering a scrollbar-induced sub-pixel overflow feedback loop (2×790px panels > 1579.6px container) - Solution: Added
.x-panel.x-columnrule withmax-width: calc(50% - 10px),margin: 5px, andpadding: 5pxto prevent overflow - Removed
:not(.x-draw-container)from column border selector — chart panels (proxmoxRRDChart) have the.x-draw-containerclass and were incorrectly excluded from card styling
- UniFi Theme (v5.93) — Issue #1:
- Fixed task viewer/log viewer issues: content not visible on open, scrollbar not clickable, no auto-scroll to bottom
- Root cause:
overflow: visible !importantrule on.x-window .x-panel-bodycompletely broke native ExtJS scroll handling - Solution: Removed the problematic overflow rule entirely - the rule was added for "modal clipping" but caused more issues than it solved
- Increased scrollbar width from 8px to 12px for better clickability (was hard to click near window edge)
- UniFi Theme (v5.90):
- Fixed migrate icon missing in resource tree when VM/CT is being migrated
- Root cause:
.running::afterrule (green status dot) hascontent: "\f111" !importantwhich overrides.lock-migrate::aftercontent when both classes are present - Solution: Added more specific
.running.lock-migrate::afterselector that shows the migrate icon (paper-plane) with amber color - Also added rules for
.lock-backupand.lock-suspendingstates
- UniFi Theme (v5.89) — Issue #3:
- Fixed delete dialog warning text "Referenced disks will always be destroyed." being cut off
- Root cause: ExtJS box layout set narrow container width (236px) causing text wrap, then 0px height due to absolute positioning
- Solution: Added
white-space: nowrapto.pmx-hintto keep text on single line
- Installer — Issue #5:
- Fixed
seddelimiter issue during uninstall that caused "extra characters after command" error (PR #6 by @jiriteach) - Root cause: Marker text
<!-- /ProxMorph JS Patches -->contained/which conflicted with sed's default delimiter - Solution: Use
|as alternate delimiter and properly escape special regex characters
- Fixed
- UniFi Theme (v5.88) — Issue #4:
- Fixed "Finish Edit" checkmark button appearing on tags when not in edit mode
- Root cause:
.x-btn-default-small { display: flex !important }overrode Proxmox's inlinedisplay: none - Solution: Added rule to respect inline
display: nonestyles for dynamically hidden buttons - Fixed dark text on tags in edit mode (e.g., teal
testestestetag had black text) - Tags now always use light text (#F9FAFA) when in edit mode, regardless of
proxmox-tag-darkclassification - Fixed "More" button position in IPs section not visible (was positioned off-screen)
- Corrected transform value from -430px to -242px to align with current PVE 9.x layout
- Installer:
- Improved PVE version detection to report specific manager version (e.g., v9.1.4) instead of metapackage version (v9.1.0)
- Suppressed misleading "Themes directory not found" error during one-liner (
curl | bash) installations - Added robust guards for script path detection via
BASH_SOURCE
- Proxmox Backup Server (PBS) Support — Issue #2:
- The installer now officially supports PBS (v3.x/4.x)
- Auto-detects product (PVE or PBS) and adjusts paths automatically
- Native integration with PBS theme selector
- Persistence across PBS updates via apt hook
- JavaScript patches support for PBS template format (.hbs)
- Apt Hook:
- Fixed
[[: not foundsyntax error inpost-update.shby enforcing POSIX compliance (ensures compatibility withdash/sh)
- Fixed
- GitHub Dark Theme:
- Tree/Toolbox Highlights:
- Ported authentic UniFi highlight mechanism (using pseudo-elements) to fix "double background" and text artifacts
- Structural Alignment:
- Ported UniFi border structures (radius, padding, layout) to Windows, Panels, and Fieldsets while preserving GitHub colors
- Resource Tree:
- Removed default blue focus borders
- Aligned cell padding with UniFi standards
- Tree/Toolbox Highlights:
- UniFi Theme (v5.85):
- Fixed horizontal scrollbar in resource tree (1px overflow caused by CSS specificity conflict)
- Added scrollbar corner styling to eliminate white square artifact at corner intersection
- UniFi Theme (v5.87):
- Fixed "More" button position in IPs section of Summary panel for variable IP count
- Button now correctly positioned next to "IPs" label regardless of whether 1, 2, or more IPs are displayed
- Root cause: ExtJS dynamically sets button's
topbased on container height - Solution: Anchor to
top: 0then use consistent transform for fine positioning - Added overflow:visible to parent containers to prevent clipping
- UniFi Theme (v5.86):
- Replaced sprite-based ExtJS tool icons with crisp FontAwesome icons:
- Zoom out (undo zoom), collapse/expand panel chevrons
- Maximize/restore window icons
- Gear (settings) and refresh icons
- Distinct icons for collapse vs expand states (chevron direction indicates action)
- Added styling for generic inline FontAwesome tool icons (e.g., "Reset form data" button)
- Fixed disabled tool icon mask overlay (transparent background, non-blocking pointer events)
- Replaced sprite-based ExtJS tool icons with crisp FontAwesome icons:
- Chart Hover Dots:
- Added subtle white border (1px) to chart data point dots when hovered
- Improves visibility of hover state against colored fills
- JavaScript Chart Patching:
- Implemented
unifi-charts.jsto dynamically patch Proxmox RRD charts - Adds true UniFi color palette validation (Green/Blue) to charts
- Solves "Network Traffic" chart blending issues by layering areas correctly
- Implemented
- Installation:
install.shnow installs JavaScript patches to/usr/share/pve-manager/js/proxmorph/- persistence across PVE updates via APT hook (post-update re-patching)
- UniFi Theme:
- Fixed "More" button alignment in guest summary panel
- Corrected width and layout of confirmation dialogs (message boxes)
- Fixed window header close icon positioning
- Fixed checkbox label visibility and alignment in dialogs
- Column panel gap in dialog forms (Edit Network Device, etc.)
- Added visible 25px gap between left and right form columns
- Removed width override that was forcing columns to full width
- Removed padding reset that was eliminating the gap
- Resource grid labels (Memory, Cores) no longer appear dark gray
- Root cause:
filter: invert(90%)on TD cells was inverting both icons AND text - Solution: Isolated filter to icons via
::beforepseudo-elements
- Root cause:
- FontAwesome icons in resource grid (Swap, Root Disk) now use bright color (#DEE0E3)
- BREAKING: Removed SASS build system in favor of direct CSS patching
- Theme creation now uses PowerShell scripts that patch the original Proxmox CSS
- GitHub Dark theme completely rewritten using official GitHub CSS variables
generate_github_dark.ps1- PowerShell script to generate GitHub Dark themethemes/original-proxmox-dark.css- Base Proxmox Dark CSS for patching
- SASS source files (
sass/directory) build.sh- No longer needed- Emerald Night theme (deprecated)
- LXC/QEMU container icons in treelist navigation now have transparent background
- Grid table headers no longer clipped on panels with title bars (VNets, etc.)
- Summary page widget panels (Health, Guests, Resources) now have rounded borders
- Modal dialog open animations with background blur effect
- Custom FontAwesome tree expander arrows (chevrons)
- Custom checkboxes and radio buttons (UniFi-style)
- FontAwesome close button icons (replacing pixelated sprites)
- Smooth scrolling throughout the interface
- Resource tree tags now match search table tag height (19px)
- Grid table cells now vertically center text
- Treelist items use consistent 4px border-radius
- Reduced window shadow intensity for cleaner look
- Improved status panel padding alignment
- Login modal form fields now use full width
- Login modal footer uses flexbox for proper spacing
- Hidden ExtJS shadow element causing hard shadow edges
- Boundlist dropdown clipping issues
- Icon-only button width issues
- Segmented button text visibility on pressed state
- Modal dialog content being cut off
- Tab focus border removed for cleaner look
- Bulk Actions dropdown button styling
- Floating grid picker border-radius
- Initial release of ProxMorph theme collection
- UniFi-inspired dark theme for Proxmox VE 8.x/9.x
- Blue Slate minimal baseline theme
- Automatic integration with Proxmox Color Theme selector
- Install/uninstall script with backup functionality