bunch of things
a bunch of quality of life + MST viz #8
expand 5 commits
hide 5 commits
- add tabbed interface for collections with 5+ records (records/mst tabs)
- implement canvas-based MST tree visualization
- add hover tooltips showing TID for each node
- add click modal showing full record details (TID, CID, URI, JSON data)
- improve tree layout algorithm to prevent node overlap
- hide scrollbar in detail panel and increase width to 500px
- link to atproto docs for MST and TID explanations
๐ค Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
reduces client-side javascript by moving core business logic to rust:
- created /api/init endpoint for did resolution, pds extraction, and app grouping
- created /api/avatar endpoint for namespace avatar lookups
- simplified fetchAppAvatar from 30 lines to 8 lines
- removed duplicate avatar fetching logic
- app.js reduced from 760 to 714 lines
๐ค Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- reverse namespace display (app.bsky -> bsky.app)
- make app names clickable links to actual URLs
- add hover underline effect for app name links
๐ค Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
validates all app URLs concurrently on page load:
- created /api/validate-url endpoint with HEAD request and 3s timeout
- grays out invalid links with reduced opacity
- adds tooltip explaining domain is not reachable
- disables clicking on invalid links
๐ค Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
some servers (like bsky.app) return HTTP 405 for HEAD requests but work fine with GET. this commit adds a fallback strategy:
- try HEAD first (faster, less bandwidth)
- if HEAD returns error status (405, etc), fall back to GET
- if HEAD fails completely, also try GET
- mark as valid only if either succeeds
this ensures valid URLs aren't incorrectly grayed out while still catching truly invalid domains.
๐ค Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
partially closes https://tangled.org/@zzstoatzz.io/at-me/issues/5