0000000000000000000000000000000000000000 f94510c048aef1d3aed53a2292bb2b7ae687533a Jan Svabenik <jan@svabi.ch> 1773737556 +0100	commit (initial): Initial SDR visual suite
f94510c048aef1d3aed53a2292bb2b7ae687533a 8c762a0691efca1fb13e063041778808a671d5c1 Jan Svabenik <jan@svabi.ch> 1773737955 +0100	commit: Add events API and timeline UI
8c762a0691efca1fb13e063041778808a671d5c1 d1ea21181f753e26bc34f8a6025f1a43208986b1 Jan Svabenik <jan@svabi.ch> 1773739400 +0100	commit: Add UI controls and runtime SDR settings
d1ea21181f753e26bc34f8a6025f1a43208986b1 866b7efb06ffe190429f101eccd691fec7444922 Jan Svabenik <jan@svabi.ch> 1773739523 +0100	commit: Fix SDRplay update call for Windows API
866b7efb06ffe190429f101eccd691fec7444922 57f9b6d8cc8ca36773aacd7b56819fb7077562dd Jan Svabenik <jan@svabi.ch> 1773740356 +0100	commit: Split span zoom from sample rate control
57f9b6d8cc8ca36773aacd7b56819fb7077562dd baa59145a7301263a6c116c43e48f726fa1f8567 Jan Svabenik <jan@svabi.ch> 1773740598 +0100	commit: Add larger FFT size options
baa59145a7301263a6c116c43e48f726fa1f8567 bdde6e731229838e82993bc3d7e4a41288b8987a Jan Svabenik <jan@svabi.ch> 1773740987 +0100	commit: Improve spectrum rendering with per-pixel peak aggregation
bdde6e731229838e82993bc3d7e4a41288b8987a d73c58d86904dba390e24de085f81282893ff4fc Jan Svabenik <jan@svabi.ch> 1773741404 +0100	commit: Invert gain control for SDRplay gain reduction
d73c58d86904dba390e24de085f81282893ff4fc 270ebf3c27c68699ff75b99421c22809e393919f Jan Svabenik <jan@svabi.ch> 1773741881 +0100	commit: Accumulate IQ samples to match FFT size
270ebf3c27c68699ff75b99421c22809e393919f 1d9e912e28dc3112e9e3eb348bd6ddbb2019a4ae Jan Svabenik <jan@svabi.ch> 1773742421 +0100	commit: Reset IQ buffer on SDRplay stream reset
1d9e912e28dc3112e9e3eb348bd6ddbb2019a4ae 4f034f17e80f78e9d0f5deed174b398912c74281 Jan Svabenik <jan@svabi.ch> 1773742953 +0100	commit: Add averaging/max-hold and tuner bandwidth control
4f034f17e80f78e9d0f5deed174b398912c74281 56b9747f8e13a566f7829543e7dd75bff49cac31 Jan Svabenik <jan@svabi.ch> 1773748703 +0100	commit: Add ring buffer stats and tuning controls
56b9747f8e13a566f7829543e7dd75bff49cac31 6dcedf67446c00f439f743768586585079d53a75 Jan Svabenik <jan@svabi.ch> 1773771803 +0100	commit: Add optional cuFFT GPU FFT path
6dcedf67446c00f439f743768586585079d53a75 5e13c7397012e358bf755d4af23559d454f72741 Jan Svabenik <jan@svabi.ch> 1773772627 +0100	commit: Link cuFFT with mingw import libs
5e13c7397012e358bf755d4af23559d454f72741 28a541008d02290c61710db0999ce5aae1904bc5 Jan Svabenik <jan@svabi.ch> 1773772732 +0100	commit: Enable GPU FFT in config
28a541008d02290c61710db0999ce5aae1904bc5 5443bf3f979bf4c6a2e5d17c2e03db4c7c525d28 Jan Svabenik <jan@svabi.ch> 1773773090 +0100	commit: Flush IQ buffer on FFT reconfig
5443bf3f979bf4c6a2e5d17c2e03db4c7c525d28 039df0962c048dfde9eaebba3f3e996f6d7b0d29 Jan Svabenik <jan@svabi.ch> 1773773233 +0100	commit: Add start script
039df0962c048dfde9eaebba3f3e996f6d7b0d29 956f06e612ee8d87482a0c88059f92c8c9144cf1 Jan Svabenik <jan@svabi.ch> 1773773510 +0100	commit: Auto-restart on IQ timeout and report last-sample age
956f06e612ee8d87482a0c88059f92c8c9144cf1 4006fe2d04aeb031fd0d5936c5ab838e39eda14b Jan Svabenik <jan@svabi.ch> 1773775799 +0100	commit: Avoid indefinite ReadIQ waits when callbacks stop
4006fe2d04aeb031fd0d5936c5ab838e39eda14b d71f03022c91f979c7c86b107bee893a73bd55a8 Jan Svabenik <jan@svabi.ch> 1773776158 +0100	commit: Fix runDSP restart/flush wiring
d71f03022c91f979c7c86b107bee893a73bd55a8 2a3d92b3807e740f508912436aa359f5bcfa6ebc Jan Svabenik <jan@svabi.ch> 1773777091 +0100	commit: Add periodic stats logging
2a3d92b3807e740f508912436aa359f5bcfa6ebc 014ab3e06c9cb17e29f7dbea87c7d88823cf17f3 Jan Svabenik <jan@svabi.ch> 1773777444 +0100	commit: Use cond.Wait with timeout in ReadIQ
014ab3e06c9cb17e29f7dbea87c7d88823cf17f3 fe6e9e3036381f6290af4a26b31a35c7200d38ae Jan Svabenik <jan@svabi.ch> 1773778016 +0100	commit: Fix SDRplay stop deadlock and websocket backpressure
fe6e9e3036381f6290af4a26b31a35c7200d38ae ecd3e4d016c8d8187a54bac955a206da8232fa23 Jan Svabenik <jan@svabi.ch> 1773778558 +0100	commit: Fix SDRplay init/stop leaks and stats endpoint
ecd3e4d016c8d8187a54bac955a206da8232fa23 514d5abf286064264ab52a53822cc139105ce4be Jan Svabenik <jan@svabi.ch> 1773779052 +0100	commit: Fix SDRplay cleanup and reuse FFT plan
514d5abf286064264ab52a53822cc139105ce4be 9a47140b89875d56e611025372b216076338b195 Jan Svabenik <jan@svabi.ch> 1773780354 +0100	commit: Harden runtime validation and event/websocket handling
9a47140b89875d56e611025372b216076338b195 2a06225a0d8177082232b6acd8b04c417b8ecac5 Jan Svabenik <jan@svabi.ch> 1773782001 +0100	commit: Fix websocket writes, validation, and GPU FFT safety
2a06225a0d8177082232b6acd8b04c417b8ecac5 b96434484a55066be2890b79a605cd836ee1f1d2 Jan Svabenik <jan@svabi.ch> 1773811666 +0100	commit: Add classifier scaffold and attach to signals/events
b96434484a55066be2890b79a605cd836ee1f1d2 327f220da130b481e352de6c71106d8e5b95670d Jan Svabenik <jan@svabi.ch> 1773812105 +0100	commit: Add recorder ring buffer and IQ recording policy
327f220da130b481e352de6c71106d8e5b95670d 6e3b602a203f2556e6e1e5c5f623f488c7380c08 Jan Svabenik <jan@svabi.ch> 1773812410 +0100	commit: Add DSP band-extract and demodulators with WAV output
6e3b602a203f2556e6e1e5c5f623f488c7380c08 6ef106577c17b2489a51d28e4461fbc810bfe460 Jan Svabenik <jan@svabi.ch> 1773813887 +0100	commit: Add WFM stereo decode and RDS baseband output
6ef106577c17b2489a51d28e4461fbc810bfe460 c85debde3aaeccb3752a5edc8f6c38b7f4c515d0 Jan Svabenik <jan@svabi.ch> 1773813992 +0100	commit: Add recordings API endpoints
c85debde3aaeccb3752a5edc8f6c38b7f4c515d0 40f62f85798151e1f37180956254e8bbbee36fc4 Jan Svabenik <jan@svabi.ch> 1773814095 +0100	commit: Add live demod endpoint for recent IQ
40f62f85798151e1f37180956254e8bbbee36fc4 d86d53b44fd6b420f0d48d3d9d313b2e5faa770e Jan Svabenik <jan@svabi.ch> 1773814177 +0100	commit: Add basic RDS decoding placeholders
d86d53b44fd6b420f0d48d3d9d313b2e5faa770e 112264d3aa8a15d8d27eb7cb53ca5a4dedab16ef Jan Svabenik <jan@svabi.ch> 1773814390 +0100	commit: Add UI live listen and class labels
112264d3aa8a15d8d27eb7cb53ca5a4dedab16ef cbb0fe7dfb0a118102e24191944ecc04e03ce0c2 Jan Svabenik <jan@svabi.ch> 1773814567 +0100	commit: Add recordings list to UI
cbb0fe7dfb0a118102e24191944ecc04e03ce0c2 e11aa95d8b7e4e9e66fc8d89c1ecd42721014795 Jan Svabenik <jan@svabi.ch> 1773814908 +0100	commit: Improve RDS decode with block sync and RT
e11aa95d8b7e4e9e66fc8d89c1ecd42721014795 9d96de57b690f71602141b4a0322308db9495b9b Jan Svabenik <jan@svabi.ch> 1773815123 +0100	commit: Add temporal IQ features to classifier
9d96de57b690f71602141b4a0322308db9495b9b 1365b00343e42d5ec5a8611bf1a63c0d173efbed Jan Svabenik <jan@svabi.ch> 1773815282 +0100	commit: Refine classifier rules with temporal hints
1365b00343e42d5ec5a8611bf1a63c0d173efbed 3b2a0ee976029b41cd7406bdac3b5b30a198d980 Jan Svabenik <jan@svabi.ch> 1773815383 +0100	commit: Add digital mode labels to classifier
3b2a0ee976029b41cd7406bdac3b5b30a198d980 fb7591ce4ce01aec343ce89168273bcb1acc5e8e Jan Svabenik <jan@svabi.ch> 1773815496 +0100	commit: Add recording links in inspector
fb7591ce4ce01aec343ce89168273bcb1acc5e8e c0e5fbaa70265563ac93a53bc55461686a1a354a Jan Svabenik <jan@svabi.ch> 1773815835 +0100	commit: Add external decoder command scaffolding
c0e5fbaa70265563ac93a53bc55461686a1a354a effb5d9f2db2a5a9041ddf196d8c43ad9ab09372 Jan Svabenik <jan@svabi.ch> 1773815931 +0100	commit: Add on-demand decode endpoint
effb5d9f2db2a5a9041ddf196d8c43ad9ab09372 9a61060af81282413880b534d695b5bc30ab6059 Jan Svabenik <jan@svabi.ch> 1773816121 +0100	commit: Document recorder and decoder config
9a61060af81282413880b534d695b5bc30ab6059 7dd0fd5e3b55c0cca5b3ff3778a69af29f71b99a Jan Svabenik <jan@svabi.ch> 1773816271 +0100	commit: Add decode button and result in UI
7dd0fd5e3b55c0cca5b3ff3778a69af29f71b99a f306cb3379acc61e5422e0773a3421b184be667d Jan Svabenik <jan@svabi.ch> 1773816443 +0100	commit: Link recordings to events in UI
f306cb3379acc61e5422e0773a3421b184be667d d4ea5a0de7fba33599a5a4c5e7f947de3bb15bbc Jan Svabenik <jan@svabi.ch> 1773816626 +0100	commit: Add decode mode selector in UI
d4ea5a0de7fba33599a5a4c5e7f947de3bb15bbc 9942ee611a5e57a24de6dbaade861dce20794cd5 Jan Svabenik <jan@svabi.ch> 1773816751 +0100	commit: Add decoder tool stubs and refresh README
9942ee611a5e57a24de6dbaade861dce20794cd5 69a872847cdcd663559988ec44e34055e525b66d Jan Svabenik <jan@svabi.ch> 1773816844 +0100	commit: Add live listen mode and duration controls
69a872847cdcd663559988ec44e34055e525b66d 12b4f0e2bf6f9d850d0ad6e0f868ed5d7a32f291 Jan Svabenik <jan@svabi.ch> 1773816898 +0100	commit: Show recording meta in UI
12b4f0e2bf6f9d850d0ad6e0f868ed5d7a32f291 037e9c16a2e94906a82534f571bb4d0db33044c9 Jan Svabenik <jan@svabi.ch> 1773822574 +0100	commit: Allow runtime updates to recorder config
037e9c16a2e94906a82534f571bb4d0db33044c9 f27788249b7b5ea3e80d547cb80a606e38dd3808 Jan Svabenik <jan@svabi.ch> 1773822767 +0100	commit: Add recorder controls to UI
f27788249b7b5ea3e80d547cb80a606e38dd3808 d7f91011bd5db42538f196196ab72c2903c53c52 Jan Svabenik <jan@svabi.ch> 1773823314 +0100	commit: Update UI styling and guard SDRplay callback on stop
d7f91011bd5db42538f196196ab72c2903c53c52 0bf08286139fba1c33ccbb8cd9dd8e6f239503a5 Jan Svabenik <jan@svabi.ch> 1773823378 +0100	commit: Ignore UI draft folders and archives
0bf08286139fba1c33ccbb8cd9dd8e6f239503a5 7b42b8885276dd3c3b475087e854c5f6ec295829 Jan Svabenik <jan@svabi.ch> 1773823594 +0100	commit: Add /api/signals endpoint
7b42b8885276dd3c3b475087e854c5f6ec295829 5573df20de71afd3f18ea470d9d628ab31de5e7c Jan Svabenik <jan@svabi.ch> 1773823774 +0100	commit: Poll /api/signals for UI list
5573df20de71afd3f18ea470d9d628ab31de5e7c 670229b1bb4c4babffdfdc0013c690a3fc5d58dc Jan Svabenik <jan@svabi.ch> 1773825292 +0100	commit: Clamp live demod duration
670229b1bb4c4babffdfdc0013c690a3fc5d58dc c3b1ae51ff3eb7f850dd3d3833b53a1d4a3731dc Jan Svabenik <jan@svabi.ch> 1773825387 +0100	commit: Validate live demod mode
c3b1ae51ff3eb7f850dd3d3833b53a1d4a3731dc 4c4fd259776c179304f4f8ba50c08ff9d7439e2a Jan Svabenik <jan@svabi.ch> 1773825450 +0100	commit: Document signals API
4c4fd259776c179304f4f8ba50c08ff9d7439e2a 04ad3e2dd845734acf61e3c48cbac3de582cd4c3 Jan Svabenik <jan@svabi.ch> 1773825671 +0100	commit: Expose decoder list API and populate UI
04ad3e2dd845734acf61e3c48cbac3de582cd4c3 3ed2b8a3e3334adbc5e9cc5347061bd02778be69 Jan Svabenik <jan@svabi.ch> 1773826052 +0100	commit: Add recorder disk quota enforcement
3ed2b8a3e3334adbc5e9cc5347061bd02778be69 b8341c782db510d173b2185a1e8bc6badf3ad363 Jan Svabenik <jan@svabi.ch> 1773826287 +0100	commit: Tune demod decimation for audio sample rates
b8341c782db510d173b2185a1e8bc6badf3ad363 5597c507aba22cfd490030ddf67006fe9e2671d7 Jan Svabenik <jan@svabi.ch> 1773826363 +0100	commit: Add recorder class filter control
5597c507aba22cfd490030ddf67006fe9e2671d7 dd9219935e4d68e498a2c83b499b4b0d13a65658 Jan Svabenik <jan@svabi.ch> 1773826878 +0100	commit: Add WFM de-emphasis and stabilize live audio playback
dd9219935e4d68e498a2c83b499b4b0d13a65658 d0ed1c4d94261a63e75708e7e30026ad65980766 Jan Svabenik <jan@svabi.ch> 1773827638 +0100	commit: Support audio-based decoders and document tools
d0ed1c4d94261a63e75708e7e30026ad65980766 865d52dee1e4a884bd87b34681044a31cbde0488 Jan Svabenik <jan@svabi.ch> 1773827977 +0100	commit: Wire WSJT decoders and map digital modes to USB
865d52dee1e4a884bd87b34681044a31cbde0488 4b736b897b49b98ce2048fed234e8efd3b3c0c31 Jan Svabenik <jan@svabi.ch> 1773828386 +0100	commit: Add build script for SDRplay
4b736b897b49b98ce2048fed234e8efd3b3c0c31 06ce381bb9a10e94f5b30b187309d8e5c185a44c Jan Svabenik <jan@svabi.ch> 1773828784 +0100	commit: Allow websocket connections from any origin
06ce381bb9a10e94f5b30b187309d8e5c185a44c f654dfeb51e11e933a04f620c5b79e29e30cb784 Jan Svabenik <jan@svabi.ch> 1773834051 +0100	commit: Fix frontend corruption and recorder/classifier issues
f654dfeb51e11e933a04f620c5b79e29e30cb784 2dd0dfa302b80b613474076ff93b5a5680d0ba29 Jan Svabenik <jan@svabi.ch> 1773835930 +0100	commit: Add ws debug logs and fix classifier/recorder issues
2dd0dfa302b80b613474076ff93b5a5680d0ba29 f73843691a25351b8544dea84a7579bbd59516d2 Jan Svabenik <jan@svabi.ch> 1773836302 +0100	commit: Add runDSP panic recovery and WS debug logging
f73843691a25351b8544dea84a7579bbd59516d2 b9e84e4d4a35d0e4b112dab6ddedf20c63a2a4db Jan Svabenik <jan@svabi.ch> 1773836790 +0100	commit: Restore loadDecoders and fix live listen controls
b9e84e4d4a35d0e4b112dab6ddedf20c63a2a4db d21d1e76cf37bc0df9a38e3c0dc4ac6f0a3f2825 Jan Svabenik <jan@svabi.ch> 1773837529 +0100	commit: Build SDRplay with CUDA by default
d21d1e76cf37bc0df9a38e3c0dc4ac6f0a3f2825 0dc8defefef09b413c056ce8e7b895a0e84b5ee6 Jan Svabenik <jan@svabi.ch> 1773837704 +0100	commit: Update CUDA paths in build script
0dc8defefef09b413c056ce8e7b895a0e84b5ee6 533b71e4adb73898b13842b36d1078c3cb122b7d Jan Svabenik <jan@svabi.ch> 1773837743 +0100	commit: Use 8.3 CUDA paths for CGO flags
533b71e4adb73898b13842b36d1078c3cb122b7d 7a89e65144327b6104004b79bfbc11f54d4384ae Jan Svabenik <jan@svabi.ch> 1773837930 +0100	commit: Prefer C:\\CUDA in build script
7a89e65144327b6104004b79bfbc11f54d4384ae a5beede68ae01270f22139bcdc36f7a28b58c9cc Jan Svabenik <jan@svabi.ch> 1773837988 +0100	commit: Fix CUDA flags quoting
a5beede68ae01270f22139bcdc36f7a28b58c9cc 4a57a4c76ba7064af869b2ee6c7cea1bbe455b9f Jan Svabenik <jan@svabi.ch> 1773838064 +0100	commit: Add cuda-mingw lib path to build script
4a57a4c76ba7064af869b2ee6c7cea1bbe455b9f 0027a5035bde6839eee7a0f250abf2ac43897ba0 Jan Svabenik <jan@svabi.ch> 1773838120 +0100	commit: Use cuda-mingw import libs when available
0027a5035bde6839eee7a0f250abf2ac43897ba0 81c481bb64163d495ee344baaea964442b3c7ccb Jan Svabenik <jan@svabi.ch> 1773839806 +0100	commit: Add EMA smoothing and hysteresis to detector
81c481bb64163d495ee344baaea964442b3c7ccb 4332cc09aa755b1b18aabbd8e421b16cb8f85359 Jan Svabenik <jan@svabi.ch> 1773840860 +0100	commit: Add detector stability and gap tolerance controls
4332cc09aa755b1b18aabbd8e421b16cb8f85359 30885695e622ec7f266799c4687e67791b7d8037 Jan Svabenik <jan@svabi.ch> 1773842732 +0100	commit: Persist config updates and add detector stability controls
30885695e622ec7f266799c4687e67791b7d8037 434ad279deed28e0d23fd6c21581841c9c6dbd87 Jan Svabenik <jan@svabi.ch> 1773844223 +0100	commit: Add OS-CFAR detector support
434ad279deed28e0d23fd6c21581841c9c6dbd87 ef852b80d733d6975266fa0b4df721da6cd3f2cb Jan Svabenik <jan@svabi.ch> 1773875965 +0100	commit: Fix SDR v6 report issues (UI listeners, validation, autosave, perf)
ef852b80d733d6975266fa0b4df721da6cd3f2cb f90c866193264b15bd42f56bf6a0407b82dbfc39 Jan Svabenik <jan@svabi.ch> 1773876187 +0100	commit: Improve CFAR UI, CFAR perf, classifier gaps
f90c866193264b15bd42f56bf6a0407b82dbfc39 342843a46a26603a80a5222d2d8066a8fd8159f8 Jan Svabenik <jan@svabi.ch> 1773876360 +0100	commit: Add CFAR edge overlay to waterfall and refine classifier voting
342843a46a26603a80a5222d2d8066a8fd8159f8 1e2d6a471253498b6e776c6d571b6bde75271d86 Jan Svabenik <jan@svabi.ch> 1773876770 +0100	commit: Add CFAR legend, classifier scores, and reorder settings
1e2d6a471253498b6e776c6d571b6bde75271d86 81c543ac09d6d79cb48f71fde11baf1de4839bb6 Jan Svabenik <jan@svabi.ch> 1773896108 +0100	commit: Fix CFAR integration and detector scale
81c543ac09d6d79cb48f71fde11baf1de4839bb6 178d6b2dc61a4e008d004d828333674e25924328 Jan Svabenik <jan@svabi.ch> 1773896532 +0100	commit: Update CFAR UI controls
178d6b2dc61a4e008d004d828333674e25924328 e4fc5d0d19292ee8f85f263fd5b8298efc00d674 Jan Svabenik <jan@svabi.ch> 1773896745 +0100	commit: Ignore autosave config
e4fc5d0d19292ee8f85f263fd5b8298efc00d674 d461c91e229fb6b6fbd92926b89d141adec64a55 Jan Svabenik <jan@svabi.ch> 1773899489 +0100	commit: fix: harden CFAR thresholds and async event handoff
d461c91e229fb6b6fbd92926b89d141adec64a55 66f7b1d6823c9d1ad1ffef46372c24363de3591d Jan Svabenik <jan@svabi.ch> 1773899715 +0100	commit: feat: expose and render CFAR thresholds
66f7b1d6823c9d1ad1ffef46372c24363de3591d ea7247da2834cd9f65981ab7e89b699039589545 Jan Svabenik <jan@svabi.ch> 1773900001 +0100	commit: refactor: simplify detector config and confidence scoring
ea7247da2834cd9f65981ab7e89b699039589545 f02defe8a58e08d3d6e349fd6439d6ad31b4e602 Jan Svabenik <jan@svabi.ch> 1773900633 +0100	commit: feat: add live debug block to spectrum frames
f02defe8a58e08d3d6e349fd6439d6ad31b4e602 8e4e7f9d28ad7b5df6c09be0e9333b4a0b4d296f Jan Svabenik <jan@svabi.ch> 1773901085 +0100	commit: feat: add debug overlay toggle and score bars
8e4e7f9d28ad7b5df6c09be0e9333b4a0b4d296f ac7fccaa5fdb496c1a84fda1b1761a382811d9d6 Jan Svabenik <jan@svabi.ch> 1773901279 +0100	commit: feat: add signal popovers and persist debug overlay
ac7fccaa5fdb496c1a84fda1b1761a382811d9d6 b011378b284231e43fd1f0319eec3ff1c22a350e Jan Svabenik <jan@svabi.ch> 1773901450 +0100	commit: refactor: split DSP loop and helpers from main
b011378b284231e43fd1f0319eec3ff1c22a350e 6d99631a4be7d15acd52fe64b8d0a684b683d4cb Jan Svabenik <jan@svabi.ch> 1773901583 +0100	commit: refactor: split HTTP and websocket handlers from main
6d99631a4be7d15acd52fe64b8d0a684b683d4cb 44af801f3dcdcc656940f0a318f264ce9c1fbdb3 Jan Svabenik <jan@svabi.ch> 1773901826 +0100	commit: fix: restore gui startup after debug ui changes
44af801f3dcdcc656940f0a318f264ce9c1fbdb3 fb0b6675c8c5b5e301bafa319839ed0110ffbeca Jan Svabenik <jan@svabi.ch> 1773902111 +0100	commit: fix: read CFAR debug state from live frame
fb0b6675c8c5b5e301bafa319839ed0110ffbeca 06b2a9a1d7c8fb7d5a413206870f01b997daf28a Jan Svabenik <jan@svabi.ch> 1773902277 +0100	commit: fix: polish gui labels and popover layout
06b2a9a1d7c8fb7d5a413206870f01b997daf28a ac01a652dc2d53120e4c74633e39ea374e627276 Jan Svabenik <jan@svabi.ch> 1773902441 +0100	commit: fix: refine signal popover hover behavior
ac01a652dc2d53120e4c74633e39ea374e627276 ddf2c1d7d5b4e837ad7615b70fe022cf498598a0 Jan Svabenik <jan@svabi.ch> 1773902909 +0100	commit: feat: add phase 1 CUDA demod scaffold
ddf2c1d7d5b4e837ad7615b70fe022cf498598a0 c5d2e869011d27e60b165049d481d6f4fc237715 Jan Svabenik <jan@svabi.ch> 1773902998 +0100	commit: refactor: tighten CUDA demod engine gating
c5d2e869011d27e60b165049d481d6f4fc237715 f5ab4148479769f9ffa2e5608a5c10d5346a1c58 Jan Svabenik <jan@svabi.ch> 1773903130 +0100	commit: feat: prepare CUDA demod launch boundary
f5ab4148479769f9ffa2e5608a5c10d5346a1c58 a64b776fc3d79f66d4e4f037706cd8d4ea6e4a3b Jan Svabenik <jan@svabi.ch> 1773903310 +0100	commit: refactor: reuse shifted IQ from CUDA path
a64b776fc3d79f66d4e4f037706cd8d4ea6e4a3b 768fb0ee3ef119db280be79542fe8c3a44b31bc4 Jan Svabenik <jan@svabi.ch> 1773903395 +0100	commit: docs: add initial CUDA demod kernel source
768fb0ee3ef119db280be79542fe8c3a44b31bc4 2f286aec75c20841667ce2b2a4c219d09f998ac3 Jan Svabenik <jan@svabi.ch> 1773903595 +0100	commit: build: add CUDA demod kernel build helper
2f286aec75c20841667ce2b2a4c219d09f998ac3 cc952a0c59242258d96e1b63193efd3e9a4e9737 Jan Svabenik <jan@svabi.ch> 1773903835 +0100	commit: build: wire CUDA demod package through nvcc and MSVC
cc952a0c59242258d96e1b63193efd3e9a4e9737 2c900988d29c0560feb4f4850f5ec1d5dae30882 Jan Svabenik <jan@svabi.ch> 1773904004 +0100	commit: feat: wire CUDA freq-shift launcher
2c900988d29c0560feb4f4850f5ec1d5dae30882 b4a9c48af71500c6f0bb0b1e6c2e8bee97cdcb78 Jan Svabenik <jan@svabi.ch> 1773904121 +0100	commit: feat: validate CUDA freq-shift output
b4a9c48af71500c6f0bb0b1e6c2e8bee97cdcb78 123207f977111a74ad60b833f72b89345f471c1c Jan Svabenik <jan@svabi.ch> 1773904365 +0100	commit: feat: extend CUDA demod telemetry and FM kernel prep
123207f977111a74ad60b833f72b89345f471c1c 361bdc9048daae95846b25c3711b23a78c9441dc Jan Svabenik <jan@svabi.ch> 1773904468 +0100	commit: feat: add GPU FM discriminator path
361bdc9048daae95846b25c3711b23a78c9441dc f4f0e07e0ab73a2f55e7931cd21a1bf100922d9a Jan Svabenik <jan@svabi.ch> 1773904767 +0100	commit: feat: extend gpudemod to multiple demod modes
f4f0e07e0ab73a2f55e7931cd21a1bf100922d9a 2efae6fd9cecd09082c47e3f9fa9096f119d69cf Jan Svabenik <jan@svabi.ch> 1773905394 +0100	commit: feat: add CUDA decimate preparation path
2efae6fd9cecd09082c47e3f9fa9096f119d69cf 8033e1423866aa54cdd7e9c5647fb9938ae0d5e5 Jan Svabenik <jan@svabi.ch> 1773905769 +0100	commit: feat: add CUDA FIR preparation path
8033e1423866aa54cdd7e9c5647fb9938ae0d5e5 6dabe6768a0c35dc6e544d6db190c9c53ef41eaa Jan Svabenik <jan@svabi.ch> 1773905972 +0100	commit: feat: add demod validation and GPU mode telemetry
6dabe6768a0c35dc6e544d6db190c9c53ef41eaa 3e3bc0aaed8e979f4e14708b6b450fce0d631b28 Jan Svabenik <jan@svabi.ch> 1773906079 +0100	commit: feat: activate validated GPU pipeline stages
3e3bc0aaed8e979f4e14708b6b450fce0d631b28 15220ab597b2ae2d5c4b8193dece06272ebe1fa9 Jan Svabenik <jan@svabi.ch> 1773906584 +0100	commit: build: fix gpudemod kernel archive integration
15220ab597b2ae2d5c4b8193dece06272ebe1fa9 0f80148dd03d45cdebd09b256a8608635779bf27 Jan Svabenik <jan@svabi.ch> 1773907528 +0100	commit: docs: split CUDA build paths by platform
0f80148dd03d45cdebd09b256a8608635779bf27 9c66a91826b56240626cb933abec0092aa499a96 Jan Svabenik <jan@svabi.ch> 1773907695 +0100	commit: docs: clarify Windows CUDA build paths
9c66a91826b56240626cb933abec0092aa499a96 377f6dfebaea174499e34cf1f8914f44b8e11a6e Jan Svabenik <jan@svabi.ch> 1773907830 +0100	commit: docs: document Windows CGO toolchain limits
377f6dfebaea174499e34cf1f8914f44b8e11a6e 0faa198bf0b0b393607b65d360e647c4ad095aa6 Jan Svabenik <jan@svabi.ch> 1773909654 +0100	commit: docs: align README with current build flows
0faa198bf0b0b393607b65d360e647c4ad095aa6 bbfec45fbb1e95ba55f84193582b41295d22ff97 Jan Svabenik <jan@svabi.ch> 1773910011 +0100	commit: chore: ignore generated CUDA build outputs
bbfec45fbb1e95ba55f84193582b41295d22ff97 8d0bea214ce2c4d55b4c510fe668e81dff9b96c7 Jan Svabenik <jan@svabi.ch> 1773914859 +0100	commit: Attempt MinGW-host CUDA build path for Windows
8d0bea214ce2c4d55b4c510fe668e81dff9b96c7 7a37d56e8313f904f354e784e54734af8a2ee8d3 Jan Svabenik <jan@svabi.ch> 1773915124 +0100	commit: Add Windows gpudemod DLL build path
7a37d56e8313f904f354e784e54734af8a2ee8d3 e520d9b6f336ead8f72d5d29ff11e1900a89222c Jan Svabenik <jan@svabi.ch> 1773915609 +0100	commit: Fix Windows runtime DLL search for SDRplay and gpudemod
e520d9b6f336ead8f72d5d29ff11e1900a89222c a2fe5149d99a0d50edcfdc2e3082ca59e4838485 Jan Svabenik <jan@svabi.ch> 1773915723 +0100	commit: Checkpoint before runtime optimization
a2fe5149d99a0d50edcfdc2e3082ca59e4838485 ad57b4149f6a8003ad87bee7bca5e36d7f07264f Jan Svabenik <jan@svabi.ch> 1773915822 +0100	commit: Increase SDRplay buffering and reduce callback allocations
ad57b4149f6a8003ad87bee7bca5e36d7f07264f 09d50e4bf91421cdd264a1caed17b81a267e9eea Jan Svabenik <jan@svabi.ch> 1773915942 +0100	commit: Remove obsolete Windows build scripts
09d50e4bf91421cdd264a1caed17b81a267e9eea 9e1a6c460c1807d3b274efc4588612fe32298dd6 Jan Svabenik <jan@svabi.ch> 1773916818 +0100	commit: Fix CUDA runtime consistency and recorder races
9e1a6c460c1807d3b274efc4588612fe32298dd6 ed0711cfb912a55ca27c6557a4eb3b262b6ab563 Jan Svabenik <jan@svabi.ch> 1773916886 +0100	commit: Disable GPU validation by default in production
ed0711cfb912a55ca27c6557a4eb3b262b6ab563 3e33dba6626faf8a911c80990b15ef1f55f4cca1 Jan Svabenik <jan@svabi.ch> 1773916970 +0100	commit: Add fused GPU demod path for recorder
3e33dba6626faf8a911c80990b15ef1f55f4cca1 edee8ebc1314382d0d3db2bd4327428ca41b166f Jan Svabenik <jan@svabi.ch> 1773916994 +0100	commit (amend): Add fused GPU demod path for recorder
edee8ebc1314382d0d3db2bd4327428ca41b166f 622860909873a18b3eb0ced39d589117e840b648 Jan Svabenik <jan@svabi.ch> 1773917078 +0100	commit: Use fused GPU demod for live demod endpoint
622860909873a18b3eb0ced39d589117e840b648 10eef10b9f89965eed21b45c1a1cf5d10261e001 Jan Svabenik <jan@svabi.ch> 1773917097 +0100	commit (amend): Use fused GPU demod for live demod endpoint
10eef10b9f89965eed21b45c1a1cf5d10261e001 1418afeab3f8cd2fd15474080c2e3b8ccd101061 Jan Svabenik <jan@svabi.ch> 1773917163 +0100	commit: Log fused GPU, legacy GPU, and CPU demod paths
1418afeab3f8cd2fd15474080c2e3b8ccd101061 d7258bbf1ddcc79543dfe3ab2bb588d5f224bcee Jan Svabenik <jan@svabi.ch> 1773917202 +0100	commit (amend): Log fused GPU, legacy GPU, and CPU demod paths
d7258bbf1ddcc79543dfe3ab2bb588d5f224bcee 24eb78fadcf80714a175fde291eb07520c297d03 Jan Svabenik <jan@svabi.ch> 1773917269 +0100	commit: Stop exporting CUDA __global__ kernels from DLL
24eb78fadcf80714a175fde291eb07520c297d03 206f400ce9f9739e1d2595aaba4a1bba9cb72263 Jan Svabenik <jan@svabi.ch> 1773917308 +0100	commit: Add graceful shutdown for recorder worker
206f400ce9f9739e1d2595aaba4a1bba9cb72263 74dc89990739c6c79399ee04564e3e8c7d91ae00 Jan Svabenik <jan@svabi.ch> 1773917339 +0100	commit (amend): Add graceful shutdown for recorder worker
74dc89990739c6c79399ee04564e3e8c7d91ae00 ab9e4fdd33ca5456837b5b1b495285845a9cca2d Jan Svabenik <jan@svabi.ch> 1773917444 +0100	commit: Use hybrid CUDA runtime for gpudemod DLL
ab9e4fdd33ca5456837b5b1b495285845a9cca2d 6d822616084b33fef9bb36bdd60173e7617bf20f Jan Svabenik <jan@svabi.ch> 1773917475 +0100	commit: Copy gpudemod DLL next to built executable
6d822616084b33fef9bb36bdd60173e7617bf20f c8c44a7350cdba4f5b61bf15a1e7ac2f94965b4d Jan Svabenik <jan@svabi.ch> 1773917483 +0100	commit: Remove unused gpudemod phaseStatus helper
c8c44a7350cdba4f5b61bf15a1e7ac2f94965b4d b0fa496dd7f6887a9296c6648862e6e4a9694c1a Jan Svabenik <jan@svabi.ch> 1773917494 +0100	commit: Remove leftover gpudemod debug formatting
b0fa496dd7f6887a9296c6648862e6e4a9694c1a 7d15e88f4ea82cb0adc24ac9025b22ddf183ba96 Jan Svabenik <jan@svabi.ch> 1773917618 +0100	commit: Reset gpudemod path flags per demod call
7d15e88f4ea82cb0adc24ac9025b22ddf183ba96 f0a4e3cd361296e24a566519ea194c73cb19cd06 Jan Svabenik <jan@svabi.ch> 1773917642 +0100	commit: Document hybrid CUDA runtime and DLL placement
f0a4e3cd361296e24a566519ea194c73cb19cd06 73a54cd98bd745828d393af6bedad8ff8c5398ed Jan Svabenik <jan@svabi.ch> 1773917656 +0100	commit: Prefer freshest gpudemod DLL during app build
73a54cd98bd745828d393af6bedad8ff8c5398ed 564a13492f321654ed8e14223a74ae2f4fe30823 Jan Svabenik <jan@svabi.ch> 1773917839 +0100	commit: Add gpudemod DLL override path and document Windows warning
564a13492f321654ed8e14223a74ae2f4fe30823 6491f32f84d0a979d1c09515c9854e0ac06b0659 Jan Svabenik <jan@svabi.ch> 1773918409 +0100	commit: Use shared-memory FIR kernel in gpudemod
6491f32f84d0a979d1c09515c9854e0ac06b0659 216dd7fcfdc274569aaa6d4e9378c48513937a4f Jan Svabenik <jan@svabi.ch> 1773918770 +0100	commit: Add GPU shift-filter-decimate path for signal extraction
216dd7fcfdc274569aaa6d4e9378c48513937a4f 4064310b11f2eb6a34879cdf31e7e55c7dd5b533 Jan Svabenik <jan@svabi.ch> 1773919429 +0100	commit: Batch signal extraction through shared gpudemod engine
4064310b11f2eb6a34879cdf31e7e55c7dd5b533 b47b6d7e3ec216c8915e9452505d5566111ce966 Jan Svabenik <jan@svabi.ch> 1773919509 +0100	commit: Add batch extraction API to gpudemod
b47b6d7e3ec216c8915e9452505d5566111ce966 094ee9ddff604f848cde5741afe01e633828d519 Jan Svabenik <jan@svabi.ch> 1773919602 +0100	commit: Introduce reusable gpudemod batch runner
094ee9ddff604f848cde5741afe01e633828d519 9580c1ada87f8f8aa0b7a0a56b42d5766c70046b Jan Svabenik <jan@svabi.ch> 1773923107 +0100	commit: Prepare gpudemod batch runner for stream-backed slots
9580c1ada87f8f8aa0b7a0a56b42d5766c70046b b52fc8793ac3cfaf6a64c8fe3ab84c18ad011841 Jan Svabenik <jan@svabi.ch> 1773923387 +0100	commit: Add stream lifecycle primitives to gpudemod DLL
b52fc8793ac3cfaf6a64c8fe3ab84c18ad011841 b77c2a123e5a36e69236bd7eee6d19a28d0bac30 Jan Svabenik <jan@svabi.ch> 1773923404 +0100	commit (amend): Add stream lifecycle primitives to gpudemod DLL
b77c2a123e5a36e69236bd7eee6d19a28d0bac30 b35627a412fbad956bf0ea8cb469d0fdad60abf0 Jan Svabenik <jan@svabi.ch> 1773923423 +0100	commit (amend): Add stream lifecycle primitives to gpudemod DLL
b35627a412fbad956bf0ea8cb469d0fdad60abf0 e69c1f6ddbca7decaa15ad5beeb012036c362514 Jan Svabenik <jan@svabi.ch> 1773923487 +0100	commit (amend): Add stream lifecycle primitives to gpudemod DLL
e69c1f6ddbca7decaa15ad5beeb012036c362514 0fe1e2efbcf6b9b9e72afdc0298a5fe055dcb442 Jan Svabenik <jan@svabi.ch> 1773923719 +0100	commit: Add stream-aware kernel launch entry points
0fe1e2efbcf6b9b9e72afdc0298a5fe055dcb442 b4b649a51422a738bda21dac0369d447fa28974a Jan Svabenik <jan@svabi.ch> 1773924140 +0100	commit: Use stream-backed Windows batch runner for extraction
b4b649a51422a738bda21dac0369d447fa28974a 494fb4b1db77b8c7d9a6c5b2d192bf3d074305e9 Jan Svabenik <jan@svabi.ch> 1773924413 +0100	commit: Repair stream-backed batch runner with central Windows bridge
494fb4b1db77b8c7d9a6c5b2d192bf3d074305e9 0895a58f92943348743de119c900c8d22cf1cabd Jan Svabenik <jan@svabi.ch> 1773924484 +0100	commit (amend): Repair stream-backed batch runner with central Windows bridge
0895a58f92943348743de119c900c8d22cf1cabd 271a25c8b1dc838f93ae6f3e104322b9ed757256 Jan Svabenik <jan@svabi.ch> 1773924591 +0100	commit (amend): Repair stream-backed batch runner with central Windows bridge
271a25c8b1dc838f93ae6f3e104322b9ed757256 e10731b11cd3e81abee32833043eb003ad5f3f59 Jan Svabenik <jan@svabi.ch> 1773924820 +0100	commit (amend): Repair stream-backed batch runner with central Windows bridge
e10731b11cd3e81abee32833043eb003ad5f3f59 fee0d39e3eeb1f09a74b1c28b599fe0af53c7c8a Jan Svabenik <jan@svabi.ch> 1773925639 +0100	commit (amend): Repair stream-backed batch runner with central Windows bridge
fee0d39e3eeb1f09a74b1c28b599fe0af53c7c8a 2834554d7d2cad8d51091a4dd10f9fb6eaaf6540 Jan Svabenik <jan@svabi.ch> 1773925704 +0100	commit: Log batch and stream-backed extraction paths
2834554d7d2cad8d51091a4dd10f9fb6eaaf6540 0ac7781785e832859a2f7c097e2eb5368379ae71 Jan Svabenik <jan@svabi.ch> 1773925727 +0100	commit (amend): Log batch and stream-backed extraction paths
0ac7781785e832859a2f7c097e2eb5368379ae71 3c68c033d6818ff4b800bb34000bcffc56eeea35 Jan Svabenik <jan@svabi.ch> 1773925780 +0100	commit (amend): Log batch and stream-backed extraction paths
3c68c033d6818ff4b800bb34000bcffc56eeea35 e228116464d5ab90a3e74809ca3cd87721941662 Jan Svabenik <jan@svabi.ch> 1773925801 +0100	commit (amend): Log batch and stream-backed extraction paths
e228116464d5ab90a3e74809ca3cd87721941662 cbbd6e4086c3c9e346e0cc8bf6af535bda614ffb Jan Svabenik <jan@svabi.ch> 1773925923 +0100	commit: Reuse batch extraction runner across DSP loop iterations
cbbd6e4086c3c9e346e0cc8bf6af535bda614ffb 6fa8508607a8059cf3d50c817b77cea1a45e0207 Jan Svabenik <jan@svabi.ch> 1773926008 +0100	commit (amend): Reuse batch extraction runner across DSP loop iterations
6fa8508607a8059cf3d50c817b77cea1a45e0207 90adeb34b79e4f26360509bb6d712d5d62807f57 Jan Svabenik <jan@svabi.ch> 1773926114 +0100	commit: Use synchronized GPU engine access in recorder demod paths
90adeb34b79e4f26360509bb6d712d5d62807f57 63bb97c49901643226c312b1549ff55e788ced1a Jan Svabenik <jan@svabi.ch> 1773926132 +0100	commit (amend): Use synchronized GPU engine access in recorder demod paths
63bb97c49901643226c312b1549ff55e788ced1a 791c2c716d7fbf2e63964ebfdcd331bcefea643d Jan Svabenik <jan@svabi.ch> 1773926171 +0100	commit (amend): Use synchronized GPU engine access in recorder demod paths
791c2c716d7fbf2e63964ebfdcd331bcefea643d c49b77d0f650e4e88d177e514a50ceeb3e00af1b Jan Svabenik <jan@svabi.ch> 1773926893 +0100	commit: Route WFM stereo through explicit hybrid GPU/CPU demod path
c49b77d0f650e4e88d177e514a50ceeb3e00af1b c2bb69b06254e0c33621cccf81c4f77530e4a266 Jan Svabenik <jan@svabi.ch> 1773926961 +0100	commit: Unify recorder GPU demod fallback logic
c2bb69b06254e0c33621cccf81c4f77530e4a266 412459bc910e097b11b5ea80b1c3b6f60f8c1fb8 Jan Svabenik <jan@svabi.ch> 1773927042 +0100	commit (amend): Unify recorder GPU demod fallback logic
412459bc910e097b11b5ea80b1c3b6f60f8c1fb8 d29f4d48ce5ce092a28606437ec38030228123c0 Jan Svabenik <jan@svabi.ch> 1773927101 +0100	commit: Reuse common WFM mono base for stereo and RDS paths
d29f4d48ce5ce092a28606437ec38030228123c0 492adafeebb23752a95ec52e6a20b000384d8601 Jan Svabenik <jan@svabi.ch> 1773927158 +0100	commit (amend): Reuse common WFM mono base for stereo and RDS paths
492adafeebb23752a95ec52e6a20b000384d8601 25ef919d13b0f1796ac0e2f7185801d9bf84805c Jan Svabenik <jan@svabi.ch> 1773927193 +0100	commit (amend): Reuse common WFM mono base for stereo and RDS paths
25ef919d13b0f1796ac0e2f7185801d9bf84805c 2af9423384071f0ca2e0b56999dad7348ed107ae Jan Svabenik <jan@svabi.ch> 1773927646 +0100	commit: Unify recorder CPU demod fallback path
2af9423384071f0ca2e0b56999dad7348ed107ae adb7cc54ce3ce96abbf4bd135451340738053b94 Jan Svabenik <jan@svabi.ch> 1773927676 +0100	commit (amend): Unify recorder CPU demod fallback path
adb7cc54ce3ce96abbf4bd135451340738053b94 2ce5a818a31c1e8f2967d8211cf2b42a7e7a4ddc Jan Svabenik <jan@svabi.ch> 1773928929 +0100	commit: Add shared hybrid helper for WFM stereo and RDS
2ce5a818a31c1e8f2967d8211cf2b42a7e7a4ddc 18583fe7bc556072e9714ec0446b0a0746ed6558 Jan Svabenik <jan@svabi.ch> 1773928994 +0100	commit (amend): Add shared hybrid helper for WFM stereo and RDS
