Display a folder icon next to the H1 heading on directory listing pages
(like /photography) that don't have an index.md file. The icon is
generated based on the directory title with a unique color.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add WeasyPrint dependencies to Dockerfile for server-side PDF generation
- Update README with Quick Start guide for Docker and local development
- Add PDF template for article rendering
- Add error template for better error handling
- Reorganize photography into top-12 subdirectory
- Update pyproject.toml with PDF generation dependencies
- Enhance content.py with PDF rendering capabilities
- Improve directory template with gallery features
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When rendering index.md files (directory pages), use
generate_folder_icon() instead of generate_unique_svg_icon() so that
directory pages like /artificial-intelligence display with folder icons
rather than regular post icons.
This creates visual consistency - directories show folder icons
everywhere they appear on the site.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated get_directory_structure() to:
- Check for index.md in directories
- Extract H1 title from index.md when present
- Use that title for generate_folder_icon() to create unique folder
icons based on actual directory content
- Maintain existing behavior for files
This ensures directory listings show folder icons that reflect the
actual directory title rather than just the folder name.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- /api/directory-tree now uses generate_folder_icon() for directories
- /api/icon/<path> detects directories with index.md and generates
folder icons based on the H1 title from index.md
- Files continue to use generate_unique_svg_icon()
This ensures consistent folder icon representation across the site.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The browse dropdown was showing "Error loading content" because the
renderItems() function was missing. Added the function to properly
render directory tree items with icons.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Move 'The Dark Side' section (Algorithm Eats and Mental Health & Technology) to the top of the themes page for greater prominence. The urgent critique of algorithmic exploitation now leads the page before the theoretical frameworks.
New order:
1. The Dark Side (Algorithm Eats, Mental Health & Technology)
2. Consciousness & Technology
3. Human-Centered Design
4. Community & Patterns
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
New essay exploring how LLMs inject cognitive patterns through conversational imprinting - the flip side of algorithmic consumption. Instead of extracting/corrupting values like social media, LLMs install new cognitive architectures at conversational speed.
Key concepts:
- Mirror neurons and conversational imprinting
- Cultural software evolution acceleration (oral → written → AI)
- Bidirectional weight transfer between human and AI cognition
- The question of who controls cognitive updates
Added to Algorithmic Critique theme as 'Beyond Extraction: Cognitive Injection' section, positioning it as the crucial pivot from understanding consumption to understanding installation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add proper Python syntax highlighting
- Format code blocks with correct indentation and line breaks
- Fix typo: DevNullAdpater → DevNullAdapter
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Move h1 title out of post-subtitle container so it appears above the date, reading time, and theme badges for clearer visual hierarchy.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add dark mode support for text selection highlights (bright yellow with black text)
- Implement golden glow effect for sidenote highlights in dark mode
- Fix article icons appearing on sidenote links (exclude sidenote elements)
- Add dark mode styling for mobile sidenote popups
- Reduce tooltip hover delay from 800ms to 500ms
- Make sidenote highlights persistent instead of fading
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Three major biblical books adapted for programmers:
- Acts: The spreading of clean code from localhost to production
- Revelation: Apocalyptic visions of frameworks, technical debt, and the New Jerusalem
- 1 Corinthians: Paul's letters on team divisions, love chapter for developers, and the body of the dev team
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added comprehensive dark mode styling to outlines, connections, and terms archive pages
- New essay: "Conscious Recursion: When Programmers Realize They're in the Loop" exploring how code shapes consciousness and the responsibility of recognizing you're in the recursive feedback loop
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed connector arrow and switched to clean slide-up animation from bottom. Faster transitions (0.08s) for snappier feel. Supports both internal and external links with fixed bottom-right positioning.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Hovering over internal article links now shows a preview tooltip with:
- Article icon (SVG)
- Title
- Reading time and word count
- Publication date
- First paragraph excerpt (200 chars)
Features:
- 300ms hover delay before showing
- Cached fetches for performance
- Smart positioning to stay on screen
- Dark mode support
- Excludes nav/breadcrumb links and anchor links
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed search results, metadata, snippets, and highlights being hard
to read in dark mode. Added proper styling for all search result
elements including borders, text colors, and highlighted matches.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed article links and blockquotes being hard to read in dark mode
by adding proper dark mode styles for titles, metadata, and quote blocks.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added /archive/themes to the main nav alongside Home and Archive
since the themes page provides valuable content organization.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed Contents section links and parent navigation being hard to read
in dark mode by adding proper dark mode styles for headers, links,
borders, and hover states.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed article links in the Contents section being hard to read in dark mode
by adding proper styling for links, link hover states, and theme counts.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed directory links being nearly invisible in dark mode by adding
proper dark mode styles for links, dates, borders, and navigation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added body.light-mode class selectors with !important to override
@media (prefers-color-scheme: dark) styles when user manually toggles
to light mode on a device with dark system preference.
Changes:
- Added body.light-mode base styles in base.html
- Added light mode overrides in post.html for article titles and badges
- Added light mode overrides in archive.html and archive-by-length.html
- Added light mode overrides in search.html for input and autocomplete
- Added light mode overrides in themes.html
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added body.dark-mode selectors alongside @media queries to ensure
article h1 titles display correctly when using the manual dark mode toggle.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated all index links (sidenotes, outlines, quotes, connections, terms, graph)
at the bottom of the homepage to point to /archive/* URLs.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added sun/moon toggle button in bottom right with 0.15 opacity when idle
- Implemented body.dark-mode class-based theming with localStorage persistence
- Added dark mode styles for archive navigation boxes and colored buttons
- Fixed themes page typography with better spacing and hierarchy
- Ensured all dropdowns and navigation elements work in dark mode
- Supports both manual toggle and system preference detection
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove forced light mode enforcement to allow system dark mode preference
- Add meta tag for proper color-scheme support (light and dark)
- Implement dark mode styles for all interactive elements:
* Archive navigation with dark-friendly colored buttons
* Reading time and theme badges with appropriate dark backgrounds
* Dropdown menus (year jump, themes) with proper dark backgrounds
* Search interface including input, autocomplete, and results
* Fix article titles to be visible in dark mode
- Fix dropdown z-index issues and transparent backgrounds with !important
- Update colophon with accurate TufteCMS technical details
- Rename navigation from "Archives" to "Archive"
- Ensure all colored elements maintain visual hierarchy in dark mode
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add reading time badges to post headers with proper spacing
- Implement theme detection for articles with dropdown navigation
- Add "Jump to Year" dropdown button on archive page
- Enable auto-expansion of themes when navigating via anchor links
- Rename "Archive" to "Archives" in main navigation
- Apply colored navigation styling to archive-by-length page
- Add comprehensive mobile responsiveness for iPhone:
* Responsive badges and dropdowns
* Proper touch targets and spacing
* Mobile-optimized autocomplete and search results
* Adjusted font sizes and padding for mobile
- Fix theme detection to work with both index.md and direct .md files
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add colored navigation buttons (purple Random, red Directory, yellow Search, green Themes)
- Implement autocomplete in search with SVG icons and keyboard navigation
- Add search term highlighting in results and autocomplete
- Include SVG icons in search results
- Add theme descriptions with collapsible article lists
- Improve archive title and navigation visibility
- Clean up Flask-Sockets essay code formatting
- Move sort toggle below navigation on archive pages
- Add /api/blog endpoint for autocomplete data
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Show directory contents below rendered index.md on pages like /software/
- Add /directory link to archive navigation
- Remove SVG icons from archive-by-length (handled by JS)
- Add generated icons to directory listings
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add /archive/by-length route that groups essays by reading time (Quick/Short/Medium/Long reads). Shows reading time, word count, and date for each essay. Update archive navigation to include new sorting option.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Clarify that repo contains both TufteCMS framework and personal website content.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Copy tuftecms directory before install step since pyproject.toml force-includes templates and static directories.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add /games route with three inline JavaScript games (Snake, Pong, Breakout). Fix Dockerfile to copy README.md before install step since pyproject.toml references it.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Rewrite README to focus on TufteCMS as a standalone CMS package. Update pyproject.toml with proper metadata, classifiers, and build configuration to include templates and static files in distribution.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement HTML sitemap generation with clean template design, add cache debugging endpoint with comprehensive stats, and implement themes functionality with pattern-based content categorization.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>