Haven owl logo
Haven
by REDRIXX
Public Release
What's New

Haven v2.0.2
release notes.

This one's heavy on the fixes and a little light on the features. I had a couple oddballs that needed to be squared away before I got the full Linux WebRTC and markdown composer parity wired up.

Presence Indicator Flashing Fix
Stale Presence Indicator Fix
Voice Dropdown Self Closing Fix
Presence Indicators Flash On Join Fix
SignOut Button Added To Settings
Voice Dropdown Kick Option
Latest public release - v2.0.2
Haven release notes
v2.0.2Public releaseDesktop + web focus
Overview

This one's heavy on the fixes and a little light on the features. I had a couple oddballs that needed to be squared away before I got the full Linux WebRTC and markdown composer parity wired up.

What's New

UI

5 changes

  • User Presence Indicator Rapidly Flashing On Non-Self Presence Indicators
    The presence indicator for users other than self in voice channels would rapidly flash. subscribe run fired forever and the trigger [person] write looped back into the effect. This was fixed by untracking the subscribe.
  • Users Kicked From Voice By Self Would Still Show Presence For Self but not Others
    Presence indicators became stale for self upon joining of a voice channel due to being ignored from presence subscriptions for currently joined voice channels. Client stopped listening for presence changes, leaving orphaned presence indicators and no response to the leave from the removed user. The fix for this was to re-order participents to ensure the LiveKit presence wins the race for the active channel.
  • Speaking Indicator Deforms The Avatar Icon Disrupting The UI Layout
    OccupantRow's wrapper was a plain <span> meaning the ring-2 that draws around the taller box looked oblong. Fix was making the wrapper class="inline-flex rounded-full".
  • Voice Channel Dropdown Closes When Speaking Indicator Changes State
    Speaking toggled applyParticipants -> core.voice.setParticipants(newRoster). Nexus setParticipants does this.setState("participants", participants) which as a full replace with new objects. <For each={occupants()}> keyed by object reference -> new object -> tears down and rebuilds OccupantRow -> the open DropdownMenu inside it gets destroyed. Fix was reconciling by userId so existing rows keep the reference and only the changed field updates.
  • Members Presence Indicators Vanish During Join
    The moment you click join, startConnect sets activeChannel/currentChannelId immediately (phase "connecting"). The reordered memo now says "active channel → use LiveKit participants but LiveKit is empty until the room actually connects. Presence for that channel is simultaneously being excluded/cleared. So for a very brief window, both sources are empty → the roster blinks out visually to users. Fix is to seed LiveKit from presence at connect time so there's no empty gap.

UX

1 change

  • SignOut Button Added To Settings