Files
bifrost/README.md
Storm Dragon 6fa0cf481a Enhance compose experience with comprehensive autocomplete systems
## Major Features Added

### Smart Mention Completion
- **Full fediverse handles**: @user@instance.com format instead of incomplete usernames
- **Multi-source suggestions**: Search API + followers + following for comprehensive results
- **Real-time API integration**: No more hardcoded sample data
- **Intelligent filtering**: Prefix-based matching across all user connections

### Comprehensive Emoji System
- **5,000+ Unicode emojis**: Complete emoji dataset via python-emoji library
- **Keyword-based search**: Find emojis by typing descriptive words (:fire, :heart, :grin)
- **Actual emoji insertion**: Inserts Unicode characters (🎃) not shortcodes (🎃)
- **Accurate selection**: Fixed bug where wrong emoji was inserted from autocomplete list
- **Smart synonyms**: Common aliases for frequently used emojis

### Enhanced ActivityPub Integration
- **Account relationships**: get_followers(), get_following(), search_accounts() methods
- **Expanded API coverage**: Better integration with fediverse social graph
- **Robust error handling**: Graceful fallbacks for API failures

### User Experience Improvements
- **Bug fixes**: Resolved autocomplete selection and focus restoration issues
- **Documentation**: Updated README with comprehensive feature descriptions
- **Dependencies**: Added emoji>=2.0.0 to requirements for Unicode support

## Technical Details
- Removed incomplete fallback data in favor of live API integration
- Improved completer selection logic to use actually selected items
- Enhanced error handling for network requests and API limitations
- Updated installation instructions for new emoji library dependency

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 16:06:04 -04:00

129 lines
5.2 KiB
Markdown

# 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
- **Soundpack Manager**: Secure repository-based soundpack discovery and installation
- **Smart Autocomplete**: Mention completion with full fediverse handles (@user@instance.com)
- **Comprehensive Emoji Support**: 5,000+ Unicode emojis with keyword search
- **Auto-refresh**: Intelligent timeline updates based on user activity
- **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:
- **Soundpack Manager**: Secure HTTPS-based repository system
- **Repository Management**: Add/remove soundpack repositories with validation
- **One-click Installation**: Download, validate, and install soundpacks securely
- **Customizable Sound Packs**: Themed audio notifications (Default pack included)
- **Audio Feedback**: Sound events for all major actions and notifications
- **Per-event Volume Control**: Fine-tune individual sound effects
- **Cross-platform Audio Support**: Works on Linux, Windows, and macOS
## Compose Features
- **Mention Autocomplete**: Type `@` to get suggestions from followers/following/search
- **Full Fediverse Handles**: Completes to full format (@user@instance.com)
- **Emoji Autocomplete**: Type `:` to search 5,000+ Unicode emojis
- **Keyword Search**: Find emojis by typing keywords (`:fire`, `:heart`, `:grin`)
- **Real-time Character Count**: Visual feedback with limit warnings
- **Content Warnings**: Optional spoiler text support
- **Visibility Controls**: Public, Unlisted, Followers-only, or Direct messages
## 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
- **emoji**: Comprehensive Unicode emoji library (5,000+ emojis)
- **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
### Compose Dialog
- **Ctrl+Enter**: Send post
- **@**: Trigger mention autocomplete
- **:**: Trigger emoji autocomplete
- **Arrow Keys**: Navigate autocomplete suggestions
- **Enter/Tab**: Accept selected completion
- **Escape**: Close autocomplete or cancel compose
### Application
- **Ctrl+,**: Open Settings
- **Ctrl+Shift+A**: Add new account
- **Ctrl+Alt+S**: Open Soundpack Manager
- **Ctrl+Q**: Quit application
## Installation
```bash
git clone <repository>
cd bifrost
pip install -r requirements.txt
python bifrost.py
```
Or on Arch Linux:
```bash
sudo pacman -S python-pyside6 python-requests python-simpleaudio python-emoji
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.