Skip to content

Releases: IT-BAER/proxmorph

v2.8.3

Choose a tag to compare

@github-actions github-actions released this 20 Aug 06:54

Fixed

  • PDM UniFi OLED rendered as plain UniFi dark. themes/pdm/theme-unifi-oled.css described the OLED palette in its header, but every rgb(...) declaration in it was identical to themes/pdm/theme-unifi.css, so picking PM: Unifi Oled changed nothing on screen. The OLED substitutions had been written as hex values while PDM keeps its operative palette in rgb(), so none of them landed on a color token. PDM now gets true-black base surfaces, a grayscale elevated ramp, and the #1e85ff accent. Reported and fixed by @SnowyyCodes (#55).
  • install reinstalled stale themes. bash <(curl ... install.sh) install, the README one-liner, runs from process substitution, so the installer could not see a themes/ directory next to itself and fell back to the cached copy in /opt/proxmorph/themes left 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 with install instead of update. install now fetches the release when there are no local theme files.
  • Reported version could not be trusted. The installer stamped /opt/proxmorph/.version with the version of the script being run rather than the version of the themes it copied, so status showed v2.8.2 on 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.sh derives themes/theme-unifi-oled.css and themes/pdm/theme-unifi-oled.css from 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 in rgb() and PVE/PBS in hex. bash tools/gen-oled.sh --check and bash test/oled_sync.test.sh fail 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

Choose a tag to compare

@github-actions github-actions released this 03 Aug 18:19

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

Choose a tag to compare

@github-actions github-actions released this 19 Jul 17:42

Added

  • Release checksums and provenance: every release now publishes a SHA256SUMS manifest and a GitHub build-provenance attestation. The installer verifies the downloaded tarball against SHA256SUMS and refuses to install on a mismatch or when the manifest is missing (fail closed). Verify a release yourself with sha256sum -c and gh attestation verify before 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 mirrored SHA256SUMS.
  • 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

Choose a tag to compare

@github-actions github-actions released this 18 Jul 20:12

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 #000000 backgrounds and a tuned blue accent, built for OLED panels. PVE/PBS + PDM, includes a chart patcher.

v2.7.3

Choose a tag to compare

@github-actions github-actions released this 12 Jun 08:24

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 inline overflow: auto on 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 !important on .x-tab was 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-accent was set to var(--ctp-base) (#eff1f5, near-white), which is invisible on the light Latte background. Changed to #ffffff for proper contrast against vivid Latte accent fills (mauve, red, yellow). Issue #51

v2.7.2

Choose a tag to compare

@github-actions github-actions released this 16 Apr 07:18

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.original backup when available, falling back to sed marker removal only if no backup exists.

v2.7.1

Choose a tag to compare

@github-actions github-actions released this 05 Apr 16:25

Fixed

  • APT Hook — Fixed broken heredoc escaping in post-update.sh that caused the Nodes.pm sensor patch to be injected as a single malformed line, breaking Perl syntax and preventing pveproxy from starting after a PVE update. Issue #45
    • Added Perl syntax check (perl -c) after patching with automatic rollback if validation fails

v2.7.0

Choose a tag to compare

@github-actions github-actions released this 01 Apr 18:58

Added

  • Sensor Selector — Interactive per-sensor filtering for hardware monitoring. Issue #44
    • enumerate_sensors() discovers all available sensors (CPU, NVMe, HDD, Fan) via sensors -j
    • configure_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-sensors menu gains option 4) Configure sensor selection
    • sensors configure CLI 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 sensorsFilter from 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

v2.6.0

Choose a tag to compare

@github-actions github-actions released this 16 Mar 10:44

Added

  • Proxmox Datacenter Manager (PDM) Support — Full theme support for PDM 1.x:
    • New install.sh product detection: auto-detects PDM alongside PVE and PBS
    • 22 PDM-specific CSS override themes injected as <link> tags into index.hbs, activated via JavaScript based on localStorage selection
    • 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> in index.hbs activates 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.hbs block; restores backup

Changed

  • Installer (install.sh):
    • Now supports PVE 8.x/9.x, PBS 3.x/4.x, and PDM 1.x
    • manage-sensors command now shows interactive menu instead of requiring subcommand
    • verify command (option 7) added to diagnose installation issues
    • pveproxy restart 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 now filter: none as required by a light theme.
  • Sensors: Perl taint mode error on node status API — Issue #38:
    • The Nodes.pm patch now sets local $ENV{PATH} = '/usr/bin:/bin'; before all backtick (sensors -j, upsc) calls, satisfying Perl's -T taint 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 the upsc command — prevents an additional taint violation in the UPS data collection path
    • Affected users: anyone running ProxMorph sensors on a Proxmox host where Nodes.pm still has the old patch; fix requires re-running install.sh (or install.sh manage-sensors disable && install.sh manage-sensors enable) to re-apply the corrected patch
  • Sensors: sed regex escaping for UPS untaint — Issue #38:
    • GNU sed's i\ command drops backslash before unknown escapes (\ww)
    • 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 \w output
  • Theme visibility after install — Issue #40:
    • Added verify command (option 7) to diagnose installation issues (checks theme files, theme_map entries, JS patches, index template)
    • Changed pveproxy restart 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 sed delimiter in patch_theme_map to use | instead of / for consistency with uninstall path handling

v2.5.1

Choose a tag to compare

@github-actions github-actions released this 05 Mar 12:57

Added

  • Cluster-aware sensor deployment — Installer now detects PVE cluster nodes and deploys the sensor API patch to all remote nodes automatically
    • Uses pvecm nodes to discover cluster members, scp to copy patched Nodes.pm, and restarts pveproxy on each node
    • Version check ensures local and remote PVE versions match before deploying
    • sensors disable cleanly removes the patch from all cluster nodes
    • Prompts before deploying to remote nodes; can be skipped to run install.sh on each node individually

Fixed

  • System Log scroll to bottom — Issue #36:
    • Removed scroll-behavior: smooth !important from .x-panel-body-default in 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
  • 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-default height 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