mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-10-08 00:00:23 -04:00
3.2 KiB
3.2 KiB
CubicSDR Improvement Plans
Detailed implementation plans for each recommendation. See RECOMMENDATIONS.md for the full evaluation and summary.
Architecture Documentation
Design documents covering the system architecture are in docs/design/:
Core Architecture
| Document | Description |
|---|---|
| Architecture Overview | Directory layout, key classes, quick reference |
| Signal Flow | Data path from SDR hardware to audio output |
| Threading Model | Thread inventory, synchronization, lifecycle |
| Modem System | Plugin architecture, factory pattern, available modems |
Subsystem Deep Dives
| Document | Description |
|---|---|
| Audio Subsystem | Controller/bound mixing, WAV recording, device management |
| Visual Architecture | Canvas hierarchy, GLFont, ColorTheme, rendering pipeline |
| Configuration System | AppConfig/DeviceConfig, DataTree serialization, sessions |
| Bookmark System | BookmarkMgr, groups/ranges/recents, persistence |
| SDR Device Layer | SDREnumerator, SDRDeviceInfo, manual devices |
Plans
| Plan | Risk | Effort | Dependencies |
|---|---|---|---|
| Fix .gitignore | None | 5 min | None |
| Add Unit Tests | Low | 2-3 days | None |
| Replace reinterpret_cast Type Punning | Low | 1 day | None |
| Modernize CMake | Low-Medium | 1-2 days | None |
| Split AppFrame.cpp | Low | 1 day | None |
| Resolve Open TODOs | Low | 1 day | split-appframe, replace-reinterpret-cast |
| Replace Raw new/delete with Smart Pointers | Medium | 1 day | None |
| Remove MSVC C4996 Suppression | Medium | 1-2 days | None |
| Add CI Test Execution | Low | 2 hours | add-unit-tests |
| Update Vendored Dependencies | High | 3-5 days | None |
Recommended Execution Order
Execute in this order to minimize risk and satisfy dependencies:
- Fix .gitignore — Zero risk, immediate value, unblocks clean builds
- Add Unit Tests — Foundational; enables test-driven work on subsequent plans
- Add CI Test Execution — Locks in test infrastructure before code changes
- Replace reinterpret_cast — Low risk, standalone, improves correctness
- Modernize CMake — Low-medium risk, standalone, enables better build practices
- Split AppFrame.cpp — Low risk, standalone, reduces cognitive load for later work
- Resolve TODOs — Depends on AppFrame split and reinterpret_cast replacement
- Replace Raw new/delete — Medium risk; do after tests exist to catch regressions
- Remove C4996 Suppression — Medium risk; requires touching many files
- Update Vendored Dependencies — Highest risk; do last, requires extensive testing