1. 01 Feb, 2026 1 commit
    • Johnny's avatar
      fix: auto-fix permission issues when upgrading from 0.25.3 to 0.26.0 · d14cfa1c
      Johnny authored
      Fixes #5551
      
      The Docker image now runs as non-root (UID 10001) for security, but this
      breaks upgrades from 0.25.3 where data files were owned by root.
      
      Changes:
      - Dockerfile: Keep USER as root, install su-exec
      - entrypoint.sh: Fix ownership of /var/opt/memos, then drop to non-root
      - Supports custom MEMOS_UID/MEMOS_GID env vars for flexibility
      
      This allows seamless upgrades without manual chown on the host.
      d14cfa1c
  2. 31 Jan, 2026 7 commits
    • Johnny's avatar
      fix: add nil check for currentUser in DeleteUser · 1696c6c4
      Johnny authored
      Defense-in-depth fix: Add missing nil check before accessing
      currentUser.ID and currentUser.Role in DeleteUser function.
      
      While the auth interceptor should block unauthenticated requests,
      this check prevents potential nil pointer panic if fetchCurrentUser
      returns (nil, nil).
      1696c6c4
    • Johnny's avatar
      fix: add access control checks for attachments, comments, and reactions · c7b48b80
      Johnny authored
      Security fixes for multiple authorization bypass vulnerabilities:
      
      - GetAttachment: Add visibility check via checkAttachmentAccess helper
      - UpdateAttachment: Add ownership check (creator or admin only)
      - Fileserver: Require creator/admin auth for unlinked attachments
      - ListMemoAttachments: Add memo visibility check
      - CreateMemoComment: Add memo visibility check for target memo
      - ListMemoReactions: Add memo visibility check
      - UpsertMemoReaction: Add memo visibility check
      
      All checks follow the existing pattern used in GetMemo for consistency.
      c7b48b80
    • Johnny's avatar
      fix(fileserver): use streaming for video/audio to prevent memory exhaustion · 86fab0cf
      Johnny authored
      - Add serveMediaStream() to stream video/audio without loading into memory
      - Use http.ServeFile for local files (zero-copy, handles range requests)
      - Redirect to S3 presigned URLs for S3-stored media files
      - Refactor for better maintainability:
        - Extract constants and pre-compile lookup maps
        - Consolidate duplicated S3 client creation logic
        - Split authentication into focused helper methods
        - Group code by responsibility with section comments
        - Add setSecurityHeaders() and setMediaHeaders() helpers
      86fab0cf
    • Ganesh M's avatar
      fix(ui): math render (#5549) · 27de96d4
      Ganesh M authored
      27de96d4
    • Johnny's avatar
      chore: deprecate remove completed tasks action · 8cd9c591
      Johnny authored
      - Remove menu item and dialog from MemoActionMenu
      - Remove removeCompletedTasks() and hasCompletedTasks() utilities
      - Remove translation keys from all 34 locale files
      - Feature was not aligned with standard note-taking UX patterns
      8cd9c591
    • Johnny's avatar
      chore: extract task list class names to constants · 5396c126
      Johnny authored
      - Add TASK_LIST_CLASS and TASK_LIST_ITEM_CLASS constants
      - Replace hardcoded 'contains-task-list' and 'task-list-item' strings
      - Improve maintainability and prevent typos
      5396c126
    • Johnny's avatar
      chore: prevent unnecessary API calls when timestamp unchanged in MemoDetailSidebar · 97ba1545
      Johnny authored
      - Add same value check before updating createTime/updateTime
      - Skip request if new timestamp equals current timestamp
      - Simplify callback handlers and improve code readability
      - Use .some() instead of .filter().length for cleaner code
      97ba1545
  3. 29 Jan, 2026 3 commits
  4. 28 Jan, 2026 1 commit
  5. 27 Jan, 2026 2 commits
  6. 26 Jan, 2026 9 commits
  7. 23 Jan, 2026 4 commits
  8. 22 Jan, 2026 7 commits
  9. 21 Jan, 2026 2 commits
  10. 20 Jan, 2026 4 commits