1. 10 Nov, 2025 4 commits
  2. 09 Nov, 2025 4 commits
  3. 08 Nov, 2025 9 commits
  4. 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
  5. 06 Nov, 2025 8 commits
  6. 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
  7. 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
  8. 02 Nov, 2025 4 commits
  9. 31 Oct, 2025 1 commit
    • 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