Releases: owntech-foundation/modular
Version 0.9.1
Change Log
Multiple small changes that corrected some of the listed issues.
- Widgets now are added on top
- Better rendering of the dashboards
- Better rendering of markdown
- Better rendering of the examples pages
- Updates on the Plot to make it bigger vertically
- Fixed the positions of the legend for the channels belo the Plot
- Small fix on the twist/ownverter commands linked to the communicatio protocol
Version 0.9.4 - GUI overhaul + some experimental features
Release Notes — v0.9.4
Released: 2026-05-25
Multi-Tab Dashboard System
The single dashboard has been replaced by a full tab system. Each tab holds an independent, fully isolated dashboard that is automatically saved and restored when switching.
- A + button (pinned to the left of the tab strip) opens a blank dashboard in a new tab.
- Opening a file always loads it into a new tab — the current dashboard is never overwritten.
- Switching tabs auto-saves the departing dashboard and restores the arriving one; no data is lost.
- Tab rename: click an already-active tab to rename it inline (Enter to confirm, Escape to cancel).
- Tab reorder: drag tabs left and right to reorganise them.
- Keyboard shortcuts: Ctrl+T (new tab), Ctrl+O (open file), Ctrl+S (save current), Ctrl+Tab (next tab), Ctrl+Shift+Tab (previous tab).
- File menu updated: New Dashboard Tab and Open Dashboard replace the old single-tab actions.
Widgets Side Panel
A second tab has been added to the left side pane alongside Datasources: Widgets.
- Lists all panes and their widgets grouped by pane.
- Clicking a widget name opens its settings editor directly — no need to hover over the board to find the wrench.
- Clicking a pane title opens the pane settings editor, making it easy to rename a pane.
Duplicate Pane
A clone icon now appears in the pane toolbar (between the wrench and the trash separator). Clicking it creates an exact copy of the pane and all its widgets. Each cloned widget receives a unique _2 / _3 / _4 suffix so names never collide.
OwnTech Actions Widget — Scope Section
A dedicated Scope section has been added to the Twist/Ownverter Actions widget:
- Trigger sends the scope trigger command immediately.
- Acquire arms fast-frame capture on the port, sends the acquire command, polls until data is complete, and automatically saves a timestamped
scope.csv.
OwnTech Setpoints Widget Redesign
The Setpoints widget has been reorganised with a per-leg layout:
- Each leg (LEG1, LEG2, …) has its own group of rows: Reference (variable + value), Duty, Frequency, Phase, DT Rise, DT Fall.
- Auto Send toggle: when enabled, changes to a numeric field are debounced and sent automatically without clicking Send.
- The reference variable dropdown is narrowed to fit short names (V1, VH, I1…) and leave maximum space for the value field.
- All field values and the Auto Send state are persisted across dashboard tab switches.
Fast Frame Control — Standalone Retrieve Button
A Retrieve button has been added alongside Trigger + Retrieve. It sends only the retrieve command, allowing data to be re-read after an acquisition that already completed without re-arming the trigger.
Widget and Pane State Persistence Across Tab Switches
When switching dashboard tabs, freeboard serialises all widget state. Two widgets that hold runtime state beyond their saved settings are now explicitly included:
- Twist/Ownverter Actions: power mode (IDLE / ON / OFF) and all leg toggle positions are saved.
- Twist/Ownverter Setpoints: all field values per leg and the Auto Send toggle are saved.
Switching tabs and switching back will restore the exact state the user left.
Serial Terminal Improvements
- Line wrap is now supported; long lines wrap instead of overflowing horizontally.
- Sign alignment: positive and negative numbers in columns now align correctly.
- Pause/Resume button replaces the old auto-scroll toggle. The terminal pauses scrolling while the user inspects output and resumes on click.
Extension Manager
A built-in Extension Manager is now accessible from the Extensions menu:
- Lists all installed and built-in extensions with their current enabled/disabled state.
- Toggle buttons enable or disable built-in extensions without restarting.
- Local install flow: install an extension bundle from disk.
- Uninstall removes installed (non-built-in) extensions.
- ThingSet CAN has been moved out of the core process into its own extension entry, reducing the application footprint for users who do not use ThingSet.
Plot Stability Fixes
- Time Plot no longer freezes or disappears when dragged to a pane of a different height.
- Time Plot channel editor labels corrected to match the fast-frame editor style.
- Fast Frame plot no longer enters an infinite resize loop; axis bounds now default to auto.
- XY Plot drag behaviour stabilised.
- Single-widget panes now fill the full pane height correctly.
- Fast Frame overflow at the bottom of the widget is resolved.
Other Fixes
- Duplicate datasource rows: moving a pane no longer creates a ghost label row in the Datasource selector of OwnTech widgets.
- Serial Command Buttons widget: the Title field was missing from the settings dialog; it is now present and renaming works correctly.
- Dashboard save format: dashboards are now saved with indented JSON instead of a single line, making them diff-friendly.
- Grid width: maximum column count increased to 10.
- Calibration widget: serial writes are now chunked to prevent Zephyr UART ring-buffer overflow on long calibration commands.
- Pane header: toolbar buttons no longer wrap to a second line in narrow panes.
- Dashboard file save dialog: defaults to the project-local folder instead of the system home directory.
Upgrading
No breaking changes. Existing dashboard JSON files load without modification. The first time an existing dashboard is opened it will appear in the first tab; additional tabs can be created as needed.
Version 0.9.3
Release Notes — v0.9.3
Released: 2026-05-15
Main menu overhaul
Replaced the buttons by horizontal bigger buttons on the main menu.
Widget Picker Overhaul
The ADD and EDIT flows for widgets are now distinct and consistent across the entire dashboard.
- ADD opens a two-step flow: choose a widget type from the picker, then configure it. The picker and settings never appear at the same time.
- EDIT (wrench) opens only the settings panel — the type picker is never shown. There is no reason to change a widget's type in place.
- Widgets with no configurable settings (e.g. Fast Frame Control, all gauges, all plots) open nothing when the wrench is clicked. Their configuration lives directly in the widget or in a dedicated integrated editor.
- Plots and gauges added via ADD skip the settings dialog entirely and open their integrated editor directly after the widget is placed.
Datasource Picker
The datasource ADD dialog now uses an icon-based tile picker (matching the widget picker) instead of a dropdown. A single click on a tile advances directly to the settings form.
Gauge Widgets
Five new integrated gauge widgets are available in the Gauges category:
- Vertical Gauge
- Horizontal Gauge
- Radial Arc Gauge
- Radial Needle Gauge
- Donut Gauge
Each gauge opens a dedicated integrated editor for source, zone, and alarm configuration. The vertical gauge icon uses two vertical bars to mirror the horizontal gauge's two horizontal bars.
Other Fixes
- Plots category order is now: Time Plot → XY Plot → Fast Frame Widget.
- Modal dialog width narrowed to fit content (640 px) instead of the previous 900 px.
- Serial Terminal uses a compatible free Font Awesome icon.
- Fixed a crash ("cannot call methods on sortable prior to initialization") that occurred when clicking New Dashboard after certain widgets had been on the board.
Upgrading
No breaking changes. Existing dashboards load without modification. Widgets that previously required a settings dialog on ADD will now open their integrated editor instead; wrench clicks on no-settings widgets are silently ignored.
Version 0.9.2
Modular 0.9.2 Release Notes
Release date: 2026-05-12
This release focuses on a much stronger plotting workflow, Fast Frame capture usability, and dashboard editing improvements. Scope is the work since 0.9.1.
Highlights
- Added a CSV-backed Fast Frame plotting workflow with dedicated Plot, UI Controller, and Channel Manager widgets.
- Added automatic helper-widget spawning from Fast Frame plots, so plots can create the UI and channel manager widgets needed to configure them.
- Added Fast Frame trigger, export, arm, and retrieve workflows, with per-port parser settings and acquisition status tracking.
- Added time-stamped CSV registration for Fast Frame captures and improved CSV file picking, schema detection, and refresh behavior when captures are repeated or files change.
- Added support for Fast Frame time-series and XY CSV plotting, including colon-separated file detection and more stable channel selections.
- Added a new XY plot workflow with a source manager, trailing history behavior, and less manual X/Y channel setup.
- Added dashboard widget drag-and-drop in edit mode, including reordering widgets inside a pane and moving widgets between panes.
- Improved widget creation by grouping widgets into clearer categories and generating unique default widget titles when adding or changing widget types.
- Added a New Dashboard action in the File menu and toolbar, plus clearer toolbar labels, pane tooltips, and edit-mode toggle behavior.
Fixes
- Fixed blank widgets after drag-and-drop operations.
- Fixed ghost widgets caused by Knockout array updates during drag operations.
- Fixed clipped sortable helpers and unwanted page scrolling while dragging widgets.
- Fixed helper widget reload loops, duplicate bindings, and early configuration update errors.
- Fixed repeated Fast Frame acquisitions so plots refresh consistently across repeated replots.
- Fixed CSV line-ending decoding and default trigger behavior for Fast Frame capture workflows.
- Simplified Fast Frame channel selection and moved source selection into the Channel Manager.
Documentation And Tests
- Added and updated
app/functional_diagram.mdwith a flow-oriented view of the application architecture. - Added widget documentation entries for Fast Frame widgets and XY plot widgets.
- Added Playwright E2E coverage for Fast Frame CSV plotting workflows.
- Added Playwright E2E coverage for XY plotting.
- Added Playwright E2E coverage for widget drag-and-drop across all 30 registered widget types.
- Added test fixtures for Fast Frame, XY plotting, and drag-and-drop dashboards.
Developer Notes
- Added renderer/runtime diagnostics to make dashboard and capture issues easier to trace from the terminal.
- Refined uPlot sizing behavior, including resize handling for Fast Frame plots.
- Updated
package.jsonto version0.9.2.
Version 0.9.0
Modular v0.9.0 — Release Notes
First public release of Modular, focused on documentation, widget UX, and the Python Communication Protocol workflow.
Highlights
- In‑app widget documentation with per‑widget tabs.
- Python Communication Protocol widgets for Twist/Ownverter control.
- Plot & Vertical Gauge helpers for faster setup.
- Improved widget layouts and controls for small pane sizes.
- Built‑in activity center toggle (off by default).
Documentation
- Widget docs shipped with the app (
Help → Widgets). - Example dashboards and firmware binaries included.
Known Notes
- This is a first public release; feedback and issues are welcome.