Skip to content

feat: add ExternalSensorRegistry for external .mat data integration#35

Merged
HanSur94 merged 15 commits into
mainfrom
feat/external-sensor-registry
Mar 18, 2026
Merged

feat: add ExternalSensorRegistry for external .mat data integration#35
HanSur94 merged 15 commits into
mainfrom
feat/external-sensor-registry

Conversation

@HanSur94
Copy link
Copy Markdown
Owner

Summary

  • Adds ExternalSensorRegistry class (libs/SensorThreshold/ExternalSensorRegistry.m) — a non-singleton registry for explicitly defined sensors wired to external .mat file data sources
  • Supports wireMatFile to connect .mat file fields to sensors, and wireStateChannel for state data (same-file and cross-file)
  • Produces a DataSourceMap that plugs directly into the existing LiveEventPipeline — zero changes to existing FastPlot code
  • Includes 24 tests covering constructor, register/get/unregister, list/printTable, viewer, wireMatFile, wireStateChannel, and LiveEventPipeline compatibility

Test plan

  • Run runtests('tests/suite/TestExternalSensorRegistry') — all 24 tests pass
  • Verify no existing tests are affected (runtests('tests/suite'))
  • Verify no existing files were modified (only new files added)

🤖 Generated with Claude Code

HanSur94 and others added 15 commits March 18, 2026 23:04
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>
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ 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

@HanSur94 HanSur94 merged commit 2044fed into main Mar 18, 2026
9 checks passed
@HanSur94 HanSur94 deleted the feat/external-sensor-registry branch March 18, 2026 22:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant