Skip to content

Releases: lucaboox/VioletWire

0.3.3-alpha.2

Choose a tag to compare

@github-actions github-actions released this 22 Jul 00:30

[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

Choose a tag to compare

@github-actions github-actions released this 21 Jul 22:20

[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

Choose a tag to compare

@github-actions github-actions released this 21 Jul 07:46

[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

Choose a tag to compare

@github-actions github-actions released this 20 Jul 22:02

[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

Choose a tag to compare

@github-actions github-actions released this 20 Jul 11:51

[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.yml while 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

Choose a tag to compare

@github-actions github-actions released this 19 Jul 20:25

[0.3.2-alpha.3] - 2026-07-19

Additions

  • Added Twitch-style rendering for chat /me action 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

Choose a tag to compare

@github-actions github-actions released this 19 Jul 12:30

[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

Choose a tag to compare

@github-actions github-actions released this 19 Jul 11:55

[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 replace path 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

Choose a tag to compare

@github-actions github-actions released this 19 Jul 07:19

[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 @username in 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

Choose a tag to compare

@github-actions github-actions released this 18 Jul 22:01

[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.