Compare commits

...
10 Commits
Author SHA1 Message Date
selimaj-dev 4befd73f99 Fix again
Tauri Release Build / Build (ubuntu-latest) (release) Failing after 38s
Tauri Release Build / Build (macos-latest) (release) Canceled after 0s
Tauri Release Build / Build (windows-latest) (release) Canceled after 0s
2026-08-31 20:11:32 +02:00
selimaj-dev 89f65c6162 Fix 2026-08-31 20:08:37 +02:00
selimaj-dev dc12fb8184 Updated version 2026-08-31 14:02:46 -04:00
selimaj-dev 365a3c6151 tauri release 2026-08-31 14:01:11 -04:00
selimaj-dev 8c58cb8687 Updated icons 2026-08-31 19:57:53 +02:00
selimaj-dev 8628047a07 Merge pull request #12 from recurse-chat/bug-fixes
BUG Fix: Muting and deafen, and sidebar UI
2026-08-29 11:53:56 -04:00
selimaj-dev 78c1f07a35 Fix muting also deaf 2026-08-29 11:36:59 -04:00
selimaj-dev b950bb4816 A little more gap 2026-08-29 11:34:13 -04:00
selimaj-dev 0104c151ce A little more gap 2026-08-29 11:33:46 -04:00
selimaj-dev 15aafeda58 Fixed mute and deafen 2026-08-29 11:31:46 -04:00
59 changed files with 122 additions and 12 deletions
+94
View File
@@ -0,0 +1,94 @@
name: Tauri Release Build
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: "Release tag to upload to (e.g. 0.1.0)"
required: false
type: string
jobs:
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: dtolnay/rust-toolchain@stable
- name: Install dependencies (Linux only)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt update
sudo apt install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libpipewire-0.3-dev \
libasound2-dev
- run: npm install
- run: npm run tauri build
# --- macOS fix ---
- name: Prepare macOS app
if: matrix.os == 'macos-latest'
run: |
APP_PATH=$(find src-tauri/target/release/bundle/macos -name "*.app")
APP_NAME=$(basename "$APP_PATH" .app)
xattr -cr "$APP_PATH"
codesign --deep --force --sign - "$APP_PATH"
ditto -c -k --keepParent "$APP_PATH" "$APP_NAME-macos.zip"
# --- Get release Tag ---
- name: Get release tag
id: get_tag
shell: bash
run: |
TAG="${{ inputs.tag }}"
if [ "${{ github.event_name }}" = "release" ]; then
TAG="${{ github.event.release.tag_name }}"
elif [ -z "$TAG" ]; then
TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
fi
echo "tag=$TAG" >> $GITHUB_OUTPUT
# --- Upload to release ---
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.get_tag.outputs.tag }}
files: |
src-tauri/target/release/bundle/**/*.AppImage
src-tauri/target/release/bundle/**/*.msi
src-tauri/target/release/bundle/**/*.exe
src-tauri/target/release/bundle/**/*.deb
src-tauri/target/release/bundle/**/*.rpm
*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "enclave",
"private": true,
"version": "0.1.0",
"version": "0.1.0-beta.0",
"type": "module",
"scripts": {
"dev": "vite",
@@ -44,4 +44,4 @@
"typescript": "~5.8.3",
"vite": "^7.0.4"
}
}
}
+1 -1
View File
@@ -1168,7 +1168,7 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
[[package]]
name = "enclave"
version = "0.1.0"
version = "0.1.0-beta.0"
dependencies = [
"chacha20poly1305",
"cpal",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "enclave"
version = "0.1.0"
version = "0.1.0-beta.0"
description = "A Tauri App"
authors = ["you"]
edition = "2021"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 903 B

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<background android:drawable="@color/ic_launcher_background"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#fff</color>
</resources>
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+12 -5
View File
@@ -650,21 +650,28 @@ pub fn connect_to_vc(
let mut next_frame_time = Instant::now();
while !shutdown.load(Ordering::Relaxed) {
let (is_muted, is_deaf) = {
let is_deaf = {
let cfg = backend_config.lock().unwrap();
(cfg.is_muted, cfg.is_deaf)
cfg.is_deaf
};
if is_muted || is_deaf {
if is_deaf {
// Keep draining the UDP socket while deafened/muted so stale
// packets don't accumulate in the OS buffer and get replayed
// when we undeafen/unmute. Decrypting and discarding here
// fully consumes the socket backlog.
if let Ok(len) = socket.recv(&mut udp_buffer) {
let _ = cipher.lock().unwrap().decrypt(&udp_buffer[..len]);
}
// Drop any audio already buffered for playback so that on
// unmute/undeafen we don't replay stale audio from the past.
// unmute/undeafen we don't replay audio from the past.
if let Ok(mut cons) = consumer_out.lock() {
cons.clear();
}
packets.clear();
is_prebuffering = true;
std::thread::sleep(Duration::from_secs(1));
thread::sleep(Duration::from_millis(1));
continue;
}
+2 -2
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "enclave",
"version": "0.1.0",
"version": "0.1.0-0",
"identifier": "org.enclave.enclave",
"build": {
"beforeDevCommand": "npm run dev",
@@ -32,4 +32,4 @@
"icons/icon.ico"
]
}
}
}
+1 -1
View File
@@ -64,7 +64,7 @@ export function RenderFeatures({
return (
users && (
<div className="flex flex-col gap-1.5 px-4 pt-0.5">
<div className="flex flex-col gap-2 px-4 pt-2">
{(isCurrentVc ? users : users.slice(0, 15)).map((pubkey) => {
const user = appRef.current?.server?.users[pubkey];
if (!user) return null;