Browser-based ground station suite for celestial body, mission and satellite tracking, SDR reception, hardware control, and telemetry decoding
This report summarizes scanner evidence for sgoudelis/ground-station, a JavaScript project with 4,832 GitHub stars. SynthScan examined 337,201 lines of code across 1031 source files, recording 3699 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 15.4 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 2164 finding(s).
Are imports declared and package/API names verified? 143 finding(s).
Are wrappers, guards, and repeated structures necessary? 2833 finding(s).
Which changes need focused human review? 3699 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3699 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/main.jsx | 59 | function LegacySatellitePathRedirect() { | CODE |
| LOW | frontend/src/utils/elevation-curve-calculator.js | 197 | export function calculateElevationCurvesForPasses(passes, homeLocation, satelliteLookup) { | CODE |
| LOW | frontend/src/utils/doppler-calculator.js | 157 | export function calculateNeighboringTransmitters( | CODE |
| LOW | frontend/src/utils/doppler-calculator.js | 232 | export function groupNeighboringTransmitters(neighboringTransmitters, frequencyThresholdHz = 50000) { | CODE |
| LOW | frontend/src/components/settings/settings.jsx | 60 | export function SettingsTabOrbitalSources() { | CODE |
| LOW | frontend/src/components/settings/settings.jsx | 66 | export function SettingsTabSatelliteGroups() { | CODE |
| LOW⚡ | frontend/src/components/settings/settings.jsx | 131 | export function AdminSatellitesSourcesPage() { | CODE |
| LOW⚡ | frontend/src/components/settings/settings.jsx | 139 | export function AdminSatellitesOrbitalDataPage() { | CODE |
| LOW⚡ | frontend/src/components/settings/settings.jsx | 149 | export function AdminSatellitesCatalogPage() { | CODE |
| LOW⚡ | frontend/src/components/settings/settings.jsx | 157 | export function AdminSatellitesGroupsPage() { | CODE |
| LOW⚡ | frontend/src/components/settings/settings.jsx | 165 | export function AdminCelestialEphemerisPage() { | CODE |
| LOW⚡ | frontend/src/components/settings/settings.jsx | 173 | export function AdminCelestialCatalogPage() { | CODE |
| LOW | frontend/src/components/settings/settings.jsx | 197 | export function AdminSystemPreferencesPage() { | CODE |
| LOW | frontend/src/components/settings/settings.jsx | 229 | export function AdminSystemMaintenancePage() { | CODE |
| LOW | frontend/src/components/settings/settings.jsx | 266 | const AdminSatellitesPageLayout = React.memo(function AdminSatellitesPageLayout({ activeTab, children }) { | CODE |
| LOW | frontend/src/components/settings/settings.jsx | 679 | const SettingsAndPreferencesForm = React.memo(function SettingsAndPreferencesForm({ initialSubTab }) { | CODE |
| LOW | frontend/src/components/auth/screens.jsx | 167 | function LoginTransportSecurityIndicator({ isHttps, onOpenGuidance }) { | CODE |
| LOW | …ontend/src/components/waterfall/settings-recording.jsx | 431 | function areRecordingAccordionPropsEqual(prevProps, nextProps) { | CODE |
| LOW | frontend/src/components/waterfall/gnss-slice.jsx | 135 | function getGnssFixStatusFromOutput(output) { | CODE |
| LOW | frontend/src/components/waterfall/settings-sdr.jsx | 905 | function areSdrAccordionPropsEqual(prevProps, nextProps) { | CODE |
| LOW | frontend/src/components/waterfall/settings-fft.jsx | 188 | function areFftAccordionPropsEqual(prevProps, nextProps) { | CODE |
| LOW | frontend/src/components/waterfall/settings-playback.jsx | 512 | function arePlaybackAccordionPropsEqual(prevProps, nextProps) { | CODE |
| LOW | …rc/components/waterfall/dom-tile-waterfall-renderer.js | 3 | export function createDomTileWaterfallRenderer({ | CODE |
| LOW | frontend/src/components/waterfall/decoder-parameters.js | 640 | export function getDecoderDefaultParameters(decoder, t = englishFallback) { | CODE |
| LOW | frontend/src/components/waterfall/waterfall-worker.js | 148 | function initLeftMarginStateCanvas(options = {}) { | CODE |
| LOW | frontend/src/components/waterfall/waterfall-worker.js | 181 | function advanceHeadlessLeftMargin() { | CODE |
| LOW | frontend/src/components/waterfall/main-layout.jsx | 53 | function loadLayoutsFromLocalStorage() { | CODE |
| LOW | frontend/src/components/waterfall/main-layout.jsx | 74 | function saveLayoutsToLocalStorage(layouts) { | CODE |
| LOW | frontend/src/components/waterfall/main-layout.jsx | 84 | function normalizeLayoutsResizeHandles(layouts) { | CODE |
| LOW | frontend/src/components/waterfall/waterfall-slice.jsx | 54 | function applySDRConfigParametersToState(state, payload, sdrId) { | CODE |
| LOW | …ontend/src/components/waterfall/settings-frequency.jsx | 390 | function areFrequencyControlAccordionPropsEqual(prevProps, nextProps) { | CODE |
| LOW | …/src/components/waterfall/worker-modules/color-maps.js | 164 | function greyscaleInvertedColorMap(normalizedValue) { | CODE |
| LOW | …d/src/components/waterfall/worker-modules/rendering.js | 402 | export function updateWaterfallLeftMargin({ | CODE |
| LOW | …src/components/waterfall/vfo-settings/settings-vfo.jsx | 301 | function areVfoAccordionPropsEqual(prevProps, nextProps) { | CODE |
| LOW | …d/src/components/target/target-earth-maplibre-view.jsx | 154 | function projectTerminatorForMapLibre(points) { | CODE |
| LOW | …ponents/target/use-target-rotator-selection-dialog.jsx | 87 | export function useTargetRotatorSelectionDialog() { | CODE |
| LOW | frontend/src/components/target/rotator-utils.js | 37 | export function getCurrentStatusofRotator(rotatorData, lastRotatorEvent) { | CODE |
| LOW | frontend/src/components/target/rotator-utils.js | 121 | export function getConnectionStatusofRotator(rotatorData) { | CODE |
| LOW | frontend/src/components/target/rotator-utils.js | 244 | export function isRotatorSelectionDisabled(trackingState) { | CODE |
| LOW | …/components/target/target-sky-view-settings-dialog.jsx | 111 | function TargetSkyViewSettingsDialog({ updateBackend }) { | CODE |
| LOW | …end/src/components/target/tracker-command-feedback.jsx | 7 | export function TrackerCommandHeaderStatus({command, hardwareStatus, stale = false, sx = {}}) { | CODE |
| LOW | frontend/src/components/target/satellite-search.jsx | 162 | const SatelliteSearchAutocomplete = React.memo(function SatelliteSearchAutocomplete({ | CODE |
| LOW | frontend/src/components/target/main-layout.jsx | 98 | function loadLayoutsFromLocalStorage() { | CODE |
| LOW | frontend/src/components/target/main-layout.jsx | 119 | function saveLayoutsToLocalStorage(layouts) { | CODE |
| LOW | frontend/src/components/target/main-layout.jsx | 129 | function normalizeLayoutsResizeHandles(layouts) { | CODE |
| LOW | frontend/src/components/target/main-layout.jsx | 147 | function ensureLayoutsContainRequiredItems(layouts, defaultLayouts) { | CODE |
| LOW | frontend/src/components/target/main-layout.jsx | 163 | function removeDeprecatedLayoutItems(layouts) { | CODE |
| LOW | frontend/src/components/target/main-layout.jsx | 178 | function enforceFixedIslandHeights(layouts) { | CODE |
| LOW | frontend/src/components/scheduler/main-layout.jsx | 26 | export default function ScheduledObservationsLayout() { | CODE |
| LOW | frontend/src/components/dashboard/dashboard-layout.jsx | 256 | function ActiveObservationIndicator() { | CODE |
| LOW | frontend/src/components/dashboard/dashboard-layout.jsx | 420 | function UpcomingObservationIndicator() { | CODE |
| LOW | frontend/src/components/dashboard/dashboard-layout.jsx | 707 | function SidebarFooterAccountPopover() { | CODE |
| LOW | frontend/src/components/common/tracking-logic.jsx | 35 | function notifyTrackingPropagationFailureOnce(noradId, satelliteName, detail = '') { | CODE |
| LOW | frontend/src/components/common/tracking-logic.jsx | 141 | export function getSatelliteCoverageCircle(satLat, satLon, altitudeKm, numPoints = 36) { | CODE |
| LOW | frontend/src/components/common/tracking-logic.jsx | 482 | function calculateGreatCircleDistance(lat1, lon1, lat2, lon2) { | CODE |
| LOW | frontend/src/components/common/tracking-logic.jsx | 618 | export function calculateTimeToMaxElevation(tleLine1, tleLine2, groundStation, startDate = new Date(), maxMinutes = 30) | CODE |
| LOW | frontend/src/components/common/common.jsx | 239 | export function InternationalDateLinePolyline() { | CODE |
| LOW | frontend/src/components/common/common.jsx | 651 | export function getClassNamesBasedOnGridEditing(gridEditing, stringList) { | CODE |
| LOW | frontend/src/components/common/tile-layers.jsx | 41 | export function normalizeMapEngineForTileLayers(mapEngine) { | CODE |
| LOW | frontend/src/components/common/tile-layers.jsx | 49 | export function isTileLayerCompatibleWithEngine(layer, mapEngine) { | CODE |
| 1372 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/pipeline/managers/decodermanager.py | 68 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 73 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 90 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 82 | except ProcessLookupError: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 939 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 894 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 903 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 228 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 248 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 257 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 869 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 878 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 882 | except Exception: | CODE |
| HIGH | backend/pipeline/managers/decodermanager.py | 891 | except Exception: | CODE |
| HIGH | backend/pipeline/orchestration/processlifecycle.py | 1138 | except Exception: | CODE |
| HIGH | backend/pipeline/orchestration/processlifecycle.py | 1171 | except Exception: | CODE |
| HIGH | backend/pipeline/orchestration/processlifecycle.py | 1015 | except Exception: | CODE |
| HIGH | backend/pipeline/orchestration/processlifecycle.py | 1372 | except Exception: | CODE |
| HIGH | backend/tasks/satdumpprocessor.py | 88 | except Exception: | CODE |
| HIGH | backend/tasks/satdumpprocessor.py | 120 | except Exception: | CODE |
| HIGH | backend/tasks/satdumpprocessor.py | 499 | except Exception: | CODE |
| HIGH | backend/tasks/manager.py | 354 | except Empty: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 237 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 247 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 259 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 267 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 272 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 276 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 145 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 295 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 303 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 317 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 331 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 468 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 511 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 527 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 245 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 502 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 224 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrremoteprobe.py | 293 | except Exception: | CODE |
| HIGH | backend/hardware/uhdprobe.py | 30 | except ImportError as e: | CODE |
| HIGH | backend/hardware/soapysdrbrowser.py | 71 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 163 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 173 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 185 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 193 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 198 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 202 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 66 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 222 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 228 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 242 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 256 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 171 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 146 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 220 | except Exception: | CODE |
| HIGH | backend/hardware/soapyenum.py | 534 | except Exception: | CODE |
| HIGH | backend/hardware/uhdenum.py | 31 | except ImportError: | CODE |
| HIGH | backend/hardware/soapysdrlocalprobe.py | 234 | except Exception: | CODE |
| HIGH | backend/hardware/soapysdrlocalprobe.py | 244 | except Exception: | CODE |
| 162 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/app.py | 106 | except Exception as e: # pragma: no cover - startup errors | STRING |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 27 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 34 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 41 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 48 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 55 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 62 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 69 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 76 | except Exception as error: | CODE |
| LOW⚡ | backend/pipeline/registries/decoderregistry.py | 83 | except Exception as error: | CODE |
| LOW | backend/pipeline/config/decoderconfigservice.py | 196 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 306 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 371 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 400 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 426 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 445 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 465 | except Exception as e: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 84 | except Exception as e: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 90 | except Exception: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 92 | except Exception as e: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 869 | except Exception: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 878 | except Exception: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 882 | except Exception: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 891 | except Exception: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 894 | except Exception: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 903 | except Exception: | CODE |
| LOW⚡ | backend/pipeline/managers/decodermanager.py | 905 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 68 | except Exception: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 73 | except Exception: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 108 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 119 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 135 | except Exception: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 143 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 228 | except Exception: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 248 | except Exception: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 257 | except Exception: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 723 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 939 | except Exception: | CODE |
| LOW | backend/pipeline/managers/decodermanager.py | 947 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/consumerbase.py | 213 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/consumerbase.py | 262 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/audiorecordermanager.py | 114 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/audiorecordermanager.py | 173 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/audiorecordermanager.py | 194 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/recordermanager.py | 141 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/recordermanager.py | 198 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/recordermanager.py | 245 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/demodulatormanager.py | 109 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/demodulatormanager.py | 160 | except Exception as e: | CODE |
| LOW | backend/pipeline/managers/demodulatormanager.py | 183 | except Exception as e: | CODE |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 223 | except Exception: | CODE |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 254 | except Exception as e: | CODE |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 361 | except Exception as e: | CODE |
| LOW | backend/pipeline/orchestration/processmanager.py | 125 | except Exception: | CODE |
| LOW | backend/pipeline/orchestration/processmanager.py | 169 | except Exception as e: | CODE |
| LOW | backend/pipeline/orchestration/processmanager.py | 263 | except Exception: | CODE |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 138 | except Exception: | CODE |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 281 | except Exception as exc: | CODE |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 314 | except Exception as exc: | CODE |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 368 | except Exception as e: | CODE |
| 921 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/tools/import_gr_satellites_transmitters.py | 0 | encode a uuid as a satnogs-style 22-char transmitter id. | STRING |
| HIGH | backend/tools/import_satdump_website_transmitters.py | 0 | encode a uuid as a satnogs-style 22-char transmitter id. | STRING |
| HIGH | backend/crud/transmitters.py | 0 | encode a uuid as a satnogs-style 22-char transmitter id. | STRING |
| HIGH | backend/tlesync/utils.py | 0 | encode a uuid as a satnogs-style 22-char transmitter id. | STRING |
| HIGH | backend/handlers/entities/transmitterimport.py | 0 | encode a uuid as a satnogs-style 22-char transmitter id. | STRING |
| HIGH | backend/demodulators/afskdecoder.py | 0 | send statistics update to ui and performance monitor | STRING |
| HIGH | backend/demodulators/sstvdecoder.py | 0 | send statistics update to ui and performance monitor | STRING |
| HIGH | backend/demodulators/loradecoder.py | 0 | send statistics update to ui and performance monitor | STRING |
| HIGH | backend/demodulators/bpskdecoder.py | 0 | send statistics update to ui and performance monitor | STRING |
| HIGH | backend/demodulators/fskdecoder.py | 0 | send statistics update to ui and performance monitor | STRING |
| HIGH | backend/demodulators/ssbdemodulator.py | 0 | resize filter state vector when filter coefficients change. this prevents clicks by smoothly transitioning filter states | STRING |
| HIGH | backend/demodulators/amdemodulator.py | 0 | resize filter state vector when filter coefficients change. this prevents clicks by smoothly transitioning filter states | STRING |
| HIGH | backend/demodulators/fmdemodulator.py | 0 | resize filter state vector when filter coefficients change. this prevents clicks by smoothly transitioning filter states | STRING |
| HIGH | backend/demodulators/fmstereodemodulator.py | 0 | resize filter state vector when filter coefficients change. this prevents clicks by smoothly transitioning filter states | STRING |
| HIGH | backend/demodulators/ssbdemodulator.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/amdemodulator.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/fmdemodulator.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/fmstereodemodulator.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/sstvdecoder.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/loradecoder.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/bpskdecoder.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/fskdecoder.py | 0 | translate frequency by offset (shift signal in frequency domain). | STRING |
| HIGH | backend/demodulators/amdemodulator.py | 0 | check if vfo center frequency is within sdr bandwidth (with small edge margin). returns tuple: (is_in_band, offset_from_ | STRING |
| HIGH | backend/demodulators/fmdemodulator.py | 0 | check if vfo center frequency is within sdr bandwidth (with small edge margin). returns tuple: (is_in_band, offset_from_ | STRING |
| HIGH | backend/demodulators/sstvdecoder.py | 0 | check if vfo center frequency is within sdr bandwidth (with small edge margin). returns tuple: (is_in_band, offset_from_ | STRING |
| HIGH | backend/demodulators/bpskdecoder.py | 0 | check if vfo center frequency is within sdr bandwidth (with small edge margin). returns tuple: (is_in_band, offset_from_ | STRING |
| HIGH | backend/workers/uhdworker.py | 0 | worker process for rtl-sdr operations. this function runs in a separate process to avoid segmentation faults. it receive | STRING |
| HIGH | backend/workers/soapysdrlocalworker.py | 0 | worker process for rtl-sdr operations. this function runs in a separate process to avoid segmentation faults. it receive | STRING |
| HIGH | backend/workers/soapysdrremoteworker.py | 0 | worker process for rtl-sdr operations. this function runs in a separate process to avoid segmentation faults. it receive | STRING |
| HIGH | backend/workers/rtlsdrworker.py | 0 | worker process for rtl-sdr operations. this function runs in a separate process to avoid segmentation faults. it receive | STRING |
| HIGH | backend/workers/uhdworker.py | 0 | calculate number of samples per scan for constant block rate streaming. | STRING |
| HIGH | backend/workers/sigmfplaybackworker.py | 0 | calculate number of samples per scan for constant block rate streaming. | STRING |
| HIGH | backend/workers/soapysdrlocalworker.py | 0 | calculate number of samples per scan for constant block rate streaming. | STRING |
| HIGH | backend/workers/rtlsdrworker.py | 0 | calculate number of samples per scan for constant block rate streaming. | STRING |
| HIGH | …d/alembic/versions/b1d2c3e4f5a6integrationprefsuser.py | 0 | select name, value, added, updated from preferences where scope in ('system', 'bootstrap') and user_id is null and name | STRING |
| HIGH | …end/alembic/versions/d6e8f0a1b2c3integrationrepair2.py | 0 | select name, value, added, updated from preferences where scope in ('system', 'bootstrap') and user_id is null and name | STRING |
| HIGH | …kend/alembic/versions/c5d7e9f1a2b3integrationrepair.py | 0 | select name, value, added, updated from preferences where scope in ('system', 'bootstrap') and user_id is null and name | STRING |
| HIGH | …d/alembic/versions/b1d2c3e4f5a6integrationprefsuser.py | 0 | insert into preferences (id, user_id, scope, name, value, added, updated) values (:id, :user_id, 'user', :name, :value, | STRING |
| HIGH | …end/alembic/versions/d6e8f0a1b2c3integrationrepair2.py | 0 | insert into preferences (id, user_id, scope, name, value, added, updated) values (:id, :user_id, 'user', :name, :value, | STRING |
| HIGH | …kend/alembic/versions/c5d7e9f1a2b3integrationrepair.py | 0 | insert into preferences (id, user_id, scope, name, value, added, updated) values (:id, :user_id, 'user', :name, :value, | STRING |
| HIGH | …d/alembic/versions/b1d2c3e4f5a6integrationprefsuser.py | 0 | delete from preferences where scope in ('system', 'bootstrap') and user_id is null and name in ({keys_sql}) | STRING |
| HIGH | …end/alembic/versions/d6e8f0a1b2c3integrationrepair2.py | 0 | delete from preferences where scope in ('system', 'bootstrap') and user_id is null and name in ({keys_sql}) | STRING |
| HIGH | …kend/alembic/versions/c5d7e9f1a2b3integrationrepair.py | 0 | delete from preferences where scope in ('system', 'bootstrap') and user_id is null and name in ({keys_sql}) | STRING |
| HIGH | …d/alembic/versions/b1d2c3e4f5a6integrationprefsuser.py | 0 | select name, value, added, updated from preferences where scope = 'user' and name in ({keys_sql}) order by coalesce(upda | STRING |
| HIGH | …end/alembic/versions/d6e8f0a1b2c3integrationrepair2.py | 0 | select name, value, added, updated from preferences where scope = 'user' and name in ({keys_sql}) order by coalesce(upda | STRING |
| HIGH | …kend/alembic/versions/c5d7e9f1a2b3integrationrepair.py | 0 | select name, value, added, updated from preferences where scope = 'user' and name in ({keys_sql}) order by coalesce(upda | STRING |
| HIGH | …d/alembic/versions/b1d2c3e4f5a6integrationprefsuser.py | 0 | select name from preferences where scope = 'system' and user_id is null and name in ({keys_sql}) | STRING |
| HIGH | …end/alembic/versions/d6e8f0a1b2c3integrationrepair2.py | 0 | select name from preferences where scope = 'system' and user_id is null and name in ({keys_sql}) | STRING |
| HIGH | …kend/alembic/versions/c5d7e9f1a2b3integrationrepair.py | 0 | select name from preferences where scope = 'system' and user_id is null and name in ({keys_sql}) | STRING |
| HIGH | …d/alembic/versions/b1d2c3e4f5a6integrationprefsuser.py | 0 | insert into preferences (id, user_id, scope, name, value, added, updated) values (:id, null, 'system', :name, :value, :a | STRING |
| HIGH | …end/alembic/versions/d6e8f0a1b2c3integrationrepair2.py | 0 | insert into preferences (id, user_id, scope, name, value, added, updated) values (:id, null, 'system', :name, :value, :a | STRING |
| HIGH | …kend/alembic/versions/c5d7e9f1a2b3integrationrepair.py | 0 | insert into preferences (id, user_id, scope, name, value, added, updated) values (:id, null, 'system', :name, :value, :a | STRING |
| HIGH | …d/alembic/versions/b1d2c3e4f5a6integrationprefsuser.py | 0 | delete from preferences where scope = 'user' and name in ({keys_sql}) | STRING |
| HIGH | …end/alembic/versions/d6e8f0a1b2c3integrationrepair2.py | 0 | delete from preferences where scope = 'user' and name in ({keys_sql}) | STRING |
| HIGH | …kend/alembic/versions/c5d7e9f1a2b3integrationrepair.py | 0 | delete from preferences where scope = 'user' and name in ({keys_sql}) | STRING |
| HIGH | backend/controllers/sdr.py | 0 | destructor - ensure we disconnect when the object is garbage collected. | STRING |
| HIGH | backend/controllers/rig.py | 0 | destructor - ensure we disconnect when the object is garbage collected. | STRING |
| HIGH | backend/controllers/righamlib.py | 0 | destructor - ensure we disconnect when the object is garbage collected. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/pipeline/config/decoderconfigservice.py | 360 | CODE | |
| LOW | backend/pipeline/config/decoderconfigservice.py | 395 | CODE | |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 95 | CODE | |
| LOW | backend/pipeline/managers/decodermanager.py | 146 | CODE | |
| LOW | backend/pipeline/managers/decodermanager.py | 604 | CODE | |
| LOW | backend/pipeline/managers/decodermanager.py | 782 | CODE | |
| LOW | backend/pipeline/managers/consumerbase.py | 45 | CODE | |
| LOW | backend/pipeline/managers/recordermanager.py | 65 | CODE | |
| LOW | backend/pipeline/managers/demodulatormanager.py | 59 | CODE | |
| LOW | backend/pipeline/managers/demodulatormanager.py | 193 | CODE | |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 156 | CODE | |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 262 | CODE | |
| LOW | backend/pipeline/orchestration/processmanager.py | 268 | CODE | |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 322 | CODE | |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 418 | CODE | |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 928 | CODE | |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 1178 | CODE | |
| LOW | backend/tasks/exampletask.py | 36 | CODE | |
| LOW | backend/tasks/satdumpprocessor.py | 33 | CODE | |
| LOW | backend/tasks/satdumpprocessor.py | 124 | CODE | |
| LOW | backend/tasks/satdumpprocessor.py | 295 | CODE | |
| LOW | backend/tasks/soapysdrdiscovery.py | 44 | CODE | |
| LOW | backend/tasks/waterfallgenerator.py | 26 | CODE | |
| LOW | backend/tasks/manager.py | 199 | CODE | |
| LOW | backend/tasks/manager.py | 327 | CODE | |
| LOW | backend/tasks/manager.py | 508 | CODE | |
| LOW | backend/tools/import_gr_satellites_transmitters.py | 242 | CODE | |
| LOW | backend/tools/import_satdump_website_transmitters.py | 68 | CODE | |
| LOW | backend/tools/import_satdump_website_transmitters.py | 83 | CODE | |
| LOW | backend/hardware/soapysdrremoteprobe.py | 70 | CODE | |
| LOW | backend/hardware/soapysdrremoteprobe.py | 161 | CODE | |
| LOW | backend/hardware/soapysdrremoteprobe.py | 183 | CODE | |
| LOW | backend/hardware/uhdprobe.py | 44 | CODE | |
| LOW | backend/hardware/airspyenum.py | 43 | CODE | |
| LOW | backend/hardware/soapysdrbrowser.py | 105 | CODE | |
| LOW | backend/hardware/soapysdrbrowser.py | 417 | CODE | |
| LOW | backend/hardware/soapysdrbrowser.py | 547 | CODE | |
| LOW | backend/hardware/soapysdrbrowser.py | 619 | CODE | |
| LOW | backend/hardware/soapyenum.py | 84 | CODE | |
| LOW | backend/hardware/soapyenum.py | 107 | CODE | |
| LOW | backend/hardware/soapyenum.py | 335 | CODE | |
| LOW | backend/hardware/uhdenum.py | 93 | CODE | |
| LOW | backend/hardware/parameters.py | 127 | CODE | |
| LOW | backend/hardware/soapysdrlocalprobe.py | 69 | CODE | |
| LOW | backend/hardware/soapysdrlocalprobe.py | 158 | CODE | |
| LOW | backend/hardware/soapysdrlocalprobe.py | 180 | CODE | |
| LOW | backend/demodulators/afskdecoder.py | 114 | CODE | |
| LOW | backend/demodulators/afskdecoder.py | 219 | CODE | |
| LOW | backend/demodulators/afskdecoder.py | 618 | CODE | |
| LOW | backend/demodulators/iqrecorder.py | 138 | CODE | |
| LOW | backend/demodulators/ssbdemodulator.py | 286 | CODE | |
| LOW | backend/demodulators/amdemodulator.py | 277 | CODE | |
| LOW | backend/demodulators/fmdemodulator.py | 601 | CODE | |
| LOW | backend/demodulators/morsedecoder.py | 330 | CODE | |
| LOW | backend/demodulators/morsedecoder.py | 512 | CODE | |
| LOW | backend/demodulators/fmstereodemodulator.py | 444 | CODE | |
| LOW | backend/demodulators/sstvdecoder.py | 671 | CODE | |
| LOW | backend/demodulators/sstvdecoder.py | 789 | CODE | |
| LOW | backend/demodulators/sstvdecoder.py | 966 | CODE | |
| LOW | backend/demodulators/loradecoder.py | 485 | CODE | |
| 177 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 81 | # - repo: https://github.com/pre-commit/mirrors-prettier | COMMENT |
| LOW | frontend/src/hooks/useSocketEventHandlers.jsx | 181 | COMMENT | |
| LOW | backend/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | backend/alembic.ini | 21 | # Any required deps can installed by adding `alembic[tz]` to the pip requirements | COMMENT |
| LOW | backend/alembic.ini | 41 | # The path separator used here should be the separator specified by "version_path_separator" below. | COMMENT |
| LOW | backend/alembic.ini | 61 | # are written from script.py.mako | COMMENT |
| LOW | backend/orbits/service.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/orbits/__init__.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/registries/decoderregistry.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/registries/demodulatorregistry.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/config/decoderconfig.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/config/decoderconfigservice.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/managers/decodermanager.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/managers/consumerbase.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/managers/audiorecordermanager.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/managers/recordermanager.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/managers/demodulatormanager.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/orchestration/gnsssatelliteresolver.py | 1 | # Copyright (c) 2026 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/orchestration/processmanager.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/orchestration/gnssfix.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/video/__init__.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/tools/__init__.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/tools/mitm.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/soapysdrremoteprobe.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/airspyprobe.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/airspyenum.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/rtlsdrenum.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/soapysdrbrowser.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/soapyenum.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/sigmfprobe.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/__init__.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/parameters.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/hardware/soapysdrlocalprobe.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/demodulators/afskdecoder.py | 1 | # Ground Station - AFSK Decoder using GNU Radio | COMMENT |
| LOW | backend/demodulators/afskdecoder.py | 21 | # | COMMENT |
| LOW | backend/demodulators/iqrecorder.py | 1 | # Ground Station - IQ Recorder | COMMENT |
| LOW | backend/demodulators/ssbdemodulator.py | 1 | # Ground Station - SSB Demodulator | COMMENT |
| LOW | backend/demodulators/gfskdecoder.py | 1 | # Ground Station - GFSK Decoder using GNU Radio | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 1 | # Ground Station - AM Demodulator | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 1 | # Ground Station - FM Demodulator | COMMENT |
| LOW | backend/demodulators/__init__.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/demodulators/morsedecoder.py | 1 | # Ground Station - Morse Code Decoder | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 1 | # Ground Station - FM Stereo Demodulator | COMMENT |
| LOW | backend/demodulators/loradecoder.py | 1 | # Ground Station - LoRa Decoder using GNU Radio gr-lora_sdr | COMMENT |
| LOW | backend/demodulators/bpskdecoder.py | 1 | # Ground Station - BPSK Decoder using GNU Radio | COMMENT |
| LOW | backend/demodulators/bpskdecoder.py | 21 | # | COMMENT |
| LOW | backend/demodulators/bpskdecoder.py | 41 | # 3. SIGNAL PROCESSING CHAIN: | COMMENT |
| LOW | backend/demodulators/audiorecorder.py | 1 | # Ground Station - Audio Recorder | COMMENT |
| LOW | backend/demodulators/basedecoderprocess.py | 1 | # Ground Station - Base Decoder Process | COMMENT |
| LOW | backend/demodulators/fskdecoder.py | 1 | # Ground Station - FSK-Family Decoder using GNU Radio | COMMENT |
| LOW | backend/demodulators/fskdecoder.py | 21 | # | COMMENT |
| LOW | backend/demodulators/fskdecoder.py | 41 | # 3. SIGNAL PROCESSING CHAIN (based on gr-satellites FSK demodulator): | COMMENT |
| LOW | backend/demodulators/gmskdecoder.py | 1 | # Ground Station - GMSK Decoder using GNU Radio | COMMENT |
| LOW | backend/demodulators/basedecoder.py | 1 | # Ground Station - Base Decoder | COMMENT |
| LOW | backend/tests/testtrackercache.py | 1 | # Copyright (c) 2026 Efstratios Goudelis | COMMENT |
| LOW | backend/tests/test_common_utils.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| LOW | backend/tests/testorbitalsources.py | 1 | # Copyright (c) 2025 Efstratios Goudelis | COMMENT |
| 144 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/setup-tests.sh | 11 | # Check if we're in the frontend directory | COMMENT |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 201 | # Check if transcription worker already exists for this VFO | COMMENT |
| LOW | backend/pipeline/managers/transcriptionmanager.py | 205 | # Check if settings changed - if so, restart the worker | COMMENT |
| LOW | backend/pipeline/managers/decodermanager.py | 179 | # Check if decoder already exists for this session and VFO | COMMENT |
| LOW | backend/pipeline/managers/decodermanager.py | 201 | # Check if this specific VFO has a decoder | COMMENT |
| LOW | backend/pipeline/managers/decodermanager.py | 280 | # Check if there's an active demodulator for this session | COMMENT |
| LOW | backend/pipeline/managers/decodermanager.py | 285 | # Check if we need to create/recreate the internal demodulator | COMMENT |
| LOW | backend/pipeline/managers/decodermanager.py | 675 | # Check if a demodulator exists for this session/VFO | COMMENT |
| LOW | backend/pipeline/managers/decodermanager.py | 680 | # Check if this is multi-VFO mode | COMMENT |
| LOW⚡ | backend/pipeline/managers/consumerbase.py | 112 | # Check if consumer already exists | COMMENT |
| LOW⚡ | backend/pipeline/managers/consumerbase.py | 122 | # Check if existing is an internal demodulator (created by decoder) | COMMENT |
| LOW⚡ | backend/pipeline/managers/consumerbase.py | 124 | # Check if we're requesting internal mode | COMMENT |
| LOW | backend/pipeline/managers/audiorecordermanager.py | 82 | # Check if recorder already exists for this VFO | COMMENT |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 201 | # Check if this is an internal session (has "internal:" prefix) | COMMENT |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 523 | # Check if a process for this device already exists | COMMENT |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 942 | # Check if sample rate or center frequency is changing. | COMMENT |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 1223 | # Check if data is available | COMMENT |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 1258 | # Check if it's FFT stats or worker stats based on presence of sdr_id | COMMENT |
| LOW | backend/pipeline/orchestration/processlifecycle.py | 1415 | # Check if this is an internal session (automated observation) | COMMENT |
| LOW | backend/tasks/exampletask.py | 77 | # Check if duration is complete | COMMENT |
| LOW | backend/tasks/exampletask.py | 92 | # Check if we should fail | COMMENT |
| LOW | backend/tasks/satdumpprocessor.py | 217 | # Check if directory has any files (recursively) | COMMENT |
| LOW | backend/tasks/satdumpprocessor.py | 329 | # Check if path starts with /recordings/ or /decoded/ (relative app paths) | COMMENT |
| LOW | backend/tasks/satdumpprocessor.py | 520 | # Check if output directory has any decoded products (images, data files) | COMMENT |
| LOW | backend/tasks/manager.py | 242 | # Check if this singleton task is already running | COMMENT |
| LOW | backend/tasks/manager.py | 245 | # Check if it's the same singleton task type | COMMENT |
| LOW | backend/tasks/manager.py | 385 | # Check if we received a completion/failure message | COMMENT |
| LOW⚡ | backend/hardware/soapysdrremoteprobe.py | 487 | # Check if the device has a ref_locked sensor | COMMENT |
| LOW⚡ | backend/hardware/soapysdrremoteprobe.py | 496 | # Check if the device has a clock_source sensor | COMMENT |
| LOW⚡ | backend/hardware/soapysdrremoteprobe.py | 539 | # Check if the device has a RFIC_TEMP sensor | COMMENT |
| LOW⚡ | backend/hardware/soapysdrremoteprobe.py | 548 | # Check if the device has a lms7_temp sensor (for LimeSDR devices) | COMMENT |
| LOW | backend/hardware/soapysdrremoteprobe.py | 422 | # Check if automatic gain control is supported | COMMENT |
| LOW⚡ | backend/hardware/uhdprobe.py | 362 | # Check if automatic gain control is supported (USRP typically doesn't have hardware AGC) | COMMENT |
| LOW | backend/hardware/uhdprobe.py | 194 | # Check if it's iterable (some UHD versions return different types) | COMMENT |
| LOW | backend/hardware/soapyenum.py | 372 | # Check if this is a USB device | COMMENT |
| LOW | backend/hardware/sigmfprobe.py | 90 | # Check if data file exists | COMMENT |
| LOW⚡ | backend/hardware/soapysdrlocalprobe.py | 469 | # Check if the device has a ref_locked sensor | COMMENT |
| LOW⚡ | backend/hardware/soapysdrlocalprobe.py | 478 | # Check if the device has a clock_source sensor | COMMENT |
| LOW⚡ | backend/hardware/soapysdrlocalprobe.py | 520 | # Check if the device has a RFIC_TEMP sensor | COMMENT |
| LOW⚡ | backend/hardware/soapysdrlocalprobe.py | 529 | # Check if the device has a lms7_temp sensor (for LimeSDR devices) | COMMENT |
| LOW | backend/hardware/soapysdrlocalprobe.py | 408 | # Check if automatic gain control is supported | COMMENT |
| LOW | backend/demodulators/iqrecorder.py | 225 | # Check if parameters changed (new capture segment needed) | COMMENT |
| LOW | backend/demodulators/ssbdemodulator.py | 363 | # Check if modulation is SSB (USB, LSB, or CW) | COMMENT |
| LOW | backend/demodulators/ssbdemodulator.py | 377 | # Check if we need to reinitialize filters | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 313 | # Check if there's an active VFO AFTER getting samples | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 319 | # Check if modulation is AM | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 343 | # Check if we need to reinitialize filters | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 676 | # Check if modulation is FM | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 684 | # Check if we need to reinitialize filters | COMMENT |
| LOW | backend/demodulators/morsedecoder.py | 358 | # Check if tone is present (matches pqcd line 60) | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 468 | # Check if there's an active VFO AFTER getting samples | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 474 | # Check if modulation is FM_STEREO | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 498 | # Check if we need to reinitialize filters | COMMENT |
| LOW | backend/demodulators/basedecoder.py | 220 | # Increment counter | COMMENT |
| LOW | backend/tests/test_tlesync_utils.py | 531 | # Set progress to 50 | COMMENT |
| LOW | backend/server/startup.py | 954 | # Check if database exists by trying to query metadata | COMMENT |
| LOW | backend/server/version.py | 215 | # Check if version is provided by environment (e.g., from the CI pipeline) | COMMENT |
| LOW | backend/server/audiorecorder.py | 75 | # Check if already recording | COMMENT |
| LOW | backend/tracker/logic.py | 1108 | # Check if we have satellite data and tracker data | COMMENT |
| LOW | backend/tracker/logic.py | 1110 | # Check if tracking state changed during iteration | COMMENT |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/pipeline/managers/transcriptionmanager.py | 242 | # Create the appropriate worker based on provider | COMMENT |
| MEDIUM | backend/pipeline/managers/decodermanager.py | 386 | # Create a unique subscription key for this decoder | COMMENT |
| MEDIUM | backend/pipeline/managers/consumerbase.py | 167 | # Create a unique subscription key to prevent sharing queues | COMMENT |
| MEDIUM | backend/pipeline/orchestration/processlifecycle.py | 338 | # Create a temporary queue for receiving the response | COMMENT |
| MEDIUM | backend/pipeline/orchestration/processlifecycle.py | 645 | # Create a named worker function | COMMENT |
| MEDIUM | backend/tasks/tlesync.py | 94 | # Create a new engine for this subprocess to avoid sharing connections | COMMENT |
| MEDIUM | backend/hardware/soapysdrremoteprobe.py | 353 | # Create the device instance | COMMENT |
| MEDIUM | backend/hardware/uhdprobe.py | 154 | # Create the USRP device instance | COMMENT |
| MEDIUM | backend/hardware/soapyenum.py | 397 | # Create a device entry with essential information | COMMENT |
| MEDIUM | backend/hardware/soapysdrlocalprobe.py | 347 | # Create the device instance | COMMENT |
| MEDIUM | backend/demodulators/afskdecoder.py | 267 | # Create a NEW flowgraph for each batch to avoid connection conflicts | COMMENT |
| MEDIUM | backend/demodulators/afskdecoder.py | 270 | # Create a temporary top_block | COMMENT |
| MEDIUM⚡ | backend/demodulators/loradecoder.py | 928 | # Create a simple namespace object from cached dict for backward compatibility | COMMENT |
| MEDIUM | backend/demodulators/bpskdecoder.py | 332 | # Create a NEW flowgraph for each batch to avoid connection conflicts | COMMENT |
| MEDIUM | backend/demodulators/bpskdecoder.py | 335 | # Create a temporary top_block | COMMENT |
| MEDIUM | backend/demodulators/bpskdecoder.py | 612 | # Create a simple namespace object from cached dict for backward compatibility | COMMENT |
| MEDIUM | backend/demodulators/fskdecoder.py | 307 | # Create a NEW flowgraph for each batch to avoid connection conflicts | COMMENT |
| MEDIUM | backend/demodulators/fskdecoder.py | 310 | # Create a temporary top_block | COMMENT |
| MEDIUM | backend/demodulators/fskdecoder.py | 598 | # Create a simple namespace object from cached dict for backward compatibility | COMMENT |
| MEDIUM⚡ | backend/tests/test_session_internal_observations.py | 195 | # Create a user session | COMMENT |
| MEDIUM⚡ | backend/tests/test_session_internal_observations.py | 200 | # Create an internal session | COMMENT |
| MEDIUM | backend/tests/test_db_migrations.py | 138 | # Create the exact schema immediately before the remediation migration. | COMMENT |
| MEDIUM⚡ | backend/tests/test_tracking_events.py | 261 | # Create a pool and run the worker | COMMENT |
| MEDIUM | backend/tracker/utils.py | 6 | # Create a string buffer and pretty print the dict to it | COMMENT |
| MEDIUM | backend/common/arguments.py | 91 | # Create a namespace with default values for alembic context | COMMENT |
| MEDIUM | backend/audio/transcriptionworker.py | 4 | # This module provides an abstract base class for transcription workers that | COMMENT |
| MEDIUM | backend/audio/audiobroadcaster.py | 4 | # This module implements a thread-safe pub/sub pattern for audio distribution. | COMMENT |
| MEDIUM | backend/audio/audiobroadcaster.py | 178 | # Create a copy for each subscriber to avoid shared state issues | COMMENT |
| MEDIUM | backend/crud/trackingstate.py | 85 | # Create a copy of the existing value to avoid modifying it directly | COMMENT |
| MEDIUM | backend/tracking/doppler.py | 262 | # Define the ground station | COMMENT |
| MEDIUM | backend/tracking/events.py | 24 | # Create a simple in-memory cache (no multiprocessing needed since cache is only accessed from main process) | COMMENT |
| MEDIUM | backend/tracking/events.py | 27 | # Create a persistent worker pool (reused across all calculations to avoid repeated pool creation/destruction) | COMMENT |
| MEDIUM | backend/tracking/events.py | 42 | # Create a string representation of the parameters, excluding hours | COMMENT |
| MEDIUM | backend/tracking/events.py | 391 | # Create a lookup dict for satellite names, transmitters and counts | COMMENT |
| MEDIUM⚡ | backend/tracking/satellite.py | 48 | # Create a timescale and convert the observation time to a Skyfield time object | COMMENT |
| MEDIUM⚡ | backend/tracking/satellite.py | 52 | # Create the EarthSatellite object directly from the TLE strings | COMMENT |
| MEDIUM⚡ | backend/tracking/satellite.py | 55 | # Define the observer's location | COMMENT |
| MEDIUM | backend/tracking/satellite.py | 105 | # Create an EarthSatellite object from the TLE. | COMMENT |
| MEDIUM | backend/tracking/passes.py | 16 | # This file contains code partially generated by Claude 3.7 Sonnet. | COMMENT |
| MEDIUM | backend/tracking/passes.py | 804 | # Create a timescale that goes backward from t0 | COMMENT |
| MEDIUM | backend/workers/soapysdrlocalworker.py | 174 | # Create the device instance | COMMENT |
| MEDIUM | backend/workers/soapysdrlocalworker.py | 526 | # Create a buffer for the samples - read directly the number of samples we need | COMMENT |
| MEDIUM | backend/workers/soapysdrremoteworker.py | 194 | # Create the device instance | COMMENT |
| MEDIUM | backend/workers/soapysdrremoteworker.py | 568 | # Create a buffer for the individual reads | COMMENT |
| MEDIUM | backend/workers/soapysdrremoteworker.py | 571 | # Create an accumulation buffer for collecting enough samples | COMMENT |
| MEDIUM | backend/observations/generator.py | 699 | # Create the observation | COMMENT |
| MEDIUM | backend/monitoring/performancemonitor.py | 1200 | # Create a streamer entry for each session | COMMENT |
| MEDIUM | backend/controllers/rig.py | 64 | # Create a persistent connection | COMMENT |
| MEDIUM | backend/controllers/rotator.py | 71 | # Create a persistent connection | COMMENT |
| MEDIUM | backend/controllers/rotator.py | 137 | # Create a temporary connection | COMMENT |
| MEDIUM | backend/tlesync/logic.py | 154 | # Create an instance of our state manager | COMMENT |
| MEDIUM | backend/tlesync/utils.py | 1077 | # Create a new group | COMMENT |
| MEDIUM | backend/tlesync/state.py | 21 | # Create a state manager class for satellite synchronization | COMMENT |
| MEDIUM | backend/tlesync/state.py | 108 | # Create a singleton instance | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/pyproject.toml | 137 | # ============================================================================ | COMMENT |
| MEDIUM | backend/pyproject.toml | 139 | # ============================================================================ | COMMENT |
| MEDIUM | backend/demodulators/afskdecoder.py | 26 | # ================== | COMMENT |
| MEDIUM | backend/demodulators/bpskdecoder.py | 26 | # ================================ | COMMENT |
| MEDIUM | backend/demodulators/fskdecoder.py | 30 | # ================== | COMMENT |
| MEDIUM | backend/common/constants.py | 23 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 25 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 63 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 65 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/common/constants.py | 81 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/common/constants.py | 83 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/common/constants.py | 91 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/common/constants.py | 93 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 131 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 133 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 162 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 164 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 177 | # ============================================================================ | COMMENT |
| MEDIUM | backend/common/constants.py | 179 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/crud/monitoredsatellites.py | 414 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/crud/monitoredsatellites.py | 416 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/observations/sync.py | 382 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/observations/sync.py | 384 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/observations/executor.py | 845 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/observations/executor.py | 847 | # ============================================================================ | COMMENT |
| MEDIUM | backend/vfos/state.py | 260 | # ============================================================ | COMMENT |
| MEDIUM | backend/vfos/state.py | 263 | # ============================================================ | COMMENT |
| MEDIUM⚡ | backend/handlers/entities/hardware.py | 437 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/handlers/entities/hardware.py | 439 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/hardware.py | 511 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/hardware.py | 513 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/hardware.py | 852 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/hardware.py | 854 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/hardware.py | 914 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/hardware.py | 916 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/handlers/entities/scheduler.py | 29 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/handlers/entities/scheduler.py | 31 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/scheduler.py | 338 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/scheduler.py | 340 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/scheduler.py | 527 | # ============================================================================ | COMMENT |
| MEDIUM | backend/handlers/entities/scheduler.py | 529 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | backend/session/tracker.py | 611 | # ============================================================ | COMMENT |
| MEDIUM⚡ | backend/session/tracker.py | 614 | # ============================================================ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/astronomy/stars.py | 4 | CODE | |
| LOW | backend/orbits/service.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/orbits/__init__.py | 18 | CODE | |
| LOW | backend/pipeline/streaming/iqbroadcaster.py | 16 | CODE | |
| LOW | backend/tasks/__init__.py | 8 | CODE | |
| LOW | backend/tasks/__init__.py | 8 | CODE | |
| LOW | backend/tasks/__init__.py | 8 | CODE | |
| LOW | backend/hardware/airspyprobe.py | 16 | CODE | |
| LOW | backend/hardware/airspynative.py | 9 | CODE | |
| LOW | backend/demodulators/gfskdecoder.py | 29 | CODE | |
| LOW | backend/demodulators/deframerfactory.py | 10 | CODE | |
| LOW | backend/demodulators/loradecoder.py | 38 | CODE | |
| LOW | backend/demodulators/loradecoder.py | 38 | CODE | |
| LOW | backend/demodulators/gmskdecoder.py | 29 | CODE | |
| LOW | backend/constants/__init__.py | 7 | CODE | |
| LOW | backend/constants/__init__.py | 7 | CODE | |
| LOW | backend/constants/__init__.py | 7 | CODE | |
| LOW | backend/constants/__init__.py | 7 | CODE | |
| LOW | backend/constants/__init__.py | 7 | CODE | |
| LOW | backend/constants/__init__.py | 7 | CODE | |
| LOW | backend/constants/__init__.py | 7 | CODE | |
| LOW | backend/constants/__init__.py | 16 | CODE | |
| LOW | backend/constants/__init__.py | 16 | CODE | |
| LOW | backend/constants/__init__.py | 16 | CODE | |
| LOW | backend/constants/__init__.py | 16 | CODE | |
| LOW | backend/constants/__init__.py | 16 | CODE | |
| LOW | backend/constants/__init__.py | 16 | CODE | |
| LOW | backend/tests/conftest.py | 20 | CODE | |
| LOW | backend/tests/testsocketauth.py | 3 | CODE | |
| LOW | backend/tests/testsetup.py | 3 | CODE | |
| LOW | backend/tests/testoperations.py | 16 | CODE | |
| LOW | backend/tests/test_dispatcher.py | 3 | CODE | |
| LOW | backend/tests/test_crud_satellites.py | 20 | CODE | |
| LOW | backend/server/runtimestate.py | 6 | CODE | |
| LOW | backend/library/inventory.py | 8 | CODE | |
| LOW | backend/tracker/contracts.py | 23 | CODE | |
| LOW | backend/common/auth.py | 18 | CODE | |
| LOW | backend/common/pathguard.py | 1 | CODE | |
| LOW | backend/common/filenames.py | 1 | CODE | |
| LOW | backend/common/targetkey.py | 10 | CODE | |
| LOW | backend/common/appsettings.py | 18 | CODE | |
| LOW | backend/audio/audiobroadcaster.py | 27 | CODE | |
| LOW | backend/scripts/render_planet_icon.py | 4 | CODE | |
| LOW | backend/scripts/process_satellite_icons.py | 4 | CODE | |
| LOW | backend/crud/monitoredcelestial.py | 10 | CODE | |
| LOW | backend/crud/__init__.py | 1 | CODE | |
| LOW | backend/crud/__init__.py | 2 | CODE | |
| LOW | backend/crud/__init__.py | 3 | CODE | |
| 78 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/components/waterfall/waterfall-snapshot.js | 349 | // Step 1: Extract the main area (without left margin) to scale it | COMMENT |
| LOW | frontend/src/components/waterfall/waterfall-snapshot.js | 363 | // Step 2: Create final canvas with left margin at original size + scaled main area | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 406 | // Step 1: Capture waterfall canvas from worker | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 412 | // Step 2: Find overlay canvases | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 415 | // Step 3: Create composite canvas at original size | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 418 | // Step 4: Scale to target width (keeping left margin at original size) | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 421 | // Step 5: Convert to data URL | COMMENT |
| LOW | frontend/src/themes/README.md | 18 | ### Step 1: Define Theme Configuration | COMMENT |
| LOW | frontend/src/themes/README.md | 61 | ### Step 2: Add Translation Keys | COMMENT |
| LOW | frontend/src/themes/README.md | 76 | ### Step 3: Test Your Theme | COMMENT |
| LOW | backend/demodulators/ssbdemodulator.py | 412 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/ssbdemodulator.py | 461 | # Step 2: Decimate and filter to bandwidth (sideband selection done by filter) | COMMENT |
| LOW⚡ | backend/demodulators/ssbdemodulator.py | 491 | # Step 3: SSB demodulation | COMMENT |
| LOW⚡ | backend/demodulators/ssbdemodulator.py | 496 | # Step 4: Audio filtering | COMMENT |
| LOW⚡ | backend/demodulators/ssbdemodulator.py | 505 | # Step 5: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 381 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 423 | # Step 2: Decimate and filter to bandwidth | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 453 | # Step 3: AM demodulation (envelope detection) | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 458 | # Step 4: DC blocking | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 469 | # Step 5: Audio filtering | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 478 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW⚡ | backend/demodulators/fmdemodulator.py | 821 | # Step 3: FM demodulation | COMMENT |
| LOW⚡ | backend/demodulators/fmdemodulator.py | 826 | # Step 4: Audio filtering | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 727 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 781 | # Step 2: Multi-stage cascaded decimation | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 837 | # Step 5: De-emphasis | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 848 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW⚡ | backend/demodulators/fmstereodemodulator.py | 610 | # Step 3: FM demodulation (produces MPX signal) | COMMENT |
| LOW⚡ | backend/demodulators/fmstereodemodulator.py | 613 | # Step 4: Stereo decoding | COMMENT |
| LOW⚡ | backend/demodulators/fmstereodemodulator.py | 616 | # Step 5: De-emphasis (apply to both channels) | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 555 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 571 | # Step 2: Multi-stage cascaded decimation | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 631 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1183 | # Step 1: Frequency translation | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1187 | # Step 2: Multi-stage decimation | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1203 | # Step 3: FM demodulation | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1206 | # Step 4: Audio filtering | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1215 | # Step 5: De-emphasis | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1223 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW | backend/demodulators/sstvdecoder.py | 1234 | # Step 7: SSTV processing | COMMENT |
| LOW⚡ | backend/demodulators/loradecoder.py | 625 | # Step 1: Frequency translation to VFO center | COMMENT |
| LOW | backend/demodulators/loradecoder.py | 672 | # Step 2: Decimate using the fixed decimation factor calculated at init | COMMENT |
| LOW⚡ | backend/demodulators/bpskdecoder.py | 1062 | # Step 1: Frequency translation to put SIGNAL at baseband center | COMMENT |
| LOW⚡ | backend/demodulators/bpskdecoder.py | 1072 | # Step 2: Decimate to target sample rate | COMMENT |
| LOW | backend/demodulators/fskdecoder.py | 1107 | # Step 1: Frequency translation to put SIGNAL at baseband center | COMMENT |
| LOW | backend/demodulators/fskdecoder.py | 1121 | # Step 2: Decimate to target sample rate | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/components/waterfall/waterfall-snapshot.js | 349 | // Step 1: Extract the main area (without left margin) to scale it | COMMENT |
| LOW | frontend/src/components/waterfall/waterfall-snapshot.js | 363 | // Step 2: Create final canvas with left margin at original size + scaled main area | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 406 | // Step 1: Capture waterfall canvas from worker | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 412 | // Step 2: Find overlay canvases | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 415 | // Step 3: Create composite canvas at original size | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 418 | // Step 4: Scale to target width (keeping left margin at original size) | COMMENT |
| LOW⚡ | frontend/src/components/waterfall/waterfall-snapshot.js | 421 | // Step 5: Convert to data URL | COMMENT |
| LOW | backend/demodulators/ssbdemodulator.py | 412 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/ssbdemodulator.py | 461 | # Step 2: Decimate and filter to bandwidth (sideband selection done by filter) | COMMENT |
| LOW⚡ | backend/demodulators/ssbdemodulator.py | 491 | # Step 3: SSB demodulation | COMMENT |
| LOW⚡ | backend/demodulators/ssbdemodulator.py | 496 | # Step 4: Audio filtering | COMMENT |
| LOW⚡ | backend/demodulators/ssbdemodulator.py | 505 | # Step 5: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 381 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/amdemodulator.py | 423 | # Step 2: Decimate and filter to bandwidth | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 453 | # Step 3: AM demodulation (envelope detection) | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 458 | # Step 4: DC blocking | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 469 | # Step 5: Audio filtering | COMMENT |
| LOW⚡ | backend/demodulators/amdemodulator.py | 478 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW⚡ | backend/demodulators/fmdemodulator.py | 821 | # Step 3: FM demodulation | COMMENT |
| LOW⚡ | backend/demodulators/fmdemodulator.py | 826 | # Step 4: Audio filtering | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 727 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 781 | # Step 2: Multi-stage cascaded decimation | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 837 | # Step 5: De-emphasis | COMMENT |
| LOW | backend/demodulators/fmdemodulator.py | 848 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW⚡ | backend/demodulators/fmstereodemodulator.py | 610 | # Step 3: FM demodulation (produces MPX signal) | COMMENT |
| LOW⚡ | backend/demodulators/fmstereodemodulator.py | 613 | # Step 4: Stereo decoding | COMMENT |
| LOW⚡ | backend/demodulators/fmstereodemodulator.py | 616 | # Step 5: De-emphasis (apply to both channels) | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 555 | # Step 1: Frequency translation (tune to VFO frequency) | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 571 | # Step 2: Multi-stage cascaded decimation | COMMENT |
| LOW | backend/demodulators/fmstereodemodulator.py | 631 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1183 | # Step 1: Frequency translation | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1187 | # Step 2: Multi-stage decimation | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1203 | # Step 3: FM demodulation | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1206 | # Step 4: Audio filtering | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1215 | # Step 5: De-emphasis | COMMENT |
| LOW⚡ | backend/demodulators/sstvdecoder.py | 1223 | # Step 6: Resample to audio rate (44.1 kHz) | COMMENT |
| LOW | backend/demodulators/sstvdecoder.py | 1234 | # Step 7: SSTV processing | COMMENT |
| LOW⚡ | backend/demodulators/loradecoder.py | 625 | # Step 1: Frequency translation to VFO center | COMMENT |
| LOW | backend/demodulators/loradecoder.py | 672 | # Step 2: Decimate using the fixed decimation factor calculated at init | COMMENT |
| LOW⚡ | backend/demodulators/bpskdecoder.py | 1062 | # Step 1: Frequency translation to put SIGNAL at baseband center | COMMENT |
| LOW⚡ | backend/demodulators/bpskdecoder.py | 1072 | # Step 2: Decimate to target sample rate | COMMENT |
| LOW | backend/demodulators/fskdecoder.py | 1107 | # Step 1: Frequency translation to put SIGNAL at baseband center | COMMENT |
| LOW | backend/demodulators/fskdecoder.py | 1121 | # Step 2: Decimate to target sample rate | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/orbits/__init__.py | 34 | __all__ = [ | CODE |
| LOW | backend/tasks/__init__.py | 10 | __all__ = ["BackgroundTaskManager", "TaskInfo", "TaskStatus"] | CODE |
| LOW | backend/tools/shift_sigmf_iq.py | 11 | def _update_meta(meta_in_path: str, meta_out_path: str, shift_hz: float) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 290 | def set_sample_type_float32_iq(self) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 297 | def set_samplerate(self, samplerate_hz: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 304 | def set_frequency(self, frequency_hz: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 311 | def set_sensitivity_gain(self, value: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 318 | def set_linearity_gain(self, value: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 325 | def set_lna_gain(self, value: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 332 | def set_mixer_gain(self, value: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 339 | def set_vga_gain(self, value: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 346 | def set_lna_agc(self, enabled: bool) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 353 | def set_mixer_agc(self, enabled: bool) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 360 | def set_bias_t(self, enabled: bool) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 421 | def set_samplerate(self, samplerate_hz: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 428 | def set_frequency(self, frequency_hz: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 435 | def set_hf_agc(self, enabled: bool) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 442 | def set_hf_att(self, value: int) -> None: | CODE |
| LOW⚡ | backend/hardware/airspynative.py | 449 | def set_hf_lna(self, enabled: bool) -> None: | CODE |
| LOW⚡ | backend/hardware/soapysdrbrowser.py | 79 | def update_discovered_servers(servers_data: Dict[str, Dict[str, Any]]) -> None: | CODE |
| LOW | backend/demodulators/afskdecoder.py | 793 | __all__ = [ | CODE |
| LOW | backend/demodulators/gfskdecoder.py | 79 | __all__ = [ | CODE |
| LOW | backend/demodulators/aprsdecoder.py | 679 | __all__ = ["DecoderStatus", "APRSMessageHandler", "APRSFlowgraph", "APRSDecoder"] | CODE |
| LOW | backend/demodulators/geoscanimage.py | 559 | __all__ = [ | CODE |
| LOW | backend/demodulators/basedecoderprocess.py | 296 | __all__ = ["BaseDecoderProcess"] | CODE |
| LOW | backend/demodulators/gmskdecoder.py | 79 | __all__ = [ | CODE |
| LOW | backend/demodulators/basedecoder.py | 785 | __all__ = ["BaseDecoder"] | CODE |
| LOW | backend/constants/__init__.py | 25 | __all__ = [ | CODE |
| LOW | backend/tests/test_tracker_runner_slots.py | 66 | def _set_target_limit(monkeypatch, limit: int) -> None: | CODE |
| LOW | backend/server/schedulerstate.py | 15 | def set_scheduler_reference(instance: Optional[AsyncIOScheduler]) -> None: | CODE |
| LOW | backend/tracker/messages.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/common/auth.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/common/auth.py | 313 | def _set_setup_cache(value: bool) -> None: | CODE |
| LOW | backend/db/__init__.py | 40 | def _set_sqlite_pragmas(dbapi_connection, connection_record) -> None: | CODE |
| LOW | backend/workers/rtlsdrtcpclient.py | 294 | def set_gain_mode(self, manual: bool = True) -> None: | CODE |
| LOW | backend/workers/rtlsdrtcpclient.py | 304 | def set_manual_gain_enabled(self, enabled: bool = True) -> None: | CODE |
| LOW | backend/workers/rtlsdrtcpclient.py | 330 | def set_agc_mode(self, enable: bool = True) -> None: | CODE |
| LOW | backend/workers/rtlsdrtcpclient.py | 344 | def set_tuner_agc(self, enable: bool = True) -> None: | CODE |
| LOW | backend/workers/rtlsdrtcpclient.py | 373 | def set_direct_sampling(self, mode: int) -> None: | CODE |
| LOW | backend/workers/rtlsdrtcpclient.py | 393 | def set_offset_tuning(self, enable: bool = True) -> None: | CODE |
| LOW | backend/workers/rtlsdrtcpclient.py | 407 | def set_bias_tee(self, enable: bool = True) -> None: | CODE |
| LOW | backend/telemetry/__init__.py | 12 | __all__ = ["TelemetryParser", "AX25Parser", "APRSParser"] | CODE |
| LOW | backend/telemetry/aprsparser.py | 321 | __all__ = ["APRSParser"] | CODE |
| LOW⚡ | backend/telemetry/parsers/colibri_s.py | 234 | __all__ = ["ColibriSGeoscanAx25Parser"] | CODE |
| LOW | backend/telemetry/parsers/__init__.py | 16 | __all__ = [ | CODE |
| LOW | backend/telemetry/parsers/rs52s.py | 131 | __all__ = ["RS52SGeoscanAx25Parser"] | CODE |
| LOW | backend/controllers/__init__.py | 14 | __all__ = ["RigController", "RotatorController", "SDRController"] | CODE |
| LOW | backend/handlers/__init__.py | 36 | __all__ = ["run_async_in_thread", "handler_registry", "HandlerRegistry", "dispatch_request"] | CODE |
| LOW | backend/handlers/routing/__init__.py | 19 | __all__ = ["HandlerRegistry", "handler_registry", "dispatch_request", "get_auth_context"] | CODE |
| LOW⚡ | backend/handlers/entities/setup.py | 151 | def _set_step(step_key: str, status: str, detail: str = "") -> None: | CODE |
| LOW | backend/session/tracker.py | 181 | def set_session_ip(self, session_id: str, ip_address: Optional[str]) -> None: | CODE |
| LOW | backend/session/tracker.py | 213 | def set_session_vfo(self, session_id: str, vfo_id: str) -> None: | CODE |
| LOW | backend/session/tracker.py | 233 | def set_session_vfo_int(self, session_id: str, vfo_number: Optional[int]) -> None: | CODE |
| LOW | backend/session/tracker.py | 246 | def set_session_rig(self, session_id: str, rig_id: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/pipeline/config/decoderconfigservice.py | 64 | Resolve decoder configuration from multiple sources. Args: decoder_type: Decoder type ('gm | STRING |
| HIGH | backend/tasks/registry.py | 34 | Get a task function by name. Args: task_name: Name of the registered task Returns: Task f | STRING |
| HIGH | backend/tasks/manager.py | 207 | Start a new background task. Args: func: Python function to execute args: Posi | STRING |
| HIGH | backend/server/snapshots.py | 32 | Save a waterfall snapshot image to disk. Args: waterfall_image: Base64-encoded image data URL (format: | STRING |
| HIGH | backend/server/recorder.py | 46 | Start IQ recording for a given SDR and client. Args: sdr_id: SDR device identifier client_id: | STRING |
| HIGH | backend/server/recorder.py | 149 | Stop IQ recording for a given SDR and client. Args: sdr_id: SDR device identifier client_id: C | STRING |
| HIGH | backend/server/audiorecorder.py | 43 | Start audio recording for a VFO. Args: sdr_id: SDR device identifier client_id: Client session | STRING |
| HIGH | backend/server/audiorecorder.py | 129 | Stop audio recording for a VFO. Args: sdr_id: SDR device identifier client_id: Client session | STRING |
| HIGH | backend/workers/rtlsdrtcpclient.py | 432 | Reads the specified number of complex samples from the SDR. Args: num_samples: The number | STRING |
| HIGH | backend/satconfig/config.py | 185 | Get decoder parameters for a satellite, with priority system: 1. User overrides (if exist) 2. g | STRING |
| HIGH | backend/tlesync/utils.py | 217 | Extracts the NORAD ID from a TLE (Two-Line Element) string. Parameters: tle (str): A TLE string that m | STRING |
| HIGH | backend/handlers/entities/decoderconfig.py | 26 | Get decoder configuration for a satellite/transmitter combination. This handler exposes the DecoderConfigServi | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/demodulators/morsedecoder.py | 228 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 229 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 232 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 236 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 237 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 240 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 241 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 242 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 245 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 246 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 247 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 249 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 253 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 254 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 255 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 259 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 276 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 282 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 286 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 289 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 293 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 296 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 297 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 299 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 309 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 312 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 314 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 342 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 343 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 347 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 350 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 351 | CODE | |
| MEDIUM | backend/demodulators/morsedecoder.py | 359 | CODE | |
| MEDIUM | backend/tests/test_tracker_rotator_azimuth_mode.py | 774 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/src/components/waterfall/vfo-marker/vfo-container.jsx | 317 | // Trim to last 300 chars as requested, then take last 30 for display | COMMENT |
| HIGH | …nd/src/components/earthview/earthview-map-maplibre.jsx | 482 | // Keep map zoom levels (including negative zoom) as requested by user controls. | COMMENT |
| HIGH | backend/tracking/passes.py | 16 | # This file contains code partially generated by Claude 3.7 Sonnet. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ponents/celestial/__tests__/catalog-page-race.test.jsx | 367 | const createRequests = socketState.socket.emit.mock.calls.filter( | CODE |
| CRITICAL | …ponents/celestial/__tests__/catalog-page-race.test.jsx | 387 | const refreshRequests = socketState.socket.emit.mock.calls.filter( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/tools/import_satdump_website_transmitters.py | 143 | help="Service label for inserted rows (default: null)", | CODE |
| HIGH | backend/handlers/entities/tracking.py | 965 | "command": null, | STRING |
| HIGH | backend/handlers/entities/tracking.py | 966 | "body_id": null, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/demodulators/loradecoder.py | 694 | # Build comprehensive LoRa parameter string | COMMENT |
| MEDIUM⚡ | backend/demodulators/loradecoder.py | 938 | """Return comprehensive LoRa decoder configuration metadata.""" | STRING |
| MEDIUM | backend/session/tracker.py | 459 | # Be robust to untyped/None ids coming from process_manager | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/demodulators/afskdecoder.py | 167 | CODE | |
| LOW | backend/demodulators/loradecoder.py | 81 | CODE | |
| LOW | backend/demodulators/aprsdecoder.py | 109 | CODE | |
| LOW | backend/demodulators/bpskdecoder.py | 202 | CODE | |
| LOW | backend/demodulators/fskdecoder.py | 176 | CODE | |
| LOW | backend/fft/waterfallgenerator.py | 69 | CODE | |
| LOW | backend/vfos/state.py | 75 | CODE | |
| LOW | backend/vfos/state.py | 364 | CODE | |
| LOW | backend/session/tracker.py | 118 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/server/scheduler.py | 476 | # Primary restart mechanism is event-driven via data_queue (immediate response) | COMMENT |