Fix multisource and demod lifecycle issues - #59
Draft
ceane wants to merge 85 commits into
Draft
Conversation
- Fixing issue where pause was advancing by a frame or when reloading hitting pause didn't work
…top of continuing fixes
Unify spectrum state ownership, source lifecycle handling, and whole-channel controls across the frontend and backend. Replace the Mock Tx generators with reusable complex-baseband synthesis, preserve signal shape and bandwidth contracts, normalize power consistently across frontend FFT and Tx IFFT sizes, and cover OFDM variance and integrated large-block power. Harden SDR hotplug, source swapping, HackRF TX plumbing, and non-blocking RTL-SDR reader cleanup. Refresh integration, unit, build, and GPU-path tests to match the new ownership and streaming behavior. Validation: cargo test --workspace --all-targets; rustfmt --check on the modified complex-baseband Rust modules.
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Device switches and transport warm-up were able to flash Server Down after a prior live session. Gate unavailable presentation on true post-session control loss only. Co-authored-by: Cursor <cursoragent@cursor.com>
Brief socket closes during reconnect were clearing sources and active ids, which thrashed placeholders and forced source reselection. Co-authored-by: Cursor <cursoragent@cursor.com>
Adds a /settings route with a scroll-spy sidebar covering theme, SDR, login, I/Q capture, and snapshot defaults, plus a new /faq landing page and reusable link-card components for page footers. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
Replaces the FAQ layout's local logo img and back link with the shared Logo and AppBackButton components, drops the redundant "N-APT FAQ" title, and adds a Lingo and Learn link to the FAQ home. Adds hideHeader support to ThemeSection for embedding in the settings page. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
Supports externally controlled open state, a section id for sidebar scroll targets, and an embedded header-free rendering mode. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
Adds lazy routes for /settings, /get-started, and a /faq landing page replacing the old redirect. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
- add source-owned multiplexed streaming, presentation control, and TX standby handling\n- expand Rust websocket/source lifecycle, SDR recovery, TX monitor, and stream manager behavior\n- reorganize frontend shell, routes, sidebar layouts, Learn Signals, FAQ content, and visualization flows\n- update Redux/WebSocket contracts, frame processing, frequency controls, WebGPU waterfall behavior, and capture policy\n- add focused frontend, integration, Rust, shader, rebuild-status, and streaming regression coverage\n- move Rust hot-reload helpers and document testing conventions and design decisions\n\nValidation: TypeScript typecheck passed; focused Rust and frontend checks were run. Existing full-suite failures and environment-blocked localhost tests remain documented in the task history.
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
Record the no-logging constraints for USB and SDR I/O paths, including reader callbacks, cleanup, and transmission monitoring. Expand the project taste guidance with end-to-end transport debugging and source-preserving resume expectations so future changes validate the subscription and presentation layers as well as backend production.
Introduce the Preferences and Extras route with legacy redirects, explicit logout handling, and shared navigation cards. Rework the authenticated shell, onboarding pages, settings section metadata, source-inventory boundary, and agent capability declarations around the updated route contract, with regression coverage for auth, navigation, logout, and settings scrolling.
Keep mirrored negative-frequency ranges aligned with the shared baseband contract, update the live sample-rate and overlay paths, and preserve source-owned frames across RX, Tx preview, pause, and resume transitions. Harden Redux transport ownership and normalize cleared operational errors, while making the live integration harness deterministic on hosts with attached SDR hardware. Expand coverage for canvas rendering, source lifecycle, transport migration, overlays, tuning, and frame presentation.
Remove logger work from physical device I/O, reader callbacks, teardown, and Tx monitor hot paths so USB operations remain bounded and recoverable. Preserve backend errors through shared state, strengthen stream-manager lifecycle and acquisition ownership, and keep hotplug fallback/reconnect behavior explicit with expanded manual-path coverage.
Add the FFT/IFFT walkthrough math and graphic, capture-stitching guide, and the supporting 3D projection and antenna controls. Integrate the explainers into the learn and spectrum surfaces, add the WebUSB experiment route, and refine diagnostics, settings, frame-rate controls, signal synchronization, and article metadata. Add article channel-frequency synchronization with a pre-commit hook and regression coverage for the new UI and generated article contracts.
Apply the protocol ceiling consistently to frameRate and maxFrameRate inputs, cap the logical frame-rate constant at 100, and update derived settings expectations. Add websocket validation coverage for accepted and rejected boundary values.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validation
Notes