Rip Authelia, fix voice input + Switch UI #822
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!822
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/authelia-rip-and-voice-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Three intertwined fixes that surfaced from operator-reported avatar breakage on
claude.jacquin.app.Authelia rip (#540 follow-through)
The session gate (F1/F2/F3 OAuth) is now the only auth surface. Caddy no longer fronts claude-hooks with
forward_auth(proxmox-iac68d1404), so the upstreamRemote-Userheader is gone. Removed:auth.tsgutted to 27 LOC (justisLoopback); droppedAuthConfig,extractUser,checkOperatorAuth,ipInCidr,isFromTrustedProxy.main.ts— droppedc.set("user", …)middleware;guardMutatingnow requires an OAuth session (or loopback); everyc.get("user") ?? "operator"isc.get("session")?.account_login.webhook-config.ts— dropped theauthfield, parsing block, andsession_gate_enableddeprecation log.service-config-schema.ts,service-config-settings.ts,defaults.ts,resolver.ts,presets.ts— dropped theauthfield andauth_jsonSQL.011-drop-service-config-auth.tsphysically drops theservice_config.auth_jsoncolumn.app-shell.tsx,avatar-menu.tsx,useFlowAuth.ts— droppedauth_enabled/authEnabled; logout always rendered.auth.test.ts; cleaned auth fixtures.Voice input fixes
transcribe-health.ts— speaches/uvicorn rejects HEAD on/v1/modelswith 405; switch probe to GET. (Without this the pill was stuck on "Unreachable".)transcribe.ts— speaches' OpenAI-compat SSE emitstranscript.text.delta(incremental) thentranscript.text.done(with emptytext). Accumulate deltas, only finalize ondone. Skip frames afterfinalEmitted=true.use-mic-dictation.ts— POSTmultipart/form-data(not raw blob) soreq.formData()parses; SSE reader now pairsevent:line with followingdata:(previous parser looked for a non-existenttypefield on the JSON body).composer.tsx— mic button shows loading spinner duringuploadingphase too.Switch.Thumb position fix
Tailwind v4 + Base UI
Switch+ Firefox 150: thedata-checked:named variant emits a CSS rule, but Firefox doesn't applytranslate: var(--tw-translate-x) var(--tw-translate-y)from the indirected variable —data-checked:bg-accent(color) works,data-checked:translate-x-N(position) doesn't. Fix: control thumb'stransformvia React inline style based on thecheckedprop. Applied across SwitchRow + voice toggle (settings.index.tsx), dispatch / watch toggles (settings.repos.tsx), and both plugin toggles (plugins-tab.tsx). Also registereddata-checked/data-uncheckedas@custom-variantinstyles/index.cssso other call sites (non-Switch.Thumb) keep working.Test plan
just qa— 3169 tests passlocalhost:4500andclaude.jacquin.appservice_config.auth_jsoncolumn physically gone (PRAGMA table_info)🤖 Generated with Claude Code
CI green (run 3014). Auth removal is consistent end-to-end —
auth.tsgutted toisLoopback,guardMutatingcorrectly gates on session-or-loopback, migration 011 is idempotent, SQL column list balanced post-drop. Voice fixes are correct: HEAD→GET probe, FormData upload, SSEevent:-aware parser, delta accumulation with OpenAI-compat fallback. Switch.Thumb inline-style workaround is sound for the Firefox 150 / Tailwind v4 issue.