Commit Graph

9 Commits

Author SHA1 Message Date
Storm Dragon
8b9187e23f Implement comprehensive professional logging system
Added complete logging infrastructure for AI-only development debugging:

**Core Logging Features:**
- Command-line debug flags: -d (console) and -d filename (file output)
- Custom log format: "message - severity - timestamp"
- Professional Python logging with hierarchical loggers (bifrost.module)
- Clean separation: debug mode vs production (warnings/errors only)

**Comprehensive Coverage - Replaced 55+ Print Statements:**
- timeline_view.py: Timeline operations, new content detection, sound events
- main_window.py: Auto-refresh system, streaming mode, UI events
- activitypub/client.py: API calls, streaming connections, server detection
- audio/sound_manager.py: Sound playback, pack loading, volume control
- error_manager.py: Centralized error handling with proper log levels
- All remaining modules: Complete print statement elimination

**Enhanced Auto-Refresh Debugging:**
- Fixed repetitive refresh interval logging (only logs on changes)
- Added detailed auto-refresh execution tracing with timing
- New content detection logging with post ID tracking
- Sound event logging showing which sounds play and why

**Sound System Visibility:**
- Complete audio event logging with file paths and volumes
- Sound pack loading and fallback detection
- Audio playback success/failure with detailed error context

**Documentation Updates:**
- README.md: Complete debug system documentation for users
- CLAUDE.md: Professional logging guidelines for AI development
- Comprehensive usage examples and troubleshooting guides

This logging system provides essential debugging capabilities for
the AI-only development constraint, enabling systematic issue
resolution without human code intervention.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-22 23:32:55 -04:00
Storm Dragon
3c45932fea Add comprehensive content type support with interface settings reorganization
- Rename Accessibility tab to Interface in settings dialog for better organization
- Add default content type setting (Plain Text, Markdown, HTML) in Interface tab
- Add per-post content type selection in compose dialog with user default
- Implement automatic settings migration from accessibility to interface section
- Separate content display vs editing: timeline shows rendered content, editing shows source
- Wire content type selection through all posting paths (new posts, replies, edits)
- Update Post model with get_display_content() for rendered display and get_content_text() for editing
- Support markdown posts that display formatted in timeline but show source when editing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 22:57:26 -04:00
Storm Dragon
c19d2ff162 Add comprehensive media upload support with accessibility features
Implements full-featured media attachment system for posts:
- MediaUploadWidget with file picker supporting images, videos, audio
- Server-side upload limit validation via /api/v1/instance endpoint
- Alt text editing for accessibility compliance (mandatory for images)
- File validation with MIME type and size checking
- Background upload with progress tracking and error handling
- Integrated into compose dialog with graceful fallback handling
- Updated ActivityPub client with media attachment API methods
- Proper media_ids integration in posting workflow

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 11:49:37 -04:00
Storm Dragon
3c3b50bdb9 Fix notification and sound system issues with comprehensive improvements
- **Fixed duplicate sound events**: Prevent success/shutdown sounds from playing multiple times during timeline switches and app quit
- **Added event coordination patterns**: Implemented flags and source tracking to prevent circular UI event chains
- **Completed sound event coverage**: Added missing sound methods (play_favorite, play_follow, play_unfollow, play_direct_message, play_post) and wired them to user actions
- **Enhanced notification system**: Fixed desktop notifications ignoring enable/disable settings by adding missing notifications section to default config
- **Improved timeline-specific sounds**: Conversations now use direct_message sound instead of generic timeline_update sound
- **Added duplicate code prevention guidelines**: Comprehensive CLAUDE.md section with patterns, checklist, and testing requirements to prevent future duplicate implementations
- **Sound pack compatibility**: Full support for both default pack (private_message, post_sent) and Doom pack (direct_message, post) naming conventions with intelligent fallback

All sound events now properly trigger on user actions: boost/favorite posts, follow/unfollow users, notifications, timeline updates, and lifecycle events.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 07:53:36 -04:00
Storm Dragon
014f288524 Add comprehensive poll support with full accessibility
Features:
- Poll creation in compose dialog with up to 4 options, single/multiple choice, expiration times
- Accessible poll discovery with keyboard navigation (Enter to vote on polls in timeline)
- Poll voting dialog with radio buttons/checkboxes and proper focus management
- Poll results display using navigable list widget for accessibility
- Real-time poll validation and error handling
- Updated README with complete poll documentation

Technical improvements:
- Added poll endpoints to ActivityPub client (create_poll, vote_in_poll)
- Extended Post model with poll data fields and accessibility methods
- Enhanced timeline view with Enter key handling for poll interaction
- Simplified radio button implementation following doom launcher patterns
- Fixed undefined variable bug in poll info generation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 01:19:46 -04:00
2e0c7263b4 Add audio feedback for autocomplete suggestions
- Implemented autocomplete sound notification system for accessibility
- Added gentle 150ms chime (800Hz) when autocomplete suggestions appear
- Enhanced AutocompleteTextEdit to accept sound_manager parameter
- Created automatic sound generation for default pack (autocomplete.wav)
- Added play_autocomplete() method to SoundManager with 30% volume
- Sound includes 20ms fade in/out to prevent audio clicks
- Provides valuable audio feedback for screen reader users

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 20:53:18 -04:00
daca679fb9 Fix username autocomplete for Pleroma instances and remote users
- Enhanced API search limits from 10 to 40 users with remote resolution
- Added 'resolve: True' parameter to enable finding users from remote instances
- Improved filtering logic to match username parts before @ symbol
- Increased follower/following search limits from 50 to 100 each
- Added Pleroma compatibility with parameter validation and fallback endpoints
- Fixed state management for autocomplete re-triggering after API calls
- Now successfully finds remote users like storm@social.wolfe.casa

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 20:43:32 -04:00
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
Storm Dragon
460dfc52a5 Initial commit: Bifrost accessible fediverse client
- Full ActivityPub support for Pleroma, GoToSocial, and Mastodon
- Screen reader optimized interface with PySide6
- Timeline switching with tabs and keyboard shortcuts (Ctrl+1-4)
- Threaded conversation navigation with expand/collapse
- Cross-platform desktop notifications via plyer
- Customizable sound pack system with audio feedback
- Complete keyboard navigation and accessibility features
- XDG Base Directory compliant configuration
- Multiple account support with OAuth authentication

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 03:39:47 -04:00