commits
PDS URL had trailing slash, causing //xrpc/ in blob URLs.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
listMyDecks returns empty slides array for performance.
deck page was using that instead of calling getDeck to resolve refs.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- add missing repo:tech.waow.slides.slide scope
- rename prefs -> preferences in oauth scopes
- add draggable=false to img to prevent browser drag interference
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- split monolithic api.ts into focused modules (types, client, oauth, blob, slide, deck)
- each slide is now a separate ATProto record referenced via strongRef
- deck record contains array of slide references (fm.plyr.list pattern)
- added delete deck button with confirmation to home page
- renamed title -> name, prefs -> preferences
- added justfile with check and deploy targets
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- split monolithic api.ts into focused modules (types, client, oauth, blob, slide, deck)
- each slide is now a separate ATProto record referenced via strongRef
- deck record contains array of slide references (fm.plyr.list pattern)
- added delete deck button with confirmation to home page
- renamed title -> name, prefs -> preferences
- added justfile with check and deploy targets
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>