diff --git a/apps/mana/apps/web/src/lib/components/workbench/scenes/SceneTabs.svelte b/apps/mana/apps/web/src/lib/components/workbench/scenes/SceneTabs.svelte index 59233f49d..bb358bad9 100644 --- a/apps/mana/apps/web/src/lib/components/workbench/scenes/SceneTabs.svelte +++ b/apps/mana/apps/web/src/lib/components/workbench/scenes/SceneTabs.svelte @@ -113,9 +113,6 @@ oncontextmenu={(e) => openMenu(e, scene)} title={scene.name} > - {#if scene.icon} - {scene.icon} - {/if} {scene.name} {/each} @@ -182,10 +179,6 @@ .scene-pill.dragging { opacity: 0.4; } - .scene-icon { - font-size: 0.95rem; - line-height: 1; - } .scene-name { overflow: hidden; text-overflow: ellipsis; diff --git a/apps/mana/apps/web/src/lib/stores/workbench-scenes.svelte.ts b/apps/mana/apps/web/src/lib/stores/workbench-scenes.svelte.ts index b620b9b77..e2e476bcc 100644 --- a/apps/mana/apps/web/src/lib/stores/workbench-scenes.svelte.ts +++ b/apps/mana/apps/web/src/lib/stores/workbench-scenes.svelte.ts @@ -62,7 +62,7 @@ function toScene(local: LocalWorkbenchScene): WorkbenchScene { return { id: local.id, name: local.name, - icon: local.icon, + description: local.description ?? null, openApps: local.openApps ?? [], order: local.order, wallpaper: local.wallpaper, @@ -98,7 +98,9 @@ function pickActiveId(scenes: WorkbenchScene[], current: string | null): string async function patchScene( id: string, - patch: Partial> + patch: Partial< + Pick + > ) { // Strip Svelte 5 $state proxies — IndexedDB's structured clone can't serialize them. const clean = $state.snapshot({ ...patch, updatedAt: nowIso() }); @@ -182,7 +184,7 @@ export const workbenchScenesStore = { async createScene(opts: { name: string; - icon?: string; + description?: string | null; seedApps?: WorkbenchSceneApp[]; setActive?: boolean; }): Promise { @@ -192,7 +194,7 @@ export const workbenchScenesStore = { const row: LocalWorkbenchScene = { id, name: opts.name.trim() || 'Neue Szene', - icon: opts.icon, + description: opts.description ?? null, openApps: opts.seedApps ? ($state.snapshot(opts.seedApps) as WorkbenchSceneApp[]) : [], order: maxOrder + 1, createdAt: now, @@ -206,10 +208,17 @@ export const workbenchScenesStore = { return id; }, - async renameScene(id: string, name: string, icon?: string) { + async renameScene(id: string, name: string, description?: string | null) { const trimmed = name.trim(); if (!trimmed) return; - await patchScene(id, { name: trimmed, ...(icon !== undefined ? { icon } : {}) }); + await patchScene(id, { + name: trimmed, + ...(description !== undefined ? { description } : {}), + }); + }, + + async setSceneDescription(id: string, description: string | null) { + await patchScene(id, { description }); }, async duplicateScene(id: string) { @@ -217,7 +226,7 @@ export const workbenchScenesStore = { if (!src) return; await this.createScene({ name: `${src.name} Kopie`, - icon: src.icon, + description: src.description ?? null, seedApps: src.openApps, setActive: true, }); diff --git a/apps/mana/apps/web/src/lib/types/workbench-scenes.ts b/apps/mana/apps/web/src/lib/types/workbench-scenes.ts index d73d9a0da..564c4d021 100644 --- a/apps/mana/apps/web/src/lib/types/workbench-scenes.ts +++ b/apps/mana/apps/web/src/lib/types/workbench-scenes.ts @@ -25,8 +25,8 @@ export interface WorkbenchSceneApp { export interface WorkbenchScene { id: string; name: string; - /** Optional emoji shown in the scene tab. */ - icon?: string; + /** Short free-text description shown under the name in the scene header. */ + description?: string | null; openApps: WorkbenchSceneApp[]; /** Sort order in the scene tab bar. */ order: number;