feat(dashboard): .m serialization, integration tests, Octave compat fixes#41
Merged
Merged
Conversation
DashboardSerializer.save() now produces a MATLAB function file instead of JSON, enabling feval-based round-trip load. addWidget() returns the widget handle. Legacy JSON support preserved as saveJSON()/loadJSON(). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… Octave compat Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ghost
reviewed
Mar 19, 2026
Contributor
ghost
left a comment
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: da5e7a3 | Previous: 7db8fd1 | Ratio |
|---|---|---|---|
Instantiation mean std(1M) |
2.099 ms |
0.607 ms |
3.46 |
Render mean std(1M) |
3.315 ms |
1.797 ms |
1.84 |
Downsample mean std(5M) |
0.274 ms |
0.046 ms |
5.96 |
Instantiation mean std(5M) |
0.535 ms |
0.173 ms |
3.09 |
Downsample mean std10M) |
1.186 ms |
0.089 ms |
13.33 |
Downsample mean ( std00M) |
3.209 ms |
1.477 ms |
2.17 |
Instantiation mean ( std00M) |
191.825 ms |
172.08 ms |
1.11 |
Downsample mean ( std00M) |
13.138 ms |
1.477 ms |
8.90 |
Instantiation mean ( std00M) |
1464.812 ms |
172.08 ms |
8.51 |
Render mean ( std00M) |
50.532 ms |
2.069 ms |
24.42 |
Zoom cycle mean (500M) |
20.274 ms |
16.132 ms |
1.26 |
Zoom cycle mean ( std00M) |
12.582 ms |
1.295 ms |
9.72 |
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
Final piece of the dashboard engine speed optimization effort. Earlier commits (dirty-flag, incremental update, viewport culling, deferred rendering, resize hooks, sensor callbacks) are already on main.
save()now produces a function-wrapped.mfile loadable viafeval; legacy JSON load preserved asloadJSON()addWidget()returns widget handle — enablesw = d.addWidget(...)pattern used in.mexport formatTestDashboardPerformance.mandTestDashboardMSerializer.mcovering the full optimized pipelinecontains()withstrfind()intestExportScriptFull optimization summary (all commits across this PR + prior main)
Test plan
TestDashboardMSerializerpasses (save/load .m round-trip)TestDashboardPerformancepasses (dirty-flag + realize + resize integration)TestDashboardEngine.testSaveAndLoadpasses with .m extensionTestDashboardSerializer/TestDashboardSerializerRoundTripstill pass viasaveJSON/loadJSONcontains()in any new/modified test files🤖 Generated with Claude Code