Releases: lucaboox/VioletWire
Releases · lucaboox/VioletWire
Release list
0.3.3-alpha.2
[0.3.3-alpha.2] - 2026-07-21
Additions
- Added a VioletWire project website and refreshed the README with current
screenshots, including the Multistream view, so new users can see the app
before installing it.
Improvements
- The global search field now keeps the text you entered when you open a
stream, rather than replacing it with the selected channel's username.
Fixes
- Kept the top app bar above sticky category headers while browsing, preventing
category content from drawing over the navigation controls.
0.3.3-alpha.1
[0.3.3-alpha.1] - 2026-07-21
Additions
- Added favorite channels: right-click any followed channel to add or remove it
from favorites. Favorites are marked with a star on their avatar and sort to
the top of the Live and Offline groups, so a favorite that goes offline drops
out of the way of channels that are actually live. Favorites are saved across
launches.
Improvements
- Chat emotes and badges are now cached per channel instead of being unloaded
and refetched on every chat switch, and all multistream tile channels are
warmed in the background when multistream opens. Switching a chat tab is now
instant with the right custom emotes already loaded. - Hiding chat no longer unmounts it, so bringing it back is instant instead of
re-rendering the whole message list. It re-pins to the newest message on
re-show if it was following live. - Stopped two timers running when there was nothing to do: the multistream chat
batch flush no longer ticks when multistream is closed, and the shared uptime
tick (which re-renders the app) only runs while a stream is open or a
followed channel is live.
Fixes
- Fixed the followed-channel right-click menu closing itself a second after
opening, caused by live chat's auto-scrolling triggering its close handler.
0.3.2-alpha.7
[0.3.2-alpha.7] - 2026-07-21
Additions
- Added multistream Theater mode and a Fullscreen button that hide the app
sidebar and top bar so the stream grid and chat fill the window. Both toggle
from the bar or with the T and F shortcuts. - Added a per-tile volume slider and an audio compressor toggle to each
multistream tile, alongside mute, matching the single player's audio
controls. - Kept every multistream tile's chat connected at once, each with its own
buffered history, so switching chat tabs is instant and nothing is missed
while a tab is in the background. - Saved and restored the native player volume: each stream now opens at your
last level instead of resetting to 100%.
Improvements
- Multistream tile controls now auto-hide when idle and reveal on mouse
movement, using the same auto-hide delay and cursor-hiding as the single
player. The channel name moved to its own box at the top-left, with the
active-audio dot always visible. - Restyled the multistream top bar to match the single player toolbar — a back
chevron, borderless hover buttons, and matching height — laid out as Add
stream, Theater, Fullscreen, and Exit. - Clicking a tile moves audio focus and switches its chat into view; the
add-stream menu closes when clicking outside it.
Fixes
- Fixed the multistream chat sometimes getting stuck "scrolled up" after
switching tabs; it now only pauses on a deliberate scroll and shows the
paused indicator like the main chat. - Formatted chat timeout durations into readable units (for example "1m 30s"
or "2d 2h") instead of a raw seconds count. - The chat overlay button now toggles the overlay on and off instead of
switching to the side layout when the overlay is already on. - The followed-channels scrollbar now sits flush against the sidebar edge.
0.3.2-alpha.6
[0.3.2-alpha.6] - 2026-07-20
Additions
- Added Multistream: watch up to four native streams at once in a grid. Toggle
it from the new Multistream button in the top bar, then add channels from
your live followed list or by name. Two streams stack vertically and three or
four use a 2×2 grid; tiles sit flush and theme to OLED mode. - Added multistream audio focus: only one stream plays sound at a time — click
a tile to move audio to it, and its bar marks the active stream. - Added per-tile multistream controls in each tile's hover bar: mute a stream
independently and change its resolution without affecting the others. - Added a tabbed Stream Chat for multistream with a tab per stream. Selecting a
tab, or giving a tile audio focus, switches the chat to that channel with the
full message rendering, emote picker, chat settings, and user cards.
0.3.2-alpha.5
[0.3.2-alpha.5] - 2026-07-20
Additions
- Added rich hover cards for Twitch Clip links using Twitch's official clip
metadata, including the thumbnail, title, broadcaster, duration, publish
date, and view count. - Added keyless YouTube hover cards with the video thumbnail, title, and
channel name. Full YouTube statistics intentionally remain out of scope
because they require a separate YouTube Data API key. - Added a resizable side chat: drag its inner edge to set the width between
300 and 620 pixels, double-click the handle to reset, and the width is
saved and restored across sessions. - Added a movable, resizable overlay chat for the Native player: drag its
top bar to reposition it, drag the top-left grip to resize it (280–560
wide, 200–1000 tall), and its position and size are clamped to the video
area and remembered across sessions. Double-click to reset. - Added a Settings control for how long the Native player controls stay
visible before auto-hiding, adjustable from 1 to 10 seconds and saved
across sessions. - Added a four-sound mention alert picker (Ping, Chime, Pop, Knock) with a
preview button, and raised the mention volume ceiling to 200% (default
100%). - Added the ability to collapse the followed-channels sidebar to icons.
Improvements
- Moved the Native live indicator from a fixed corner into the control bar,
left of the quality button, so it no longer sits underneath the overlay
chat, and restyled it as a transparent label with a red live dot. - Hide the mouse cursor over the Native player once the controls auto-hide in
windowed mode as well as fullscreen, and hide the controls immediately when
the pointer leaves the video for chat instead of waiting out the timer. - Made the "Show stream chat" button match the "Hide chat" button size so the
control no longer changes size when toggled. - Open the emote picker at the user's saved size immediately instead of
briefly showing the default size and then resizing. - Made the pop and knock mention sounds noticeably louder so they are audible
on small speakers.
Fixes
- Make the “Open channel on Twitch” control launch the channel in the user’s default browser instead of VioletWire’s isolated action window.
- Treat expected 404 responses from 7TV, FrankerFaceZ, and BetterTTV channel-emote endpoints as an empty channel set instead of emitting Electron handler errors.
- Keep the Native player selected for offline channels, with VioletWire's own offline state and Retry control instead of replacing it with Twitch's Standard offline page.
- Removed the stray status dot from the Native offline screen and made its loading spinner easier to see.
- Keep the known channel avatar in the player toolbar while metadata loads, and label offline channels simply as “Offline.”
- Carry the selected channel’s display name and avatar from followed, browse, and search cards into the player immediately instead of briefly showing the lowercase login.
- Preserve that same identity when opening an exact channel match through Enter or the “Go to…” search action.
- Show the known viewer count and stream uptime from a selected live card immediately while Twitch metadata refreshes in the background.
- Show the known category, language, and stream tags immediately as a live card opens; category navigation activates once its Twitch ID is refreshed.
- Enriched live search results with viewer count, uptime, language, tags, and mature-state data using one batched Twitch stream lookup.
- Treat a GitHub release that is temporarily missing
latest.ymlwhile its
assets are still uploading as a non-error update state instead of displaying
an alarming updater failure. - Ensure the automatic post-update changelog waits for fresh GitHub Release
notes instead of briefly displaying a stale cached changelog. - Ensure an explicit fresh changelog request cannot be satisfied by an
in-flight cached request from app startup. - Reliably detect offline channels even when Streamlink exits without any
diagnostic output, so they stay on the offline surface instead of showing an
"Embedded Native unavailable" notice and falling back to the window-hosted
Native player. - Read Streamlink's output on process close rather than exit so resolved
stream URLs, quality lists, and offline error messages are captured
completely instead of being intermittently truncated. - Show a clear "stream ended" state over the Native player when a channel goes
offline mid-broadcast, instead of freezing on the last frame, and recover
automatically if the channel goes live again. - Fixed the Native overlay chat settings so the panel is no longer part of the
draggable title bar (settings stay adjustable), gave its Hide/Settings
buttons top spacing, stopped clicks in the divider gaps above toggles from
flipping them, and centered the toggle knobs so they no longer drift lower in
fullscreen. - Kept long chat tooltips on-screen without wrapping their text awkwardly near
the window edge. - Fixed the top-bar alignment when chat is placed on the left so the
followed-channels header lines up with the account bar.
0.3.2-alpha.3
[0.3.2-alpha.3] - 2026-07-19
Additions
- Added Twitch-style rendering for chat
/meaction messages, including
correct removal of IRC control bytes and colored action text. - Added enlarged hover previews for chat badges and supported image links,
including direct HTTPS images plus compatible Imgur and Gyazo image pages.
Improvements
- Refresh the signed-in followed-channel list in the background and whenever
VioletWire returns to the foreground, without surfacing transient refresh
failures as disruptive notices. - Improved emote hover cards so wide emotes stay contained and previews scale
appropriately with the user's configured chat emote size. - Keep chat-user-card message history pinned to the newest message unless the
viewer deliberately scrolls upward. - Improved the embedded Native player's Go Live behavior by reloading the
current channel at the live edge instead of starving playback after a buffer
drop.
Fixes
- Prevented chat from pausing itself when late-loading emotes or layout reflow
changes the scroll position; pausing now requires recent user scroll intent.
0.3.2-alpha.2
[0.3.2-alpha.2] - 2026-07-19
Additions
- Added versioned GitHub Release notes as the changelog viewer's primary
source, with validated responses, a bounded local cache, and the bundled
changelog retained as an offline fallback.
Fixes
- Prevented automatic and manual update checks from opening duplicate restart
prompts after the same installer has already downloaded. - Fixed the in-app changelog viewer omitting every entry under Improvements.
0.3.2-alpha.1
[0.3.2-alpha.1] - 2026-07-19
Additions
- Added a persistent mention-sound volume control with an in-settings preview
button, and replaced chat-setting checkboxes with clearer toggle switches. - Added a large centered play control whenever Native playback is paused.
- Added a Twitch-style floating mini player while browsing, with draggable and
resizable bounds, pause, mute, close, and click-to-restore controls. - Added hover-intent stream pre-resolution so followed and browse cards can
begin preparing Native playback before the channel is clicked.
Improvements
- Reworked embedded Native channel and quality switching to reuse the healthy
mpv process, D3D/OpenGL bridge, and shared-texture pool through mpv's
loadfile replacepath instead of starting an entirely new player. - Made stream switches stop outgoing playback immediately, discard stale
in-flight frames, suppress intentional end-of-file events, and report
whether the active transition is changing channel or quality. - Overlapped fresh mpv/addon initialization with Streamlink URL resolution,
cached resolved URLs for 60 seconds with in-flight deduplication and bounded
concurrency, and skipped unnecessary FFmpeg container probing for HLS. - Unified side chat and Native overlay chat behind one feed engine for message
batching, scroll pause/resume, bottom anchoring, history trimming, and
deleted-message reveal state. - Rendered the embedded player at the mini player's actual pixel dimensions
and preserved a seamless video transition when moving between full and
floating layouts. - Cached chat-user profile lookups for 60 seconds with in-flight deduplication,
bounded third-party subscription-age requests to five seconds, and memoized
retained user-card messages. - Debounced preference persistence so rapidly adjusted chat and overlay
controls no longer issue a settings write for every intermediate value. - Hardened Electron's trust boundaries by isolating the official Twitch player
cross-origin, locking privileged renderer navigation, validating every IPC
sender, and narrowing the legacy controls window's preload capabilities. - Kept authenticated/source-quality Streamlink playback while moving the
website token from visible process arguments to a private stdin handoff. - Moved the application renderer into an ephemeral storage partition while
retaining encrypted playback credentials and synchronizing only the
in-memory Twitch cookie required by the official player. - Hardened release automation with exact dependency versions, immutable
GitHub Action commits, read-only build permissions, non-replaceable release
assets, automated dependency update proposals, and signing-ready Windows
configuration. - Made reply threads compact and content-sized above the chat composer instead
of occupying a tall fixed panel. - Refined overlay chat so its border, composer, tools, and scrollbar stay out
of the way until needed, while the paused-chat indicator remains available. - Made overlay chat resize smoothly above its revealed composer and keep live
messages pinned to the newest entry without moving readers who scrolled up. - Kept profile cards inside the visible application area as asynchronous
profile data changes their size or the window is resized.
Fixes
- Fixed rapid Native stream switches allowing a cancelled older startup or
stale end-of-file event to clear the new stream, reset its state, or trigger
the legacy window-player fallback. - Fixed reselecting the channel already playing from rebuilding its metadata,
chat, and player; it now simply restores the existing player surface. - Fixed closing playback briefly flashing a loading state by unmounting the
player page before tearing down its main-process session. - Fixed paused or history-trimmed chat drifting while new messages arrive by
sharing the same anchored feed logic between side and overlay layouts. - Fixed profile-card data loading or application resizing moving the card
partly outside the visible window. - Fixed overlay-opacity changes racing between synchronized renderer state and
rapidly cycling through stale percentages. - Fixed overlay scrollbars remaining visible while inactive and extending
behind the chat composer. - Fixed resuming Native playback from a paused stream causing frame skips or
failing to return to the live edge. - Reduced delays when opening chat-user profiles and other external links in
the system browser.
0.3.1-alpha.1
[0.3.1-alpha.1] - 2026-07-19
Additions
- Added clickable chat usernames with an in-app profile card showing Twitch
profile details, badges, available follow and subscription status, and the
user's retained messages from the current chat. - Added a live paused-chat indicator with its pending message count and a
one-click return to the newest message. - Rendered embedded Native controls directly in the main app window so player
menus, chat overlays, and profile cards share the video canvas's compositor
without a second Electron renderer. The separate controls window remains
available only for the legacy window-hosted fallback.
Fixes
- Hid Twitch's redundant leading
@usernamein reply messages while preserving
the official reply relationship and original message contents. - Batched fast-moving chat updates and preserved the reader's position while
paused, including when old messages must eventually be trimmed. - Fixed rapid stream switching so a cancelled older startup cannot clear the
selected embedded backend, trigger the window-hosted fallback, or tear down
the newer stream. - Fixed embedded video turning black after moving Native controls into the main
window by isolating the video canvas and controls into explicit compositor
layers. - Kept the legacy Native fallback working when an embedded texture session
fails after startup by switching its backend and controls together. - Kept Twitch event cards purple when hovered in OLED mode and limited the
hover feedback to the row behind the card.
0.3.0-alpha.1
[0.3.0-alpha.1] - 2026-07-18
Additions
- Added an embedded Native playback backend that renders libmpv through
Electron's shared D3D11 texture pipeline, keeping video and React controls,
menus, chat, and overlays in one composited window. - Added GPU-accelerated OpenGL rendering for embedded Native playback, with
orientation correction, bounded frame transport, renderer recovery, and the
existing external-window Native backend retained as a fallback. - Bundled the Windows texture-player addon and its required libmpv runtime into
packaged builds so the embedded backend is available after installation. - Made Native playback and the embedded renderer the defaults for new
installations while keeping the official Twitch Standard player available. - Added clickable Twitch reply threads that show retained conversation context,
badges, emotes, timestamps, and reply actions in side and overlay chat. - Added timeout and permanent-ban handling with a persistent choice between
revealable placeholders and dimmed moderated messages. - Replaced native browser tooltips with a consistent app-wide React tooltip
layer that works above the embedded player. - Added Twitch stream tags to followed-live and category stream cards.
- Added an in-app changelog viewer beside update controls, with an automatic
once-per-version What's New popup after an update.
Fixes
- Fixed Native overlays, quality menus, fullscreen chat, and keyboard shortcuts
freezing or disappearing over video, and added M as the mute shortcut. - Improved embedded-player startup so the player surface appears immediately
while libmpv initializes, and restored controls after optimistic mounting. - Hardened embedded playback against transient shared-texture import failures,
stale frames, renderer-surface replacement, rapid channel switching, and
resize-related white or black frames. - Fixed the embedded video orientation and reduced CPU usage by replacing the
software rendering path with the GPU-backed OpenGL bridge. - Restored Native control visibility and five-second mouse-idle auto-hiding,
including over fullscreen chat overlays and player menus. - Fixed Standard fullscreen recovery so Escape and F11 cannot leave the app
trapped in Chromium's HTML fullscreen state. - Fixed missing Twitch badges by retrying multiple official CDN image sizes and
hiding assets cleanly when every variant fails. - Improved emote startup by loading 7TV, FrankerFaceZ, and BetterTTV
independently, preserving provider priority, and lazily loading picker images
below the visible rows. - Fixed malformed Twitch emote-owner identifiers preventing otherwise valid
badges and emotes from loading. - Fixed small provider emotes being enlarged to the normal emote height.
- Fixed chat reply previews, deleted-message explanations, event-card hover
styling, and Scroll to current positioning as the composer changes height. - Fixed custom tooltips disappearing whenever live chat generated a scroll
event; tooltips now remain attached to their hovered or focused controls. - Fixed category pages failing when Twitch returns a null stream-tags field.
- Made Standard playback retry its initial play request and recover from
Chromium blocking audible autoplay. - Added a Twitch access refresh action so newly requested permissions, including
user emotes, can be authorized without first deleting the existing session. - Tightened the Twitch subscription drawer, removed overlapping website
navigation, and constrained tall drawers to their internally scrollable
content area. - Applied the VioletWire icon to authentication, Twitch action, and detached
control windows instead of Electron's default icon. - Added loading and open states to the Subscribe button and delayed the
subscription drawer reveal until Twitch's panel has rendered. - Kept the Subscribe star unfilled while its drawer is merely open, reserving
the filled state for a confirmed active subscription.