- Remove legacy themes (black-orange, minimal) with old .tpl structure
- Create new minimal theme with proper qsgen3 structure:
- Complete layouts/ directory with all required templates
- Modern CSS with responsive design and clean styling
- Proper theme documentation in README.md
- Update THEMES-HOWTO.md to accurately reflect theme behavior:
- Clarify complete layout override (no fallback to defaults)
- Document included minimal theme example
- Correct layout processing documentation
- Update site.conf to use new minimal theme CSS path
- Ensure themes are complete packages when specified
- Add THEMES-HOWTO.md: Complete guide for creating and customizing themes
- Remove theme sections from how-it-works.md to avoid duplication
- Update migration script to place all blog posts in single directory
- Streamline documentation structure for better organization
- Add sophisticated file preservation functionality to _clean_output_dir()
- Support .qsgen3_preserve file with shell glob patterns for selective preservation
- Preserve shared articles and important files during site regeneration
- Maintain backward compatibility (no preserve file = complete cleaning)
- Add comprehensive documentation in how-it-works.md
- Include example preserve file (.qsgen3_preserve.example)
- Remove legacy images directory and update documentation
- Fix workflow documentation formatting issues
Transform the README from a technical feature list into an engaging narrative that:
- Opens with a relatable problem story that developers/bloggers recognize
- Positions qsgen3 as the solution born from shared frustration
- Uses conversational storytelling tone throughout
- Organizes benefits as a narrative journey
- Clearly identifies target audiences with personas
- Provides actionable getting-started steps
- Ends with a compelling call to action
The new README focuses on why qsgen3 exists and what problems it solves, making it much more compelling for potential users while remaining informative and honest.
Implements several improvements to the qsgen3 site generator:
- **Filename Sanitization**: Introduces robust sanitization for output HTML filenames, converting to lowercase, replacing special characters with hyphens, and ensuring clean names.
- **Blog Post URL Structure**: Blog posts from content/posts/ are now generated with a blog/YYYY/MM/DD/ URL structure if a valid date is present in frontmatter. Defaults to blog/filename.html if no valid date.
- **Improved Title Fallback**: Uses the original filename (before sanitization) as a fallback title if not specified in frontmatter.
- **Enhanced Pandoc Error Handling**: Better logging for Pandoc execution and explicit check of its exit code, allowing the script to continue on single file errors.
- **Sitemap Integration**: Adds successfully generated pages to sitemap URL list.
- **Non-fatal Sitemap Generation**: Sitemap generation failures are now logged as warnings and do not halt the script.
Also, unignores the /scripts/ directory in .gitignore to include migration scripts in the repository.
Adds logic to migrate_qs2_to_qs3.py to convert:
- #showimg to Markdown image syntax .
- #linkimg to Markdown linked image syntax [](src).
- #ytvideo to HTML iframe embed for YouTube videos.
Image path processing handles absolute URLs and prepends /images/
for relative paths, aligning with previous qsgen2 behavior but
omitting hardcoded styling attributes for Markdown output.
- Restructured 'minimal' theme to use 'static/css' and 'static/js' subdirectories for assets, aligning with qsgen3's expected theme structure.
- Moved 'minimaltemplate-v1.css' to 'themes/minimal/static/css/'.
- Moved JS files from 'themes/minimal/css/' to 'themes/minimal/static/js/'.
- Updated 'site.conf.example' to reflect 'minimal' theme usage and correct 'site_theme_css_file' path relative to the theme's static directory.
- Cleaned up redundant CSS variable definitions in 'bin/qsgen3' (_generate_index_page function).
- Implement flexible theme switching via site.conf (site_theme, site_theme_css_file).
- Ensure correct copying of theme static assets, with theme assets overriding root assets.
- Resolve CSS linking issues by checking file existence after static copy and using correct paths for Pandoc.
- Refactor path construction to prevent duplication when using absolute/relative output paths.
- Create comprehensive how-it-works.md detailing system architecture, theme creation, and overall workflow.
- Clarify design philosophy: qsgen3 remains design-agnostic, only linking main theme CSS automatically.