- **Soundpack Manager**: Full-featured package discovery, download, and installation system - Repository management with HTTPS enforcement and validation - Directory listing support (auto-discovers .zip files) + soundpacknames.txt fallback - Secure download with size limits, timeout protection, and path sanitization - Zip bomb protection: file count, individual size, and total extraction limits - Audio file validation using magic numbers (not just extensions) - Accessible UI with keyboard navigation and screen reader optimization - **Auto-refresh system**: Smart timeline updates respecting user activity - 300-second default interval + 10-second idle buffer - Keyboard activity tracking prevents interrupting active users - True new content detection using post IDs instead of counts - Preserves cursor position during background refreshes - **Enhanced notifications**: Fixed spam issues and improved targeting - Timeline switching now silent (no notifications for actively viewed content) - Initial app load notifications disabled for 2 seconds - Generic "New content in timeline" messages instead of misleading post counts - Separate handling for auto-refresh vs manual refresh scenarios - **Load more posts improvements**: Better positioning and user experience - New posts load below cursor position instead of above - Cursor automatically focuses on first new post for natural reading flow - Fixed widget hierarchy issues preventing activation - **Accessibility enhancements**: Workarounds for screen reader quirks - Added list headers to fix Orca single-item list reading issues - Improved accessible names and descriptions throughout - Non-selectable header items with dynamic counts - Better error messages and status updates - **Settings integration**: Corrected soundpack configuration management - Fixed inconsistent config keys (now uses [audio] sound_pack consistently) - Added soundpack manager to File menu (Ctrl+Shift+P) - Repository persistence and validation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Bifrost
A fully accessible fediverse client built with PySide6, designed specifically for screen reader users.
Vibe Coding Project
This project was created through "vibe coding" - a collaborative development approach where a human (Storm Dragon) provides direction, requirements, and testing while an AI assistant (Claude) handles the actual code implementation. Vibe coding combines human creativity and domain expertise with AI's rapid development capabilities, resulting in functional software that meets real accessibility needs.
All code in this project was written by Claude (Anthropic's AI assistant) based on specifications and feedback from Storm Dragon.
Features
- Full ActivityPub Support: Compatible with Pleroma, GoToSocial, and other fediverse servers
- Screen Reader Optimized: Designed from the ground up for excellent accessibility
- Threaded Conversations: Navigate complex conversation trees with keyboard shortcuts
- Timeline Switching: Easy navigation between Home, Mentions, Local, and Federated timelines
- Desktop Notifications: Cross-platform notifications for mentions, direct messages, and timeline updates
- Customizable Audio Feedback: Rich sound pack system with themed audio notifications
- Clean Interface: Focused on functionality over visual design
- Keyboard Navigation: Complete keyboard control with intuitive shortcuts
Audio System
Bifrost includes a sophisticated sound system with:
- Customizable sound packs (includes Default sounds)
- Audio feedback for all major actions
- Per-event volume control
- Cross-platform audio support
Technology Stack
- PySide6: Main GUI framework for proven accessibility
- ActivityPub: Full federation protocol support
- simpleaudio: Cross-platform audio with subprocess fallback
- Plyer: Cross-platform desktop notifications
- XDG Base Directory: Standards-compliant configuration storage
Keyboard Shortcuts
Timeline Navigation
- Ctrl+1: Switch to Home timeline
- Ctrl+2: Switch to Mentions/Notifications timeline
- Ctrl+3: Switch to Local timeline
- Ctrl+4: Switch to Federated timeline
- Ctrl+Tab: Switch between timeline tabs
- F5: Refresh current timeline
Post Actions
- Ctrl+N: Compose new post
- Ctrl+R: Reply to selected post
- Ctrl+B: Boost/reblog selected post
- Ctrl+F: Favorite selected post
- Ctrl+C: Copy selected post to clipboard
- Ctrl+U: Open URLs from selected post in browser
Navigation
- Arrow Keys: Navigate through posts
- Page Up/Down: Jump multiple posts
- Home/End: Go to first/last post
- Enter: Expand/collapse threads
- Tab: Move between interface elements
Application
- Ctrl+,: Open Settings
- Ctrl+Shift+A: Add new account
- Ctrl+Q: Quit application
Installation
git clone <repository>
cd bifrost
pip install -r requirements.txt
python bifrost.py
Or on Arch Linux:
sudo pacman -S python-pyside6 python-requests python-simpleaudio
yay -S python-plyer
Accessibility Features
- Complete keyboard navigation
- Proper screen reader announcements
- Focus management and tab order
- Accessible names and descriptions for all controls
- Thread expansion/collapse with audio feedback
Contributing
This is a vibe coding project where AI handles implementation. Human contributors can:
- Test accessibility with different screen readers
- Suggest features and improvements
- Create new sound packs
- Report bugs and usability issues
License
This project demonstrates the potential of human-AI collaboration in creating accessible software. It is released under the gpl version 3. See LICENSE file for details.