Skip to content

Releases: SounDoer/PLVS

Dev build 0.4.0-dev.7bd16c1

20 Jun 15:27

Choose a tag to compare

Pre-release

Unofficial development build — for testing only, not an official release.

This Pre-release is rolling: every dev build overwrites it, so it
always holds the latest build only.

v0.4.0

18 Jun 12:23

Choose a tag to compare

Added

  • Loudness: replace reference line with over-reference gradient on M/ST curves
  • UI: add Focus View controls
  • Layout: lower panel drag-resize minimums to reduce stuck feeling
  • Release: auto-append bilingual install guide to GitHub Release notes

Changed

  • UI: unify Devices toolbar picker with other popover buttons

Fixed

  • Settings: allow free editing of the loudness reference input
  • UI: keep Focus View controls visible during popovers
  • UI: allow Focus View frameless window controls

安装

Windows

  • 安装版:下载 PLVS_0.4.0_x64-setup.exe,双击运行。
  • 便携版:下载 PLVS-v0.4.0-x64-portable.exe,直接运行,无需安装。
  • 首次运行时 SmartScreen 可能拦截(未代码签名),点击「更多信息」→「仍要运行」。

macOS (Apple Silicon)

  • 下载 PLVS-v0.4.0-aarch64.dmg,打开后将 PLVS 拖到「应用程序」。
  • 首次打开若被 Gatekeeper 拦截(未签名),在终端执行:
xattr -cr /Applications/PLVS.app

Installation

Windows

  • Installer: Download PLVS_0.4.0_x64-setup.exe and double-click to run.
  • Portable: Download PLVS-v0.4.0-x64-portable.exe and run directly — no installation required.
  • SmartScreen may warn on first launch (unsigned build). Click "More info" → "Run anyway".

macOS (Apple Silicon)

  • Download PLVS-v0.4.0-aarch64.dmg, open it and drag PLVS to Applications.
  • If Gatekeeper blocks the app on first open (unsigned build), run in Terminal:
xattr -cr /Applications/PLVS.app

v0.3.7

18 Jun 07:40

Choose a tag to compare

Added

  • Presets: settings-managed view snapshots
  • Presets: toolbar popover for preset management (moved out of Settings)

Changed

  • Presets: remove Presets block from SettingsPanel (moved to toolbar)
  • UI: update icon tooltips

Fixed

  • Presets: clarify rename and active row layout
  • UI: restore missing PresetsPopoverContent import in App.jsx
  • UI: improve presets popover accessibility
  • Engine: reduce retained history memory

v0.3.6

17 Jun 09:32

Choose a tag to compare

Added

  • Window: persist window geometry on move/resize
  • Window: inject persisted state pre-paint and restore window bounds
  • Window: add window-bounds clamp helper with tests
  • Persistence: select plugin-store backend under Tauri
  • Persistence: add sync-cache plugin-store backend
  • Persistence: clean up legacy storage keys on boot
  • Persistence: add one-shot legacy-key cleanup helper
  • Persistence: add settings/workspace domain stores and exportAll/resetAll
  • Persistence: add createDomainStore factory
  • Persistence: add localStorage backend

Changed

  • Persistence: single-source panelControls in workspace state
  • Persistence: move theme/referenceLufs/channelLabelOverrides to settings domain
  • Persistence: move closeAction/windowPinned to settings domain
  • Workspace: remove focusId from the state model
  • Layout: remove vestigial ratio layout (PanelSet, useLayoutDrag)

Fixed

  • Engine: bound UI frame backlog with ack-based backpressure
  • Panel: stabilize updatePanelControls to stop render loop on Start
  • Window: restore bounds in physical pixels to stop HiDPI growth
  • Window: store windowBounds under its own Rust-owned key

v0.3.5

16 Jun 13:42

Choose a tag to compare

Added

  • Waveform: sub-block precision with pixel-decimated envelope rendering
  • Waveform: column-indexed hover dBFS with window-based time label
  • Waveform: absolute-anchored pixel-width decimation for scroll stability
  • Spectrogram: absolute-anchored column-range mapping for anti-flicker
  • Loudness: drag-reorder and reset for stats popover
  • Loudness: configurable stats metric ordering via panel controls

Changed

  • Waveform: grow envelope from the right like loudness history
  • Spectrogram: emit exactly W columns (1:1 pixel) to fully anchor scroll
  • Workspace: make all panel bodies non-selectable at the leaf shell

