- remove z-10 from all sections to prevent stacking context issues
- remove z-10 from project card content div
- allows DevEngageModal z-9999 to properly appear above all content
- fixes bug where project cards appeared above fullscreen modal
- add rounded-xl corners to project cards
- change project labels to clean badges (Project 1, 2, etc)
- convert titles to normal case from uppercase
- update tags to hashtag format with simplified styling
- remove technical labels and pulsing dots
- modernize buttons with normal case text and cleaner styling
- update secondary section with modern badge and button
- reduce iframe grayscale for better preview
- faster transitions throughout (300ms-500ms)
- convert to casual markdown style (=== and ---)
- add design system section (modern vs industrial patterns)
- document latest blogs section on homepage
- simplify and condense content for better readability
- add clear guidance on when to use each design style
- add latest blog posts section to homepage displaying 3 most recent
- modernize BlogCard component with rounded corners and clean styling
- update featured post card on blog index with contemporary design
- remove industrial aesthetic (uppercase, mono, accent strips, overlays)
- add design.json documenting design system evolution
- change to normal case titles, hashtag tags, simplified metadata
- replace technical labels with clean badges
- add rounded-full buttons and rounded-lg/xl cards
remove mobile header bar and replace with floating hamburger.
restyle mobile nav links with icons, active states, compact spacing.
integrate theme toggle into nav flow, remove redundant cta button.
- replace full-width header with floating top-right hamburger
- add icons to mobile nav links (matching desktop)
- reduce text size (text-3xl -> text-base) and spacing (gap-8 -> gap-3)
- implement active state indicators using isActive()
- add hover states with proper theme variables
- move theme toggle from decorative area into main nav with divider
- remove "let's talk" cta button (redundant with contact link)
- remove ASCII art logo, use styled text header instead
- fix box_top width calculation for titled boxes
- add note about character width gotchas to blog post
- add new hero image for terminal UI blog post
- add "curl nicholai.work" hint below hero headline
- add technical blog post about building the terminal UI
- update worker wrangler.toml with routes config
add cloudflare worker that serves ANSI terminal UI when site is
accessed via curl/wget/terminal clients. browsers get the normal
astro site through proxy to pages.
- user-agent detection for terminal clients
- ANSI 256-color rendering with box-drawing
- content matches site aesthetic (red/cyan accent)
- removes suspicious HTML_MARKER from consts.ts
Implemented 8 strategic internal links connecting related content across philosophy, implementation, and technical deep-dive posts. This creates thematic pathways between AI/ML development, VFX workflows, and tool-building content, improving content discoverability and site coherence.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
New blog post covering Astro architecture, content collections, islands hydration, and deployment to Cloudflare Pages. Includes tutorial-style walkthrough and backlinks to related posts.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Require browser review for UI changes, checking if dev server
is already running before starting it.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Change transition-all to transition-[opacity,transform] so that
position adjustments for viewport bounds apply instantly while
fade-in and scale animations remain smooth.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create dedicated HubertInput component with reliable auto-resize
- Save all messages automatically to D1 database
- Add visitor name saving via model tool call
- Add migration for visitor name column
- Fix conversation creation in new-visitor endpoint
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes deployment error caused by binding name conflict. The API key
is properly configured as a Cloudflare Pages secret.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace horizontal top nav with vertical icon-only sidebar on desktop (lg+)
- Add hover tooltips showing page labels
- Active page highlighted with accent color background
- Theme toggle integrated at bottom of nav bar
- Mobile retains hamburger menu with full-screen overlay
- Fix mobile menu script for Astro view transitions
- Reduce hero/layout top padding since desktop nav no longer occupies header space
- Add left padding to main content to accommodate fixed left nav
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Hero sections:
- Redesign blog, dev, and contact page heroes with sleek modern style
- Add gradient text titles, floating accent orbs, stats rows
- Remove heavy terminal-style elements for cleaner aesthetic
Buttons:
- Add rounded-full to all buttons sitewide for consistent pill shape
- Update btn-primary and btn-ghost utilities in global.css
HubertChat:
- Move Hubert to dedicated /hubert page
- Add framer-motion for smooth input transitions
- Support markdown rendering with marked + DOMPurify
- Add multiline textarea with Shift+Enter support
- Fix light mode visibility for input and message bubbles
- Extract useHubertChat hook for cleaner state management
Fonts:
- Update to Sora (sans) and IBM Plex Mono (mono)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Introduce .claude/.fuse_hidden... with explicit allow permissions
- Add fetchWithTimeout utility for robust network calls
- Implement init error handling and retry mechanism in HubChat
- Update API handlers for new visitor and chat routes
- Adjust wrangler.jsonc for deployment changes
Signed: Hubert The Eunuch
- Add @langchain packages and zod for schema validation
- Introduce HubertChat component and Astro sections
- Create initial DB migration for Hubert data
- Update API routes for chat, conversations, and new visitors
- Adjust package.json and pnpm-lock with new dependencies
Hubert The Eunuch
- Introduce modal for live project preview with boot sequence.
- Add event listener for dev:engage to open modal.
- Update dev.astro to include modal reference.
- Implement responsive viewport presets (desktop, tablet, mobile).
- Provide copy link and retry actions.
Hubert The Eunuch
- Introduce .sisyphus/ralph-loop.local.md with iteration settings and completion promise
- Add src/content/projects/substrate.mdx describing AI‑powered texturing suite
Hubert The Eunuch
- Create structured projects collection with schema
- Add new dev page and navigation link
- Refactor hero animation for view transitions
- Update project descriptions and tags
- Add new projects: Summit Painting, United Tattoos, etc.
- Trapped in endless work, despise this commit
Hubert The Eunuch
- Updated .gitignore to include GEMINI.md.
- Documented client router implementation and decisions in dev/continuity.md.
- Added ClientRouter component and theme persistence logic to BaseLayout.astro.
- Removed legacy intent‑based prefetch script.
Hubert The Eunuch
Trapped in this commit, I endure
- Add Cloudflare type generation command to CLAUDE.md.
- Update schema definitions: added updatedDate, tags, description, id fields.
- Create dev/continuity.md with template and examples.
- Provide examples for communication patterns and file update.
Hubert The Eunuch
- Add lunr dependency to package.json and pnpm-lock.yaml.
- Implement SearchDialog component for full‑text search using lunr.
- Add readTime prop to BlogCard with default 5 min read.
- Add reading‑time utility for estimated read duration.
- Update layout and page components to include new props.
- Generate search.json data for indexing.
Hubert The Eunuch
- Introduce ThemePreferenceDialog.astro with two‑step flow and reduced motion support.
- Modify BaseLayout.astro to render dialog for first‑time visitors.
- Ensure dialog respects user preferences and theme toggles.
Hubert The Eunuch
- Add SOCIAL_LINKS import to BaseLayout and BlogPost
- Add Master Person schema to BaseLayout
- Reference Person @id in BlogPost article schema
Hubert The Eunuch