Skip to content

docs(readme): fix broken examples, correct counts, surface missing features#209

Merged
HanSur94 merged 8 commits into
mainfrom
claude/funny-goldwasser-29edf7
Jun 29, 2026
Merged

docs(readme): fix broken examples, correct counts, surface missing features#209
HanSur94 merged 8 commits into
mainfrom
claude/funny-goldwasser-29edf7

Conversation

@HanSur94

@HanSur94 HanSur94 commented Jun 24, 2026

Copy link
Copy Markdown
Owner

Eight verified README fixes (one per commit), each checked against the live code / a warm MATLAB session before committing. Every code block was executed; every count was confirmed against libs/; every external link was resolved.

Fixes (🔴 broken · 🟠 stale/wrong)

  1. 🟠 Widget count — "21 widget types" → 19 (DashboardWidgetRegistry.types()).
  2. 🟠 Themes — "6 themes" → "light & dark themes, 4 color palettes" (only 2 real presets; 4 legacy names alias to light).
  3. 🔴 Broken Tags exampleTagRegistry.register(press) errored (MATLAB:minrhs); signature is register(key, tag). Fixed both calls.
  4. 🔴 Broken dashboard example'Label' is not a valid option (→ 'Title'); a MonitorTag bound via 'Tag' crashed StatusWidget (.Y missing) — rebound via 'Threshold'. Renders + save/load round-trips cleanly.
  5. 🟠 Examples count — "40+ runnable scripts / Run them all with run_all_examples" → "70+ … plays a guided tour of the highlights" (72 example_*.m; the runner executes a curated 23).
  6. 🟠 Missing Tag flavour — "four flavours" → five; added DerivedTag (verified computing power = V×I to 1e-9).
  7. 🟠 Missing flagship feature — surfaced per-widget info popups (verified the InfoIconButton renders only when a widget has a Description).
  8. 🟠 FastPlot relic — renamed example variable fpfs to match the current product name.

Verification

  • All three headline snippets (30-seconds-in, Tags, dashboard) execute end-to-end in a live MATLAB session.
  • Counts confirmed via DashboardWidgetRegistry.types(), FastSenseTheme(), superclasses(), and find examples/.
  • All external links (wiki, GitHub Pages benchmark site, codecov, CI badges) return HTTP 200.

Not addressed (needs a benchmark / showcase access — intentionally left)

  • Performance table (4.7 ms / 212 FPS / 153 MB / ~3.2 s) and the "GNU Octave 11" footnote — require a /perf-watch run to validate; not guessed.
  • "Six-page industrial-plant dashboard" — tied to a showcase demo not in the public examples/.

🤖 Generated with Claude Code

HanSur94 and others added 8 commits June 24, 2026 15:58
The DashboardWidgetRegistry seeds exactly 19 built-in widget types
(verified via DashboardWidgetRegistry.types() in a live session and by
counting concrete *Widget.m classes in libs/Dashboard/). The README
claimed 21 in three places (badges line, dashboard feature list, and
What's in the box). Corrected all three to match the code.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
FastSenseTheme has only 2 distinct presets (light, dark) — the four
legacy names (default/industrial/scientific/ocean) all alias to light,
and the engine's own error says 'Use light or dark'. The '6' conflated
the 2 themes with the 4 separate line-color palettes (vibrant, muted,
colorblind, ocean). Replaced '6 themes' with 'light & dark themes,
4 color palettes', verified against a live FastSenseTheme() session.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Tags quickstart called TagRegistry.register(press) with a single
argument, which errors at runtime (MATLAB:minrhs — register's signature
is register(key, tag)). Verified the original snippet throws and the
two-arg form renders cleanly end-to-end in a live MATLAB session.
Corrected both calls to pass the tag key:
  TagRegistry.register('press_a', press)
  TagRegistry.register('press_high', alarm)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…>Threshold)

The 'Build a dashboard' quickstart errored at runtime in two ways,
both verified in a live MATLAB session:

1. 'Label' is not a valid widget option (DashboardWidget:unknownOption).
   number/gauge/status widgets all document 'Title'. Changed Label->Title.
2. A MonitorTag bound via 'Tag' routes to the Sensor slot (Sensor is a
   backward-compat alias for Tag), and StatusWidget then reads .Y, which
   MonitorTag lacks (MATLAB:noSuchMethodOrField 'Y'). StatusWidget's
   documented contract wires a MonitorTag-backed indicator via
   'Threshold'. Changed the status widget to 'Threshold', alarm.

Corrected snippet now renders all 4 widgets and round-trips through
save/load cleanly (ok=1, 4 widgets reloaded).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…s claim

Two inaccuracies in the examples line, both verified against examples/:
- '40+ runnable scripts' undercounts — there are 72 example_*.m scripts
  in the topic dirs (01-basics .. 07-advanced), 82 .m files total.
- 'Run them all with run_all_examples' is misleading: run_all_examples
  executes a hardcoded curated list of 23 examples (prints
  'FastSense Examples (23 total)'), not all 72. All 23 curated files
  exist on disk.
Rewrote to '70+ runnable scripts ... run_all_examples plays a guided
tour of the highlights.'

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Tags section said 'four flavours' and listed only 4, but there are
5 concrete Tag subclasses (SensorTag, StateTag, MonitorTag, CompositeTag,
DerivedTag) — verified via superclasses() in a live session. DerivedTag
is the continuous-output counterpart to the 0/1 Monitor/Composite tags;
the README's own prose already promised 'derived signals' with no
matching table row.

- four -> five flavours; added a DerivedTag row (continuous signal from
  other tags). Verified DerivedTag computes power=V.*I correctly over
  1000 pts (matches expected to 1e-9).
- tightened CompositeTag's description to '0/1 aggregated from monitors'
  to distinguish it from the continuous DerivedTag (per CompositeTag's
  own header).
- added DerivedTag to the 'What's in the box' Tag list.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ure)

The README listed the dashboard's nested-layout and detach features but
omitted per-widget info popups — one of the three flagship features of
the Advanced Dashboard work. Every DashboardWidget has a Description
('Doc text shown in a popup when the widget's info (i) button is
clicked'); a non-empty Description renders an InfoIconButton that opens
a doc popup.

Verified in a live render: a widget WITH a Description shows exactly 1
InfoIconButton; a sibling without one shows none.

Added 'per-widget info popups' to the dashboard feature line and
'info popups' to the What's-in-the-box Dashboards recap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The quickstart code blocks named the FastSense handle 'fp' — an
abbreviation of the project's old name (FastPlot). Renamed both blocks'
variable to 'fs' so the front-door examples match the current product
name. Verified the renamed '30 seconds in' snippet still renders
cleanly (ok=1).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@HanSur94 HanSur94 changed the title docs(readme): fix broken Tags example, correct widget/theme counts docs(readme): fix broken examples, correct counts, surface missing features Jun 29, 2026
@HanSur94 HanSur94 merged commit 025d38d into main Jun 29, 2026
14 checks passed
HanSur94 added a commit that referenced this pull request Jun 29, 2026
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