- 08 Nov, 2025 7 commits
-
-
Johnny authored
Co-authored-by:Claude <noreply@anthropic.com>
-
Johnny authored
Co-authored-by:Claude <noreply@anthropic.com>
-
Johnny authored
Co-authored-by:Claude <noreply@anthropic.com>
-
Steven authored
Improve bug report and feature request templates to reduce duplicate submissions and gather better information: Bug Report Template: - Add pre-submission checklist requiring users to search existing issues and test on latest version/demo - Add dropdown for issue location (stable, dev, demo site, older version) - Restructure fields with clearer labels and better placeholders - Add "Expected Behavior" section for clarity - Combine screenshots and context with helpful prompts Feature Request Template: - Add pre-submission checklist to confirm issue search - Expand feature type categories (API/Backend, Integrations/Plugins, Security/Privacy, Performance) - Add "Problem or Use Case" field to understand the underlying need - Add "Alternatives Considered" section - Improve placeholders with specific examples
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
boojack authored
Co-authored-by:Claude <noreply@anthropic.com>
-
boojack authored
Co-authored-by:Claude <noreply@anthropic.com>
-
Steven authored
Backend changes: - Fix ListAllUserStats to calculate and return tag statistics - Previously only returned name and timestamps, missing TagCount - Now properly aggregates tags, pinned memos, and memo type stats Frontend changes: - Initialize user stats on app startup to populate tag data - Show all tags when typing just '#' (fix empty Fuse.js search) - Auto-refresh stats after creating/updating/deleting memos - Fix Checkbox component ref warning with forwardRef
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
- 07 Nov, 2025 3 commits
-
-
boojack authored
Co-authored-by:Claude <noreply@anthropic.com>
-
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:Claude <noreply@anthropic.com>
-
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:Claude <noreply@anthropic.com>
-
- 06 Nov, 2025 8 commits
-
-
Steven authored
- Changed first-user detection to check for any users instead of only HOST users - Moved registration setting check before role assignment to properly block unauthorized registrations - Fixed role assignment logic to ensure unauthenticated users always get USER role - Updated test cases to create host user first when not testing first-user scenario This ensures the first user is always created as HOST and registration settings are properly enforced for subsequent user creation.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
boojack authored
Co-authored-by:Claude <noreply@anthropic.com>
-
Elliott authored
-
Steven authored
Replace non-existent GetWorkspaceGeneralSetting with GetInstanceGeneralSetting to properly check if user registration is allowed. This fixes a compilation error that was preventing tests from running.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
Florian Dewald authored
-
boojack authored
-
boojack authored
Co-authored-by:Claude <noreply@anthropic.com>
-
Steven authored
- Polish inbox notification items with improved visual hierarchy - Add original memo snippet with left border indicator - Redesign comment preview with gradient background and primary accent - Increase spacing and improve typography with consistent sizing - Add ring borders to avatars and refined icon badges - Enhance loading and error states with better skeleton designs - Improve hover states and transitions throughout - Redesign user profile header layout - Create full-width centered header with avatar and user info - Add horizontal layout for profile actions - Improve responsive design with proper flex wrapping - Allow memo list to use full width for masonry layout
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
- 05 Nov, 2025 6 commits
-
-
Steven authored
-
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:Claude <noreply@anthropic.com>
-
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:Claude <noreply@anthropic.com>
-
boojack authored
Co-authored-by:Claude <noreply@anthropic.com>
-
Florian Dewald authored
-
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:Claude <noreply@anthropic.com>
-
- 04 Nov, 2025 1 commit
-
-
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:Claude <noreply@anthropic.com>
-
- 02 Nov, 2025 4 commits
- 31 Oct, 2025 3 commits
-
-
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
-
Steven authored
-
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:Claude <noreply@anthropic.com>
-
- 30 Oct, 2025 2 commits
-
-
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
-
Steven authored
-
- 29 Oct, 2025 4 commits
-
-
Steven authored
Tag filters now support hierarchical matching where searching for a tag (e.g., "book") will match both the exact tag and any tags with that prefix (e.g., "book/fiction", "book/non-fiction"). This applies across all database backends (SQLite, MySQL, PostgreSQL) with corresponding test updates.
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
boojack authored
Added LambdaTest to sponsorship section Signed-off-by:boojack <stevenlgtm@gmail.com>
-
Steven authored
- Remove extra blank line in memo_service.go (goimports) - Remove invalid fields from CreateMemoRequest call (validateOnly, requestId) - Clean up unnecessary comments
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
Steven authored
BREAKING CHANGE: Removed DeleteMemoTag and RenameMemoTag API endpoints for better API consistency. Tags should now be managed by updating memo content directly via UpdateMemo endpoint. Backend changes: - Remove RenameMemoTag and DeleteMemoTag RPC methods from proto - Remove backend implementations in memo_service.go - Regenerate protocol buffers (Go, TypeScript, OpenAPI) Frontend changes: - Remove RenameTagDialog component - Simplify TagsSection to remove rename/delete functionality - Improve tag styling with active state highlighting - Add smooth transitions and better hover interactions - Polish TagTree component for consistency - Tags now only support click-to-filter (no inline editing) Style improvements: - Active tags highlighted with primary color and font-medium - Consistent hover states across flat and tree views - Better spacing and visual hierarchy - Improved empty state styling
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
- 28 Oct, 2025 2 commits
-
-
Steven authored
- Add MemoSkeleton component for smooth initial page load experience - Integrate skeleton loader into PagedMemoList during initial fetch - Parallelize user settings and shortcuts API calls (~50% faster session init) - Batch-fetch memo creators in parallel to eliminate individual loading spinners - Pass showCreator prop to Explore page for proper skeleton rendering
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-
Steven authored
- Add language and theme selector submenus to UserMenu component for quick access - Refactor shared utilities: extract THEME_OPTIONS constant and getLocaleDisplayName() function - Update LocaleSelect and ThemeSelect to use shared utilities, eliminating code duplication - Make UserMenu reactive with MobX observer for real-time setting updates - Fix language switching reactivity by immediately updating workspaceStore.state.locale - Add scrollable menu support for language selector (max-h-[90vh]) - Apply same instant locale update to PreferencesSection for consistency
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By:Claude <noreply@anthropic.com>
-