- Added new migrate.ts module to handle automatic database migrations using drizzle-orm
- Modified server startup to run migrations before Express initialization
- Added comprehensive documentation in AUTO_MIGRATION_SUMMARY.md explaining the implementation
- Updated DATABASE_SETUP.md to reflect automatic migration process and troubleshooting steps
- Added error handling to exit process if migrations fail during startup
- Implemented clear
- Created DATABASE_SETUP.md with detailed MySQL setup, troubleshooting, and maintenance guides
- Added QUICK_TEST_GUIDE.md with step-by-step testing procedures for mobile responsiveness, image uploads, content statistics, and full workflow
- Included troubleshooting sections in both guides with common issues and solutions
- Added environment variable documentation and database schema details
- Documented backup/restore procedures and verification steps for
- Updated database credentials to use consistent naming pattern across variables
- Simplified database name from voxblog_prod to voxblog for clarity
- Added explicit MYSQL_ROOT_PASSWORD and MYSQL_PASSWORD variables for container setup
- Changed DB_USER from voxblog_user to voxblog to match database naming convention
- Changed database credentials in .env for improved security
- Added detailed implementation plan for content statistics feature (CONTENT_STATISTICS_PLAN.md)
- Created summary documentation for content statistics feature (CONTENT_STATISTICS_SUMMARY.md)
- Removed legacy MySQL root password and simplified database config variables
- Updated database name to use production naming convention (voxblog_prod)
- Added mobile-optimized image upload functionality allowing users to select from camera/gallery
- Updated upload button to support multiple file selection with progress indicator
- Added documentation for mobile upload testing steps in MOBILE_COMPATIBILITY.md
- Expanded mobile compatibility checklist to include camera/gallery upload verification
- Added file upload button with multi-file support alongside existing paste functionality
- Implemented handleFileUpload function to process multiple image files sequentially
- Added file input reference and reset logic to allow repeated uploads
- Included upload progress indicator showing count of files being processed
- Added validation to skip non-image files with error messaging
- Enhanced UI with disabled state during upload to prevent concurrent
- Updated all components with responsive breakpoints for mobile-first design
- Added touch-friendly controls with proper spacing and small button sizes
- Implemented responsive layouts that stack/wrap on mobile screens
- Created detailed mobile compatibility documentation
- Enhanced horizontal scrolling for data grids and steppers on mobile
- Optimized media library grid for smaller screens
- Added iOS safe area inset padding for bottom
- Changed admin frontend port from 3000 to 3300 across all configuration files
- Changed API backend port from 3001 to 3301 across all configuration files
- Updated health check endpoints to use new ports in CI/CD workflow
- Modified documentation and deployment guides to reflect new port numbers
- Updated Caddy and Nginx reverse proxy configurations to use new ports
- Created new LOCAL_TESTING.md with detailed instructions for setting up local development environment
- Added step-by-step setup guide covering Docker installation, environment configuration, and common commands
- Included troubleshooting section with solutions for common issues like port conflicts and build failures
- Added development workflow guidelines and testing checklist for quality assurance
- Documented performance tips and best practices for Docker
- Added .dockerignore to exclude unnecessary files from Docker builds
- Enhanced .env.example with detailed configuration options and added MySQL settings
- Created Gitea CI/CD workflow for automated production deployment with health checks
- Added comprehensive Caddy server setup guide and configuration for reverse proxy
- Created Caddyfile with secure defaults for SSL, compression, and security headers
The changes focus on setting up a production-
- Fixed stale closure bug in streaming content by using useRef to properly accumulate content instead of relying on state closure
- Added auto-scrolling functionality to keep latest content visible during generation
- Implemented smooth scrolling behavior and improved HTML styling for better readability
- Added content buffer reset when starting new generation
- Enhanced documentation with detailed explanation of the closure problem and solution
- Moved streaming state (isGenerating, content, tokens, errors) from StepGenerate to usePostEditor hook
- Added new state management to allow continuous AI generation when navigating between editor steps
- Updated EditorShell to pass streaming state and setters down to StepGenerate component
- Added detailed documentation explaining streaming persistence architecture and user experience
- Removed local state from StepGenerate in favor of props
- Added streaming UI components with live content preview and token counter
- Implemented new generateContentStream service for SSE-based content generation
- Created comprehensive STREAMING_UI_GUIDE.md documentation with implementation details
- Added streaming toggle checkbox with default enabled state
- Enhanced StepGenerate component with progress bar and animated streaming display
- Added error handling and graceful fallback for streaming failures
- Split monolithic ai-generate.ts (453 lines) into 12 focused modules with clear responsibilities
- Created new directory structure with routes, services, utils, types, and config folders
- Implemented AIService orchestrator with specialized generators for content, metadata, and alt text
- Added centralized prompt templates and error handling
- Set up parallel routing to allow gradual migration from old implementation