github countgitmick/FreeTubePlusTabs v0.24.4

latest releases: v0.24.6, v0.24.5
one month ago

What changed

Linux startup flags

  • Adds VA-API command-line switches (AcceleratedVideoDecodeLinuxGL,AcceleratedVideoEncoder,VaapiIgnoreDriverChecks) and enable-gpu-rasterization at startup on Linux. Previously these were only set by the Nix flake's wrapper, so portable and Flatpak builds ran without them. Whether hardware decode actually engages depends on the host having a working libva + driver stack — verify via chrome://gpu.
  • Adds --ozone-platform-hint=auto on Linux when no explicit ozone-platform switch was passed, so Chromium can pick Wayland or X11 from WAYLAND_DISPLAY instead of relying on the launcher.
  • Logs a warning if powerSaveBlocker.isStarted() returns false after start(). Some Wayland compositors no-op the request silently.

MediaSession / MPRIS

  • Installs play, pause, seekbackward, seekforward, seekto, and stop action handlers on the video element in the Shaka player wrapper.
  • Calls navigator.mediaSession.setPositionState on every timeupdate (skipped for live streams where duration is Infinity).
  • Cleans these handlers up in onBeforeUnmount.
  • Pre-existing metadata, playbackState, and previoustrack/nexttrack integration is unchanged.

Tab system

  • Idle suspension now unmounts the inner component (v-if) instead of toggling display: none (v-show). The previous behavior left Shaka, watchers, and timers running indefinitely. The route is preserved in Vuex, so reactivating an idle tab triggers a fresh remount and reload.
  • Normal tab switching (between non-idle tabs) still uses v-show to preserve component state.
  • resolvedComponentCache in TabContent.vue is now an LRU bounded at 50 entries; previously it grew without eviction.
  • persistTabs retry logic replaced: persistRetried boolean → persistAttemptCount + exponential backoff schedule (200ms, 500ms, 1000ms, give up after 3). On giveup, surfaces a toast via helpers/utils.showToast.
  • persistTabsImmediate is now async and awaits the upsert so beforeunload callers can wait on it.

Tab bar

  • Wheel handler in FtTabBar.vue now coalesces deltaY into a single requestAnimationFrame callback per frame instead of mutating scrollLeft once per wheel tick.

Security / IPC

  • dbTabs IPC: preload now checks the action against an ALLOWED_TAB_DB_ACTIONS set before invoking. Defense in depth — the main handler already had a switch-default reject. Payload shape normalized to {action, data} to match the other db handlers.
  • setPermissionCheckHandler now rejects when details.embeddingOrigin is set and is not a FreeTube URL.
  • setPermissionRequestHandler now rejects when details.requestingUrl is set and is not a FreeTube URL.

Flatpak manifest

  • Adds explicit --talk-name=org.freedesktop.portal.{Desktop,OpenURI,FileChooser,Settings} to finish-args.
  • Inline comment block describing the steps needed to migrate from "unpack release zip" to "build from source" using flatpak-node-generator. flake.nix is the working build reference.

Don't miss a new FreeTubePlusTabs release

NewReleases is sending notifications on new releases.