commits
following tangled.org/core pattern where linting and testing are
combined in one workflow with multiple steps
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- fmt.yaml: checks code formatting with cargo fmt
- clippy.yaml: runs clippy linter with warnings as errors
- both run on push and pull_request events
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- fix @ symbol positioning: larger (1.2rem) and better aligned with handle
- add structured record display with headers and content sections
- add copy button to each record with visual feedback
- improve mobile responsiveness for identity circle and records
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
the favicon.svg is embedded at compile time via include_str!(), so the
static/ directory needs to be present in the build context
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- move spindle config to .tangled/workflows/ for auto-deploy on push to main
- simplify readme link styling
- improve identity visualization: show @ symbol as label with handle, add "tap for details" hint
- remove redundant @ prefix from handle display since it's now shown as separate label
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add close button (脳) to detail panel, visible on all devices
- make close button larger on mobile (40px) for better touch targets
- personalize identity explanation with actual user handle and pds
- change generic text to: "your data lives at bsky.social. apps like bluesky write to and read from this server. you control @yourhandle..."
- fixes mobile bug where panel couldn't be closed
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add spindle.yaml for automated deployment to fly.io on push to main
- install flyctl in ci environment using curl
- deploy using flyctl with FLY_API_TOKEN secret
- add deployed app link to readme
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- upgrade font stack to modern system monospace fonts
- add responsive touch targets for all interactive elements
- improve button/link active states for mobile
- make detail panel full-width on mobile
- add tap highlight removal for better mobile feel
- increase padding on mobile for better usability
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- fix logout button to clear localStorage before redirecting
- fix load more button using event delegation for dynamic buttons
- add interactive identity circle with pds info on click
- improve record display styling with better spacing and hover effects
- improve overlay behavior to close all panels
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- use AtprotoClientMetadata for https URLs (production)
- use AtprotoLocalhostClientMetadata for http URLs (local dev)
- add /oauth-client-metadata.json endpoint
- fixes OAuth client creation failure in production
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
binding to 127.0.0.1 only accepts localhost connections,
which doesn't work in containerized environments
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- update README: friendlier framing, remove condescending language
- add mobile responsiveness: viewport meta, responsive CSS, larger tap targets
- create Dockerfile: two-stage build for minimal production image
- make OAuth production-ready: configurable redirect URI via env var
- add fly.toml: deployment config with production OAuth callback
- create justfile: deploy and dev commands
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
a radial visualization showing your atproto identity at the center,
surrounded by third-party apps that store data in your PDS.
features:
- oauth login with any atproto handle
- session persistence via localStorage
- radial layout of third-party apps grouped by lexicon namespace
- click apps to see collection types
- click collections to view actual record data with pagination
- info modal explaining the atproto ecosystem
- light/dark mode following system preference
- responsive design with monospace courier new aesthetic
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
following tangled.org/core pattern where linting and testing are
combined in one workflow with multiple steps
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- fix @ symbol positioning: larger (1.2rem) and better aligned with handle
- add structured record display with headers and content sections
- add copy button to each record with visual feedback
- improve mobile responsiveness for identity circle and records
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- move spindle config to .tangled/workflows/ for auto-deploy on push to main
- simplify readme link styling
- improve identity visualization: show @ symbol as label with handle, add "tap for details" hint
- remove redundant @ prefix from handle display since it's now shown as separate label
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add close button (脳) to detail panel, visible on all devices
- make close button larger on mobile (40px) for better touch targets
- personalize identity explanation with actual user handle and pds
- change generic text to: "your data lives at bsky.social. apps like bluesky write to and read from this server. you control @yourhandle..."
- fixes mobile bug where panel couldn't be closed
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- add spindle.yaml for automated deployment to fly.io on push to main
- install flyctl in ci environment using curl
- deploy using flyctl with FLY_API_TOKEN secret
- add deployed app link to readme
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- upgrade font stack to modern system monospace fonts
- add responsive touch targets for all interactive elements
- improve button/link active states for mobile
- make detail panel full-width on mobile
- add tap highlight removal for better mobile feel
- increase padding on mobile for better usability
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- fix logout button to clear localStorage before redirecting
- fix load more button using event delegation for dynamic buttons
- add interactive identity circle with pds info on click
- improve record display styling with better spacing and hover effects
- improve overlay behavior to close all panels
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- use AtprotoClientMetadata for https URLs (production)
- use AtprotoLocalhostClientMetadata for http URLs (local dev)
- add /oauth-client-metadata.json endpoint
- fixes OAuth client creation failure in production
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- update README: friendlier framing, remove condescending language
- add mobile responsiveness: viewport meta, responsive CSS, larger tap targets
- create Dockerfile: two-stage build for minimal production image
- make OAuth production-ready: configurable redirect URI via env var
- add fly.toml: deployment config with production OAuth callback
- create justfile: deploy and dev commands
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
a radial visualization showing your atproto identity at the center,
surrounded by third-party apps that store data in your PDS.
features:
- oauth login with any atproto handle
- session persistence via localStorage
- radial layout of third-party apps grouped by lexicon namespace
- click apps to see collection types
- click collections to view actual record data with pagination
- info modal explaining the atproto ecosystem
- light/dark mode following system preference
- responsive design with monospace courier new aesthetic
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>