- Add debug output to getDirectoryListing() method
- Add debug_page_title to template data for troubleshooting
- Investigate why directory listings show 'Untitled' in footer
- Directory content shows correct H1 title but page_title is wrong
- Restrict special case handling (phpinfo, ICT) to exact filenames only
- Prevent special cases from overriding directory names like 'nl.test'
- Directory names now use formatDisplayName() without special case overrides
- This ensures 'nl.test' directory displays as 'Test' not 'Untitled'
- Add fallback in scanForPageTitles to use clean filename when no title found in content
- Extract clean filename using basename() and formatDisplayName() for page titles
- Ensures page titles are always clean (without language prefixes and extensions)
- Footer now shows correct page titles for all content types
- Consistent title handling for files, directories, and auto-linking
- Apply formatDisplayName() to directory names in getDirectoryListing()
- This ensures language prefixes are removed from directory titles
- nl.php-testen directory now displays as 'Php-testen' instead of 'Nl.php-testen'
- Footer now shows correct page titles for directories
- Consistent display naming for both files and directories
- Add regex to handle nl.php-testen -> php-testen patterns
- Remove test directories that were cluttering navigation
- Clean up content directory to remove test files
- Language filtering now works correctly for both files and directories
- Navigation shows only relevant content for selected language
- Change regex to only remove file extensions (.md, .php, .html) not all dots
- Fix en.test.md and nl.testpagina.md 404 errors caused by over-aggressive regex
- Update all references to use instead of
- Language-specific pages with dots in names now load correctly
- Pages like 'en.test.md' work as expected without being truncated to 'en'
- Add language parameter to autoLinkPageTitles() method
- Fix internal links to include current language (?page=x&lang=en)
- Remove broken header ID syntax from English guide
- Ensure all auto-generated internal links maintain language context
- Internal page links now work correctly across language switches
- Fix getPage() to search for language-specific files (en.test.md, nl.test.md)
- Correct guide file naming: uk.codepress.md → en.codepress.md
- Update scanDirectory() filtering: uk → en for consistency
- Update formatDisplayName() cleaning: uk → en for consistency
- Language-specific pages now load correctly without 404 errors
- Pages display with clean names (without language prefixes)
- Rename guide files: nl.md → nl.codepress.md, en.md → uk.codepress.md
- Add language filtering in scanDirectory() for nl.* and uk.* files/folders
- Update formatDisplayName() to remove language prefixes from display names
- Update getGuidePage() to use new naming convention (en → uk mapping)
- Content with nl. prefix only shows when Dutch language is selected
- Content with uk. prefix only shows when English language is selected
- Change getGuidePage() to use currentLanguage instead of detectLanguage()
- Add lang_switch_url template variable for proper context-aware switching
- Language switcher now stays on guide page when switching languages
- Guide content now displays in correct language based on URL parameter
- Add lang parameter to guide link in footer template
- Add lang parameter to navbar brand link in header template
- Ensures language selection persists when clicking logo or guide icon
- Completes language persistence across all navigation elements
- Add lang parameter to all navigation links in scanDirectory method
- Update homepage link in navigation template to include current language
- Fix breadcrumb navigation to preserve language parameter
- Ensure language selection persists when clicking any navigation element
- Added content/.gitkeep to track empty content directory
- Updated .gitignore to allow .gitkeep but ignore other content files
- Ensures content/ directory is visible on Git server
- Maintains security by ignoring actual content files
- Deleted all files from public/content/ that were tracked
- Content is now stored in content/ directory (ignored by .gitignore)
- Improves security by keeping content outside web root
- Matches new directory structure
- Changed from 'public/content/*' to 'content/'
- Matches new content directory structure outside web root
- Improves security by keeping content separate from public files
- Remove sidebar and toggle functionality
- Add Bootstrap navbar with dropdown menus
- Move navigation to top between header and content
- Update menu rendering for Bootstrap dropdowns
- Clean up unused files (header.mustache, sidebar.mustache, sidebar.js)
- Add guide link with book icon in footer
- Simplify layout structure
- Remove duplicate code and fix syntax errors
- Add .gitignore for node_modules and other temp files
- Move content outside public web root for security
- Consolidate all code and assets in engine/ directory
- Download Bootstrap locally for offline functionality
- Update public/ to contain only entry point files
- Add router.php for PHP development server security
- Update README.md with new structure and setup instructions
- Block direct access to content files via URL
- Maintain clean separation between content and code
- Made all breadcrumb items clickable
- Added automatic directory listing generation for folders without index files
- Folders now show a list of their contents instead of 404
- Improved navigation UX by allowing browsing through folder structure
- Changed icon to minimalist </..> design
- Unified icon.svg and favicon.svg to be identical
- Improved readability at small sizes
- Removed text in favor of abstract dots representation
- Added E.Noorlander link to footer pointing to https://noorlander.info
- Updated icons to new </CP> design (white/transparent)
- Improved footer attribution
- Updated CSS layout to use flexbox for full-height layout
- Header and footer are now fixed (flex-shrink: 0)
- Main content area scrolls independently between header and footer
- Sidebar also scrolls independently
- Ensures header and footer are always visible
- Breadcrumb items for directories are now only clickable if an index file exists
- Prevents 404 errors when clicking on folder names in breadcrumb
- Non-clickable directory items are shown as active text
- Improves navigation UX and prevents broken links
- Moved toggle button to header (next to logo)
- Removed floating button to prevent content overlap
- Changed sidebar animation to use margin-left for proper layout reflow
- Main content now automatically expands when sidebar collapses
- Simplified JS logic for cleaner toggle behavior
- Added sidebar toggle button with proper CSS and JavaScript
- Fixed missing sidebar toggle functionality in template
- Added title attribute to Home link for better UX
- Sidebar now properly slides in/out with smooth animations
- All toggle functionality working correctly
- Updated e.noorlander branch with sidebar toggle functionality
- All branches now have identical toggle features
- Resolved template synchronization across branches
- Added toggle button with list/chevron-right icon
- Sidebar slides in/out with smooth CSS transitions
- Button positioned fixed with proper z-index
- Main content adjusts margin when sidebar collapsed
- JavaScript handles toggle state and icon changes
- All branches now have identical functionality
- Resolved merge conflict by keeping e.noorlander layout.html
- All branches now have identical content and functionality
- Sidebar toggle functionality available on all branches
- Complete blog content synchronized across branches
- Copied all blog content from e.noorlander branch
- Main branch now has complete blog with 10 articles
- All branches now have identical content structure
- Includes: Over mij, Open Source, Leren, ICT, Hardware, Retro Gaming, Micro-electronica, Linux categories
- Added toggle button for left sidebar collapse/expand
- Sidebar slides in/out with smooth animation
- Toggle button changes icon (list/chevron-right)
- Main content adjusts margin when sidebar is collapsed
- Added CSS transitions for smooth animations
- Button positioned fixed with z-index for accessibility
- Removed duplicate content/ directory from project root
- All content is now properly located in public/content/
- Clean project structure with only public/ directory for web content
- Prevents confusion between old and new content locations
- Moved auto-linking before markdown link processing to avoid conflicts
- Added dash-dash (dashed) underline for auto-links instead of dotted
- Improved pattern matching to avoid linking inside existing markdown links
- Enhanced detection of existing HTML tags and links
- Auto-links now have 2px dashed underline with hover effect
- Added autoLinkPageTitles() function to link page titles
- Added getAllPageTitles() to scan all content pages
- Added extractPageTitle() for MD/PHP/HTML files
- Added CSS styling for auto-links with dotted underline
- Page titles in content now automatically link to their pages
- Prevents linking inside existing HTML tags and links
- Added 'Wat is Arduino' in micro-electronica category
- Added 'Leren gaat niet over perfectie' with open-source explanation
- Added 'De ware aard van ICT' in hardware category
- Added 'Commodore 64' in retro-gaming category
- Updated home.md with all new category links
- Complete blog content now available (10 articles total)
- Added 'Excel als Database' article in ICT category
- Added 'Open Source Voorbeelden' article in Linux category
- Updated home.md with new category links
- Complete blog content now available
- All 6 articles from noorlander.info imported
- Copied index.php, config.php, and templates to public/
- e.noorlander branch now works correctly
- Personal blog content accessible again
- All branches now have proper public directory structure