Multi-source SDR routing, lifecycle, TX suite, and visualization - #47
Merged
Conversation
…SIBLE_USE) from the auth screen
- Fixing end frequency formatting
… it wanted) - [WIP] Further progress on multiple devices and transmit functionality
- Gemini fixed a memory leak in a test - Fixing all tests
- Bug fixes for File Playback
…by consolidating in signals.yaml AND signals.ts/redux - [WIP] Continuing Tx work, with src/rs/ifft - [WIP] Combatting against foldover (leaky spectrum) that I notice when tuning so Tx doesn't accidentally emit erronenous, non-existent signals
…hit in because of a contradiction! - Working out some bugs with logical frame rate - Working on fft power line, contrast of the select box on light mode
- Added a row in FFTCanvas displaying stats - Rolling in numbers on the DaysSince component - Added /3d-model-gallery with tons of new components/tinfra - Attempted to add realistic RF to the Mock APT SDR, but it's not working well
- Restoring fft marker lines - Turn on metal for Mock APT SDR via signals.yaml, removing metal flag
- Updating and consolidating 3D Models
- Longstanding fix to the lattice of the Sector tower! - Fixing hexagonal cell site/rotated by 30 deg
…the newer ctx.roundRect() method"
…; wasted all my GPT on that shit but Gemini quickly fixed it - [WIP] Continuing Tx work; only half-duplex mode right now, but working on multiple SDRs
- [WIP] Tx work continued, adding "Hop" and "Safety" for Tx, hopping and a safety for Tx so signals don't go too far - [WIP] Trying to fix drag and drop
- Refine spectrum, waterfall, FFT, demodulation, and source-sidebar behavior across live and file playback paths.\n- Add file playback helpers, placeholder state handling, transmitter/SDR scene components, fonts, and updated signal-learning visuals.\n- Improve NAPT classifier shaders, regression harnesses, and GPU fixture coverage.\n- Expand component and flow-model tests for authentication, capture controls, metadata, spike detection, transmitters, playback, and file selection.\n- Update Rust encryption fixtures for the CaptureResult metadata contract.\n- Refresh project guidance and ignore rules.
…mitters into SDRs
- Provide all N-APT shader exports required by the WebGPU hook test mock.\n- Keep the classifier readback contract assertion stable across formatter-driven line wrapping.\n- Verified the complete frontend Jest and shader suites plus TypeScript typecheck.
Integrate source-aware RX/TX lifecycle handling across the Rust websocket server and Redux middleware. Add TX suite source assignment, source routing state, visualization runtime/device pooling, and React Flow nodes for TX configuration. Update spectrum, waterfall, FFT, source presentation, capture, and authentication components to use the new source-aware behavior. Extend regression coverage for source routing, TX suite flows, WebGPU device pooling, sample-rate handling, middleware migration, and visualization runtime behavior.
Capture the Sources section in the multi-source overview state and the TX-source standby state for inclusion in pull request documentation.
Capture the Demod route with the multi-source TX Suite flow and the Find Spikes classifier diagnostics for PR documentation.
Replace the sidebar-only spike screenshot with the Demod route UI showing FFT spike markers, active overlay state, spike count, and classifier diagnostics.
Replace Array.prototype.at usage with target-compatible last-call indexing so the existing TypeScript compiler target can typecheck the FFTNode regression tests.
ceane
marked this pull request as ready for review
July 21, 2026 12:58
Owner
Author
|
Going to merge. It's stable enough. |
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.
Overview
This PR is a broad multi-source foundation pass for N-APT. Most of the work was spent moving the application from a single implicit SDR/device model toward explicit source ownership across the backend, websocket protocol, Redux state, React Flow UI, and visualization runtime.
The goal is to make multiple simultaneous or selectable sources stable throughout the application: each source has its own identity, capabilities, lifecycle, settings, status, errors, IQ stream ownership, and presentation metadata.
What changed
Multi-source backend and websocket lifecycle
Frontend state and Sources UI
Demod route and signal-analysis enhancements
Visualization runtime
Tests and validation
Screenshots
Sources overview
This view shows the source inventory with Mock APT SDR, Mock Tx SDR, and File Selection playback sources, including capability and connection state.
TX source standby view
This view shows the TX-capable source selected while the FFT display is in standby preview mode.
Demod route: Find Spikes
The Find Spikes flow exposes FFT scanning, spike-overlay controls, and classifier diagnostics for the signal-analysis enhancements.