mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-06-09 06:10:00 +02:00
refactor(layouts): simplify to global config + preserve windows + add UI dropdown
Simplified layout system based on user feedback: **1. Global Layout Config (Simpler)** - Moved layoutConfig from per-workspace to global state - One configuration applies to all workspaces (easier to understand) - Updated state migration v8→v9 to move config to global level - Updated WorkspaceSettings UI to edit global config - Renamed updateWorkspaceLayoutConfig → updateLayoutConfig **2. Preserve Extra Windows (Fixed Bug)** - Fixed applyPresetToLayout to keep windows beyond preset slots - When applying 4-window grid to 6 windows, windows 5-6 are preserved - Extra windows stacked vertically on right side (70/30 split) - No more window loss when applying presets **3. Layout Dropdown in TabBar (Better UX)** - Added dropdown menu next to workspace tabs - Shows all available presets with icons (Grid2X2, Columns2, Split) - Displays window requirements and availability - Disables presets that need more windows than available - One-click preset application with toast feedback - More accessible than /layout command All tests passing (457 passed). State migration handles v6→v7→v8→v9 correctly. Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
@@ -65,7 +65,6 @@ export interface Workspace {
|
||||
label?: string; // Optional user-editable label
|
||||
layout: MosaicNode<string> | null;
|
||||
windowIds: string[];
|
||||
layoutConfig: LayoutConfig; // How new windows are inserted into layout
|
||||
}
|
||||
|
||||
export interface RelayInfo {
|
||||
@@ -85,6 +84,7 @@ export interface GrimoireState {
|
||||
windows: Record<string, WindowInstance>;
|
||||
workspaces: Record<string, Workspace>;
|
||||
activeWorkspaceId: string;
|
||||
layoutConfig: LayoutConfig; // Global configuration for window insertion (applies to all workspaces)
|
||||
activeAccount?: {
|
||||
pubkey: string;
|
||||
relays?: UserRelays;
|
||||
|
||||
Reference in New Issue
Block a user