Skip to content

Commit 23d67c4

Browse files
committed
chore(release): v0.4.5 — surface "Restart server to apply" hint on QUANT/CONTEXT/SERVER saves
User-reported issue: changing TurboQuant mode (or any other env-derived knob) in the QUANT card silently no-ops on the live server because `update_quant_config` / `update_context_config` / `update_server_config` only persist to disk — `lumen-server`'s env vars are baked at spawn time (see `server.rs::spawn_server_command`) and don't re-read the config. Previously only the ENV OVERRIDES card showed "Saved. Restart the server to apply (Stop → Start)." The QUANT, CONTEXT, and SERVER cards saved silently — `saveQuant()` and `saveContext()` didn't even set `statusMessage`, and `saveServer()` showed a generic "Server config saved" without the restart hint. Users had no way to know their TurboQuant / KV-quant / ctx caps weren't actually live. This patch: * Two new i18n keys (EN + KO): - `config.savedRestartHint` — "Saved. Restart the server to apply (Stop → Start)." - `config.saved` — bare "Saved." for when the server is stopped (next start picks up the change naturally — no restart needed). * `savedToast()` helper in App.svelte picks the right variant by checking `status.state in {"running", "starting"}`. * `saveServer()`, `saveQuant()`, `saveContext()` all invoke `savedToast()` after the on-disk save + clear after 3s (up from 1.5s — the longer text needs more dwell time to read). No behavior change to the server itself — pure UX surfacing. Users on v0.4.4 who hit the silent-save trap should see the hint immediately after OTA update + opening any of the three cards.
1 parent 8a714d5 commit 23d67c4

7 files changed

Lines changed: 37 additions & 6 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/lumen-app/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lumen-app"
3-
version = "0.4.4"
3+
version = "0.4.5"
44
edition.workspace = true
55
rust-version.workspace = true
66
license.workspace = true

crates/lumen-app/frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "lumen-app-frontend",
33
"private": true,
4-
"version": "0.4.4",
4+
"version": "0.4.5",
55
"type": "module",
66
"scripts": {
77
"predev": "cargo build --manifest-path ../../../Cargo.toml -p lumen-server --release",

crates/lumen-app/frontend/src/App.svelte

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,16 +435,32 @@
435435
config = await api.updateServerConfig(config.server);
436436
}
437437
438+
// Shared toast text — restart hint only when the server is currently
439+
// running (otherwise just "Saved", since next start will pick the new
440+
// env vars naturally). Without this, users who change TurboQuant /
441+
// KV-quant / ctx caps while the server is running see the UI update
442+
// but the running process keeps the OLD env vars until manual
443+
// Stop → Start. The QUANT / CONTEXT / SERVER cards previously had no
444+
// hint at all (only env_overrides did).
445+
function savedToast(): string {
446+
if (status.state === "running" || status.state === "starting") {
447+
return t("config.savedRestartHint");
448+
}
449+
return t("config.saved");
450+
}
451+
438452
async function saveServer() {
439453
if (!config) return;
440454
config = await api.updateServerConfig(config.server);
441-
statusMessage = "Server config saved";
442-
setTimeout(() => (statusMessage = null), 1500);
455+
statusMessage = savedToast();
456+
setTimeout(() => (statusMessage = null), 3000);
443457
}
444458
445459
async function saveQuant() {
446460
if (!config) return;
447461
config = await api.updateQuantConfig(config.quant);
462+
statusMessage = savedToast();
463+
setTimeout(() => (statusMessage = null), 3000);
448464
}
449465
450466
async function saveContext() {
@@ -453,6 +469,8 @@
453469
// ctx affects KV-cache headroom in the tuned memory recommendation
454470
// (~1 GB per 8K tokens). Re-sync so saved caps follow.
455471
await syncTunedMemoryCaps();
472+
statusMessage = savedToast();
473+
setTimeout(() => (statusMessage = null), 3000);
456474
}
457475
458476
async function resetMemoryCaps() {

crates/lumen-app/frontend/src/messages/en.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,13 @@ export const en: Record<string, string> = {
276276
"env.applyHint": "Changes apply on next server start.",
277277
"env.empty2": "No overrides set.",
278278

279+
// Shared toast for QUANT / CONTEXT / SERVER card saves. The variant shown
280+
// depends on whether the inference server is currently running — running
281+
// server needs a restart for env-derived knobs (TurboQuant, KV quant, ctx
282+
// caps, etc.) to take effect.
283+
"config.savedRestartHint": "Saved. Restart the server to apply (Stop → Start).",
284+
"config.saved": "Saved.",
285+
279286
// ── DoctorPanel ─────────────────────────────────────────────────
280287
"doctor.title": "Doctor",
281288
"doctor.run": "Run checks",

crates/lumen-app/frontend/src/messages/ko.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,12 @@ export const ko: Record<string, string> = {
267267
"env.applyHint": "변경 사항은 다음 서버 시작 시 적용됩니다.",
268268
"env.empty2": "설정된 오버라이드가 없습니다.",
269269

270+
// QUANT / CONTEXT / SERVER 카드 저장 시 공통 토스트. 서버 실행 중이면
271+
// 재시작 안내, 정지 상태면 단순 "저장됨" 만 표시. env-derived 노브
272+
// (TurboQuant, KV quant, ctx caps 등) 는 재시작 시점에만 반영됨.
273+
"config.savedRestartHint": "저장됨. 적용하려면 서버 재시작 (중지 → 시작).",
274+
"config.saved": "저장됨.",
275+
270276
// ── 진단 패널 ───────────────────────────────────────────────────
271277
"doctor.title": "진단",
272278
"doctor.run": "점검 실행",

crates/lumen-app/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "Lumen",
4-
"version": "0.4.4",
4+
"version": "0.4.5",
55
"identifier": "ai.lumen.app",
66
"build": {
77
"frontendDist": "frontend/dist",

0 commit comments

Comments
 (0)