1. 09 Nov, 2025 3 commits
  2. 08 Nov, 2025 9 commits
  3. 07 Nov, 2025 3 commits
    • boojack's avatar
      7d4d1e85
    • Steven's avatar
      fix(server): prevent memory exhaustion in thumbnail generation · 8f29db2f
      Steven authored
      Address high memory usage when opening resource tab (fixes #5183) by implementing:
      
      1. Concurrency control: Limit thumbnail generation to 3 concurrent operations using semaphore to prevent memory exhaustion when many images are requested simultaneously
      
      2. S3 optimization: Skip server-side thumbnail generation for S3-stored images by default. S3 images now use presigned URLs directly, avoiding:
         - Downloading large images from S3 into server memory
         - Decoding and resizing images on the server
         - High memory consumption during batch requests
      
      3. Memory management improvements:
         - Explicitly clear blob and decoded image from memory after use
         - Restructure thumbnail cache check to avoid unnecessary semaphore acquisition
         - Double-check pattern to prevent duplicate generation while waiting
      
      This restores the original S3 behavior before commit e4f63453 while maintaining thumbnail support for local/database storage.
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      8f29db2f
    • Steven's avatar
      refactor(web): use Radix Checkbox and remove memoTypeStats · b7215f46
      Steven authored
      - Replace native input with Radix UI Checkbox in TaskListItem for better accessibility and consistent styling
      - Remove memoTypeStats tracking and display (link count, todo count, code count)
      - Remove StatCard component and related type definitions
      - Simplify statistics to only track activity calendar data and tags
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      b7215f46
  4. 06 Nov, 2025 8 commits
  5. 05 Nov, 2025 6 commits
    • Steven's avatar
      chore: fix linter · 71d0dbaf
      Steven authored
      71d0dbaf
    • Steven's avatar
      fix(web): add required headers for Nominatim reverse geocoding API · 89b0b81b
      Steven authored
      Nominatim's usage policy requires a User-Agent header to identify the application. Added User-Agent and Accept headers to the reverse geocoding fetch request, and improved error handling to check HTTP response status.
      
      Fixes #5222
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      89b0b81b
    • Steven's avatar
      refactor: rename workspace to instance throughout codebase · 4c1d1c70
      Steven authored
      Remove work-related terminology by renaming "workspace" to "instance"
      across the entire application. This change better reflects that Memos
      is a self-hosted tool suitable for personal and non-work use cases.
      
      Breaking Changes:
      - API endpoints: /api/v1/workspace/* → /api/v1/instance/*
      - gRPC service: WorkspaceService → InstanceService
      - Proto types: WorkspaceSetting → InstanceSetting
      - Frontend translation keys: workspace-section → instance-section
      
      Backend Changes:
      - Renamed proto definitions and regenerated code
      - Updated all store layer methods and database drivers
      - Renamed service implementations and API handlers
      - Updated cache from workspaceSettingCache to instanceSettingCache
      
      Frontend Changes:
      - Renamed service client: workspaceServiceClient → instanceServiceClient
      - Updated all React components and state management
      - Refactored stores: workspace.ts → instance.ts
      - Updated all 32 locale translation files
      
      All tests pass and both backend and frontend build successfully.
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      4c1d1c70
    • boojack's avatar
      d98ee361
    • Florian Dewald's avatar
      5f57f486
    • Steven's avatar
      refactor(web): unify memo stats/filters with context-aware MainLayout · 1d7efb15
      Steven authored
      Create unified architecture for memo statistics, filters, and sorting
      across all pages (Home, Explore, Archived, Profile) with proper
      visibility filtering and consistent data flow.
      
      Key changes:
      - Rename HomeLayout → MainLayout to reflect broader usage
      - Create useFilteredMemoStats hook for unified stats computation
      - Create useMemoFilters/useMemoSorting hooks to eliminate duplication
      - Refactor all pages to use unified hooks (~147 lines removed)
      - Move Explore route under MainLayout (was sibling before)
      - Fix masonry column calculation threshold (1024px → 688px+)
      
      Architecture improvements:
      - MainLayout computes filter/stats per route context
      - Stats/tags based on same filter as memo list (consistency)
      - Proper visibility filtering (PUBLIC/PROTECTED) on Explore
      - MemoExplorer/StatisticsView accept stats as required props
      - Eliminated optional fallbacks and redundant data fetching
      
      Benefits:
      - Single source of truth for stats computation
      - Stats remain static (don't change with user filters)
      - Reduced code duplication across 4 pages
      - Better maintainability and type safety
      - Proper security (no private memo leakage on Explore)
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      1d7efb15
  6. 04 Nov, 2025 1 commit
    • Steven's avatar
      fix(web): correct task checkbox toggling in multi-section memos · d30ff289
      Steven authored
      Fixed a bug where clicking checkboxes in task lists would toggle the wrong
      checkbox when a memo contained multiple sections with separate task lists.
      
      The issue was that TaskListItem was counting tasks only within the immediate
      parent list (ul/ol), but the toggleTaskAtIndex function counts all tasks
      globally across the entire memo. This caused index misalignment.
      
      Changes:
      - Add containerRef to MemoContentContext for proper task scoping
      - Pass memoContentContainerRef through context in MemoContent component
      - Update TaskListItem to count all tasks within the container scope
      
      This ensures task indices are calculated consistently with the markdown
      manipulation logic, fixing checkbox toggling in complex multi-section memos.
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      d30ff289
  7. 02 Nov, 2025 4 commits
  8. 31 Oct, 2025 3 commits
    • Steven's avatar
      refactor: redesign memo editor action bar UI · 93964827
      Steven authored
      - Replace multiple action buttons with unified InsertMenu dropdown
      - Consolidate upload, link memo, and location into single + button
      - Redesign VisibilitySelector with text-based dropdown UI
      - Unify badge styling for location, attachments, and links
        - Consistent height (h-7), padding, gaps, and border styles
        - Secondary foreground text color with hover states
        - Max width with truncation for long content
      - Add image thumbnails in attachment badges
      - Simplify button hierarchy with ghost variant for save/cancel
      - Remove obsolete components (TagSelector, MarkdownMenu, etc.)
      - Extract LocationView to separate component for better organization
      
      Fixes #5196
      93964827
    • Steven's avatar
      chore: fix linter · 1ced0bcd
      Steven authored
      1ced0bcd
    • Steven's avatar
      refactor(api): migrate inbox functionality to user notifications · bc1550e9
      Steven authored
      - Remove standalone InboxService and move functionality to UserService
      - Rename inbox to user notifications for better API consistency
      - Add ListUserNotifications, UpdateUserNotification, DeleteUserNotification methods
      - Update frontend components to use new notification endpoints
      - Update store layer to support new notification model
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code)
      Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
      bc1550e9
  9. 30 Oct, 2025 2 commits
    • Steven's avatar
      refactor(web): refactor MemoFilters component and add comprehensive filter support · e915e3a4
      Steven authored
      - Refactored MemoFilters.tsx for better maintainability:
        * Centralized filter configuration with FILTER_CONFIGS object
        * Added TypeScript interfaces for type safety
        * Removed separate FactorIcon component
        * Extracted handleRemoveFilter function
        * Improved imports organization
      
      - Polished MemoFilters UI styles:
        * Changed to modern pill/badge design with rounded-full
        * Enhanced spacing and color schemes
        * Added smooth transitions and hover effects
        * Improved interactive remove button with destructive color hints
        * Better text readability with font-medium
      
      - Added comprehensive filter support to all pages:
        * Explore page: Added full filter support (was missing)
        * Archived page: Enhanced from basic to full filter support
        * UserProfile page: Enhanced from basic to full filter support
        * All pages now support: content search, tag search, pinned, hasLink, hasTaskList, hasCode, and displayTime filters
      
      - Consistency improvements:
        * All pages using PagedMemoList now have identical filter logic
        * Respects workspace settings for display time (created/updated)
        * Unified filter behavior across Home, Explore, Archived, and UserProfile pages
      e915e3a4
    • Steven's avatar
  10. 29 Oct, 2025 1 commit