- Add comprehensive responsive design for multiple screen sizes (1024px, 768px, 480px, 320px, 280px)
- Implement horizontal scrolling with touch support for table overflow
- Optimize column widths and font sizes for each breakpoint
- Add visual scroll hints for mobile users
- Ensure proper viewport utilization with calc() functions
- Fix table layout issues on extreme small screens (280px)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced resetCategoryForm() to properly reset editing state
- Clear currentEditCategoryId when cancelling
- Reset button text and form title to default state
- Add console logging for better debugging
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove MariaDB helper, schema, and initialization script
- Remove mysql2 dependency from package.json
- Update reset-admin.js to use SQLite DatabaseHelper
- Simplify .env.example to remove MariaDB configuration
- Update start-service.sh to use SQLite initialization
- Clean up all MariaDB references across codebase
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change all environments (local and NAS) to use SQLite database
- Remove MariaDB dependency and complexity
- Make database initialization optional in deployment script
- Simplify deployment by using single database type across all environments
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add environment-specific database selection (SQLite for local, MariaDB for NAS)
- Remove edit button from admin detail view modal for cleaner UX
- Clean up project files: remove redundant docs and test files
- Update deployment script with improved SSH handling
- Maintain backward compatibility while supporting both database types
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed MariaDB compatible download API for NAS deployment
- Updated SQLite schema to remove deprecated file_data column
- Enhanced attachment display consistency between admin and public pages
- Resolved category ordering issues in SQLite environment
- Added NAS MariaDB remote connection configuration
- Improved file upload and download functionality for both environments
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- MariaDB 환경별 자동 감지 (Windows/NAS/Linux)
- Unix Socket 및 TCP 연결 지원
- 완전한 UTF8MB4 스키마 적용
- 자동 초기화 스크립트 개선
- NAS 배포 스크립트 MariaDB 지원
- 환경변수 기반 설정 시스템
- 상세한 배포 가이드 문서화
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add MariaDB schema with UTF8MB4 charset
- Create MariaDB helper class with connection pooling
- Update application to use MariaDB instead of SQLite
- Configure database user and permissions
- Set service to run on port 3007
Database Configuration:
- Host: localhost:3306
- Database: jaryo
- User: jaryo_user
- Tables: users, files, file_attachments, categories, user_sessions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Windows service startup scripts (start/stop-jaryo-service.bat)
- Add auto-startup configuration with Task Scheduler
- Add XML task definition for Windows Task Scheduler
- Update server.js to bind to specific IP (99.1.110.50)
- Add comprehensive auto-startup documentation
- Prepare for NAS deployment with existing scripts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 대용량 파일 다운로드: blob 방식 대신 직접 링크 방식으로 변경하여 메모리 문제 해결
- 자료 목록 제목 색상: 파란색(#667eea)으로 변경하여 가독성 향상
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add better error handling for ECONNABORTED (client disconnect)
- Add Accept-Ranges header for better download resume support
- Add client connection close detection
- Improve logging for download interruptions
- Better file stat handling for large files
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed header h1 color from #4a5568 (gray) to #667eea (blue)
- Applied same blue color to both main page and admin page
- Consistent branding across all pages
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Modified deploy-to-nas.sh to use vibsin9322 account
- Added Node.js path detection for Synology NAS
- Fixed npm command paths to use full Node.js path
- Added database backup and preservation logic
- Created manual deployment guide and SSH helper scripts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add deploy-to-nas.sh: automated deployment script with SSH port 2222
- Add manual-nas-deployment-guide.md: step-by-step manual deployment guide
- Include service start/stop scripts and monitoring tools
- Add troubleshooting and auto-start configuration
- Support both automated and manual deployment approaches
- Create simple.html as fallback test page
- Set root route to simple.html for immediate access
- Include API test functionality in the page
- Verify basic Vercel deployment works
- Replace complex Express-style handler with simple module.exports
- Add separate API endpoints for better organization
- Simplify vercel.json routing configuration
- Remove ES modules to use CommonJS for Vercel compatibility
- Add dedicated test API endpoint for debugging
- Convert Express app to Vercel serverless function
- Add missing /api/files/public endpoint
- Optimize static file routing with proper caching
- Remove unnecessary dependencies for faster cold starts
- Add comprehensive debugging and error handling
- Improve API response times and user experience
- Fixed pagination to display exactly 10 items per page
- Made pagination controls always visible, even with empty data
- Synchronized data structure and sorting between admin and main pages
- Improved pagination styling with better visibility and centering
- Enhanced attachment display with file icons, names, and sizes
- Implemented detailed view pages for both interfaces
- Optimized table row spacing for more compact display
- Centered attachment icons with file names for better visual balance
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features added:
- Admin interface with full CRUD operations and multi-file upload
- User interface with read-only access and download functionality
- Board-style table layout with pagination (10 items per page)
- Category-specific file icons and attachment management
- Drag & drop file upload with preview and individual file removal
- Individual and bulk download with ZIP compression support
- Offline mode with localStorage fallback for both interfaces
- Responsive design with modern UI components
Technical improvements:
- Separated admin (/admin/) and user (/) interfaces
- Enhanced file data structure with consistent naming
- Improved error handling and user notifications
- Multi-file upload processing with base64 encoding
- File type detection and appropriate icon mapping
- Download functionality with single/multiple file handling
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add download folder path detection based on platform
- Show download location in notification for first-time users
- Add helpful tooltip to download button explaining options
- Support Ctrl+click for "Save As" dialog option
- Add multi-line support for notification messages
- Provide guidance for changing browser download settings
Download UX improvements:
• Clear indication of where files are saved
• Platform-specific path information (Windows/Mac/Linux)
• First-time user education about download settings
• Keyboard shortcut support for advanced users
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix overlapping text issues in file cards and meta information
- Improve download success notification with actual filenames
- Enhance file actions button layout with better spacing
- Add modern notification system with animations and better styling
- Improve responsive design for mobile devices
- Add proper spacing and alignment for read-only badges
- Update notification positioning and mobile responsiveness
UI improvements:
• Better text spacing and wrapping
• Professional notification animations
• Improved mobile layout
• Enhanced file action button alignment
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Revert bucket name from 'file-storage' back to 'files'
- Update error messages to indicate Storage policy issues
- Files bucket exists but may need proper RLS policies
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add checkOrCreateBucket method to verify Storage bucket exists
- Improve error handling for bucket not found errors
- Add detailed logging for upload and download operations
- Provide user-friendly error messages for Storage issues
- Check bucket existence before upload and download operations
This resolves: "Bucket not found" errors in file downloads
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace complex filename sanitization with simple timestamp-based naming
- Generate safe filenames using timestamp and random strings
- Store original filename in database, use safe names in storage
- Remove Korean characters and special characters from storage paths
- Preserve file extensions for proper file type handling
This resolves: "Invalid key" errors with Korean filenames in Supabase Storage
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove id, created_at, updated_at from client-side fileData
- Extract only valid database fields in addFile and updateFile functions
- Let database handle UUID generation and timestamps automatically
- Clean separation between client data structure and database schema
- Fix persistent createdAt column error by filtering client-side fields
This should resolve: "Could not find the 'createdAt' column of 'files' in the schema cache"
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change JavaScript code to use snake_case column names (created_at, updated_at)
- Add backward compatibility for existing localStorage data
- Fix sorting and display functions to use correct column names
- Ensure consistent column naming between database schema and JavaScript code
This resolves the error: "Could not find the 'createdAt' column of 'files' in the schema cache"
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix uploadAttachments method to use proper SupabaseHelper methods
- Add addFileAttachment method for proper database insertion
- Improve error handling with detailed logging and user feedback
- Add file upload progress tracking and cleanup on failure
- Fix direct supabase variable access issues
- Better error messages for users and developers
Bug fixes:
• File upload now works properly with Supabase Storage
• Database insertion errors are properly handled
• Failed uploads are cleaned up automatically
• More informative error messages displayed to users
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement guest mode for unauthenticated users
- Allow file viewing and downloading without login
- Hide create/edit/delete functions for guests
- Add guest mode banner with login prompt
- Add read-only badges for guest accessible files
- Include permission checks for all CRUD operations
- Add responsive guest mode styling
- Support both online (Supabase) and offline (localStorage) modes
Features:
• Guest users can view all files and download attachments
• Authentication required for create, edit, delete operations
• Seamless transition between guest and authenticated modes
• User-friendly guest experience with clear login prompts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Complete CRUD functionality for file records
- Hybrid Supabase cloud database + localStorage support
- User authentication and authorization
- File upload with cloud storage
- Search, filtering, and categorization features
- Responsive design with offline capabilities
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>