Fixed

  • Vectorscope: hide center dot until capture starts
  • Loudness: restore m max / st max / dialogue stats in snapshot mode
  • Loudness: prevent text selection while dragging stat rows
  • Spectrogram: derive bandCount from newest snap, not oldest visible
  • Shell: make app chrome non-selectable at the shell inner container

v0.3.4

15 Jun 13:27

Choose a tag to compare

Added

  • Spectrum: M/S + L/R channel overlay with dual-curve display
  • Spectrum: peak-hold filled-area rendering (replaces dashed line)
  • Spectrum: peak-hold toggle chip in panel header
  • Spectrum: combined / L/R / M/S view toggle in panel header
  • Spectrum: color-coded hover dB rows in overlay mode
  • Spectrum: secondary curve legend and 2-row hover tooltip

Fixed

  • Timeline: stabilize initial history viewport
  • Workspace: show panel header chip in fullscreen overlay
  • CI: resolve clippy errors on Windows

v0.3.3

15 Jun 05:05

Choose a tag to compare

Added

  • Spectrum: multi-resolution PSD bank with crossfaded crossovers
  • Spectrum: single-size STFT analyzer producing per-bin PSD
  • Spectrum: log-frequency render grid
  • Spectrum: drive display from multi-resolution bank with 4.5 dB/oct slope
  • Spectrum: calibrate display offset to 0 dBFS reference
  • Spectrum: timed peak-hold default (1.5s hold, 8 dB/s fall)
  • Spectrum: show note name in spectrum and spectrogram hover

Fixed

  • Audio: reset meters on format restart
  • Loudness: tighten value-to-unit gap in stats rows
  • Spectrogram: reuse live-frame grid centers for visual ticks
  • Spectrum: remove octave smoothing + level fudge for honest, consistent dB
  • Spectrum: reference display so full-scale sine reads ~0 dBFS
  • Spectrum: pivot display slope at 1 kHz to avoid inflating the curve

v0.3.2

13 Jun 14:07

Choose a tag to compare

Fixed

  • Prevent split resize overflow in layout
  • Remove refs lint warnings in hooks
  • Unify max stats on frame payload in loudness panel
  • Reset Silero VAD state on dialogue gating toggle
  • Portal hover tips outside scroll containers for better UX
  • Reduce stats value size in loudness panel

Changed

  • Documentation updates for dialogue-gated loudness feature and acknowledgements

v0.3.1

13 Jun 11:40

Choose a tag to compare

Added

  • Dialogue-gated loudness metering with VAD speech sidechain
  • Four dialogue metric rows: Coverage, Range, Avg. Offset, Active Now (with live speaking indicator)
  • Hover hints on loudness stats panel rows and picker options
  • Unified stats label/unit/hint registry as single source
  • HoverTip component for consistent tooltips across the app

Changed

  • Consolidated plvs.ui persistence into one adapter
  • Extracted two-timeline reconciliation into resolveSnapshot
  • Unified displayed text casing across the app

Fixed

  • Clipped descenders and tight row gap in loudness stats
  • Idle channel labels unified to L/R across all panels
  • Stats/Layers popover sized to content so labels don't wrap
  • Dialogue rows placed after Avg. Dynamics, not mid-list
  • Empty placeholder unified to '-' for dialogue coverage/offset
  • Build compatibility with tauri-utils (pinned time crate)

Removed

  • Dialogue singing-counts-as-speech footnote hint
  • Unwired meter-health and footnote dead code

v0.3.0

12 Jun 05:16

Choose a tag to compare

Added

  • Auto channel layout detection with loudness weights for 5.0, 5.1, 7.0, 7.1 surround formats
  • Channel label overrides in Settings for custom channel naming
  • Refreshable update checks with manual refresh button
  • Global keyboard shortcut for Clear action with customizable combo
  • Keyboard shortcuts section in Settings
  • ShortcutCapture key-recording control for recording custom shortcuts

Changed

  • Removed manual Channel layout setting (now auto-detected from audio stream)
  • Settings panel layout improvements (labels and controls on same line for dropdowns)
  • Removed Settings title from panel header for cleaner UI

Fixed

  • Channel labels for quad/LCR/5.0 layouts in auto mode
  • Global hotkey now freed while recording a new combo
  • Clear combos now reject collisions with in-app shortcuts