Repository navigation
Releases: eliottness/VacuumStream
Release list
VacuumStream v0.2.1
VacuumStream 0.2.1
A packaging release. The application behaves exactly like 0.2.0; what changed is the metadata and
the build inputs that a store needs in order to build VacuumStream from source.
Store metadata
- The AppStream metadata now carries screenshots, brand colours, an age rating, device support
hints and per-release notes, so software centres can present the application properly. - Four screenshots taken from the running application live in
docs/images/.
Building from source offline
flatpak/package-lock.jsonships an npm lockfile generated frompackage.jsonwithout the
end-to-end test runner, whose browser downloads an offline build never uses. Bun remains the
development package manager.scripts/flatpak-node-sources.shregenerates that lockfile together with the Flatpak node
sources used by a network-less build.- Maintainer documentation describes the Flathub build path alongside the existing bundle build.
Install
Download the AppImage or Flatpak attached below, plus SHA256SUMS:
sha256sum --check --ignore-missing SHA256SUMSFor AppImage:
chmod +x VacuumStream-0.2.1-x86_64.AppImage
./VacuumStream-0.2.1-x86_64.AppImageFor Flatpak 1.16 or newer:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user ./VacuumStream-0.2.1-x86_64.flatpak
flatpak run io.github.eliottness.VacuumStreamSee the user guide
for FUSE alternatives, controller setup, and Steam Gaming Mode.
Validation and limitations
bun run verifypasses on the tagged commit: lint, type checking, the unit suite and a
production build. GitHub CI ran the same verification on this commit.- The Flathub manifest built by
flatpak-builderproduces a working application: the packaged
binary starts and renders the home screen with live Twitch data. - VacuumStream is still not published on Flathub. The submission is prepared but not accepted.
VacuumStream v0.2.0
VacuumStream 0.2.0
The first release where a controller is genuinely enough: chat, favourites, resume, quality,
captions and sign-in all work without a mouse, and the interface has been rebuilt on Twitch's own
colour and type tokens. 105 commits since 0.1.2.
Watching
- Seek past broadcasts with controller jumps, and resume a recording where you left it.
- Pick playback quality and toggle closed captions from the player, controller-only.
- A failed player start now retries and offers a reachable Retry instead of a dead frame.
- Controls come back on their own when a channel that went offline returns.
Browsing
- Browse live streams by category, and refresh or page through Home and Following.
- Following lists every channel you follow, including the offline ones.
- Save favourite channels locally and reopen them from Home.
- A Continue Watching shelf tracks local playback progress across launches.
- Archives stay browsable when Twitch serves no thumbnail; failed artwork falls back to a
placeholder instead of a broken-image glyph.
Chat
- Optional live chat beside the player.
- Twitch's cookie-consent gate inside the chat frame is reachable with a keyboard and with a
gamepad, so chat no longer needs a mouse to become usable.
Controller and input
- An always-available on-screen keyboard plus gamepad editing shortcuts in Search; overlapping
face presses no longer swallow a submission. - Sign-in is controller-first: the account action sits one move from the Settings nav, survives
every authentication transition, and shows the device code with a QR alongside it. - Focus no longer falls to the page body when an account or shelf update replaces the focused
control.
Application
- One instance per profile. A second launch raises the existing window instead of creating a
competing owner of your local settings, favourites, progress and token. - The renderer is rebuilt on a complete Twitch-native token set: a tiered dark surface ladder,
Archivo Variable for display type beside Atkinson Hyperlegible for text, hairline structure
instead of gradients and glows, and a focus ring that appears immediately rather than fading in.
Install
Download the AppImage or Flatpak attached below, plus SHA256SUMS:
sha256sum --check --ignore-missing SHA256SUMSFor AppImage:
chmod +x VacuumStream-0.2.0-x86_64.AppImage
./VacuumStream-0.2.0-x86_64.AppImageFor Flatpak 1.16 or newer:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user ./VacuumStream-0.2.0-x86_64.flatpak
flatpak run io.github.eliottness.VacuumStreamSee the user guide
for FUSE alternatives, controller setup, and Steam Gaming Mode.
Validation and limitations
bun run verifypasses on the tagged commit: lint, type checking, 802 passing tests
(21 expected failures) across 53 files, and a production build. GitHub CI ran the same
verification on this commit.- A Playwright end-to-end suite now drives the packaged renderer on its own display and covers the
flows recorded in the project's review ledgers. - Individual features were checked on an HTPC during development, as recorded in the improvement
ledger. Completing a Twitch device sign-in end to end on hardware is exercised up to the
activation step only; the approval itself remains unverified. - Twitch controls advertisements, regional restrictions, stream availability, and its embedded
player. VacuumStream does not block or skip ads. - Device sign-in authenticates discovery, not the embedded player. Browser cookies are not
imported. - Checksums detect corruption but are not publisher signatures. This is not a Flathub release and
has no automatic updater.
Report reproducible problems through the
issue templates.
VacuumStream v0.1.2
VacuumStream 0.1.2
This release improves controller text entry and makes Twitch playback start more reliably with sound on Linux handhelds and HTPCs.
Highlights
- Search now includes an always-available controller keyboard for letters, digits, spaces, backspace, clearing, and submitting queries.
- Search focus exits are deterministic, so D-pad and stick navigation can leave the text field without trapping controller input.
- Twitch's player remains fully unobstructed while it performs its autoplay visibility checks.
- Live streams now retry startup automatically and unmute once real media progression is confirmed, including when a controller activates a stream through an untrusted browser click.
- Playback activation rejects empty or stalled video states instead of treating an unpaused flag alone as success.
- Manual play and mute controls cancel automatic retries so the app does not override the viewer's choice.
Install
Download the AppImage or Flatpak attached below, plus SHA256SUMS:
sha256sum --check --ignore-missing SHA256SUMSFor AppImage:
chmod +x VacuumStream-0.1.2-x86_64.AppImage
./VacuumStream-0.1.2-x86_64.AppImageFor Flatpak 1.16 or newer:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user ./VacuumStream-0.1.2-x86_64.flatpak
flatpak run io.github.eliottness.VacuumStreamSee the user guide for FUSE alternatives, controller setup, and Steam Gaming Mode.
Validation and limitations
- GitHub CI passed on Node 24.20.0 and 26.8.1, including 51 tests, lint, type checking, metadata checks, workflow validation, and packaging checks.
- The packaged Flatpak passed a cold controller-equivalent launch on Bazzite: Twitch media reached a playable state, unmuted, advanced continuously, and produced active stereo audio over HDMI.
- Twitch controls advertisements, regional restrictions, stream availability, and its embedded-player implementation. VacuumStream does not block or skip ads.
- Device sign-in authenticates discovery, not the embedded player. Browser cookies are not imported.
- Checksums detect corruption but are not publisher signatures. This is not a Flathub release and has no automatic updater.
Report reproducible problems through the issue templates.
VacuumStream v0.1.1
VacuumStream 0.1.1
This release focuses on reliable controller playback, clearer Twitch sign-in, and better account persistence on Linux handhelds and HTPCs.
Highlights
- Live streams now start automatically while muted, with controller-accessible play and pause controls when Twitch blocks or stops playback.
- Joystick navigation recovers visible focus after mouse input, and Back restores the correct shell fullscreen state in both Desktop and Steam Gaming Mode.
- Home and Following stream cards now display Twitch broadcaster profile images without hiding the catalog if profile enrichment fails.
- Twitch device sign-in keeps the activation link and adds a scannable QR code containing Twitch's code-prefilled URL.
- Following and Search now show account-aware messaging instead of asking authenticated users to reconnect.
- OAuth tokens still prefer Electron's secure Linux keyring. When none is available, VacuumStream logs a warning and persists the session in an owner-only
0600JSON file inside its application-data directory. - Token writes now remain consistent across crashes, clean temporary files on failure or logout, and migrate plaintext fallback data into secure storage when a keyring becomes available.
Install
Download the AppImage or Flatpak attached below, plus SHA256SUMS:
sha256sum --check --ignore-missing SHA256SUMSFor AppImage:
chmod +x VacuumStream-0.1.1-x86_64.AppImage
./VacuumStream-0.1.1-x86_64.AppImageFor Flatpak 1.16 or newer:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user ./VacuumStream-0.1.1-x86_64.flatpak
flatpak run io.github.eliottness.VacuumStreamSee the user guide for FUSE alternatives, controller setup, and Steam Gaming Mode.
Validation and limitations
- GitHub CI passed on Node 24.20.0 and 26.8.1, including 41 tests, lint, type checking, metadata checks, workflow validation, and packaging checks.
- The packaged AppImage passed QR sign-in, live autoplay, controller play/pause, pointer-to-controller recovery, and fullscreen Back checks.
- The Flatpak was installed and launched from Steam Gaming Mode on Bazzite after verifying the packaged Electron BaseApp and Zypak runtime files.
- Twitch controls advertisements and stream availability. Device sign-in authenticates discovery, not the embedded player.
- The
0600fallback is unencrypted and can be read by other processes running as the same user. Configure Secret Service or KWallet for encrypted persistence. - Checksums detect corruption but are not publisher signatures. This is not a Flathub release and has no automatic updater.
Report reproducible problems through the issue templates.
VacuumStream v0.1.0
VacuumStream 0.1.0
The first public release of VacuumStream, a controller-first Twitch client for Linux x86_64.
Highlights
- Navigate with four arrow keys, Enter, and Escape, or a gamepad/Steam Input mapping.
- Guest Quick watch and exact-channel search; connect Twitch for personalized discovery.
- A public Twitch Client ID is included, with an optional Settings override.
- Official Twitch live/VOD player with separate play/pause, mute, and fullscreen controls.
- Responsive handheld-to-4K interface and secure-keyring token storage when available.
- AppImage and Flatpak packages using Electron 44.2.0; Flatpak uses Freedesktop 25.08.
- New user, contributor, and maintainer documentation, including a homepage screenshot.
Install
Download the AppImage or Flatpak attached below, plus SHA256SUMS.
The assets are attached automatically after the release build completes.
sha256sum --check --ignore-missing SHA256SUMSFor AppImage:
chmod +x VacuumStream-0.1.0-x86_64.AppImage
./VacuumStream-0.1.0-x86_64.AppImageFor Flatpak (1.16 or newer):
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user ./VacuumStream-0.1.0-x86_64.flatpak
flatpak run io.github.eliottness.VacuumStreamSee the user guide
for FUSE alternatives, controller setup, and Steam Gaming Mode.
Validation and limitations
- CI passed on Node 24.20.0 and 26.8.1, including 28 tests, lint, typecheck, and packaging.
- Locally built AppImage and Flatpak passed Home, Settings, Search, and Escape navigation smoke tests.
- This is early-stage software. Physical Steam Deck/Bazzite, native GPU/audio, and fully authenticated
Twitch playback have not been comprehensively validated. Flatpak runtime smoke testing used an
isolated non-root Linux container with a virtual display. - Twitch controls ads and availability. Device sign-in authenticates discovery, not the embedded player.
- Without a secure keyring, sign-in lasts only for the current application session.
- Checksums detect corruption but are not publisher signatures. This is not a Flathub release.
- Contributor build note: electron-vite 5's declared peer range does not yet include Vite 8, although
the current pairing passes the test/build matrix without overrides.
Report reproducible problems through the issue templates.