All notable changes to takeCode will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Minimum Search Term Length: Added
SEARCH_TERM_MIN_LENGTHenvironment variable to set minimum character requirement for search terms (default: 1, no minimum) - Docker Development Script: Added
npm run docker:devscript for easy development Docker Compose setup - UI Feedback Improvements: Added warning/info emojis to search feedback messages for better user experience
- Keyboard Shortcuts: Added Ctrl+K to focus search box and Esc to clear search input
- Clickable Logo: Made header logo clickable to reload the page
- Title/Description Highlighting: Added search match highlighting to snippet titles and descriptions
- Version Information: Added total snippets count display below version info with improved styling
- Search Highlight Limiting: Fixed
SEARCH_HIGHLIGHT_LIMITto apply per snippet instead of per text block
- Docker Shutdown Optimization: Improved container shutdown speed from ~10 seconds to ~0.5 seconds using signal handling
- NPM Script Consistency: Fixed npm script naming to use
:for namespacing (build-css:prod) - Docker Configuration: Extracted Docker CMD into separate entrypoint.sh script for cleaner Dockerfile
- Added configurable minimum search term length with validation and user feedback
- Updated configuration system to support new environment variable across all deployment methods
- Enhanced search input handler to enforce minimum length requirements
- Added signal handling to entrypoint.sh for faster container shutdown using
nginx -s stop - Fixed npm script naming consistency (build-css:prod, version:sync, docker:dev)
- Implemented keyboard event handlers for search shortcuts
- Added search highlighting to snippet metadata (names, descriptions)
- Corrected highlight limit application to work per snippet rather than per text fragment
- XML/HTML Search Highlighting: Fixed search highlighting for XML/HTML snippets that was causing content loss by preserving
<mark>tags during HTML entity encoding - Prism Theme Loading: Replaced external CDN dependencies for Prism themes with local files for better reliability and performance
- Search Auto-Scroll: Automatically scroll snippet list to top when search input changes for better user experience
- Local Prism Themes: Downloaded and integrated Prism.js theme files locally (light and dark themes)
- Prism Light Theme: Updated Prism.js light theme CSS for improved syntax highlighting readability
- Modified
encodeHtmlEntities()function to preserve search highlighting markup in XML/HTML content - Updated theme loading to use local CSS files instead of external CDN resources
- Added scroll-to-top behavior in search input event handler for improved UX
- Tailwind CSS Build Process: Fixed custom styles not being included in production builds by properly configuring Tailwind CLI
- Dark Theme Styling: Resolved dark theme styling inconsistencies and improved theme switching reliability
- About Modal: Completed about modal implementation with proper licensing information display
- Button Styling: Styled about button as proper themed button with consistent appearance
- Local Asset Hosting: Downloaded external JS/CSS files locally for better performance and reliability
- Build Pipeline Optimization: Streamlined CI/CD pipeline by removing redundant operations and improving build efficiency
- Documentation Structure: Improved README organization with dedicated development setup section
- Project Rebranding: Officially rebranded from "massCode Web" to "takeCode" across all documentation and branding
- Docker Registry: Updated Docker image references to use Docker Hub registry (
docker.io/codebude/takecode)
- Properly integrated Tailwind CSS with CLI build process instead of hardcoded scripts
- Enhanced build pipeline to remove redundant CSS file operations
- Consolidated development setup instructions in README for better clarity
- Workflow Permissions: Fixed GitHub Actions permissions to enable repository dispatch events for automatic demo updates
- Docker Hub Publishing: Enhanced build workflow to publish Docker images to both GitHub Container Registry and Docker Hub
- Multi-Registry Support: Images now available on both
ghcr.io/codebude/takecodeanddocker.io/codebude/takecode
- Updated workflow permissions from
contents: readtocontents: writefor repository dispatch functionality - Added Docker Hub authentication and metadata configuration for dual registry publishing
- Mobile Responsiveness: Fixed header overflow on small screens by implementing responsive flex-wrap layout
- Search Box Positioning: Fixed search box overflow on mobile devices with proper responsive margins
- Snippet Container Overflow: Fixed snippet content overflow on both mobile and desktop by implementing viewport width constraints
- Desktop Sidebar Overflow: Fixed content overflow when sidebar is open on desktop using responsive CSS with calc() functions and sibling selectors
- Live Demo: Added live demo section to README with link to https://demo.take-code.dev/
- GitHub Actions Workflow: Added manual workflow for updating live demo via SSH and Docker Compose
- Automatic Demo Updates: Modified build workflow to automatically trigger demo updates when tagging builds as latest
- Implemented responsive CSS rules with viewport width calculations for sidebar state detection
- Added repository dispatch event handling for workflow chaining
- Updated README table of contents to include live demo section
- Infinite Scroll Functionality: Fixed missing
loadMoreIfNeeded()function that was causing ReferenceError and preventing proper batch loading - HTML Rendering Bug: HTML code snippets now display as syntax-highlighted code instead of rendered HTML by properly encoding HTML entities
- Search Navigation: Fixed sidebar navigation for unloaded snippets by adding
ensureSnippetLoadedAndScroll()function - Batch Loading Logic: Implemented proper viewport-aware initial loading (max 3 batches) to prevent loading all snippets at page load
- Version Input for CI/CD: Added optional version parameter to Docker build workflow for manual version specification
- Enhanced Tag Detection: Improved Docker workflow to fetch all tags before checkout for better reliability
- Search Behavior: Search now loads all matching results at once for complete visibility instead of using batch loading
- Workflow Optimization: Simplified Docker build workflow tag detection logic using unified regex pattern
- Documentation: Updated README to mention regex search and dark/light mode features
- Added
loadMoreIfNeeded()function with viewport detection and batch limiting - Implemented HTML entity encoding for HTML language snippets in
renderSnippets() - Added
ensureSnippetLoadedAndScroll()for on-demand snippet loading in sidebar navigation - Enhanced Docker workflow with conditional tag detection and version input parameter
- Updated README description and screenshot to reflect current features
- Semantic Versioning in CI Pipeline: Fixed version tag selection logic to properly prioritize releases over pre-releases according to semantic versioning standards
- Docker Image Tagging: Corrected CI/CD pipeline to select
v1.0.0instead ofv1.0.0-rc.6when both exist
- Updated
.github/workflows/docker-build.ymlto prefer release versions over release candidates - Fixed version comparison logic to respect semantic versioning hierarchy
- Regex Search Support: Added full regular expression support to search functionality with case-sensitive matching
- Configurable Highlight Limits: Added
SEARCH_HIGHLIGHT_LIMITenvironment variable to control how many search matches are highlighted per snippet (default: 3, range: -1 to MAX_SAFE_INTEGER, -1 = unlimited) - Visual Search Highlighting: Implemented visual highlighting of search matches using Prism.js keep-markup plugin for better code readability
- Enhanced Multi-Fragment Search: Improved search functionality to work seamlessly with tabbed code fragments
- Favicon Updates: Updated favicon design to match the header logo and removed distracting green X element
- Search Behavior: Search is now case-sensitive by default and supports regex patterns
- Highlight Limiting: Limited search result highlighting to first 3 matches per snippet (configurable)
- Docker Configuration: Reverted to using pre-built Docker image for simpler deployment
- Documentation: Simplified README with cleaner configuration examples
- Modified
highlightSearchMatches()function to support configurable limits - Added
matchesQuery()function with regex support and case-sensitive matching - Implemented runtime environment variable injection in Docker container
- Updated nginx configuration for environment variable access
- Enhanced search logic to work with multi-fragment snippets and tabbed interface
- Documentation Enhancement: Added comprehensive table of contents to README.md for better navigation
- Screenshot Integration: Added project screenshot to img/ directory and integrated into README
- Visual Improvements: Fixed corrupted emojis in documentation (π Table of Contents, πΈ Screenshot)
- Branding Consistency: Updated all documentation references to use consistent "massCode" lowercase branding
- Added img/ directory to version control
- Enhanced README structure with better organization
- Fixed emoji rendering issues in GitHub markdown
- UI Enhancement: Added left-aligned title for better visual hierarchy
- Branding: Implemented distinctive logo and improved visual identity
- Layout Improvements: Enhanced header layout and visual presentation
- Docker Configuration: Changed symlink approach to directory-based mounting (
ln -s /data /usr/share/nginx/html/data) - Volume Management: Improved data directory handling for better container reliability
- Updated Dockerfile symlink creation method
- Enhanced volume mounting strategy for production deployments
- Dynamic Versioning: Implemented dynamic version injection at Docker build time
- Build Automation: Added git tag-based version detection for container builds
- Version Management: Made app version dynamic instead of hardcoded
- Build Process: Enhanced Docker build process with version metadata
- Modified Dockerfile to accept VERSION build argument
- Updated build scripts to inject version information
- Improved CI/CD pipeline with version tagging
- Tag Detection: Fixed version detection to properly handle pre-release tags (e.g.,
v1.0.0-rc.1) - Build System: Corrected tag parsing logic for release candidate versions
- Updated version detection regex patterns
- Fixed pre-release tag handling in build scripts
- Improved tag validation for CI/CD pipelines
This project uses Semantic Versioning:
- MAJOR.MINOR.PATCH (e.g.,
1.0.0) - Pre-releases use
-rc.Nsuffix (e.g.,1.0.0-rc.1)
- Release Candidates (RC): Stable pre-releases ready for testing
- Final Release (1.0.0): Planned after RC testing and feedback
- ποΈ Modern Web Interface: Clean, responsive design for massCode snippets
- π Advanced Search: Real-time filtering and search functionality
- π¨ Theme Support: Light, dark, and auto themes with smooth transitions
- π Tabbed Fragments: Side-by-side display of multi-part code snippets
- π³ Docker Ready: Easy containerized deployment
- π± Cross-Platform: Works on any device with a web browser
- π― massCode Integration: Direct compatibility with massCode database files
Legend:
- β¨ Added - New features
- π§ Changed - Changes in existing functionality
- π Fixed - Bug fixes
- ποΈ Removed - Removed features
- π¨ Breaking - Breaking changes /home/raffael/git/takecode/CHANGELOG.md