mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-20 07:10:40 -07:00
Mobile companion app + paired-device backend
New iOS-first companion (Expo SDK 54 + NativeWind v4) with three tabs: Captures (the hero — floating gold mic, live mic-meter waveform, expand-row playback), Generate (profile picker + speak + autoplay + recent), and Voices (searchable profile list). Pairing (V0): backend mints a one-time token, mobile scans/pastes the voicebox:// URL, server returns a long-lived bearer it stores only as a SHA-256 hash. Bearer-or-loopback auth applied to every user-data router so binding 0.0.0.0 doesn't leak existing endpoints. Loopback callers (the desktop app) keep their friction-free access. Desktop Settings → Mobile pane: live host picker (LAN / Tailscale auto- detected via the App-bundle binary path on macOS), QR rendering, 5-minute expiry countdown, copyable URL fallback, paired-device list with revoke. Auto-closes when a new device pairs. just dev now binds the backend to 0.0.0.0 so paired phones can reach it — and just setup-python pins mlx-audio==0.4.1 + mlx-lm so fresh Apple Silicon worktrees get a working STT path on first install.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
content: ['./app/**/*.{ts,tsx}', './src/**/*.{ts,tsx}'],
|
||||
presets: [require('nativewind/preset')],
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
background: 'hsl(0 0% 6%)',
|
||||
foreground: 'hsl(0 0% 95%)',
|
||||
card: {
|
||||
DEFAULT: 'hsl(0 0% 8%)',
|
||||
foreground: 'hsl(0 0% 95%)',
|
||||
},
|
||||
popover: {
|
||||
DEFAULT: 'hsl(0 0% 8%)',
|
||||
foreground: 'hsl(0 0% 95%)',
|
||||
},
|
||||
primary: {
|
||||
DEFAULT: 'hsl(0 0% 18%)',
|
||||
foreground: 'hsl(0 0% 95%)',
|
||||
},
|
||||
secondary: {
|
||||
DEFAULT: 'hsl(0 0% 12%)',
|
||||
foreground: 'hsl(0 0% 95%)',
|
||||
},
|
||||
muted: {
|
||||
DEFAULT: 'hsl(0 0% 12%)',
|
||||
foreground: 'hsl(0 0% 60%)',
|
||||
},
|
||||
accent: {
|
||||
DEFAULT: 'hsl(43 50% 45%)',
|
||||
foreground: 'hsl(0 0% 95%)',
|
||||
faint: 'hsl(43 50% 38%)',
|
||||
},
|
||||
destructive: {
|
||||
DEFAULT: 'hsl(0 62.8% 50%)',
|
||||
foreground: 'hsl(0 0% 95%)',
|
||||
},
|
||||
border: 'hsl(0 0% 12%)',
|
||||
input: 'hsl(0 0% 12%)',
|
||||
ring: 'hsl(0 0% 40%)',
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
};
|
||||
Reference in New Issue
Block a user