Releases: IT-BAER/proxmorph
Releases · IT-BAER/proxmorph
Release list
v2.8.3
Fixed
- PDM UniFi OLED rendered as plain UniFi dark.
themes/pdm/theme-unifi-oled.cssdescribed the OLED palette in its header, but everyrgb(...)declaration in it was identical tothemes/pdm/theme-unifi.css, so pickingPM: Unifi Oledchanged nothing on screen. The OLED substitutions had been written as hex values while PDM keeps its operative palette inrgb(), so none of them landed on a color token. PDM now gets true-black base surfaces, a grayscale elevated ramp, and the#1e85ffaccent. Reported and fixed by @SnowyyCodes (#55). installreinstalled stale themes.bash <(curl ... install.sh) install, the README one-liner, runs from process substitution, so the installer could not see athemes/directory next to itself and fell back to the cached copy in/opt/proxmorph/themesleft by the previously installed version. On a machine that already had ProxMorph, that reinstalled the old CSS: the 2.8.2 nav-subsection fix (#54) and the UniFi OLED theme added in 2.8.0 never reached anyone who updated withinstallinstead ofupdate.installnow fetches the release when there are no local theme files.- Reported version could not be trusted. The installer stamped
/opt/proxmorph/.versionwith the version of the script being run rather than the version of the themes it copied, sostatusshowedv2.8.2on a host still running 2.7-era CSS. It now keeps the version recorded by the download and only labels installs made from a local checkout.
Changed
- UniFi OLED themes are generated, not hand-edited.
tools/gen-oled.shderivesthemes/theme-unifi-oled.cssandthemes/pdm/theme-unifi-oled.cssfrom their UniFi bases through per-product substitution tables (tools/oled-palette-pve.tsv,tools/oled-palette-pdm.tsv); PVE/PBS and PDM need separate tables because PDM stores its palette inrgb()and PVE/PBS in hex.bash tools/gen-oled.sh --checkandbash test/oled_sync.test.shfail when a base changes without its OLED variant being regenerated, or when an OLED theme is a straight copy of its base. Developer tooling only; not shipped in the release archive.
v2.8.2
Fixed
- All themes except the UniFi family — Expanding a nav section in an LXC or VM (Firewall, and any other section with children) no longer makes its subsections invisible. The selected item's on-accent text color was set with a descendant selector,
.x-treelist-item-selected .x-treelist-item-text, but ExtJS nests child items inside the selected<li>, so children were painted the same dark color as the panel background. Scoped to the item's own row,.x-treelist-item-selected > .x-treelist-row .x-treelist-item-text. Affects LXC and VM alike. Issue #54
v2.8.1
Added
- 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.
Security
- The release download path is no longer trust-on-first-download: artifacts are integrity-checked against a published manifest before extraction as root.
v2.8.0
Added
- 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.
v2.7.3
Fixed
- 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
v2.7.2
Fixed
- 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.
v2.7.1
Fixed
- 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 (
v2.7.0
Added
- 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
v2.6.0
Added
- 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
Changed
- 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
Fixed
- 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
v2.5.1
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
Fixed
- 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