You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(ui): settings error handling, dark titlebar, and activity labels
Fixes found while driving the live dev build against a real Drive backend:
settings (HIGH): a plausible out-of-range value (e.g. 100 concurrent
uploads, a 10s scan interval) BRICKED the Rules tab. The settings store
set `error = String(e)` on the structured IPC error, which stringifies to
the literal "[object Object]", and the template's v-else-if chain replaced
the ENTIRE form with it - unrecoverable until an app restart, plus an
unhandled promise rejection.
- store now stores a stable SPEC s24 CODE (toErrorCode), never String(e)
- the Rules form stays mounted; a rejected patch shows as an inline,
localized banner instead of replacing the form
- numeric fields are clamped to the backend ranges (concurrency 1..32,
scan 30..604800, deep-verify 3600..31536000, bandwidth 1..100000, hook
1..86400) BEFORE patching, so a typed out-of-range value is corrected
in place and never round-trips to a backend rejection; input min/max
aligned to match
- all Rules commits route through a wrapper that swallows the (now-rare)
rejection after the store records it, killing the unhandled-rejection
Vue warning
error localization: AddSourceWizard surfaced IPC failures via
`String(e)` too (same "[object Object]"/raw-English risk); it now uses the
toErrorCode + t(`errors.${code}.long`) pattern like the rest of the app.
dark titlebar: the native window titlebar + border inherited the user's
Windows ACCENT color (a per-machine teal/blue that clashed with the
theme). Force a dark caption + neutral border + immersive dark mode via
DwmSetWindowAttribute before the first show, so the chrome always matches
Driven's dark theme. Win10 ignores the color attrs (graceful no-op).
activity labels: deep_verify_done / update_applied rendered as raw
snake_case in the Activity table + filter while upload_done showed
"Uploaded"; add the missing activity.events.* labels so every backend
event type is humanized.
All verified live in a cargo tauri dev build (CDP): 100 concurrent
uploads clamps to 32 with the form intact and no console errors; the
titlebar is dark; the event filter reads "Deep verify complete" /
"App updated". ui suite 207 + vue-tsc + eslint + prettier green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MZQh3ZfwtZsM6c5qnTuWZP
0 commit comments