• Steven's avatar
    refactor: standardize MobX store architecture with base classes and utilities · f5624fa6
    Steven authored
    Refactored all stores to follow consistent patterns and best practices while keeping MobX:
    
    New Infrastructure:
    - Created base-store.ts with StandardState base class and factory functions
    - Added store-utils.ts with RequestDeduplicator, StoreError, and OptimisticUpdate helpers
    - Added config.ts for MobX configuration and strict mode
    - Created comprehensive README.md with architecture guide and examples
    
    Server State Stores (API data):
    - attachment.ts: Added request deduplication, error handling, computed properties, delete/clear methods
    - workspace.ts: Added Theme type validation, computed memoization, improved initialization
    - memo.ts: Enhanced with optimistic updates, request deduplication, structured errors
    - user.ts: Fixed temporal coupling, added computed memoization, request deduplication
    
    Client State Stores (UI state):
    - view.ts: Added helper methods (toggleSortOrder, setLayout, resetToDefaults), input validation
    - memoFilter.ts: Added utility methods (hasFilter, clearAllFilters, removeFiltersByFactor)
    
    Improvements:
    - Request deduplication prevents duplicate API calls (all server stores)
    - Computed property memoization improves performance
    - Structured error handling with error codes
    - Optimistic updates for better UX (memo updates)
    - Comprehensive JSDoc documentation
    - Type-safe APIs with proper exports
    - Clear separation between server and client state
    
    All stores now follow consistent patterns for better maintainability and easier onboarding.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
    f5624fa6
Name
Last commit
Last update
..
public Loading commit data...
src Loading commit data...
.gitignore Loading commit data...
.prettierrc.js Loading commit data...
README.md Loading commit data...
components.json Loading commit data...
eslint.config.mjs Loading commit data...
index.html Loading commit data...
package.json Loading commit data...
pnpm-lock.yaml Loading commit data...
tsconfig.json Loading commit data...
vite.config.mts Loading commit data...