feat: add ExternalSensorRegistry for external .mat data integration#35
Merged
Conversation
13-task TDD plan covering: GroupWidget scaffold, panel/collapsible/tabbed modes, theme integration, serialization, engine/serializer/layout integration, web bridge export, and example script. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Defines a standalone registry class for integrating external .mat data into the FastSense pipeline without modifying existing APIs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix Sensor/StateChannel constructor calls (key is positional) - Clarify cross-file state channel wiring (StateChannel loads its own data) - Fix LiveEventPipeline parameter name (EventFile, not EventStorePath) - Document struct() as unconditional threshold convention - Clarify duplicate key warning behavior - Fix "mirrors SensorRegistry" claim for new methods Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Clarify which methods are new vs mirrored from SensorRegistry - Make wireStateChannel signature explicit (no NV... ambiguity) - Specify handle mutation for same-file state wiring Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 7 tasks across 3 chunks (core registry, data wiring, viewer+integration) - TDD approach with 24 tests covering happy path and error cases - Fixes from review: count() returns double, getAll() returns copy, added tests for non-Sensor register, nonexistent unregister Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
7-task plan covering HeatmapWidget, BarChartWidget, HistogramWidget, ScatterWidget, ImageWidget, MultiStatusWidget + engine/serializer/bridge registration. Tasks 1-6 are parallelizable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add key type validation in register() (non-empty char) - Move inputParser construction outside loop in wireMatFile - Assert warning identifier in testWireMatFileDuplicateWarns Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fixes MISS_HIT style checker lint failure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'FastSense Performance'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.10.
| Benchmark suite | Current: e9ed50b | Previous: 960ff36 | Ratio |
|---|---|---|---|
Downsample mean std(1M) |
0.094 ms |
0.045 ms |
2.09 |
Downsample mean std(5M) |
0.096 ms |
0.064 ms |
1.50 |
Downsample mean std10M) |
0.221 ms |
0.093 ms |
2.38 |
Zoom cycle mean (10M) |
15.566 ms |
13.825 ms |
1.13 |
Zoom cycle mean (50M) |
15.523 ms |
13.691 ms |
1.13 |
Downsample mean ( std00M) |
0.431 ms |
0.308 ms |
1.40 |
Instantiation mean ( std00M) |
182.87 ms |
153.506 ms |
1.19 |
Zoom cycle mean (100M) |
15.532 ms |
13.837 ms |
1.12 |
Downsample mean ( std00M) |
28.112 ms |
0.308 ms |
91.27 |
Instantiation mean ( std00M) |
1336.046 ms |
153.506 ms |
8.70 |
Render mean (500M) |
639.59 ms |
532.221 ms |
1.20 |
Render mean ( std00M) |
300.822 ms |
2.96 ms |
101.63 |
Zoom cycle mean (500M) |
16.757 ms |
14.055 ms |
1.19 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @HanSur94
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ExternalSensorRegistryclass (libs/SensorThreshold/ExternalSensorRegistry.m) — a non-singleton registry for explicitly defined sensors wired to external .mat file data sourceswireMatFileto connect .mat file fields to sensors, andwireStateChannelfor state data (same-file and cross-file)DataSourceMapthat plugs directly into the existingLiveEventPipeline— zero changes to existing FastPlot codeTest plan
runtests('tests/suite/TestExternalSensorRegistry')— all 24 tests passruntests('tests/suite'))🤖 Generated with Claude Code