Skip to content

Release v0.1.4

Choose a tag to compare

@SaekoM SaekoM released this 29 May 20:33
· 44 commits to main since this release

Device Reliability & Save Pipeline Update

This update focuses on playback feedback — knowing what's happening with
your device at a glance — and finishing the save pipeline for journeys
with deeply nested forks and non-H.264 video.


Highlights

  • A persistent device-status banner now warns you the moment your device,
    Intiface server, or serial port disconnects mid-play.
  • The banner also catches selected-device mismatches — if your saved
    preference isn't connected but a different device is, you'll know.
  • Beat Bar and Storyboard Filler settings now take effect immediately
    instead of requiring a new round.
  • Saves now correctly transcode non-H.264 videos inside fork paths, not
    just top-level rounds.

Device-status banner

A new red banner pinned to the top of the play screen appears whenever your
configured output device can't receive commands. It auto-hides as soon as
things recover, and it lives outside the auto-hiding HUD so it stays visible
even when the rest of the HUD fades.

The banner distinguishes four distinct states with a specific message for
each:

What happened Banner text
Intiface (server) disconnected INTIFACE DISCONNECTED — RECONNECT IN OPTIONS
Intiface running, but no device available (battery, Bluetooth, USB unplug) NO DEVICE CONNECTED — POWER ON OR RE-PAIR YOUR DEVICE
Your selected device isn't connected, but a different paired device is being used in its place "THE HANDY" UNAVAILABLE — USING "LOVENSE SOLACE" INSTEAD (CHANGE IN OPTIONS)
Serial T-code port closed SERIAL DEVICE DISCONNECTED — RECONNECT IN OPTIONS

The mismatch case (third row) is a brand-new safety net for users with
multiple devices — no more "wait, why is my Handy moving when I thought I had
Lovense selected" surprises.

If you never picked a specific device (the default for first-time users),
the mismatch banner stays hidden — the existing fallback-to-first-available
behavior is preserved for that case.


Settings now apply mid-game

Two settings used to require leaving and re-entering the journey before
taking effect. They're now fully live:

  • Beat Bar (on/off) — toggling it in Options now creates or destroys the
    bar immediately. If a round is loaded, the new bar starts pre-seeded with
    the current funscript's beats.
  • Storyboard Filler (range + speed) — adjusting the range slider or the
    half-cycle speed during an active storyboard's filler now retargets the
    device immediately as you drag, instead of waiting for the next storyboard
    to start.

All other settings (volumes, fullscreen, resolution, position clamp, home
position, latency, vibe intensity, max stroke speed, HUD auto-hide, etc.)
were already live and remain so.


Fork-path videos now transcode correctly

Saves used to only inspect top-level rounds when planning video
transcoding. Any video using a non-H.264 codec (AV1, HEVC, VP9, etc.) inside
a fork path would be silently copied as-is, then fail to play because the
in-game video decoder only handles H.264.

Now the save flow walks the entire journey tree — top-level and every
fork path at every depth — to plan transcoding. Same source video used in
multiple rounds is probed and transcoded once and reused.

Additionally, if ffmpeg isn't available and your journey contains
non-.mp4 videos, the save now refuses with a clear error instead of
silently producing a journey with broken video playback.


Migration notes

  • No action required. Existing journeys load and play unchanged.
  • If you previously saved a journey containing fork-path AV1/HEVC/VP9 videos
    and noticed black-screen playback on some rounds, re-save the journey in
    the editor
    to get the videos properly transcoded.
  • The new device-status banner only appears when relevant — if everything's
    working, you'll never see it.