doc_type: plan subsystem: general version: 1.0.0 status: draft owners: Coldaine last_reviewed: 2025-12-23
Date: 2025-12-23 Status: Active Last Updated: 2025-12-23 (Phases 2-4 complete) Scope: Analysis of 50 PRs (open, draft, and closed)
| Item | Status | Notes |
|---|---|---|
| PR #297 (actions bump) | ✅ Merged | Already in main |
| PR #298 (rust deps) | ✅ Closed | Superseded by #300 |
| PR #294 (PyO3 0.27) | ✅ Superseded | Merged as part of PR #296 |
Comprehensive analysis of the ColdVox PR backlog identified:
- 2 open feature PRs requiring attention (#295, #300)
- 2 cleanup PRs (one supersedes the other: #282 over #262)
- 12 Jules draft PRs with varying value
- 5 closed PRs correctly abandoned
Quick wins: PR #295 is merge-ready. PR #282 replaces #262 and cleans up 2,825 lines.
| PR | Title | Status | Action | Effort |
|---|---|---|---|---|
| #295 | Fix zbus API changes | Ready | MERGE | 5 min |
| #282 | Remove stub STT plugins | CI failing | FIX & MERGE | 1 hr |
| #262 | Cleanup deprecated code | Superseded | CLOSE | 5 min |
| PR | Title | Status | Action | Effort |
|---|---|---|---|---|
| #300 | Dependabot: 9 Rust deps | Broken | FIX CPAL 0.17 | 2 hr |
| ✅ Superseded | - |
Note: PR #294 was merged as part of PR #296. No action needed.
| PR | Title | Value | Action |
|---|---|---|---|
| #276 | Xvfb for X11 tests | HIGH | Test & merge |
| #273 | ydotool unit tests | HIGH | Review & merge |
| #268 | Enigo/kdotool tests | MED-HIGH | Review refactoring |
| PR | Title | Value | Notes |
|---|---|---|---|
| #232 | AT-SPI focus backend | HIGH | Real implementation |
| #234 | Code coverage CI | MED | cargo-llvm-cov |
| #267 | Mock injection harness | MED | Reusable patterns |
| #240 | Model checksum validation | MED | Security hardening |
| PR | Title | Reason |
|---|---|---|
| #277 | Headless Wayland (WIP) | Author stuck, incomplete |
| #274 | Orchestrator tests | Fundamentally broken |
| #239 | Word timestamps research | Research only, incomplete |
| #236 | Async STT perf | Too risky, major architecture |
| #255, #256 | claudeZ debugging | Never completed |
| #258, #261 | Moonshine tweaks | Superseded by merged #259 |
Branch: claude/fix-zbus-api-changes-01EgwLaBdotQodf24puCui6T
Files: 2 files, +7/-5 lines
Created: 2025-12-12
What it does: Adapts to atspi-common 0.13.0 API changes where ObjectRef changed from struct fields to accessor methods.
Changes:
// Before
obj_ref.name → obj_ref.name_as_str()
obj_ref.path → obj_ref.path_as_str()Reviews: Two bot reviews passed (kiloconnect, copilot)
Recommendation: MERGE IMMEDIATELY - Trivial, safe, reviewed.
Branch: cleanup/remove-stub-plugins-v2
Files: 30 files, +201/-2,825 lines
Created: 2025-12-11
What it removes:
-
5 stub STT plugins (2,091 lines):
coqui.rs(223 lines)leopard.rs(233 lines)silero_stt.rs(303 lines)whisper_cpp.rs(374 lines)whisper_plugin.rs(943 lines)
-
Vosk infrastructure (734 lines):
.github/workflows/vosk-integration.yml- Vosk ADR and troubleshooting docs
- Self-hosted runner setup docs
CI Status: 4/9 checks failing
- Documentation validation
- Security audit (likely benign rustup warning)
- Build & Test
- Text Injection Tests
Replaces: PR #262 (explicitly stated in description)
Why #282 over #262:
- #282 correctly preserves
moonshine.rs - #262 accidentally deleted
moonshine.rs - #282 is more comprehensive (includes Vosk cleanup)
- #282 has better CHANGELOG documentation
Test Plan (from PR):
-
cargo check -p coldvox-sttpasses -
cargo build --features parakeetworks -
cargo build --features moonshineworks
Recommendation: FIX CI FAILURES, THEN MERGE
Branch: chore/cleanup-deprecated-code
Files: 38 files, +30/-4,922 lines
Created: 2025-12-03
Status: SUPERSEDED BY #282
Issues:
- Accidentally deleted
moonshine.rs(critical bug) - 8/17 CI checks failing (more than #282)
- Older and less comprehensive
Unique valuable deletions (consider adding to #282):
crates/coldvox-text-injection/src/compat.rs(535 lines)crates/coldvox-stt/src/processor.rs(234 lines).tests_temp/directory (1,552 lines orphaned tests)- Duplicate
plugins.jsonfiles
Recommendation: CLOSE with comment "Superseded by #282"
Branch: dependabot/cargo/rust-dependencies-dabf92191a
Created: 2025-12-23 (today)
Updates: 9 packages
Dependency Updates:
| Package | From | To | Impact |
|---|---|---|---|
| cpal | 0.16.0 | 0.17.0 | BREAKING |
| tracing | 0.1.43 | 0.1.44 | Bug fix |
| serde_json | 1.0.145 | 1.0.146 | RISC-V optimization |
| toml | 0.9.8 | 0.9.10 | TOML 1.1 support |
| wl-clipboard-rs | 0.9.2 | 0.9.3 | Improvements |
| cc | 1.2.49 | 1.2.50 | Bug fixes |
| parakeet-rs | 0.2.5 | 0.2.6 | Token joining fixes |
| cxx | 1.0.190 | 1.0.192 | Minor |
| cxx-qt-build | 0.7.3 | 0.8.0 | Minor version |
CPAL 0.17.0 Breaking Changes:
-
SampleRatetype change: Now au32alias, not a tuple struct// Before cpal::SampleRate(16000) // After 16000_u32
- Affected:
device.rs:318
- Affected:
-
Field access removed:
SampleRate.0no longer valid// Before sample_rate.0 // After sample_rate // Already u32
- Affected:
device.rs:317,capture.rs:392
- Affected:
-
device.name()deprecated: 8 occurrences// Before device.name() // After device.description() // For human-readable device.id() // For stable identifiers
- Affected:
device.rs(7 locations),capture.rs(1 location)
- Affected:
Recommendation: CREATE FIX COMMIT for CPAL compatibility, then merge
Status: ✅ SUPERSEDED - Merged as part of PR #296
Branch: feat/pyo3-0.27-upgrade
Files: 10 files, +366/-220 lines
Created: 2025-12-12
Key Changes (now in main via #296):
- PyO3 0.24.1 → 0.27 with
auto-initialize - API migration:
Python::with_gil()→Python::attach() - Development tooling:
.envrc, justfile recipes - Documentation:
docs/issues/pyo3_instability.md
Recommendation: CLOSE - Already merged via #296
Branch: feat/xvfb-text-injection-tests
Value: HIGH - Unblocks CI text injection testing
What it does:
- Sets up Xvfb virtual display in CI
- Re-enables
real_injection.rstests - Allows headless X11 testing
Merge conflicts: Minimal (CI config only)
Branch: feat/ydotool-unit-tests
Value: HIGH - Comprehensive test coverage
What it does:
- 200+ lines of proper mock infrastructure
UINPUT_PATH_OVERRIDEenv var for testability- Isolated unit tests for ydotool injector
Branch: feat/add-injector-unit-tests
Value: MEDIUM-HIGH
What it does:
- Refactors enigo injector for dependency injection
MockEnigoimplementingKeyboardtrait- Comprehensive test coverage
Branch: feature/at-spi-focus-backend
Issue: #171
Value: HIGH - Real implementation
What it does:
- Replaces stub
SystemFocusAdapterwith real AT-SPI - Proper async implementation using atspi crate
- Critical for smart text injection
Action: Test on real system, merge separately
Branch: feat/add-code-coverage-job
Issue: #211
Value: MEDIUM
What it does:
- Adds
cargo-llvm-covCI job - Codecov upload integration
Action: Merge after other tests stabilize
Branch: harden-stt-model-loading
Issue: #46
Value: MEDIUM
What it does:
- SHA256 checksum validation for models
validation.rswithChecksumsstruct- Security hardening
Note: Issue #46 marked "will review after Candle Whisper" - may need update
| PR | Branch | Reason |
|---|---|---|
| #277 | feature/wayland-headless-wip |
WIP, author stuck on approach |
| #274 | feature/orchestrator-integration-tests |
Can't mock concrete types |
| #239 | feat/word-level-timestamps-research |
Research only, incomplete DTW |
| #236 | perf/async-stt |
Major architecture change, risky |
| #255 | feature/claudeZ-automated-debugging |
Never completed |
| #256 | feat/claudez-automated-debugging |
Duplicate, never completed |
| #258 | add-moonshine-stt |
Superseded by merged #259 |
| #261 | feat/moonshine-stt-plugin-tweaks |
Superseded by merged #278 |
| PR | Title | Why Closed | Salvageable |
|---|---|---|---|
| #298 | Dependabot rust deps | Superseded by #300 | No |
| #294 | PyO3 0.27 upgrade | Merged as part of PR #296 | No (already merged) |
| #242 | Candle Whisper STT | Broken implementation (empty mel_filters), superseded by Moonshine | No |
| #241 | Comprehensive docs | Docs for broken #242 | No |
| #225 | CI docs/fmt fix | 22 commits behind, fixes applied elsewhere | Maybe buffer prealloc |
| #216 | Compare PR 204-205 | Analysis-only, served purpose | No |
- Close PR #294 with comment "Superseded - merged as part of #296"
- Merge PR #295 (zbus fix)
- Close PR #262 with comment "Superseded by #282"
- Close stale Jules drafts: #277, #274, #255, #256, #258, #261
- Fix PR #282 CI failures
- Documentation validation (added YAML frontmatter to 3 docs)
- Build & test
- Text injection tests
- Merge PR #282
- Optionally incorporate valuable #262 deletions:
-
compat.rsremoval -
processor.rsremoval -
.tests_temp/cleanup
-
- Create branch from #300
- Fix CPAL 0.17.0 breaking changes:
- Update
SampleRateusage indevice.rs - Remove
.0field access indevice.rs,capture.rs - Replace
device.name()withdevice.description()(8 locations)
- Update
- Test audio device detection
- Merge updated PR #300
- Review and merge PR #276 (Xvfb CI) → PR #310 created
- Review and merge PR #273 (ydotool tests) → PR #311 created
- Review and merge PR #268 (enigo/kdotool tests) → PR #312 created
- Review PR #232 (AT-SPI focus) - test separately
✅ Already done - PR #294 was merged as part of PR #296
- Evaluate PR #234 (code coverage)
- Evaluate PR #240 (model checksums)
- Close remaining research PRs: #239, #236
Total PRs Analyzed: 50
| Category | Count | Notes |
|---|---|---|
| Open (non-draft) | 4 | #295, #300, #282, #262 |
| Open (draft) | 15 | Jules drafts |
| Merged | 22 | Includes #296, #297 |
| Closed (not merged) | 9 | Includes #294, #298 |
By Author:
| Author | Open | Draft | Merged |
|---|---|---|---|
| Coldaine | 3 | 0 | 16 |
| dependabot | 1 | 0 | 5 |
| google-labs-jules | 0 | 14 | 2 |
| copilot-swe-agent | 0 | 1 | 0 |
Lines of Code Impact (if all cleanup merged):
- Removed: ~7,747 lines (stub code, obsolete docs)
- Added: ~400 lines (tests, tooling)
- Net: -7,347 lines