Add native self-hosted instance connection to fluxer_desktop

Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 +
tools/ci) with a "Connect to a Different Server" menu item and popout
that lets the desktop app switch to any self-hosted Fluxer instance,
plus fixes for well-known discovery on single-domain self-hosted
deployments and a false-positive ERR_ABORTED on same-origin client
redirects during the switch. Defaults to chat.fluxr.chat and uses an
isolated userData directory from the official build.
This commit is contained in:
2026-07-01 18:22:43 -04:00
commit 682afacd30
1763 changed files with 613720 additions and 0 deletions
@@ -0,0 +1,191 @@
#![feature(asm)]
#![allow(
dead_code,
non_upper_case_globals,
unused_macros,
non_snake_case,
unused_assignments
)]
use std::time::Instant;
macro_rules! r2 { ($($stat:stmt)*) => { $( $stat )* $( $stat )* } }
macro_rules! r4 { ($($stat:stmt)*) => { r2!(r2!($($stat)*)) }}
macro_rules! r8 { ($($stat:stmt)*) => { r4!(r2!($($stat)*)) }}
macro_rules! r16 { ($($stat:stmt)*) => { r4!(r4!($($stat)*)) }}
macro_rules! r32 { ($($stat:stmt)*) => { r8!(r4!($($stat)*)) }}
macro_rules! r64 { ($($stat:stmt)*) => { r8!(r8!($($stat)*)) }}
macro_rules! r128 { ($($stat:stmt)*) => { r8!(r16!($($stat)*)) }}
macro_rules! r1024 { ($($stat:stmt)*) => { r8!(r128!($($stat)*)) }}
macro_rules! r4096 { ($($stat:stmt)*) => { r4!(r1024!($($stat)*)) }}
const _F32: [f32; 1024] = [12.; 1024];
const F32: *const f32 = _F32.as_ptr();
/*
fn ruin_cache() {
let _a = (0..1000000).collect::<Vec<i32>>();
}
*/
macro_rules! b {
($f: block, $inner_loop: expr, $measures: expr) => {{
let mut values = Vec::with_capacity($measures);
for _ in 0..$measures {
// ruin_cache();
let start = Instant::now();
for _ in 0..$inner_loop {
unsafe { $f };
}
values.push(start.elapsed());
}
values.sort();
values[$measures / 2].as_nanos() as f64 / 1e9 / $inner_loop as f64
}};
}
fn main() {
let cycle = b!(
{
r1024!(asm!("orr r0, r0, r0", out("r0") _));
},
1000,
1000
) / 1024.;
let indep_fmla = b!(
{
r8!(asm!("
vmla.f32 q0, q0, q0
vmla.f32 q1, q1, q1
vmla.f32 q2, q2, q2
vmla.f32 q3, q3, q3
vmla.f32 q4, q4, q4
vmla.f32 q5, q5, q5
vmla.f32 q6, q6, q6
vmla.f32 q7, q7, q7
", out("q0") _, out("q1") _, out("q2") _, out("q3") _, out("q4") _, out("q5") _, out("q6") _, out("q7") _));
},
1000,
1000
) / 64.;
eprintln!("rcp tp: indep fmla: {}", indep_fmla / cycle);
let dep_accu_fmla = b!(
{
r16!(asm!("
vmla.f32 q15, q0, q0
vmla.f32 q15, q1, q1
vmla.f32 q15, q2, q2
vmla.f32 q15, q3, q3
vmla.f32 q15, q4, q4
vmla.f32 q15, q5, q5
vmla.f32 q15, q6, q6
vmla.f32 q15, q7, q7
vmla.f32 q15, q8, q8
vmla.f32 q15, q9, q9
vmla.f32 q15, q10, q10
vmla.f32 q15, q11, q11
vmla.f32 q15, q12, q12
vmla.f32 q15, q13, q13
vmla.f32 q15, q14, q14
", out("q0") _, out("q1") _, out("q2") _, out("q3") _, out("q4") _, out("q5") _, out("q6") _, out("q7") _,
out("q8") _, out("q9") _, out("q10") _, out("q11") _, out("q12") _, out("q13") _, out("q14") _, out("q15") _));
},
1000,
1000
) / 16.
/ 15.;
eprintln!("rcp tp: accu-dep fmla: {}", dep_accu_fmla / cycle);
let load_s_using_vld1_64 = b!(
{
let mut p = F32;
r16!(asm!("
vld1.64 {{d0-d3}}, [{0}]!
vld1.64 {{d4-d7}}, [{0}]!
vld1.64 {{d8-d11}}, [{0}]!
vld1.64 {{d12-d15}}, [{0}]!
vld1.64 {{d16-d19}}, [{0}]!
vld1.64 {{d20-d23}}, [{0}]!
vld1.64 {{d24-d27}}, [{0}]!
vld1.64 {{d28-d31}}, [{0}]!
",
inout(reg) p,
out("q0") _, out("q1") _, out("q2") _, out("q3") _, out("q4") _, out("q5") _, out("q6") _, out("q7") _,
out("q8") _, out("q9") _, out("q10") _, out("q11") _, out("q12") _, out("q13") _, out("q14") _, out("q15") _));
},
1000,
1000
) / 16.
/ 64.; // each line load 8 s
eprintln!(
"rcp tp: load s using vld1_64 ia {}",
load_s_using_vld1_64 / cycle
);
let load_s_using_vldm_q = b!(
{
let mut p = F32;
r16!(asm!("
vldm {0}!, {{q0-q3}}
vldm {0}!, {{q4-q7}}
vldm {0}!, {{q8-q11}}
vldm {0}!, {{q12-q15}}
",
inout(reg) p,
out("q0") _, out("q1") _, out("q2") _, out("q3") _, out("q4") _, out("q5") _, out("q6") _, out("q7") _,
out("q8") _, out("q9") _, out("q10") _, out("q11") _, out("q12") _, out("q13") _, out("q14") _, out("q15") _));
},
1000,
1000
) / 16.
/ 64.;
eprintln!(
"rcp tp: load s using vldmia q: {}",
load_s_using_vldm_q / cycle
);
let load = b!(
{
let mut p = F32;
r16!(asm!("
vldr.64 d0, [{0}]
vldr.64 d1, [{0}, #8]
vldr.64 d2, [{0}, #16]
vldr.64 d3, [{0}, #24]
vldr.64 d4, [{0}, #32]
vldr.64 d5, [{0}, #40]
vldr.64 d6, [{0}, #48]
vldr.64 d7, [{0}, #56]
vldr.64 d8, [{0}, #64]
vldr.64 d9, [{0}, #72]
vldr.64 d10, [{0}, #80]
vldr.64 d11, [{0}, #88]
vldr.64 d12, [{0}, #96]
vldr.64 d13, [{0}, #104]
vldr.64 d14, [{0}, #112]
vldr.64 d15, [{0}, #120]
vldr.64 d16, [{0}, #128]
vldr.64 d17, [{0}, #136]
vldr.64 d18, [{0}, #144]
vldr.64 d19, [{0}, #152]
vldr.64 d20, [{0}, #160]
vldr.64 d21, [{0}, #168]
vldr.64 d22, [{0}, #176]
vldr.64 d23, [{0}, #184]
vldr.64 d24, [{0}, #192]
vldr.64 d25, [{0}, #200]
vldr.64 d26, [{0}, #208]
vldr.64 d27, [{0}, #216]
vldr.64 d28, [{0}, #224]
vldr.64 d29, [{0}, #232]
vldr.64 d30, [{0}, #240]
vldr.64 d31, [{0}, #248]
add {0}, #256
",
inout(reg) p,
out("q0") _, out("q1") _, out("q2") _, out("q3") _, out("q4") _, out("q5") _, out("q6") _, out("q7") _,
out("q8") _, out("q9") _, out("q10") _, out("q11") _, out("q12") _, out("q13") _, out("q14") _, out("q15") _));
},
1000,
1000
) / 16.
/ 64.;
eprintln!("rcp tp: load s using vldr d + imm: {}", load / cycle);
}