Repository navigation
EmbeddedDisplay Studio 0.1.1
The Windows executable is built, run against a fixture and attached by CI; it needs no Python installation.
Qt applications on a Qt-free panel
- Deploying a
runtime: pythonbundle (PySide2 or PySide6) to a panel that
runshmi-uinow brings the Qt runtime along, after one confirmation: the
Qt app launcher,hmi-gui.service, a Weston drop-in, and the PySide2
runtime (/opt/hmi-python-qt5) or PySide6 (into/opt/hmi-python). The
PySide2 runtime is assembled on the Studio's own PC from Debian packages --
no WSL, nodpkg-deb-- and cached. The panel needs no internet. - The application's own packages (pyserial, ...) are fetched as wheels on the
PC and installed on the panel withpip --no-index. hmi-installstarts the service that matches the bundle:hmi-uifor a
Studio design,hmi-gui(under Weston) for a Qt application. Boot default,
rollback and activate follow it, so deploying a Studio design hands the
display back tohmi-ui. Exit 5 when the bundle's service is not
installed; nothing is changed.- Weston no longer segfaults at start when
/tmp/.X11-unixhas been cleaned
away on a long-up panel.
AI Design
- Designs that do not fit the screen are split into pages: the instruments,
alerts and controls that matter most stay on an overview, the rest go to a
page per engine or system, linked both ways. A page that still overlaps
after layout moves its least important widget on. The prompt gives the
model a per-page budget for the actual screen, and a brief that names a
different resolution from the panel's is reported. - A twin composition for a pair of instruments (two engines, two
channels), chosen for a page with two dials of one kind or a brief that
says dual/twin. - Gauge scales are repaired from what a widget carries: a range too short
for its own thresholds or value is widened, a 0..1 "fraction" scale with a
real readout becomes the real scale, a fixed readout that hid the live
value is cleared, and a pair of instruments shares one scale. - Sectioned runs are laid out as one page after every section, instead of
stacking each section's hero in the same slot. - Model output is made deployable: tags lowercased, actions on signals a
widget cannot emit and links to pages that do not exist dropped, reused
widget ids renamed. The Designer applies the same repairs when it opens a
design saved before. - The vLLM preset follows the lab server to
:8080andqwen3.8-35b-a3b,
with an API key; a 401/403 reads "API key required/rejected", not
"unreachable", and a saved model the server no longer serves is replaced.
Studio
- The Code workspace is a project editor: the bundle's files and
folders, a Widgets list with live thumbnails, tabbed editors with undo /
redo / save, the design pinned first, and an opencode
coding agent that works in the project folder on the configured model. - A new look, from Libraries.dev
ported to QPainter: liquid navigation, border beams on work in progress,
thinking orbs, a bot avatar for the agent, a liquid-metal mark and a
pixel-mosaic preview loader -- with an Animations switch in the header. - Mirror the panel in the Display Console: the panel's own screen at a
frame a second. - Live Preview says why a design did not load (the QML error, in the window
and the console) instead of showing an empty window, and a binding on a
property a widget does not have no longer breaks the generated file. - The packaged Studio carries every PySide6 module except WebEngine/WebView,
and its built-in pip works -- a previewed application that loads a.ui
file, or needs a package installed, now runs. - Closing the Studio during a package install no longer crashes it.
Panel runtime
hmi-tagsim: a bench feed that reads the deployed design and fills every
tag it binds from one flight, each quantity mapped onto the scale of the
widget that draws it.hmi-uihonours the Designer'sz, builds on LVGL 9.3 with gcc 14, and
four kit widgets are back to their spec away from the defaults
(ShAttitude,ShTape,ShVSI,ShGauge);ShTurnCoordinator's
aeroplane sits on its own arc again.
Earlier in this cycle
- AI Design: the reasoning pass is off by default -- a thinking model spent
the whole output budget on it and could return no design at all. - The packaged Studio ships
designer/templates, and uncaught exceptions
reachstudio.log. - The Designer's property panel no longer deletes an editor inside its own
signal, which crashed the Studio when a font size was typed.
Full changelog: v0.1.0...v0.1.1