• Johnny's avatar
    refactor(editor): complete state machine and services migration · 1b11e8c8
    Johnny authored
    BREAKING CHANGE: MemoEditor internal architecture completely refactored
    
    ## Summary
    
    Refactored MemoEditor from hooks-based state management to a three-layer
    architecture (Presentation → State → Services) using useReducer pattern.
    
    ## Changes
    
    ### Architecture
    - **State Layer** (5 new files): types, actions, reducer, context, barrel export
    - **Service Layer** (6 new files): error, validation, upload, cache, memo services + barrel
    - **Component Layer** (3 new files): EditorToolbar, EditorContent, EditorMetadata
    - **Simplified Hooks** (3 new files): useMemoInit, useAutoSave, useKeyboard
    
    ### Code Reduction
    - Main component: ~380 lines → ~140 lines (-63%)
    - Hooks removed: 5 old hooks (useMemoEditorState, useMemoSave, etc.)
    - Total lines removed: 508 lines of old code
    - Utility hooks preserved: 8 hooks still in use (useLocation, useDragAndDrop, etc.)
    
    ### Improvements
    -  Predictable state transitions with useReducer
    -  Testable business logic in pure service functions
    -  Cleaner component code (presentation only)
    -  Better separation of concerns
    -  Type-safe actions with discriminated unions
    -  Centralized error handling
    
    ## Statistics
    - Files changed: 26
    - Commits created: 25 (squashed into 1)
    - New files: 17
    - Removed files: 5
    - TypeScript errors: 0
    - Lint errors: 0
    
    ## Testing
    Manual testing required for:
    - Editor functionality (create, edit, save)
    - Drag and drop
    - Focus mode
    - Keyboard shortcuts (Cmd/Ctrl + Enter)
    - Auto-save to localStorage
    1b11e8c8
Name
Last commit
Last update
..
ActivityCalendar Loading commit data...
ConfirmDialog Loading commit data...
Inbox Loading commit data...
MasonryView Loading commit data...
MemoActionMenu Loading commit data...
MemoContent Loading commit data...
MemoDetailSidebar Loading commit data...
MemoEditor Loading commit data...
MemoExplorer Loading commit data...
MemoReactionListView Loading commit data...
MemoRelationForceGraph Loading commit data...
MemoView Loading commit data...
PagedMemoList Loading commit data...
Settings Loading commit data...
StatisticsView Loading commit data...
kit Loading commit data...
memo-metadata Loading commit data...
ui Loading commit data...
AttachmentIcon.tsx Loading commit data...
AuthFooter.tsx Loading commit data...
ChangeMemberPasswordDialog.tsx Loading commit data...
CreateAccessTokenDialog.tsx Loading commit data...
CreateIdentityProviderDialog.tsx Loading commit data...
CreateShortcutDialog.tsx Loading commit data...
CreateUserDialog.tsx Loading commit data...
CreateWebhookDialog.tsx Loading commit data...
DateTimeInput.tsx Loading commit data...
Empty.tsx Loading commit data...
LeafletMap.tsx Loading commit data...
LearnMore.tsx Loading commit data...
LocaleSelect.tsx Loading commit data...
MemoAttachment.tsx Loading commit data...
MemoDisplaySettingMenu.tsx Loading commit data...
MemoFilters.tsx Loading commit data...
MemoResource.tsx Loading commit data...
MemoSkeleton.tsx Loading commit data...
MemosLogo.tsx Loading commit data...
MobileHeader.tsx Loading commit data...
Navigation.tsx Loading commit data...
NavigationDrawer.tsx Loading commit data...
PasswordSignInForm.tsx Loading commit data...
PreviewImageDialog.tsx Loading commit data...
RequiredBadge.tsx Loading commit data...
SearchBar.tsx Loading commit data...
TagTree.tsx Loading commit data...
ThemeSelect.tsx Loading commit data...
UpdateAccountDialog.tsx Loading commit data...
UpdateCustomizedProfileDialog.tsx Loading commit data...
UserAvatar.tsx Loading commit data...
UserMenu.tsx Loading commit data...
VisibilityIcon.tsx Loading commit data...