J.A.R.V.I.S-rust/frontend/src/css/styles.scss

114 lines
2.3 KiB
SCSS
Raw Normal View History

2026-01-04 22:50:34 +05:00
// ### BASE STYLES
html,
body {
margin: 0;
padding: 0;
min-height: 100vh;
min-width: 100vw;
background-color: #4c5062;
color: white;
// assistant page background
&.assist-page {
background: radial-gradient(
circle,
rgba(24, 123, 123, 0.49) 0%,
rgba(13, 15, 19, 1) 64%
);
&.assist-active {
background: radial-gradient(
circle,
rgba(24, 81, 123, 0.64) 0%,
rgba(13, 15, 19, 1) 64%
);
}
}
}
:root {
2026-01-04 22:50:34 +05:00
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 400;
color: #0f0f0f;
background-color: #f6f6f6;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
a {
2026-01-04 22:50:34 +05:00
color: #2a9cd0;
text-decoration: none;
font-weight: bold;
&:hover {
color: #1dabed;
text-decoration: underline;
}
}
2026-01-04 22:50:34 +05:00
// ### LAYOUT OVERRIDES
#wrapper {
2026-01-04 22:50:34 +05:00
padding: 0;
margin: 0;
}
fix: GUI max-width on wrapper + visible TTS swap result + warning cleanup GUI MAX-WIDTH (was still stretched) Root cause v2: my earlier rule applied max-width to #header and main INDIVIDUALLY, but they live inside <Container fluid id="wrapper"> from svelteui which goes full viewport width. Both children inherited that full width from the flex layout. Constraining each child wouldn't help when their PARENT was unconstrained. Fix: max-width:1280px !important on #wrapper itself, with margin:0 auto. Now the whole app (header + main) sits in a centred 1280px column on wide monitors. !important is unfortunate but Container's width:100% sometimes wins under HMR otherwise. VISIBLE TTS SWAP RESULT (was failing silently) User saved 'Piper' in dropdown → green 'Saved!' banner → active engine chip still showed 'sapi'. Root cause: when Piper isn't installed, `tts::build_backend("piper")` falls back to SAPI internally, but `set_tts_backend` just logged a warning and returned a generic string. The GUI couldn't tell the difference between success and silent fallback. Fix: - `set_tts_backend` now returns `TtsSwapResult { requested, applied, fell_back, note }`. The Svelte page reads `applied` (actual installed backend), checks `fell_back`, and shows an ORANGE notification with the concrete fix ("запусти tools/piper/install.ps1 чтобы скачать бинарь") instead of a green 'saved' lie. - Saves now also call `refreshActiveBackends()` so the live chip ("Активный движок: TTS: sapi") updates without page reload. - Green notification when swap succeeded normally. WARNING CLEANUP - jarvis-app/main.rs: removed unreachable `_ => {}` arm (all IpcAction variants are explicit now). - jarvis-app/tray.rs: moved `info!("Tray initialized.")` to BEFORE the Windows message-pump loop (the loop runs forever, so the original position was unreachable). - jarvis-gui/main.rs: dropped unused #[macro_use] on simple_log. - jarvis-gui/events.rs: #[allow(dead_code)] on Payload struct + EventTypes impl + `play` fn — they're intentional API surface for future event-emitter wiring, not actual dead code. - Plus a `cargo fix` pass for misc unused imports. Down from 12 warnings to 1 (npm-build-completion notice — informational). Tests: 140 rust + 115 python (was 104, +11 for new wave59_handlers). Release builds of jarvis-app + jarvis-gui both green.
2026-05-24 23:11:49 +03:00
// Cap the WHOLE app (header + main) to 1280px on wide monitors and centre it,
// so labels in the nav don't sprawl across 1920px+ screens. The wrapper is
// `<Container fluid id="wrapper">` from svelteui — fluid keeps it width: 100%
// inside the viewport, then we shrink the inner content here. Smaller windows
// are unaffected (max-width is a ceiling, not a floor).
//
// `!important` is unfortunate but svelteui's Container emits a width:100%
// rule that sometimes outweighs ours under HMR. The override is loud and
// localised — only on the top-level wrapper.
#wrapper {
max-width: 1280px !important;
margin: 0 auto !important;
box-sizing: border-box;
}
2026-01-04 22:50:34 +05:00
#header,
main {
padding: 0 30px;
fix: TTS hot-swap actually works + GUI max-width + Python builder discoverable ROOT CAUSE ANALYSIS User reported: (a) TTS dropdown doesn't apply, (b) GUI feels stretched, (c) no link to command builder, (d) Python doesn't even start. Issues (a), (b), (c) addressed here. (d) addressed in python repo. === Fix A: TTS hot-swap (was completely broken) === Two distinct bugs: 1. `tts::init_backend()` only read JARVIS_TTS env var, NEVER consulted `Settings.tts_backend` in the DB. So saving "Silero" in the GUI dropdown changed nothing — not even on restart. 2. `BACKEND: OnceCell<...>` couldn't be replaced at runtime, so even if init had picked the right backend, the dropdown was useless mid-session. Fixed: - `tts::BACKEND` is now `Lazy<RwLock<Option<Arc<dyn TtsBackend>>>>`. - `choose_backend_name()` resolves from DB → env → auto-detect. - New `swap_to(name)` replaces the live backend atomically. - IPC: new `IpcAction::SwitchTts { backend }`. jarvis-app reacts to it the same way it reacts to SwitchLlm. - GUI's `set_tts_backend` now persists + hot-swaps GUI's TTS + Svelte page also fires `switchDaemonTts()` over WS so the running daemon installs the new backend. - Removed "Применится при следующем запуске" hint — now applies immediately. RU + EN locale strings updated. === Fix B: GUI max-width === main + #header had no max-width, so on a 1920px monitor the labels sprawled across 1860px of space, which felt stretched. Added max-width: 1280px + margin: 0 auto + box-sizing: border-box. Smaller windows are unaffected. Also added the same cap on .app-container.assist-page so the home screen arc reactor centres properly. === Fix C: Command builder discoverable === The Python fork ships a separate yaml-editing tool at `python/tools/command_builder/` (pywebview GUI). No way to find it from the main Rust GUI. Fixed: - New tauri command `open_command_builder` (crates/jarvis-gui/src/ tauri_commands/builder.rs). Locates the Python fork via $JARVIS_PYTHON_DIR → sibling python/ → C:\Jarvis\python, prefers the project's .venv, spawns `python -m tools.command_builder`. - New blue "Конструктор команд (Python)" button on /settings page near the Save / Back buttons. Tests: 140 rust + 104 python all pass. Release builds of jarvis-app and jarvis-gui both green.
2026-05-24 22:12:04 +03:00
box-sizing: border-box;
}
.app-container.assist-page {
width: 100%;
margin: 0 auto;
}
2026-01-04 22:50:34 +05:00
// ### FORM OVERRIDES
select,
input {
color: #ccc !important;
}
.form {
2026-01-04 22:50:34 +05:00
label {
font-weight: bold !important;
color: #8ac832 !important;
font-size: 15px !important;
border-bottom: 1px dotted gray;
margin-bottom: 10px !important;
& + div {
line-height: 1.2em;
}
}
2026-01-04 22:50:34 +05:00
.svelteui-Tab-label {
font-size: 18px !important;
}
}