commits
Content container min-height ratchets up to the tallest tab seen
and never shrinks, preventing any layout jumps when switching tabs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prevents layout jolt when switching tabs by pinning the content
container's min-height to the outgoing panel's height, then
smoothly transitioning to the new panel's height once loaded.
Uses MutationObserver to detect when async content replaces
the loading spinner.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Tab selection syncs to URL hash (#posts, #writing, etc.)
- Page reload restores the active tab from hash
- Back/forward navigation switches tabs via hashchange
- Fix music track styles (scoped → global for dynamic elements)
- PostFeed defers loading when hash points to another tab
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Writing, Music, Repos, Annotations, Notes, and Feeds now fetch data
dynamically on tab switch instead of at build time. Content is always
fresh without needing a rebuild. Only the profile header and writing
article pages remain build-time rendered.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Feed link cards were inline, causing clipped borders and small hover area.
Now display:block for proper card layout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Favicon from pckt blog icon (ico, apple-touch-icon, 192px, 512px)
- Feed cards now link to Bluesky with "View on Bluesky →"
- OG/Twitter Card meta tags on all pages for rich link embeds
- Canonical URLs and meta descriptions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move color treatment from stats bar to tab navigation. Each tab gets
its own NYC color when active (brick red, midnight navy, Central Park
green). Stats are now plain inline text.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Black borders, primary colors (red/blue/yellow), bold uppercase
typography, square avatars, structured grid layout across all
components.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tangled serves sites directly from git, so build output must be committed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces single-file HTML with Astro static site generator pulling all
meaningful ATProto data: Bluesky posts (client-side), blog posts, music,
repos, annotations, notes, follows, and feeds. Includes Spindle CI/CD
config for automated builds on push to main.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Single-file static site that pulls profile, posts, follows, and feeds
from the Bluesky public API using the natespilman.com handle.
Impressionist-themed design. Self-threads are expandable inline.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prevents layout jolt when switching tabs by pinning the content
container's min-height to the outgoing panel's height, then
smoothly transitioning to the new panel's height once loaded.
Uses MutationObserver to detect when async content replaces
the loading spinner.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Tab selection syncs to URL hash (#posts, #writing, etc.)
- Page reload restores the active tab from hash
- Back/forward navigation switches tabs via hashchange
- Fix music track styles (scoped → global for dynamic elements)
- PostFeed defers loading when hash points to another tab
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Writing, Music, Repos, Annotations, Notes, and Feeds now fetch data
dynamically on tab switch instead of at build time. Content is always
fresh without needing a rebuild. Only the profile header and writing
article pages remain build-time rendered.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces single-file HTML with Astro static site generator pulling all
meaningful ATProto data: Bluesky posts (client-side), blog posts, music,
repos, annotations, notes, follows, and feeds. Includes Spindle CI/CD
config for automated builds on push to main.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>