feat(dashboard): info button opens in-app modal instead of external browser#118
Merged
feat(dashboard): info button opens in-app modal instead of external browser#118
Conversation
…tead of system browser
- Replace web(InfoTempFile, '-new') with showInfoModal_() in interactive desktop MATLAB
- Add InfoModalFigure_ cache so repeat Info clicks refocus rather than stack windows
- New uifigure + uihtml panel sized 800x600 centered, modal WindowStyle, AutoResizeChildren=off
- SizeChangedFcn keeps uihtml filling the figure on resize
- CloseRequestFcn clears the cached handle and disposes the figure
- delete() also tears down the modal so engines never leave orphan uifigures
- Octave / -batch / -nodisplay paths unchanged (system('open ...') etc.)
- InfoTempFile still always written for backward compat with existing tests
- Wrap uifigure construction in try/catch so older releases without uihtml degrade silently with a warning
…odal
- testShowInfoOpensModalFigure: verifies InfoModalFigure_ is populated, is a valid handle, and has a uihtml child after showInfo()
- testShowInfoModalReusesFigure: verifies repeat clicks refocus the existing modal rather than stack new windows
- Both tests skip on headless runs via assumeTrue(usejava('desktop'))
- Reaffirms the InfoTempFile backward-compat contract (still populated, still on disk)
- Static helper tryCloseInfoModal centralises the modal teardown for addTeardown callbacks
2 tasks
HanSur94
added a commit
that referenced
this pull request
May 8, 2026
Move trailing `&&` to end of previous line in tryCloseInfoModal teardown helper so MISS_HIT mh_style passes. CI MATLAB Lint job (run 25562812581) flagged this as `operator_after_continuation` after PR #118 merged. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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: ffe8f6f | Previous: f0e5ab2 | Ratio |
|---|---|---|---|
Downsample mean std(1M) |
0.133 ms |
0.006 ms |
22.17 |
Instantiation mean std(1M) |
2.271 ms |
1.055 ms |
2.15 |
Render mean std(1M) |
7.8 ms |
1.093 ms |
7.14 |
Zoom cycle mean (1M) |
15.793 ms |
13.949 ms |
1.13 |
Instantiation mean std(5M) |
2.007 ms |
1.077 ms |
1.86 |
Render mean std(5M) |
4.867 ms |
1.938 ms |
2.51 |
Zoom cycle mean (5M) |
16.35 ms |
13.962 ms |
1.17 |
Zoom cycle mean std(5M) |
0.605 ms |
0.499 ms |
1.21 |
Downsample mean std10M) |
0.12 ms |
0.081 ms |
1.48 |
Instantiation mean std10M) |
1.125 ms |
0.635 ms |
1.77 |
Render mean std10M) |
3.808 ms |
1.988 ms |
1.92 |
Zoom cycle mean (10M) |
15.984 ms |
13.714 ms |
1.17 |
Zoom cycle mean std10M) |
0.602 ms |
0.519 ms |
1.16 |
Instantiation mean std50M) |
11.193 ms |
6.836 ms |
1.64 |
Zoom cycle mean (50M) |
17.314 ms |
13.782 ms |
1.26 |
Render mean ( std00M) |
2.926 ms |
1.359 ms |
2.15 |
Zoom cycle mean (100M) |
16.084 ms |
14.314 ms |
1.12 |
Downsample mean ( std00M) |
8.799 ms |
0.659 ms |
13.35 |
Instantiation mean (500M) |
57796.486 ms |
22287.148 ms |
2.59 |
Instantiation mean ( std00M) |
2299.56 ms |
95.243 ms |
24.14 |
Render mean ( std00M) |
945.8 ms |
1.359 ms |
695.95 |
Zoom cycle mean (500M) |
16.112 ms |
13.8 ms |
1.17 |
Zoom cycle mean ( std00M) |
2.444 ms |
0.7 ms |
3.49 |
Dashboard create+render mean |
300.398 ms |
262.741 ms |
1.14 |
Dashboard create+render stdmean |
28.898 ms |
12.153 ms |
2.38 |
Dashboard page switch stdmean |
0.926 ms |
0.822 ms |
1.13 |
Dashboard broadcastTimeRange stdmean |
0.034 ms |
0.029 ms |
1.17 |
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
Infotoolbar button now opens an in-app modaluifigurewith auihtmlpanel rendering the HTML inline, instead of handing off to the system browser viaweb().-batch/-nodisplaypaths unchanged — keep the existingsystem('open' | 'xdg-open' | 'cmd /c start')fallback.InfoTempFileis still written unconditionally, so existingTestDashboardInfoassertions andcleanupInfoTempFile()keep working.delete()so the engine never leaves orphan uifigures behind.Quick task:
260508-n8h— see.planning/quick/260508-n8h-dashboard-info-button-opens-modal-render/.Test plan
mcp__matlab__check_matlab_code) — no errors onDashboardEngine.morTestDashboardInfo.m.delete(d).tests/run_all_tests.m— newtestShowInfoOpensModalFigureandtestShowInfoModalReusesFigureskip cleanly on headless runs viaassumeTrue(usejava('desktop')); existing temp-file tests keep passing on both MATLAB and Octave.🤖 Generated with Claude Code