Mark TODO-059 (auto-reconnect) and TODO-062 (DNS chain) as verified complete with evidence. Revise TODO-063 from implementation to verification task (tsclientlib handles encoding). Create protocol implementation traps doc with 13 traps from YaTQA/ReSpeak/TeaSpeak.
32 KiB
32 KiB
Master TODO List
Date: 2026-06-11
Branch: docs/codebase-analysis-v2
Sources:
docs/governance/codebase-analysis-2026-06-11.md— main codebase analysisdocs/governance/issue-history-analysis.md— git history patterns and root causesdocs/verification/test-environment-requirements.md— test environment setup needsdocs/references/external-research-2026-06-11.md— external research findings
Summary
| Category | P0 | P1 | P2 | P3 | Total |
|---|---|---|---|---|---|
| Dead Code Removal | 0 | 0 | 0 | 5 | 5 |
| Code Quality | 2 | 2 | 3 | 2 | 9 |
| Test Coverage | 2 | 3 | 2 | 0 | 7 |
| Architecture | 0 | 2 | 2 | 1 | 5 |
| Documentation | 3 | 2 | 3 | 2 | 10 |
| Missing APIs / Requirements | 0 | 2 | 7 | 2 | 11 |
| Infrastructure | 0 | 3 | 5 | 1 | 9 |
| External Research Follow-up | 0 | 1 | 2 | 2 | 5 |
| Protocol Implementation | 0 | 2 | 8 | 3 | 13 |
| Reference Document Improvements | 0 | 0 | 9 | 1 | 10 |
| Additional Traceability Gaps | 0 | 0 | 3 | 1 | 4 |
| Total | 7 | 17 | 44 | 20 | 88 |
1. Dead Code Removal
TODO-001 — Remove dead AudioFrame structs
- Priority: P3
- Source: codebase-analysis §5
- Description:
AudioFrame10msandAudioFrame20msstructs andAudioFrame10ms::dbfs()are never referenced outside tests. Safe to delete. - Effort: S
- Dependencies: None
TODO-002 — Remove dead disable_failed_vad_backend()
- Priority: P3
- Source: codebase-analysis §5
- Description: Function only called in tests. Remove from production code.
- Effort: S
- Dependencies: None
TODO-003 — Remove unused share_plus import
- Priority: P3
- Source: codebase-analysis §5
- Description:
import 'package:share_plus/share_plus.dart'in main.dart:55 —Shareclass never used. - Effort: S
- Dependencies: None
TODO-004 — Audit and remove likely-dead functions (16 across 5 crates)
- Priority: P3
- Source: codebase-analysis §2, §5
- Description: 16 functions have no production callers. From §5: 11 AudioEngine/TransmitModeSelector/ReleaseTailTimer methods (output_muted, output_gain, capture_active, transmit_gate, set_transmit_active, android_diagnostics, gate, in_channel, ptt_held, cancel, arm) +
AudioEngine::frames_sent()andAudioEngine::frames_received(). From §2:ChanoraSession::protocol_events_snapshot()(chanora_core),ServerState::replace_from_snapshot()/channel_count()/client_count()(chanora_state),BookmarkStore::upsert_or_add()(chanora_storage),normalize_args()/validate_args()(chanora_resolver),HpfProcessor::process_sample()(chanora_audio),CoreMlWorker::reset_state()(chanora_audio),PttCapabilityLevel::is_global()(chanora_audio),handle_media_services_reset_with_route()/handle_interruption_began()(chanora_bridge). Confirm with call-graph then remove or wire. - Effort: M
- Dependencies: None
TODO-005 — Decide fate of #[allow(dead_code)] items
- Priority: P3
- Source: codebase-analysis §5
- Description:
AudioCommand::RemoveClienthas TODO to wire to client disconnect path. Three Android-only modules are conditionally dead. Decide: wire, remove, or keep annotated. - Effort: M
- Dependencies: None
2. Code Quality
TODO-006 — Replace ~39 Mutex::lock().unwrap() calls in engine.rs
- Priority: P0
- Source: codebase-analysis §6, issue-history §1 (realtime thread safety)
- Description: Production
unwrap()on Mutex locks will panic on poisoned mutex. Replace withtry_lock()+ silence fallback orparking_lot::Mutex. - Effort: L
- Dependencies: None
TODO-007 — Audit 8 unsafe impl Send/Sync blocks
- Priority: P0
- Source: codebase-analysis §6
- Description: 8 unsafe Send/Sync impls across various files. Each needs safety proof comment and review.
- Effort: M
- Dependencies: None
TODO-008 — Resolve 14 TODO/FIXME/HACK entries in codebase
- Priority: P1
- Source: codebase-analysis §6
- Description: 14 occurrences across engine.rs, mobile_voice_backend.rs, audio_event_queue.rs, audio_lifecycle_service.dart, poke_notification_service.dart. Address or convert to tracked issues.
- Effort: L
- Dependencies: None
TODO-009 — Audit 23 unimplemented!("") in frb_generated.rs
- Priority: P1
- Source: codebase-analysis §6
- Description: Flutter-Rust Bridge generated stubs contain 23
unimplemented!("")calls that will panic at runtime if hit. Audit and implement or guard each one. - Effort: M
- Dependencies: None
TODO-010 — Fix pick_client_version() hardcoded to Windows
- Priority: P2
- Source: codebase-analysis §11
- Description:
adapter.rs:141returns Windows client version for ALL platforms. Must return platform-appropriate version strings. - Effort: S
- Dependencies: None
TODO-011 — Fix Android stubs returning None/Ok(None)
- Priority: P2
- Source: codebase-analysis §11
- Description:
log_file_path()on Android returnsNone(api.rs:350-356),keyring_load()on Android returnsOk(None)always. These silently hide functionality gaps. - Effort: S
- Dependencies: None
TODO-012 — Deduplicate AudioProcessingConfig construction (4x)
- Priority: P2
- Source: codebase-analysis §7
- Description: AudioProcessingConfig is constructed identically in 4 places in Dart. Extract to factory or shared config.
- Effort: S
- Dependencies: None
TODO-013 — Deduplicate audio processing toggle UI
- Priority: P3
- Source: codebase-analysis §7
- Description: Audio processing toggle UI duplicated across 2 Dart files (~150 lines). Extract shared widget.
- Effort: S
- Dependencies: None
TODO-014 — Deduplicate low-priority code patterns (7 patterns)
- Priority: P3
- Source: codebase-analysis §7
- Description: PttCapability event construction (1 Rust, ~15 lines), DnsFailed/ServerRejected error mirroring (2 Rust, ~20 lines), host normalization (3 Rust files), create_dir_all (2 Rust files), Io(String) variant (3 crates), StateEvent/Delta mirror (1 Rust file), platform detection scatter (6 Dart, ~35 checks).
- Effort: M
- Dependencies: None
3. Test Coverage
TODO-015 — Add chanora_bridge tests (0/5 modules tested)
- Priority: P0
- Source: codebase-analysis §3
- Description: The Flutter-Rust FFI boundary has zero tests. This is the highest-risk untested area. Need unit tests for all 5 bridge modules.
- Effort: XL
- Dependencies: None
TODO-016 — Add poisoned-mutex survival test for audio callbacks
- Priority: P0
- Source: issue-history §3
- Description: Verify
try_lock()fallback produces silence rather than panic when mutex is poisoned. Directly tests the fix for TODO-006. - Effort: M
- Dependencies: TODO-006
TODO-017 — Add Flutter widget tests for untested core UI
- Priority: P1
- Source: codebase-analysis §3
- Description:
voice_bar,voice_settings,connect_widgetsmodules have no tests. These are core UI components at 56% widget coverage. - Effort: L
- Dependencies: None
TODO-018 — Add chanora_protocol dto module tests
- Priority: P1
- Source: codebase-analysis §3
- Description: Protocol dto module is untested. Serialization bugs here cause silent protocol failures.
- Effort: M
- Dependencies: None
TODO-019 — Add chanora_core events module tests
- Priority: P1
- Source: codebase-analysis §3
- Description: Events module is untested (80% coverage overall, but events gap). Event system is central to app behavior.
- Effort: M
- Dependencies: None
TODO-020 — Add iOS audio session lifecycle integration tests
- Priority: P2
- Source: issue-history §3
- Description: Test session transitions (ambient → playAndRecord → ambient), already-in-channel response handling, idle audio mode. 15+ historical issues justify this.
- Effort: L
- Dependencies: TODO-030 (device test infrastructure)
TODO-021 — Add protocol error surfacing tests
- Priority: P2
- Source: issue-history §3
- Description: Verify server errors are forwarded as UI events, not silently swallowed. Fire-and-forget hides failures.
- Effort: M
- Dependencies: None
4. Architecture
TODO-022 — Split engine.rs (3,244 lines) into smaller modules
- Priority: P1
- Source: codebase-analysis §6, §12
- Description: Monolithic audio engine file. Split into engine core, capture, render, transmit, diagnostics modules.
- Effort: L
- Dependencies: None
TODO-023 — Split main.dart (2,910 lines) into smaller modules
- Priority: P1
- Source: codebase-analysis §6
- Description: Monolithic Flutter entry point. Extract into feature-based modules/screens.
- Effort: L
- Dependencies: None
TODO-024 — Extract platform backends from chanora_audio into separate crates
- Priority: P2
- Source: codebase-analysis §12
- Description: Split into
chanora_audio(core ~8K lines),chanora_audio_android(~3.2K),chanora_audio_apple(~1.4K),chanora_audio_desktop(~3.5K). Platform backends are already cfg-gated. - Effort: XL
- Dependencies: TODO-022 (split engine.rs first)
TODO-025 — Reduce .map_err(format!) boilerplate across 5 Rust crates
- Priority: P2
- Source: codebase-analysis §7
- Description: ~85 repeated closure patterns. Introduce a
WrapErrtrait or macro to reduce boilerplate. - Effort: L
- Dependencies: None
TODO-026 — Reduce adapter.rs (2,504 lines) and api.rs (2,432 lines)
- Priority: P3
- Source: codebase-analysis §6
- Description: Both files exceed 2,400 lines. Consider splitting by feature area.
- Effort: L
- Dependencies: TODO-022, TODO-023
5. Documentation
TODO-027 — Update implementation-status document
- Priority: P0
- Source: codebase-analysis §13
- Description:
docs/implementation-status-2026-05-28.mdis 14 days stale, missing v0.3.0 features. This is the primary evidence source for verification. - Effort: M
- Dependencies: None
TODO-028 — Allocate SysRS-258–310 in SysDes
- Priority: P0
- Source: codebase-analysis §13
- Description: 53 SysRS requirements lack SysDes allocation, breaking the traceability chain from requirements to design.
- Effort: L
- Dependencies: None
TODO-029 — Fix traceability matrix SRS numbering mismatches
- Priority: P0
- Source: codebase-analysis §13
- Description: SRS IDs in traceability matrix don't match actual SRS document. Needs manual reconciliation.
- Effort: M
- Dependencies: None
TODO-030 — Add README files to 8 crates + core
- Priority: P1
- Source: codebase-analysis §4
- Description: Only
chanora_resolverhas a README. The other 9 directories need one describing purpose, architecture, and public API. - Effort: M
- Dependencies: None
TODO-031 — Improve chanora_audio doc comments (24% → 80%)
- Priority: P2
- Source: codebase-analysis §4
- Description: Largest crate (168 pub fn, 18,895 lines) at only 24% documentation. Target 80% coverage.
- Effort: XL
- Dependencies: None
TODO-032 — Fix 6 broken doc links (create LICENSE files)
- Priority: P3
- Source: codebase-analysis §8
- Description: All 6 broken links point to missing
LICENSE-APACHEandLICENSE-MITfiles at project root. LICENSE files have been created — verify links resolve. - Effort: S
- Dependencies: None
TODO-033 — Link 14 orphaned documentation files
- Priority: P3
- Source: codebase-analysis §8
- Description: 14 files in
docs/superpowers/plans/anddocs/superpowers/specs/are not linked from any index document. - Effort: S
- Dependencies: None
TODO-034 — Update SDD (docs/architecture/sdd.md)
- Priority: P2
- Source: codebase-analysis §13
- Description: Software Design Description scored 5/10 freshness. Missing many modules added since initial write.
- Effort: L
- Dependencies: None
TODO-035 — Update SAD (docs/architecture/sad.md)
- Priority: P2
- Source: codebase-analysis §13
- Description: Software Architecture Description scored 5/10 freshness. Missing components and interfaces.
- Effort: L
- Dependencies: None
TODO-036 — Update Verification Master Plan
- Priority: P1
- Source: codebase-analysis §13
- Description: Verification Master Plan scored 6/10, stale evidence sources and missing verification methods.
- Effort: M
- Dependencies: None
6. Missing APIs / Requirements
TODO-037 — Add missing bridge read-back functions
- Priority: P1
- Source: codebase-analysis §11
- Description:
is_hard_muted(),get_output_gain(),get_client_volume(),connection_state(),reconnect()are missing from bridge. UI must derive state from events only. - Effort: M
- Dependencies: None
TODO-038 — Write requirements for implemented features
- Priority: P1
- Source: codebase-analysis §13
- Description: Poke, file transfer, hard-mute, and cache features exist in code but have no SysRS/SRS requirements. Breaks traceability.
- Effort: L
- Dependencies: None
TODO-039 — Implement UI settings persistence (SysRS-143, SRS-087)
- Priority: P2
- Source: codebase-analysis §11
- Description: Settings persistence is a documented requirement with no implementation.
- Effort: M
- Dependencies: None
TODO-040 — Implement per-user mute/volume persistence (SysRS-145/144, SRS-088)
- Priority: P2
- Source: codebase-analysis §11
- Description: Per-user mute and volume persistence requirements are partially implemented. Needs completion.
- Effort: M
- Dependencies: None
TODO-041 — Implement notification permission handling (SysRS-166, SRS-109)
- Priority: P2
- Source: codebase-analysis §11
- Description: Notification permission requirement has no implementation.
- Effort: M
- Dependencies: None
TODO-042 — Complete recent server management (SysRS-141, SRS-085)
- Priority: P2
- Source: codebase-analysis §11
- Description: Recent server management is partially implemented. Needs completion per spec.
- Effort: M
- Dependencies: None
TODO-043 — Implement event replay tool (SysRS-171, SRS-098)
- Priority: P2
- Source: codebase-analysis §11
- Description: Event replay tool is a documented requirement with no implementation.
- Effort: L
- Dependencies: None
TODO-044 — Implement audio processing test tool (SysRS-074, SRS-083)
- Priority: P2
- Source: codebase-analysis §11
- Description: Audio processing test tool is a documented requirement with no implementation.
- Effort: L
- Dependencies: None
TODO-045 — Complete input validation (SysRS-157, SRS-094)
- Priority: P2
- Source: codebase-analysis §11
- Description: Input validation is partially implemented. Needs completion per spec.
- Effort: M
- Dependencies: None
TODO-046 — Implement audio loopback test tool (SysRS-073, SRS-083)
- Priority: P3
- Source: codebase-analysis §11
- Description: Audio loopback test tool is a documented requirement with no implementation.
- Effort: L
- Dependencies: TODO-054 (audio loopback harness)
TODO-047 — Implement protocol probe tool (SysRS-128, SRS-123)
- Priority: P3
- Source: codebase-analysis §11
- Description: Protocol probe tool is a documented requirement with no implementation.
- Effort: L
- Dependencies: None
7. Infrastructure
TODO-048 — Add Android CI build job
- Priority: P1
- Source: test-environment-requirements §9 Phase 1
- Description: No Android CI build exists. Add NDK + cargo-ndk + multi-ABI build to GitHub Actions.
- Effort: M
- Dependencies: None
TODO-049 — Add Windows and macOS CI build jobs
- Priority: P1
- Source: test-environment-requirements §9 Phase 1
- Description: Windows and macOS builds are not in CI. Add windows-latest and macOS runners for build verification.
- Effort: M
- Dependencies: None
TODO-050 — Add xcodebuild Archive verification to CI
- Priority: P1
- Source: issue-history §1
- Description: 4+ historical issues caused by
flutter buildpassing butxcodebuild archivefailing. Add xcodebuild archive step to CI. - Effort: M
- Dependencies: None
TODO-051 — Enable clippy as blocking CI check
- Priority: P2
- Source: test-environment-requirements §9 Phase 1
- Description: Clippy is currently advisory only. Make it a blocking PR gate.
- Effort: S
- Dependencies: None
TODO-052 — Add Linux multi-distro build matrix
- Priority: P2
- Source: test-environment-requirements §9 Phase 1
- Description: Add Docker-based CI matrix for Ubuntu, Fedora, Arch to catch distro-specific PipeWire/Portal/DBus issues.
- Effort: M
- Dependencies: None
TODO-053 — Add cargo llvm-cov coverage reporting
- Priority: P2
- Source: test-environment-requirements §9 Phase 1
- Description: No code coverage reporting exists. Add
cargo llvm-covto CI for trend tracking. - Effort: M
- Dependencies: None
TODO-054 — Implement audio loopback test harness
- Priority: P2
- Source: test-environment-requirements §9 Phase 2
- Description: Build virtual audio device loopback for CI audio quality testing. Use BlackHole (macOS), VB-Audio (Windows), snd-aloop (Linux).
- Effort: L
- Dependencies: TODO-048, TODO-049
TODO-055 — Implement test environment Phase 2 (device integration)
- Priority: P2
- Source: test-environment-requirements §9 Phase 2
- Description: Set up self-hosted runners for device tests, Flutter integration tests with platform channels, Firebase Test Lab for Android, network condition test suite.
- Effort: XL
- Dependencies: TODO-048, TODO-049
TODO-056 — Implement test environment Phase 3 (full automation)
- Priority: P3
- Source: test-environment-requirements §9 Phase 3
- Description: Benchmark regression gates, iOS TestFlight automation, signed build automation, weekly audio quality regression, Android multi-device testing.
- Effort: XL
- Dependencies: TODO-055
8. External Research Follow-up
TODO-057 — Upstream p256 coordinate padding fix to ReSpeak
- Priority: P1
- Source: external-research §2 (ReSpeak)
- Description: Chanora forks
tsclientlibfor a p256 fix. Submit PR upstream to reduce fork maintenance burden. - Effort: M
- Dependencies: None
TODO-058 — Monitor tsdeclarations for TS5 protocol updates
- Priority: P2
- Source: external-research §2 (ReSpeak)
- Description: No full TS5 client protocol exists yet. Watch
tsdeclarationsrepo for updates that may affect Chanora compatibility. - Effort: S
- Dependencies: None (ongoing)
TODO-059 — Build auto-reconnect logic internally
- Priority: P2
- Source: external-research §2 (ReSpeak)
- Description: tsclientlib explicitly notes auto-reconnect is "not yet there." Chanora must build this independently.
- Evidence:
core/chanora_core/src/lib.rs:1722-2123— Supervisor with:- Exponential backoff:
BACKOFF_SCHEDULE = [1, 2, 5, 15, 30, 60]seconds - Watchdog: 5s interval, 4s probe timeout, 3 max misses
- Network state awareness: pre-charges watchdog on offline, resets on online
- Audio re-attachment via
sup_innerafter successful reconnect - Cancellation via
cancel_rxoneshot on user disconnect - Broadcasts
SessionEvent::Reconnecting { attempt, delay_secs }to UI - No max attempt limit (indefinite retry — correct for voice client)
- Cross-verified against ReSpeak §1.10 (exponential backoff for packet timeouts)
- Exponential backoff:
- Evidence:
- Effort: L
- Dependencies: None
- Status: VERIFIED COMPLETE — supervisor with exponential backoff, watchdog, network awareness (2026-06-11)
TODO-060 — Extract server error codes from YaTQA for error handling
- Priority: P3
- Source: external-research §3 (YaTQA)
- Description: YaTQA's
/ressourcen/section has comprehensive unofficial server error codes. Extract for Chanora error handling reference. - Effort: S
- Dependencies: None
TODO-061 — Extract anti-flood/rate-limiting reference from YaTQA
- Priority: P3
- Source: external-research §3 (YaTQA)
- Description: YaTQA documents anti-flood mechanics and rate limiting. Use as reference when implementing Chanora's rate limiting.
- Effort: S
- Dependencies: None
9. Protocol Implementation (from Reference Documents)
TODO-062 — Implement DNS resolution chain (SRV→TSDNS→DNS)
- Priority: P1
- Source: yatqa-offline-reference §8.5
- Description: YaTQA documents the full DNS resolution order: SRV
_ts3._udp→ SRV TSDNS → TSDNS TCP port 41144 → DNS AAAA/A. First successful resolution wins, NO fallback on connection failure. Critical for connection reliability.- Evidence:
crates/chanora_resolver/src/lib.rs:178-387— Full chain implemented:- Direct DNS resolution (
resolve_dns, line 594) - TSDNS SRV resolution (
resolve_tsdns_srv_candidates, line 414) - TSDNS TCP resolution (
resolve_tsdns_tcp_candidates, line 454) - First-wins semantics with
return Ok(resolution)on first success - No fallback on failure (errors accumulate, bail at end)
- Cross-verified against YaTQA §8.5 resolution order
- Direct DNS resolution (
- Evidence:
- Effort: M
- Dependencies: None
- Status: VERIFIED COMPLETE — full resolution chain implemented (2026-06-11)
TODO-063 — Verify tsclientlib encoding handling (UTF-8 vs UCS-2 vs CESU-8)
- Priority: P1
- Source: yatqa-offline-reference §1.3
- Description: TS claims UTF-8 but uses UCS-2 (BMP only). Mobile apps use CESU-8. Server 3.2.0+ adds partial emoji support. tsclientlib/tsproto delivers Rust
String(UTF-8) viastr::from_utf8()at the protocol layer (ReSpeak §1.8.3 confirms: "Command string encoded in UTF-8"). If encoding bugs exist, the fix belongs in the EdisonJwa/tsclientlib fork, not in chanora_protocol. - Verification: Confirm tsclientlib handles UCS-2 correctly. Document encoding behavior in protocol-implementation-traps.md (TODO-070).
- Effort: S (verification + documentation)
- Status: Scope revised from implementation to verification (2026-06-11)
- Dependencies: TODO-070 (protocol traps doc)
TODO-064 — Implement client-side anti-flood point awareness
- Priority: P2
- Source: yatqa-offline-reference §5
- Description: YaTQA documents complete point costs per action (channelsubscribe=158pts, connect=80pts, etc.). Design Chanora's client-side anti-flood awareness to avoid accidental server bans. Tick-based point reduction model.
- Effort: M
- Dependencies: None
TODO-065 — Implement badge fetching and display
- Priority: P2
- Source: yatqa-offline-reference §8.9, respeak-protocol-reference §5
- Description: Badges fetched from
badges-content.teamspeak.comin Protobuf format, cached locally, refreshed every 24h. Chanora needs badge Protobuf parsing, caching, and UI display. - Effort: L
- Dependencies: None
TODO-066 — Implement TSDNS protocol support
- Priority: P2
- Source: yatqa-offline-reference §8.4
- Description: TSDNS protocol: TCP port 41144, lowercase domain + magic bytes. Required for
ts3server://URL resolution and server bookmark handling. - Effort: M
- Dependencies: TODO-062
TODO-067 — Implement TS3 file transfer protocol
- Priority: P2
- Source: yatqa-offline-reference §8.3, external-research §2 (ReSpeak gap)
- Description: Raw file transfer: send key from
ftinitupload/ftinitdownloadto server IP:port, then raw data. No escaping. ReSpeak has no file transfer implementation — Chanora must build this independently. - Effort: L
- Dependencies: None
TODO-068 — Evaluate tsdeclarations machine-readable files for code generation
- Priority: P2
- Source: respeak-protocol-reference §9
- Description: Messages.toml, Book.toml, Enums.toml, MessagesToBook.toml, BookToMessages.toml could automate protocol struct and event generation. Evaluate feasibility for Chanora's build pipeline.
- Effort: M
- Dependencies: None
TODO-069 — Extract Permission IDs into Chanora's permission system
- Priority: P2
- Source: respeak-protocol-reference §3, yatqa-offline-reference §1.2
- Description: Both ReSpeak (tsdeclarations) and YaTQA provide comprehensive permission ID lists with Skip/Negate/Grant logic. Map these to Chanora's permission implementation for full TS3 compatibility.
- Effort: L
- Dependencies: None
TODO-070 — Document protocol implementation traps
- Priority: P2
- Source: yatqa-offline-reference §1.4, §1.5, §3.1
- Description: Several implementation traps documented in YaTQA: icon IDs signed/unsigned mismatch, avatar flag is MD5 hash not boolean, channel subscription limited to ONE at a time, line terminator is
0x0A 0x0D(reversed Windows). Compile into Chanora developer notes. - Effort: S
- Dependencies: None
TODO-071 — Handle IPv6 blacklist canonicalization bug
- Priority: P3
- Source: yatqa-offline-reference §8.7
- Description: TS3 server 3.1.6-3.1.7 has IPv6 canonicalization bug in Blacklist2 protocol. Chanora should be aware when connecting to older servers.
- Effort: S
- Dependencies: None
TODO-072 — Establish connection/message performance benchmarks
- Priority: P3
- Source: respeak-protocol-reference §10
- Description: tsclientlib benchmarks: ~199ms connect, ~189µs/message. Use as baseline for Chanora's performance testing.
- Effort: S
- Dependencies: None
TODO-073 — Assess web client feasibility
- Priority: P3
- Source: teaspeak-offline-reference §10, external-research §1
- Description: TeaSpeak's web client was a compelling installation-less option. Evaluate whether a future Chanora web client makes sense. Not current scope.
- Effort: S
- Dependencies: None
10. Reference Document Improvements
TODO-074 — Fix respeak reference: malformed badge table row
- Priority: P2
- Source: respeak-protocol-reference review (line 1309)
- Description: MIFCOM badge row has 6 columns (5 pipes) but table header has 5 columns. "Entered Performance" is a misplaced column. Fix table formatting.
- Effort: S
- Dependencies: None
TODO-075 — Fix respeak reference: section numbering placeholder
- Priority: P2
- Source: respeak-protocol-reference review (line 764)
- Description: Section "4.? Differences between Query and Full Client" has a
?placeholder. Assign correct section number (4.9 or similar). - Effort: S
- Dependencies: None
TODO-076 — Fix respeak reference: duplicate section numbering
- Priority: P2
- Source: respeak-protocol-reference review
- Description: Both the protocol spec section and reference data sections start at
# 2., making "Section 2" ambiguous. Separate into Part I (Protocol) and Part II (Reference Data) or renumber. - Effort: S
- Dependencies: None
TODO-077 — Resolve teaspeak reference: godmode permission contradiction
- Priority: P2
- Source: teaspeak-offline-reference review (lines 401 vs 414)
- Description:
b_virtualserver_select_godmodelisted as active permission in "Other Permissions" table (line 401) AND as "removed" in "Removed Permissions" table (line 414). Resolve: remove from one location or clarify version-based behavior. - Effort: S
- Dependencies: None
TODO-078 — Resolve teaspeak reference: music bot command contradiction
- Priority: P2
- Source: teaspeak-offline-reference review (lines 499 vs 1229)
- Description: Music bot queue commands (
musicbotqueuelist,musicbotqueueadd, etc.) listed in active Music Bot Query Commands table (lines 499-501) AND in "Removed Commands" section (lines 1229-1236). Clarify which version removed them. - Effort: S
- Dependencies: None
TODO-079 — Add Chanora relevance section to teaspeak reference
- Priority: P2
- Source: teaspeak-offline-reference review
- Description: TeaSpeak reference has no section connecting features to Chanora's needs. Add "Relevance to Chanora" section mapping TeaSpeak features to Chanora SRS requirements and identifying protocol divergence points.
- Effort: M
- Dependencies: None
TODO-080 — Backfill YaTQA reference: complete variable parameters tables
- Priority: P2
- Source: yatqa-offline-reference review
- Description: Variable parameters section severely condensed: ~15 of 50+ client vars, ~15 of 35+ channel vars, ~7 of 70+ server vars. Backfill from
yat.qa/ressourcen/variablen-parameter/. - Effort: L
- Dependencies: None
TODO-081 — Backfill YaTQA reference: complete anti-flood action table
- Priority: P2
- Source: yatqa-offline-reference review
- Description: Anti-flood section reduced ~80 individual actions to summary tiers. Replace with complete itemized table from
yat.qa/ressourcen/voice-client-anti-flood/. - Effort: M
- Dependencies: None
TODO-082 — Backfill YaTQA reference: missing error codes and truncated messages
- Priority: P2
- Source: yatqa-offline-reference review
- Description: ~28 error codes missing, several messages truncated (errors 1030, 1035, 522). Add missing codes and fix truncated messages.
- Effort: S
- Dependencies: None
TODO-083 — Backfill YaTQA reference: expand ServerQuery notify events
- Priority: P2
- Source: yatqa-offline-reference review
- Description: Missing events:
notifychanneldescriptionchanged,notifychannelpasswordchanged. Most events listed by name only with no field details. Expand with full field lists and behavioral notes. - Effort: M
- Dependencies: None
TODO-084 — Cross-reference YaTQA and ReSpeak error codes
- Priority: P3
- Source: yatqa-offline-reference review, respeak-protocol-reference review
- Description: YaTQA §9 and ReSpeak Errors.csv may have discrepancies. Cross-reference and note differences.
- Effort: S
- Dependencies: None
11. Additional Traceability Gaps
TODO-085 — Add Flutter app documentation
- Priority: P2
- Source: codebase-analysis §4
- Description: Flutter app has <1% documentation coverage (~586 functions, ~5 documented). Add dart doc comments to core services and widgets.
- Effort: XL
- Dependencies: None
TODO-086 — Add chanora_bridge doc comments (15% coverage)
- Priority: P2
- Source: codebase-analysis §4
- Description: chanora_bridge has 65 pub fn at 15% documentation. This is the FFI boundary — every function should be documented.
- Effort: L
- Dependencies: None
TODO-087 — Track Flutter framework upstream bugs and workarounds
- Priority: P2
- Source: codebase-analysis §9, issue-history §1
- Description: 3+ historical issues required Flutter framework workarounds. Create tracking document for upstream Flutter bugs that affect Chanora and document current workarounds.
- Effort: S
- Dependencies: None
TODO-088 — Improve branch management workflow
- Priority: P3
- Source: codebase-analysis §10, issue-history §2
- Description: PR stacking complexity and local CI mirroring noted as development pain points. Evaluate git-worktree or branch management tooling.
- Effort: M
- Dependencies: None
Generated from codebase analysis on 2026-06-11. 88 items across 11 categories.