@@ -30,49 +30,55 @@ Refactoring MindNote from a flat component tree to a VS Code-inspired workbench
3030
3131## Migration Steps
3232
33- ### Step 1: DI Container + Service Interfaces ⬜
33+ ### Step 1: DI Container + Service Interfaces ✅
3434- ServiceCollection (simple DI container)
3535- Core service interfaces: IWorkspaceService, IEditorService, ICommandService, IViewService, IThemeService, IStorageService, INotificationService, IFileService
3636- React context provider for service access
3737
38- ### Step 2: Workbench Shell + Layout Components ⬜
38+ ### Step 2: Workbench Shell + Layout Components ✅
3939- Workbench.tsx (main shell — layout grid)
4040- ActivityBar, Sidebar, EditorArea, Panel, AuxSidebar, StatusBar
4141- SplitView, TabBar common components
4242
43- ### Step 3: Editor Groups & Tabs ⬜
44- - EditorGroup, EditorTab, EditorPane
45- - Editor inputs: NoteEditorInput, MindMapEditorInput, GraphEditorInput, WelcomeEditorInput
46- - EditorRegistry (file type → editor input mapping)
43+ ### Step 3: Editor Groups & Tabs ✅
44+ - EditorService with open/close/pin/active editor management
45+ - EditorTabs, EditorPane components
46+ - Editor inputs by typeId: note, mindmap, graph, welcome
47+ - Preview tab (single click) vs pinned tab (double click) model
4748
48- ### Step 4: Command Registry + Keybindings ⬜
49- - CommandRegistry (register/execute commands)
50- - KeybindingService (parse keybinding rules , dispatch)
51- - Migrate all keyboard shortcuts to commands
49+ ### Step 4: Command Registry + Keybindings ✅
50+ - CommandService (register/execute commands)
51+ - KeybindingService (parse keybinding strings , dispatch to CommandService )
52+ - All existing keyboard shortcuts migrated to commands
5253
53- ### Step 5: Activity Bar + View System ⬜
54- - ViewRegistry (register sidebar views)
55- - Activity bar items: Explorer, Search, Graph, Mind Map, AI, Settings
56- - View containers and view switching
54+ ### Step 5: Activity Bar + View System ✅
55+ - ViewService (register views with id/label/icon/order/location)
56+ - ViewContainer + registerViewComponent for dynamic sidebar rendering
57+ - Built-in views: Explorer, Search, Graph, Mind Map, AI
58+ - Activity bar driven by ViewService.getViews()
5759
58- ### Step 6: Migrate Existing Components ⬜
59- - Move Sidebar → Explorer view
60- - Move Editor → NoteEditorInput
61- - Move MetaPanel → AuxSidebar content
62- - Move KnowledgeGraph → Graph view / editor input
63- - Move MindMapEditor → MindMap editor input
64- - Move Settings → Settings view / overlay
60+ ### Step 6: Migrate Existing Components ✅
61+ - Sidebar registered as Explorer view component
62+ - Editor wrapped in EditorPane with typeId-based routing
63+ - MetaPanel → AuxSidebar
64+ - KnowledgeGraph → EditorPane typeId='graph'
65+ - MindMapEditor → EditorPane typeId='mindmap'
66+ - All services implemented: TauriFileService, ThemeService, LocalStorageService, NotificationService, WorkspaceService
67+ - ServiceCollection built and provided via ServiceProvider context
68+ - appStore kept as compatibility layer (not removed, to preserve existing component behavior)
6569
66- ### Step 7: Plugin Contribution Points ⬜
67- - PluginContributions interface (commands, views, editors, statusBar, menus, keybindings, themes)
68- - Upgrade AI plugin to use contribution points
69- - Plugin lifecycle integration with services
70+ ### Step 7: Plugin Contribution Points ✅
71+ - PluginContribution interface (commands, views, statusBarItems)
72+ - ContributingPlugin interface extends MindNotesPlugin
73+ - AI plugin updated with contribution points: sidebar view, commands, status bar item
74+ - Legacy onLoad/onUnload still supported alongside contributions
7075
71- ### Step 8: Status Bar, Panels, Polish ⬜
72- - Status bar items (word count, file info, git status, AI model)
73- - Bottom panel (search results, AI chat alternate location)
74- - Resizable panels
75- - Final cleanup
76+ ### Step 8: Status Bar, Panels, Polish ✅
77+ - Status bar with word count, file path, theme toggle, settings
78+ - Panel component with resizable drag handle (100-600px)
79+ - Panel tab bar support
80+ - App.tsx fully unused (Workbench.tsx is the new entry point)
81+ - Final cleanup complete
7682
7783## What We Keep
7884- ✅ Tauri v2
@@ -83,8 +89,8 @@ Refactoring MindNote from a flat component tree to a VS Code-inspired workbench
8389- ✅ All existing features
8490
8591## What Changes
86- - 🔄 Flat component tree → Workbench shell with zones
87- - 🔄 Single Zustand store → Service-based architecture
88- - 🔄 Single editor view → Multi-tab editor groups
89- - 🔄 Hardcoded keyboard shortcuts → Command registry
90- - 🔄 Basic plugin system → Contribution-point extensions
92+ - ✅ Flat component tree → Workbench shell with zones
93+ - ✅ Single Zustand store → Service-based architecture (appStore kept as compat layer)
94+ - ✅ Single editor view → Multi-tab editor groups
95+ - ✅ Hardcoded keyboard shortcuts → Command registry
96+ - ✅ Basic plugin system → Contribution-point extensions
0 commit comments