Add comprehensive social features with accessibility-first design

Implements complete post management and social interaction capabilities:

**Post Management:**
- Delete posts with confirmation dialog (owned posts only)
- Edit posts using existing compose dialog (owned posts only)
- Robust ownership validation and error handling

**Follow System:**
- Follow/unfollow users from context menus and keyboard shortcuts
- Manual follow dialog for @user@instance lookups
- Account search and validation before following
- Smart context menu options based on post ownership

**Timeline Extensions:**
- Followers tab showing accounts following you
- Following tab showing accounts you follow
- Seamless integration with existing timeline system
- Account list display for social relationship viewing

**Keyboard Shortcuts:**
- Ctrl+Shift+E: Edit post
- Shift+Delete: Delete post (with confirmation)
- Ctrl+Shift+F: Follow user
- Ctrl+Shift+U: Unfollow user
- Ctrl+Shift+M: Manual follow dialog

**ActivityPub API Extensions:**
- edit_status() method for post editing
- get_relationship() method for follow status checking
- Enhanced followers/following pagination support

**Critical Accessibility Fix:**
- Eliminated ALL text truncation throughout the application
- Added explicit no-truncation rule to development guidelines
- Full content accessibility for screen reader users

All features maintain Bifrost's accessibility-first principles with proper error handling, user feedback, and complete information display.

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Storm Dragon
2025-07-20 19:46:31 -04:00
parent b936e4994d
commit 037fcbf7e0
5 changed files with 439 additions and 18 deletions

View File

@ -6,14 +6,18 @@ Bifrost is a fully accessible fediverse client built with PySide6, designed spec
## Core Features
- Full ActivityPub protocol support (Pleroma and GoToSocial primary targets)
- Threaded conversation navigation with collapsible tree view
- Customizable sound pack system for audio notifications
- Screen reader optimized interface
- Comprehensive soundpack management system with secure repository support
- Smart autocomplete for mentions (@user@instance.com) and emojis (5,000+ Unicode)
- Auto-refresh with intelligent activity-based timing
- Screen reader optimized interface with Orca compatibility fixes
- XDG Base Directory specification compliance
## Technology Stack
- **PySide6**: Main GUI framework (proven accessibility with existing doom launcher)
- **requests**: HTTP client for ActivityPub APIs
- **simpleaudio**: Cross-platform audio with subprocess fallback
- **emoji**: Comprehensive Unicode emoji library (5,000+ emojis with keyword search)
- **plyer**: Cross-platform desktop notifications
- **XDG directories**: Configuration and data storage
## Architecture
@ -41,13 +45,16 @@ bifrost/
│ │ └── thread.py # Conversation threading
│ ├── widgets/ # Custom UI components
│ │ ├── __init__.py
│ │ ├── timeline_view.py # Main timeline widget
│ │ ├── compose_dialog.py # Post composition
│ │ ├── timeline_view.py # Main timeline widget with auto-refresh
│ │ ├── compose_dialog.py # Post composition with smart autocomplete
│ │ ├── autocomplete_textedit.py # Mention and emoji autocomplete system
│ │ ├── settings_dialog.py # Application settings
│ │ ├── soundpack_manager_dialog.py # Soundpack repository management
│ │ └── login_dialog.py # Instance login
│ ├── audio/ # Sound system
│ │ ├── __init__.py
│ │ ├── sound_manager.py # Audio notification handler
│ │ └── soundpack_manager.py # Secure soundpack installation system
│ │ └── sound_pack.py # Sound pack management
│ └── config/ # Configuration management
│ ├── __init__.py
@ -357,9 +364,8 @@ verbose_announcements = true
PySide6>=6.0.0
requests>=2.25.0
simpleaudio>=1.0.4
numpy
configparser
pathlib
plyer>=2.1.0
emoji>=2.0.0
```
### Optional Dependencies
@ -402,4 +408,15 @@ python bifrost.py
- **JAWS** (Windows via Wine): Basic compatibility
- **VoiceOver** (macOS): Future consideration
## Critical Accessibility Rules
### Text Truncation Is Forbidden
**NEVER TRUNCATE TEXT**: Bifrost is an accessibility-first client. Text truncation (using "..." or limiting character counts) is strictly forbidden as it prevents screen reader users from accessing complete information. Always display full content, descriptions, usernames, profiles, and any other text in its entirety.
Examples of forbidden practices:
- `content[:100] + "..."`
- Character limits on display text
- Shortened usernames or descriptions
- Abbreviated profile information
This document serves as the comprehensive development guide for Bifrost, ensuring all accessibility, functionality, and architectural decisions are preserved and can be referenced throughout development.