mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-10-08 00:00:23 -04:00
4.5 KiB
4.5 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 Rendering | Canvas hierarchy, GLFont, ColorTheme, rendering flow |
| Visual Data Pipeline | VisualProcessor, distribution modes, FFT/scope processing |
| 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 |
| Reorganize Design Docs | Low | 1 day | None |
Source Fixes & Documentation
Discrete tasks not covered by the implementation plans above, tracked here as the single source for their next-step list.
Source Code Fixes
| # | Action | Risk | Effort | Notes |
|---|---|---|---|---|
| 1 | Fix 17m band range in BookmarkMgr.cpp |
Low | 5 min | Change to ITU 18.068-18.168 MHz. Check if adjacent bands need adjustment. |
| 2 | Fix CMakeLists.txt source/header mismatches | None | 10 min | 5 entries in wrong category. Doesn't break build but misrepresents structure. |
Documentation Improvements
| # | Action | Risk | Effort | Notes |
|---|---|---|---|---|
| 3 | Add CONTRIBUTING.md | None | 1 hr | Build instructions, code style, PR process. Currently missing. |
| 4 | Add CHANGELOG.md | None | 1 hr | Version history. Currently missing. |
| 5 | Add Doxygen config | None | 2 hr | API docs generation. Currently missing. |
| 6 | Improve README.md | None | 30 min | Add inline build instructions (currently only on external wiki). |
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
- Reorganize Design Docs — Low risk, documentation only, standalone, reduces cross-doc drift
- 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