Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4befd73f99 | ||
|
|
89f65c6162 | ||
|
|
dc12fb8184 | ||
|
|
365a3c6151 | ||
|
|
8c58cb8687 | ||
|
|
8628047a07 | ||
|
|
78c1f07a35 | ||
|
|
b950bb4816 | ||
|
|
0104c151ce | ||
|
|
15aafeda58 |
@@ -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 }}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1168,7 +1168,7 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
|
||||
|
||||
[[package]]
|
||||
name = "enclave"
|
||||
version = "0.1.0"
|
||||
version = "0.1.0-beta.0"
|
||||
dependencies = [
|
||||
"chacha20poly1305",
|
||||
"cpal",
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 974 B After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 903 B After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 8.2 KiB |
|
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>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
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>
|
||||
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 288 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||