v2.5.0
Fixes
Every recorder restart leaked a process and a file descriptor (#129). gpu-screen-recorder forks a privileged gsr-kms-server helper, and Vice only ever signalled GSR itself. The helper survived, kept the recorder's stderr pipe open, and the daemon leaked one process and one fd per restart until it ran out of file descriptors and quietly stopped clipping. GSR now runs in its own process group and is reaped as one, so the counts stay flat across restarts. Session recording had the same bug and got the same fix. Thanks to philderks for the measurements and the reproduction.
A dead recorder now says why, and stops retrying forever (#129). GSR's output was logged at debug only, so a fatal encoder error never showed up at the default level while the UI still claimed to be recording. The watchdog now reports the recorder's last output when it dies unexpectedly. Repeated deaths also back off, doubling the wait from the third one up to 5 minutes, instead of restarting a permanently broken recorder every few seconds.
The notification sound is adjustable (#127). Settings > Audio > Notification volume covers the clip-saved ping and the session start, stop and highlight tones. Slide it to 0 and it reads Off, which plays nothing at all rather than playing silence. Also available as notifications.sound_volume in config.toml.
The UI no longer burns a CPU core when the engine falls back to software. QtWebEngine can drop to software compositing silently, with no error and no black window, and the glass blurs and drifting background then cost a whole core on an idle window. Vice now times how fast frames actually arrive and turns the expensive effects down when they cannot keep up. Settings > Appearance > Visual effects lets you force Full or Reduced instead. On an RTX 4060 at 3440x1440 this took an idle window from 94% of a core to nothing.
yay -Syu vice-clipper