Releases: aiyu-ayaan/BetweenUs
Release list
v0.0.1-alpha.13
Features
- Pressing play on the page plays it for the call
- Press a video, the call watches it - no link, no button
- Press a video on YouTube and it plays, without the queue detour
- The Listen Together panel
- The Listen Together player, and the clock it runs on
- Listen Together, the shared transport on /ws/call
- Show the marks in the composer as they are typed
- Return makes a newline inside a list, quote or fence
- Carry a list on to its next item
- Render markdown in messages
- A markup parser, ported from android
- Draw bulleted and numbered lists in messages
- Bulleted and numbered lists
- Bubble-style message rows, matching the android layout
Bug fixes
- The pause button that did nothing, in a window that was silent
- Nothing plays in the browser, on the one event that catches it
- The browser is not a second player
- A seek that snapped back, and a browser that could be heard
- The second copy of the song, playing in the browser tab
- One Listen Together panel, on the stage, bounded
- The sandbox that made it silent, and YouTube itself in the call
- Hide the members panel by default
- Grow the composer with what is typed, up to a cap
- Wrap long composer text instead of scrolling it
- Shrink the chat header call button to match its neighbours
- Double-click reply, not native word-select
- Swipe right-to-left replies, left-to-right stays the drawer's
- A peer id that survives a reconnect, and a seat held for one
- Reopen a socket the background killed, on the way back
- Only a refused credential ends a session
Other changes
- Changes done for new release
- Add interactive installation & setup section and feature highlights
- Update architecture and service docs with listen together and rich formatting
- A blocked window looks like a blocked window
- The browser that had to stop playing, and the seek that had to stay put
- Clicking a video is the control
- Playing what you found, and the browser that was making its own noise
- The panel's shape, and the two bugs it came from
- Browsing YouTube in the call, and the sandbox that made it silent
- Listen Together
Artifacts
| Platform | This release |
|---|---|
| Server images | Built here |
| Desktop (Windows) | Built here |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.13-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.13.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.13, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.12
Features
- Repaint a changed picture, name or server without a restart
- Repaint a changed picture or name where it already is
- Announce a changed profile or server, rather than let it go stale
- Draw several photos as one album, not several cards
- Draw several photos as one album, not several attachments
- Draw messages the way a phone messenger draws them
- Offer a way back down when the conversation is scrolled up
- Let the sheets take their colour from the scheme
- Put the call controls in a floating toolbar
- Repaint the entry, friends and settings screens
- Redraw the conversation
- Move the shell onto the scheme, and give it motion
- Rebuild the shared controls in the expressive language
- Give the client a Material 3 Expressive theme
- Seen-by faces on a message, and swipe a row to reply
- Draw who has seen a message, and reply on a double click
- Say who has read a message, derived from the read markers
- Hold a call when another one takes the audio, and say so
- Say when the connection is down, and stop retrying after 30s
Bug fixes
- Pad connection banner for status bar insets and consume them in shell
- Give the drawer a fixed gutter, not a fraction of the screen
- Make the status dot subscribe to statuses rather than to a function
- Give the drawer a third of the row rather than half
- Split the row down the middle, and make a swipe prove it is one
- Make the call screen readable, and let the chrome leave downwards
- Give the gutter to the drawer by moving the gesture, not guarding it
- Size the composer's buttons to the bar they are in
- Give the left edge to the drawer, the message to the reply
- Ask the system for the swipe area instead of ceding it
- Leave the left edge to Back and the drawer
- Catch up after the background, and stop the drawer stealing the swipe
- Centre the initial in a pictureless avatar
- Show the notification the prompt was asked for, and fade the read line
- Scope refresh-token reuse revocation to one sign-in
Other changes
- Changes done for new release
- Record the live profile and server updates, and the status dot that was not live
- Correct the swipe-to-reply rule, and note the jump button
- Record the Material 3 Expressive redesign
- Record the Android catch-up and the drawer gesture
- Record read receipts and the reply shortcuts
- Record the session, hold and reconnect work
- !docs : Docs is done
Artifacts
| Platform | This release |
|---|---|
| Server images | Built here |
| Desktop (Windows) | Built here |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.12-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.12.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.12, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.9
Features
- Show how long the call has been running
- Input sensitivity, which was not blocked after all
- Tell the owner when somebody is on their machine
- Web push, so a closed tab is still reachable
- Safety numbers, so a lying key directory can be caught
- Implement file transfer functionality over data channel
- A share sheet hand-off now asks where it is going
Bug fixes
- The packaged app died before it opened a window
- A copied image could not be pasted into a message
- A socket whose token expired gave up instead of refreshing
- A network blip during refresh signed you out
- A voice channel stopped listing people who had left
- Stop throwing away the microphone you picked
- The microphone gate was refused by CSP, so it never ran
- Correct every Nexora reference to the real repo name, BetweenUs
- Stop tracking .claude/worktrees, unbreak recursive-submodule checkouts
Other changes
- Changes done for new release
- Record the main-process crash in the packaged desktop app
- Record the share picker and clipboard paste on Android
- Record the two faults that ended live sessions
- !docs : Docs is done
- Add the missing Notifications architecture page
- Make localhost:3000/ work for dev, keep /Nexora/ in production
- Match the desktop client's exact theme
- Center the Android screenshot
- Embed the Android screenshot, add offline local search
- Redesign the doc pages, not just the landing page
- Redesign the landing page
- Add Android client architecture page
- Split the one giant ERD into per-section diagrams
- Add pnpm docs / docs:build / docs:install root scripts
- Replace default Docusaurus README with a project-specific one
- Add docs deploy workflow, triggered by a !docs marker
- Deployment, CI, security, testing and local-run guides
- Per-service REST/WebSocket reference
- Architecture, system design and database schema content
- Scaffold Docusaurus site under docs/
Artifacts
| Platform | This release |
|---|---|
| Server images | Built here |
| Desktop (Windows) | Built here |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.9-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.9.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.9, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.11
Features
- Ring somebody into the call from the call controls
- Add somebody to a call from inside the call
- A Calls & data screen, and a phone that reports what it moved
- A Calls & Data page, and per-link measurement to fill it
- Record what each link in a call moved, and add up a month of them
Bug fixes
- Size the surface to the frame, so "fit" actually fits
- Show a whole camera, and give the call dock room to breathe
- Drop an answer that arrives after the connection is already settled
Other changes
- Changes done for new release
- Note why the scaling type alone did not stop the crop
- Record the in-call ring on the web, and the phone showing a whole frame
- Record the per-link call data, the analytics page and the Android screens
Artifacts
| Platform | This release |
|---|---|
| Server images | Built here |
| Desktop (Windows) | Built here |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.11-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.11.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.11, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.10
Features
- Show a call log in settings, and count what a call moved
- Record a per-person call log in call-service
- Optimize full-screen views, settings, and voice for mobile viewports
- Convert right panels to mobile slide-over sheets
- Add mobile header and hamburger navigation toggle
- Offer a reload when a newer build is being served
- Create android-style workspace navigation drawer
- Check for, download and apply updates, per Windows flavor
- Add responsive hooks and breakpoint utilities
- Answer a ring without leaving the window
- Answer a ring from the lock screen
- Carry a ring to every device the person has
- Ring one person into a call
Bug fixes
- Add ensure-electron script to prevent MODULE_NOT_FOUND during install
- Fix server members slide-over panel and auto-navigate to text on voice disconnect
- Remove duplicate mobile TopBar header and fix friends tab clipping
- Point the updater at the repository that publishes the APKs
- Correct indentation for ConnectionSheet visibility in VoiceChannelScreen
- Add drag region to LoginScreen for better window interaction
- Auto-extract and configure electron binary on install and dev
- The microphone is on when it is opened, not a moment later
Other changes
- Changes done for new release
- Record the call log in TRACK, TODO and TESTING
- Remove obsolete SDD progress ledger file
- How each client notices a release and takes it
- Add implementation plan for mobile web responsive UI adaptation
- Add design spec for mobile web responsive UI adaptation
- A ring is not channel-scoped news, so focus does not swallow it
- Write down what a ring is and why it may be loud
- Desktop installers point at the deployment, not at localhost
Artifacts
| Platform | This release |
|---|---|
| Server images | Built here |
| Desktop (Windows) | Built here |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.10-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.10.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.10, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.8
Features
- Print every command the deployment needs after the copy
- The installer copies the files and stops there
- Install a deployment without cloning the repository
- Paste a picture into the composer
- Send into BetweenUs from the system share sheet
Bug fixes
- One owner for the message list's scroll
- Keep the call header clear of the status bar
Other changes
- Changes done for android release
- The no-clone install path, and the build commands it dated
- Record the share sheet, composer paste and the two screen fixes
Artifacts
| Platform | This release |
|---|---|
| Server images | Carried forward from v0.0.1-alpha.7 |
| Desktop (Windows) | Carried forward from v0.0.1-alpha.7 |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.8-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.8.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.8, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.7
Features
- Audio devices follow whatever is plugged in
Bug fixes
- Add caching for Electron build and implement retry logic for packaging
- A link that is refused or unanswered can now recover
- The self-view is inside its corners, and PiP shows the speaker
- Incoming video stops flickering
- The speaking ring reads a level that is actually there
Other changes
- Done with the enhancement
- The second call-screen pass, and the one bug it did not close
Artifacts
| Platform | This release |
|---|---|
| Server images | Built here |
| Desktop (Windows) | Built here |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.7-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.7.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.7, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.6
Features
- A platform a release skips keeps the last one's artifacts
- A marker can name the platforms it is for
- Reconnect a dropped call, and end one that cannot be reconnected
- A notification read on one device takes itself down on the others
- The connection panel, ported from the desktop
- The green speaking ring lights for your own tile too
- Do not wake a phone for a message being read on another device
- A daily update check, and an install that reports what happened
- The auto update screen, and the prompt on launch
- Fetch, download and hand over a newer release
- The rules for which release a device should install
Bug fixes
- The self-view snaps to a corner, and the chrome gets out of the way
- Video has the rounded corners it appears to have
- Every attachment goes out under the foreground service
Other changes
- Done with the enhancement
- The call-screen pass recorded in TRACK.md
- RELEASING.md, and the pass recorded in TRACK.md
- Remove outdated Android chat notification suppression and PiP design documents
- Catch every doc up to push suppression, self-update, and the send-path fix
- One send path for every attachment
- The daily check and the installer session
- Record the self-update phase
Artifacts
| Platform | This release |
|---|---|
| Server images | Built here |
| Desktop (Windows) | Built here |
| Android | Built here |
Install
Not every release rebuilds every platform. The Artifacts table
above says which of these were built here and which are the last
release's, re-attached unchanged - a download whose file name
carries an older version is that, and it is the current build for
its platform.
Desktop (Windows) — BetweenUs-0.0.1-alpha.6-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.6.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.6, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.
v0.0.1-alpha.5
Features
- Phase 13 hardening - Keystore session, private CA, crash reports, CI
- The remote clipboard, both directions
- A direct call rings, full-screen, with the app dead
- A call ducks for a prompt and holds for a phone call
- The member menu - message, add friend, mute, copy id
- A colon menu, the server's own emoji in the picker, and animated ones
- Bold, italic, strike, code and quotes in a message body
- Back out of a call and it keeps going in a floating window
- A call takes the whole screen
- Publish the service images for arm64 as well as amd64
- Let a caller ask for a channel key that is not the cached one
- Release through a PR, and undo a release that fails halfway
- Marker-driven releases to Docker Hub, with the clients attached
- Implement adaptive stage grid scaling, uniform video cards, and floating control dock
- Redesign call screen with WhatsApp-style adaptive layout, PiP self-view, and camera flip
- Draw the four new pushes, and undraw a deleted message
- Push for deletes, friends, servers and calls
- Use PushGate.shouldSuppress in PushService
- Add PushGate.shouldSuppress active channel check with unit tests
- Make message URLs clickable hyperlinks and render rich OpenGraph previews
- Add URL unfurling service and metadata API endpoint
- Add WhatsApp-style permission flow and top notification warning banner
- Remove overlay on image cards and save media as bu_{date}
- Add permissions carousel screen with progress and allow-all button
- FCM push, so a swiped-away phone is reachable
- Hide server people/members list by default
- Send files in the background, and shrink a video first
- Crop and rotate before a picture is sent or stored
- Set an avatar and a server icon from the phone
- Manage a machine's access and read its audit trail
- Add and remove a server's own emoji
- Make and edit a server's own roles
- Sign in with a provider, and open invite links
- Accept a mobile redirect, bound to a challenge the app keeps
- Upload large attachments in parts
- Invites as links, previewed before they are accepted
- Show what an invite leads to before it is accepted
- Convert every sent photo to JPEG, HEIC included
- Decode HEIC in the client, and send every photo as JPEG
- One data path, and a dump before every migration
- The headers a browser needs to be told once
- A server's own emoji, animated ones included
- Type ":" and a name to reach an emoji
- What you can do about a person, from the list that names them
- A link, so anybody can be let in without being added
- One screen at a time - a new share replaces the one before it
- A key per machine, so a lost one can be revoked
- Invite management, and a line that was lying about the slug
- Microphone processing, a hi-fi mode, and where the call comes out
- Reconnect when the network comes back, not when the timer says
- A reaction says who left it, not just how many
- A list of servers this client has been on, and a contract check
- Tell a LAN it is a LAN - a manual bitrate, frame rate and codec
- An unread line that survives a restart, and a way to reach it
- The same two notes when somebody joins or leaves a call
- Two notes when somebody joins the call, two when they leave
- A cache on desktop and web, so opening the app is not a spinner
- Look at a photo before sending it, and show a video's first frame
- Look at a photo before sending it, and drop files anywhere
- Scroll back through history on desktop and web
- Replies, on all three clients
- A monitor plugged in mid-session is noticed
- The roles screen learns to draw a server's own roles
- Two ways to be driven, two targets
- A chord that arrives as a chord
- Add Firebase Crashlytics configuration to appInsightsSettings
- A blob that leaves when its message does
- An attachment row per upload, so a blob has an owner
- Roles a server can invent for itself
- A session that survives its two halves landing on different replicas
- A record of what was done, and a way past the first hundred rows
- Edit who is on a private channel
- Measure the call, and say when nobody can hear you
- Push to talk
- Turn one person down, or off, without touching the others
- Invites that expire, run out and can be taken back
- Sweep what nothing was sweeping, and stop scanning for agent tokens
- Rotate a channel's key when somebody loses access to it
- A channel can be set to mentions only
- The roster comes from the service that holds the sockets
- Send presence only to the people entitled to it
- Go idle on its own after ten minutes, and come back
- Rate limit login per account as well as per address
- Add emoji picker and quick camera button in composer, auto-hiding camera when keyboard is open
- Display You in accent color for current user in chat view, pinned and search panels
- Enhance chat screen with media viewer, video player and gallery storage
- Add storage write permissions and video/audio attachment support
- Implement WhatsApp-style media picker and attachment sheet
- Add media and camera permissions and FileProvider setup
- Keep channel keys, so cached history opens without the network
- Open on what the app already knows, not on a spinner
- Spend the bitrate, send the whole screen
- Tell the gateway where a phone can reach it
- Come back to where you were, and go where a tap says
- Lay the share stage out like a meeting client
- A share takes the whole screen, the way it has to
- A call that looks like a call to the system
- Drop the browser context menu
- A gateway for clients that cannot use a Vite proxy
- Voice, video, screen share and the remote-desktop viewer
- Servers, channels, messages, members, settings
- The stores, and the widgets every screen is built from
- The whole REST surface, and end-to-end encryption
- Sign in, switch servers, and land on home
- Nexora palette, and a server address the build does not decide
- Initialize Android project structure with basic configurations and resources
- Implement Picture-in-Picture (PiP) overlay for voice calls
- Add Teams-style floating Picture-in-Picture mode and fix screen occlusion
- One entrance for everything that opens on top
- Carry the workbench into the surfaces inside the panels
- Rebuild the client as a workbench of floating panels
- Enhance screen capturing on Windows with background throttling adjustments
- Add initial configuration for build and typecheck tasks
- One call per account, whichever device joins last
- Warn before a browser tab with a live call is closed
- Keep the call running while the client navigates away
- Add BM25 search engine for UI/UX style guides with design system generation and persistence options
- Add Hide/Show camera controls to expand stream content to full width
- Add Teams and Google Meet style Side Gallery camera layout alongside screen share
- Add auto-hiding controls, participant toggle, and polished glassmorphic UI for fullscreen mode
- The screen goes straight to the controller, not through a room
- A mesh of peer connections, where the SFU used to be
- A switchboard, so two clients can find each other without an SFU
- Relay media through TURN, so a call works from another network
- A render that throws is a message, not a blank window
- Implement LAN SFU and ICE candidate rewriting for remote access
- Reach the dev stack from a second machine on the network
- Notifications and provider sign-in in a browser
- Serve the web client at the root of the gateway
- Add the browser client as its own app
- Gate the remote-desktop section on the Electron bridge
- Restore the account encryption key on any machine you sign in on
- Store a sealed identity backup so an account is not tied to one machine
- Update TypeScript configuration and add path mappings for shared packages
- Check at startup that LiveKit accepts our tokens
- Give a new server a voice channel as well as #general
- Add packaging scripts for portable and NSIS targets in desktop app
- Enhance deployment instructions and add production scripts for easier setup
- Change microphone and speakers from inside the call
- Give Voice & Video something to set
- Let a deployment choose where local uploads live
- Publish the microphone the way this machine is set up
- Close the microphone when nobody is talking
- Decide what a microphone should sound like
- Encode a screen share like something worth watching
- Give control of a screen share in a call, with named cursors
- Choose which monitor a session watches
- Request control from somebody's screen share
- Public ingress that fits a tunnel you already run
- Be a remote machine, and reach one
- Enrolment, grants, sessions and the relay
- Remote machines, grants, sessions and an audit trail
- Proxy LiveKit signalling, so a deployment is one hostname
- Choose the server from the login screen
- One address for a whole deployment, resolved at runtime
- Message actions - tombstones, edits, pins, reactions, search
- Implement message deletion and friend event notifications
- Add high-res icon rendering and portable production build target
- Set taskbar, electron window, system tray, and installer application icon
- Integrate brand icon from icon.svg with dark gradient styling across desktop app
- Honour mutes, quiet hours and Do Not Disturb
- System tray, close to tray, and start with the system
- Notification-service owns mutes, quiet hours and read state
- Play video and audio inline, and cap image previews
- Upload avatars and server icons
- Attach, preview and download files in the message view
- Encrypted attachments, compressed and uploaded in parts
- Attachment manifest and settable profile pictures
- Multipart uploads and a picture/attachment split
- Drop the default Electron menu bar
- Rebuild the client as a Discord-shaped app
- Choosable status, with invisible resolved server-side
- Friends, user search and direct messages
- Private channels with a member allowlist
- Per-member permission overrides and one access resolver
- Web admin panel for users and sign-in providers
- Sign in wi...
v0.0.1-alpha.3
Features
- Publish the service images for arm64 as well as amd64
Bug fixes
- Repair action refs mangled by the arm64 patch script
Other changes
- Betweenus is also available on arm docs
Install
Desktop (Windows) — BetweenUs-0.0.1-alpha.3-Setup.exe
installs; -Portable.exe needs nothing.
Android — take the APK matching your device (arm64-v8a unless it is
old or an emulator), or universal if you would rather not choose. The
.aab is for Play, not for sideloading.
Server — docker-compose.yml, nginx.conf and backup.sh below are a
deployment folder. Put them beside your existing .env and:
docker compose --env-file .env pull
docker compose --env-file .env up -dSame project name, same volumes, same .env as a built deployment, so an
existing server keeps its database and its uploads. BETWEENUS_VERSION in
.env overrides the pinned version; unset, this bundle stays on
0.0.1-alpha.3.
Images
aiyuayaan/betweenus:<service>-0.0.1-alpha.3, built for
linux/amd64 and linux/arm64 under one tag - a 64-bit Pi, an Ampere VPS or an
Apple silicon Mac pulls the same name and gets its own architecture. The moving
tags <service>-alpha and <service>-latest are
pointed at it as the last step of the run.