Add overflow handling to the Name column cell and badges container
to prevent PVE/Agent/cluster badges from overflowing into adjacent
columns on narrower xl screens.
Related to #1141
- Add MatchesDiskExclude() to check both device path and mountpoint
- Add MatchesDeviceExclude() for device-only matching
- Update collectDisks to check device in addition to mountpoint
- Update collectDiskIO to respect disk exclusions
- Patterns like /dev/sda, sda, or /mnt/backup all work now
Related to #1142
Switch from mattn/go-sqlite3 (CGO) to modernc.org/sqlite (pure Go)
for auth, audit, and notification queue storage. This enables SQLite
functionality on arm64 Docker images which are built with CGO_ENABLED=0.
Related to #1140
- ConfiguredNodeTables.tsx: remove unused hostAgent variable and
findMatchingHostAgent function
- NodeModal.tsx: remove unused createMemo import and fix undefined
temperatureToggleDisabled reference by using inline prop check
Update docs to reflect the simplified temperature monitoring architecture:
- Remove references to pulse-sensor-proxy throughout
- Update TEMPERATURE_MONITORING.md to focus on unified agent approach
- Update CONFIGURATION.md, DEPLOYMENT_MODELS.md, FAQ.md
- Remove SECURITY_CHANGELOG.md (proxy-specific security notes)
- Clarify current recommended setup in various guides
Remove proxy-related temperature code paths:
- temperature.go: remove proxy client integration and fallback logic
- config.go: remove SensorProxyEnabled and related config fields
- monitor.go: remove proxy client initialization and state
Temperature monitoring now relies solely on the unified agent approach.
The sensor proxy approach for temperature monitoring has been superseded
by the unified agent architecture where host agents report temperature
data directly. This removes:
- cmd/pulse-sensor-proxy/ - standalone proxy daemon
- internal/tempproxy/ - client library
- internal/api/*temperature_proxy* - API handlers and tests
- internal/api/sensor_proxy_gate* - feature gate
- internal/monitoring/*proxy_test* - proxy-specific tests
- scripts/*sensor-proxy* - installation and management scripts
- security/apparmor/, security/seccomp/ - proxy security profiles
Temperature monitoring remains available via the unified agent approach.
- Fix Docker update button staying disabled when settings API fails (#1114)
- Remove AI banner warning on every page load when AI is intentionally disabled (#1134)
- Use auto-precision for formatBytes in Proxmox tab display (#1116)
- Add PendingUpdates and PendingUpdatesCheckedAt fields to Node model
- Add GetNodePendingUpdates method to Proxmox client (calls /nodes/{node}/apt/update)
- Add 30-minute polling cache to avoid excessive API calls
- Add pendingUpdates to frontend Node type
- Add color-coded badge in NodeSummaryTable (yellow: 1-9, orange: 10+)
- Update test stubs for interface compliance
Requires Sys.Audit permission on Proxmox API token to read apt updates.
Tooltip was being cut off when rows were near the top of the screen.
Now detects available space and positions tooltip below when there
isn't enough room above.
Full-width mode now syncs to server like dark mode, ensuring the setting
persists across Proxmox helper script updates. Previously only used
localStorage which gets cleared on some update methods.
Finds commits referencing GitHub issues (#xxx) and verifies the
fix is still present in the final diff before including it.
This prevents mentioning features/fixes that were later reverted.
The previous approach used commit messages which could include changes
that were later reverted. Now the script analyzes actual git diffs
between versions to identify user-facing changes.
Extracts diffs from:
- API handlers (new endpoints)
- Frontend components (new features)
- Config options (new settings)
- Alerts/notifications (webhook changes)
- Agent code (host/docker features)
- Install scripts
Passes structured diffs to LLM with instructions to write plain,
factual release notes without marketing language.
- Make URL validation case-insensitive to accept Http://, HTTP://, etc.
- Replace nohup with shell backgrounding for QNAP platform compatibility
- Add disown for SIGHUP protection where available
fix: AI chat mobile responsiveness. Related to #1131
- Use responsive width (full on mobile, 480px on larger screens)
- Add flex-wrap to header for better mobile layout
The saveEdit function was not preserving backup and snapshot fields from
existing overrides when saving threshold changes. This caused custom
backup age thresholds to reset to 0 after any edit.
Changes:
- Added existingOverrideCheck lookup before creating new override
- Include backup/snapshot in hasStateOnlyOverride check to prevent
accidental removal of backup-only overrides
- Preserve both fields when creating/updating overrides
DSM data scrubbing causes RAID arrays to enter a 'check' state with
RebuildPercent > 0, which was incorrectly triggering rebuild warnings.
Now distinguishes between:
- 'check' state: scheduled data scrubbing (no alert)
- 'recover'/'resync' state: actual rebuild (warning alert)
- 'clean' state with RebuildPercent: scrub in progress (no alert)
SolidJS requires reactive comparisons inside For loops to use getter
functions. Changed isActive from a static value to a getter function
in both SettingsSectionNav.tsx and Settings.tsx mobile tabs.
- AI Cleanup: Remove legacy AI Chat components and context indicators
- Table Layouts: Implement fixed table layout for Dashboard and Docker tables
- Styles: Fix column shifting and add explicit width support
- Add comprehensive tests for internal/api/config_handlers.go (Phases 1-3)
- Improve test coverage for AI tools, chat service, and session management
- Enhance alert and notification tests (ResolvedAlert, Webhook)
- Add frontend unit tests for utils (searchHistory, tagColors, temperature, url)
- Add proximity client API tests
- Constrain count columns (Temp, VMs, CTs, Storage, Disks, Backups) to fixed widths
- Make CPU/Memory/Disk columns flexible with min-width 140px and max-width 180px
- Fix Uptime column to 80px to give more space to Node column
- Use table-layout: fixed for consistent column sizing
This prevents the count columns from expanding unnecessarily and
gives more space to the Node name and metric progress bars.
The UnifiedNodeSelector is the main dashboard content that users want
to display on wall-mounted screens. Only the filter/search UI should
be hidden in kiosk mode, not the actual data tables.
- Hide header branding (logo/title) in kiosk mode
- Hide navigation tabs in kiosk mode
- Hide footer in kiosk mode
- Make Dashboard/Docker/Hosts filter panels reactive to kiosk toggle
- Hide UnifiedNodeSelector in kiosk mode on Dashboard
The kiosk toggle button now properly hides all chrome for clean
dashboard display on wall-mounted screens. Related to #917