Add interactive logo with info/panic modes and battery optimization

- Single tap logo shows comprehensive app info and features
- Triple tap logo triggers panic mode (instant data wipe)
- Implement adaptive Bluetooth scanning based on battery level
- Remove hardcoded development team ID for security
- Fix store-and-forward description (12h for all, indefinite for favorites)
- Add technical debt remediation plan
- Fix macOS compatibility issues with navigation
This commit is contained in:
jack
2025-07-04 02:21:59 +02:00
parent c7baf31f03
commit cce43fcfc7
7 changed files with 585 additions and 17 deletions
+148
View File
@@ -0,0 +1,148 @@
# Bitchat Technical Debt Remediation Plan
## Overview
This document outlines the technical debt in the bitchat project and provides a prioritized plan for addressing it.
## Priority 1: Critical Security & Stability (1-2 weeks)
### 1.1 Thread Safety Issues
**Problem**: Potential race conditions in message processing and peer management
**Solution**:
- Audit all concurrent access to shared state
- Add proper synchronization to message queues
- Use actor pattern for BluetoothMeshService
- Add thread sanitizer to debug builds
### 1.2 Error Handling
**Problem**: Many errors are silently logged without proper recovery
**Solution**:
- Implement proper error propagation
- Add user-visible error states
- Create recovery mechanisms for common failures
- Add crash reporting for TestFlight
### 1.3 Memory Management
**Problem**: Fragment cleanup could leak memory, no proper cleanup on errors
**Solution**:
- Add fragment timeout cleanup
- Implement proper weak references in closures
- Add memory pressure handling
- Profile with Instruments
## Priority 2: Code Quality & Maintainability (2-3 weeks)
### 2.1 Service Refactoring
**Problem**: BluetoothMeshService is 1600+ lines, doing too much
**Solution**:
- Extract message handling into MessageProcessor
- Extract peer management into PeerManager
- Extract fragment handling into FragmentManager
- Create proper dependency injection
### 2.2 Testing Infrastructure
**Problem**: No unit tests, making refactoring risky
**Solution**:
- Add XCTest target
- Create mock implementations for Bluetooth
- Test encryption service thoroughly
- Add integration tests for message flow
- Aim for 70% code coverage
### 2.3 Documentation
**Problem**: Limited code comments, no architecture docs
**Solution**:
- Add comprehensive header comments
- Document protocol specifications
- Create architecture diagrams
- Add inline documentation for complex logic
## Priority 3: Performance & UX (3-4 weeks)
### 3.1 Message Deduplication
**Problem**: Simple Set-based deduplication can grow unbounded
**Solution**:
- Implement LRU cache for message IDs
- Add time-based expiration
- Consider bloom filters for efficiency
### 3.2 Connection Management
**Problem**: No connection pooling or retry logic
**Solution**:
- Implement connection state machine
- Add exponential backoff for retries
- Pool peripheral connections
- Add connection quality metrics
### 3.3 UI Responsiveness
**Problem**: Heavy operations on main thread
**Solution**:
- Move encryption to background queues
- Add loading states for operations
- Implement message pagination
- Add pull-to-refresh
## Priority 4: Feature Enhancements (4-6 weeks)
### 4.1 Message Persistence (Optional)
**Problem**: All messages ephemeral, no history
**Solution**:
- Add encrypted SQLite storage
- Implement configurable retention
- Add search functionality
- Maintain privacy-first approach
### 4.2 Protocol Improvements
**Problem**: No versioning, hard to upgrade
**Solution**:
- Add protocol version negotiation
- Implement capability discovery
- Plan migration strategy
- Add feature flags
### 4.3 Network Visualization
**Problem**: Users don't understand mesh topology
**Solution**:
- Add network graph view
- Show message routing paths
- Display peer connection quality
- Add statistics dashboard
## Implementation Strategy
### Phase 1: Foundation (Weeks 1-2)
1. Set up testing infrastructure
2. Add thread sanitizer and memory profiler
3. Begin service refactoring
4. Fix critical thread safety issues
### Phase 2: Stability (Weeks 3-4)
1. Complete service refactoring
2. Add comprehensive error handling
3. Implement proper memory management
4. Add initial test coverage
### Phase 3: Quality (Weeks 5-6)
1. Add documentation
2. Improve connection management
3. Optimize performance bottlenecks
4. Enhance UI responsiveness
### Phase 4: Enhancement (Weeks 7-10)
1. Add optional persistence
2. Implement protocol versioning
3. Build network visualization
4. Polish for production
## Success Metrics
- Zero crashes in TestFlight
- 70% test coverage
- Sub-100ms message processing
- < 5% battery drain per hour
- Clean architecture with < 300 lines per class
## Risk Mitigation
- Keep all changes backwards compatible initially
- Add feature flags for risky changes
- Extensive TestFlight testing between phases
- Maintain current security properties
- Regular security audits of changes