- 29 Dec, 2025 3 commits
- 28 Dec, 2025 8 commits
-
-
Johnny authored
-
Johnny authored
-
Johnny authored
-
Johnny authored
-
Johnny authored
-
Johnny authored
refactor: streamline MemoView component and related hooks, removing unused code and integrating user data
-
Johnny authored
-
Johnny authored
- Deleted MemoContentContext and its associated types. - Updated Tag and TaskListItem components to use MemoViewContext instead. - Refactored MemoContent component to eliminate context provider and directly use derived values. - Simplified MemoViewContext to only include essential data. - Enhanced error handling in various components by introducing a centralized error handling utility. - Improved type safety across components and hooks by refining TypeScript definitions. - Updated remark plugins to enhance tag parsing and preserve node types.
-
- 27 Dec, 2025 2 commits
- 26 Dec, 2025 2 commits
-
-
Johnny authored
-
boojack authored
Signed-off-by:boojack <stevenlgtm@gmail.com>
-
- 25 Dec, 2025 9 commits
-
-
Steven authored
-
Steven authored
- Remove outdated CLAUDE.md with obsolete architecture references - Create comprehensive AGENTS.md covering: - Backend: Go, gRPC, Connect RPC, store layer, migrations - Frontend: React, React Query, Context API, state management - Development commands, workflows, and testing patterns - Code conventions, configuration, CI/CD, and security notes
-
Steven authored
Replace dynamic hook mapping with useMemoComments hook to fetch all comments via listMemoComments API, ensuring consistent hook order across renders and fixing page load failure after comment creation.
-
Steven authored
-
Steven authored
The translation files ca.json and gl.json existed but weren't registered in the locales array, preventing users from selecting these languages.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude Sonnet 4.5 <noreply@anthropic.com>
-
Steven authored
This commit combines multiple improvements to the React Query migration: Performance Optimization: - Increase default staleTime from 10s to 30s for better performance - Reduces unnecessary network requests while maintaining data freshness Error Handling: - Add ErrorBoundary component with user-friendly error UI - Integrated at app root level for comprehensive coverage - Provides error details and reload option Documentation: - Add docs/auth-architecture.md explaining AuthContext design decisions - Document why AuthContext is preferred over React Query for current user Code Cleanup: - Remove all JSDoc comments from hooks and components - Keep essential inline comments for clarity - Simplifies code readability Files modified: - src/lib/query-client.ts - Optimized staleTime - src/main.tsx - Added ErrorBoundary wrapper - src/components/ErrorBoundary.tsx - New component - src/hooks/useMemoQueries.ts - Removed JSDoc - src/hooks/useUserQueries.ts - Removed JSDoc - src/components/PagedMemoList/PagedMemoList.tsx - Removed JSDoc - docs/auth-architecture.md - New documentation All changes verified with TypeScript compilation and production build.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude Sonnet 4.5 <noreply@anthropic.com>
-
ghose authored
Signed-off-by:ghose <704948+xmgz@users.noreply.github.com>
-
dwojtas authored
-
Steven authored
Optimizes React Query migration with performance and consistency improvements: Performance: - Memoize AuthContext and InstanceContext provider values to prevent unnecessary re-renders - Convert InstanceContext getter functions to useMemo hooks - Fix refetchSettings to avoid state dependency that caused frequent recreations Type Safety: - Replace 'any' types in useAttachmentQueries with proper protobuf types - Add Attachment and ListAttachmentsRequest type imports Query Key Consistency: - Replace hardcoded ["users", "stats"] with userKeys.stats() factory function - Ensures consistent cache key management across mutations Developer Experience: - Rename unused useCurrentUser to useCurrentUserQuery to avoid confusion - Add documentation explaining AuthContext-based vs React Query current user hooks - Update internal references in useNotifications and useTagCounts All changes verified with TypeScript compilation and build tests.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude Sonnet 4.5 <noreply@anthropic.com>
-
- 24 Dec, 2025 1 commit
-
-
Johnny authored
-
- 23 Dec, 2025 9 commits
-
-
Johnny authored
-
Johnny authored
-
Johnny authored
- Wrap actions.toggleFocusMode() with dispatch() call - Create toggleFocusMode helper function for callbacks - Fix focus mode not toggling due to action not being dispatched
-
Johnny authored
- Add useFocusMode hook to lock body scroll in focus mode - Add 'f' key keyboard shortcut to toggle focus mode - Add FocusModeExitButton inside editor - Import and wire up all focus mode components and hooks - Update useKeyboard to handle focus mode toggle
-
Johnny authored
- Import and use FOCUS_MODE_STYLES from constants - Apply proper fixed positioning, shadow, and spacing in focus mode - Add transition animation for smooth mode switching - Replace empty 'focus-mode' class with actual Tailwind utilities
-
Johnny authored
- Add back Tailwind utility classes for proper layout - Restore padding, border, background, and flex styles - Fix missing styles on memo-editor-wrapper element
-
Johnny authored
- Add back descriptive comments removed by editor refactoring commit - Restore original timestamp calculation format in MemoHeader - Improve code readability with section comments
-
Johnny authored
Complete refactoring of MemoView components for better code quality: - Split useMemoViewState into individual hook files (useMemoActions, useKeyboardShortcuts, useNsfwContent, useImagePreview, useMemoCreator) for single responsibility principle - Consolidate types closer to usage - move hook-specific types to respective files, keep only component props in shared types.ts - Optimize context with separate static/dynamic memoization to reduce unnecessary re-renders - Simplify barrel exports to only expose public API (MemoView component and MemoViewProps type) - Add comprehensive JSDoc documentation to all public APIs with usage examples Benefits: - Better maintainability: each hook file has one clear purpose - Improved performance: context optimization prevents unnecessary re-renders - Enhanced developer experience: clear documentation and encapsulation - Cleaner architecture: public API is minimal, internal details hidden All automated checks pass (TypeScript compilation, linter, production build).
-
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
-
- 22 Dec, 2025 6 commits
-
-
Johnny authored
-
Johnny authored
-
Steven authored
- Adjust CodeBlock styling for better layout and spacing - Reorganize copy button positioning with absolute positioning - Simplify button styling and reduce icon sizes - Wrap MermaidBlock in pre tag for consistent structure - Format useDropdownMenuSubHoverDelay hook call for readability
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude Haiku 4.5 <noreply@anthropic.com>
-
Steven authored
- Create useDropdownMenuSubHoverDelay hook in dropdown-menu component - Encapsulates hover delay behavior for preventing accidental submenu closure - Eliminates code duplication at component usage sites - Simplifies InsertMenu by removing 45 lines of timeout/state management code - Hook provides handleTriggerEnter/Leave and handleContentEnter/Leave handlers - Configurable closeDelay parameter (default 150ms) This makes the hover behavior pattern reusable across any dropdown menu submenus.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude Haiku 4.5 <noreply@anthropic.com>
-
Steven authored
Convert protobuf Timestamp objects to Date before formatting to prevent "[object Object]" from appearing in the UI. Fixes #5368
-
Steven authored
- Add request deduplication to getOrFetchUser using RequestDeduplicator - Consolidates multiple simultaneous calls for same user into single API request - Prevents duplicate 401 errors and wasted network traffic - Matches pattern already used by fetchUsers and fetchUserStats - Remove backwards compatibility aliases (getOrFetchUserByName, getOrFetchUserByUsername) - Update all call sites to use canonical getOrFetchUser method Fixes issue where PagedMemoList, useMemoViewState, MainLayout, and UserProfile were making duplicate user fetch requests when loading user data.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude Haiku 4.5 <noreply@anthropic.com>
-