Removed PrismJS and replaced with keylighter for server-side code highlighting to remove reliance on Cloudflare CDN. Significantly reduces page load time and improves performance.
Support custom image sizing via custom markdown processing: {50%}
Increase width from fixed pixel sizing to 60vw
Create (and backdate) changelog file
Update scrollbar styling to use shared roots
Moved common CSS rules from various pages into a shared CSS file
Externalized page-specific CSS from /index.html to /assets/css/main-index.css
Externalized page-specific CSS from /colors/index.php to /colors/css/colors.css
Externalized page-specific CSS from /banned/index.php to /banned/css/banned.css
Externalized page-specific CSS from /error.php to /assets/css/error.css
Externalized page-specific JavaScript from /index.html to /assets/js/main-index.js
Externalized page-specific JavaScript from /colors/index.php to /colors/js/colors.js, passing PHP data via a global JS object.
Externalized page-specific JavaScript from /banned/index.php to /banned/js/banned.js.
Externalized page-specific JavaScript from /error.php to /assets/js/error.js.
Consolidated blog CSS:
Merged /blog/css/password-protection.css into /blog/css/blog-post.css.
Centralized common tag styling into /blog/css/blog.css.
Cleaned /blog/css/blog.css of rules now in /assets/css/shared.css.
Consolidated blog JavaScript:
Merged /blog/js/blog-filter.js into /blog/js/blog-index.js.
Merged /blog/js/password-protection.js into /blog/js/blog-post.js and moved its CSS keyframes to /blog-post.css.
Moved "Copy" button logic from /blog/js/blog.js to /blog/js/blog-post.js and de-duplicated.
Created /assets/js/utils.js for shared utility functions like isInViewport.
Added timeline-view-class to the posts container in /blog/index.php to activate the timeline-specific styles that handle the center line and post positioning.
Fixed container width conflict in /blog/css/blog.css, to ensure that the timeline has the correct width while preserving to 60vw width for other blog pages.
Fixed a bug in /blog/js/blog-index.js where timeline branches weren't fading out properly during filtering because it was using dot.style.opacity instead of branch.style.opacity.
Fix hardcoded box-shadow value in /assets/css/error.css to use primary accent color from roots.