Skip to content

2.8.1 – Theming, Collapsible UI, and the Compression Filter System

Latest

Choose a tag to compare

@captincrum captincrum released this 15 Jun 22:30
· 2 commits to main since this release

This release is a front-end and experience overhaul. Every backend processing
module (scan, repair, quality, smart-compression, logging) is unchanged and
fully compatible with v2.7 logs and config.json — so upgrading is drop-in.

Highlights: a 6-theme switcher built on a full CSS design-token refactor,
a collapsible card layout for every panel, the Compression Review filter &
cap system now in the shipped build, tip-bubble help text throughout, and a
meaningfully larger test suite.


Theming (app.js / index.html / style.css)

  • New theme switcher in the header with live colour swatches — no reload required
  • Six built-in themes: True black, Warm slate, Sage, Slate grey, Warm white, and Light
  • applyTheme and initThemeSwitcher set data-theme on the document root and persist the choice
  • Entire colour palette refactored into CSS custom properties (design tokens) — backgrounds, borders, text, accents, and translucent overlays are now single-source variables, which is what makes instant theme switching possible
  • Every theme is defined as a small token override block, so new themes are trivial to add

Collapsible Card UI (app.js / index.html / style.css)

  • Settings, Operation mode, Smart compression, Options, Filter, Summary, Console, and Live log panels all collapse and expand
  • initCollapsibles, paneToggle, and toggle drive the chevron animation and open/closed state
  • Live collapse summaries show key values while a card is closed (e.g. selected paths, active mode, filter status) via updateSummaries
  • Settings summary is mode-aware — it shows the library root for scan/compress modes and both paths for scan-&-repair, and falls back to "No path set" cleanly
  • Log pane starts expanded and collapses from its header; Human/Machine pills remain reachable

Compression Filter & Cap System (app.js / index.html / style.css)

  • Filter panel inside the review modal, styled to match the Options and Summary cards
  • Confidence filter (High / Medium / Low), auto-gated with a tooltip when the probe data has no variance to filter on
  • Resolution filter (≤720p / 1080p / ≥4K), bucketed by video width
  • Minimum savings (MB) and minimum savings (%) thresholds with themed number steppers
  • Cap modes: No limit / Top savers / Total saved / Size after — ranked biggest-saver-first after filtering
  • All predicate filters combine with AND logic; live updates with a 250 ms debounce on typed entry
  • Two resets: Reset Filters (thresholds and caps) and Reset Checkbox (manual selections)
  • Functions added: applyCompressionFilter, initCompressionFilter, _filterLeafMatches, _readFilterConfig, _applyFilterConfig, _onCapModeChange, _readFilterNum, _stepFilterNum, _clampFilterBox, _anyFilterActive, _debounceFilter, updateFilterSummary, resetCompressionFilter, resetCompressionCheckboxes

Selection Persistence (app.js)

  • Manual picks are sticky_recordManual records only deviations from the verdict defaults and survives filter and cap changes
  • The active filter configuration is saved and restored on modal reopen via _readFilterConfig / _applyFilterConfig
  • Save/load format stays server-agnostic — no server changes required

Help Text & Iconography (index.html / style.css)

  • Static descriptions replaced with tip bubbles that update with the relevant control (workers, scan mode, GPU status, CRF, probe method)
  • Material Symbols icon font wired in for crisp UI glyphs
  • New resume-scroll button to jump the live log back to the latest line

Server (server.ps1)

  • The PowerShell console window is now actually hidden on launch via a Win32 ShowWindow (SW_HIDE) call — in v2.7 this was commented out, so a bare console flashed up
  • Extensive inline documentation and section cleanup throughout the request loop
  • No endpoint changes — the HTTP contract is identical to v2.7

Tests (Run-Tests.ps1 / ui.spec.js)

  • PowerShell unit tests: 175 across 18 suites (up from 158)
  • Playwright UI tests: 188 across 22 describe blocks (up from 160 across 18)
  • New UI coverage for the theme switcher, collapsible panes, the mode-aware settings summary, and the full filter/cap system (debounce, data-gating, themed steppers, cap modes, sticky manual picks)

Upgrade notes: v2.8.1 reads existing v2.7 config.json and log files without
migration. No breaking changes.