Systemika Studio 1.1.8 - Release verification
Date: 2026-10-01

Automated regression verification:
- 427/427 tests passing with: npm test
- 19 permanent validation models under validation-models/

Verified 1.1.8 Feedback Loop annotation tool:
- Feedback Loop is a graphical-only canvas annotation placed immediately above Text on the vertical toolbar.
- Its picker offers clockwise/counterclockwise reinforcing (+) and balancing (−) loops using clean scalable SVG artwork; tooltip direction and arrow direction match.
- A selected loop is placed with one click on blank canvas, persists in .ssd models, and remains outside the computational entity set.
- New loops default to 50 points; all resizing remains square/circular automatically; new captions start with bold, italic, and underline enabled.
- Double-clicking a loop opens Feedback Loop Properties with one Size (points) field and an optional text label; the label is rendered below the loop rather than through its center.
- Feedback Loop Properties provides Size, caption, font family, font size, bold, italic, and underline, with no alignment or separate color control.
- The toolbar Color tool changes the arc, arrowhead, polarity mark, and caption together through the loop primitive's single Color attribute. New reinforcing loops use the Color-tool `red` value and balancing loops use the Color-tool `blue` value; picker/toolbar artwork uses those same colors, and caption color matches the loop by default.
- Feedback loops live in the annotation layer below model entities, preserving model-variable interaction priority.

Retained 1.1.7 Text Box interaction repair:
- Double-clicking a Text Box opens the Text properties dialog again when no model entity is actually painted under the pointer.
- Annotation priority now uses document.elementsFromPoint() for the browser's real painted hit test; the older geometry/bounding-box path remains only as a compatibility fallback.
- Genuine overlapping Stocks, Auxiliaries, Constants, Lookups, and Flows still receive double-click priority over background annotations.
- Pressing Enter with exactly one Text Box selected opens its Text properties dialog.

Retained 1.1.6 Calibration Sandbox alert visibility:
- XAlertDialog routes alerts into a dedicated modal overlay inside the Calibration Sandbox whenever that separate window is open.
- The overlay uses z-index 2147483647 and focuses the sandbox window so simulation errors such as Division by zero cannot remain hidden behind it.
- OK, Enter, and Escape dismiss the alert; existing close callbacks are preserved.
- Multiple alerts are queued and shown in order instead of replacing one another.
- When the Calibration Sandbox is closed, the ordinary editor jQuery UI alert remains the fallback.

Retained 1.1.5 Flow-elbow refinement:
- Each distinct Shift press while dragging a Flow arrow or cloud/source endpoint creates at most one elbow.
- Releasing Shift explicitly re-arms elbow creation even if the pointer does not move, so repeated Shift presses during the same continuous drag can add any number of elbows.
- The behavior applies both while first drawing a Flow and while reshaping an existing Flow endpoint.

Retained 1.1.4 Flow-editing fixes:
- Selected Flow endpoint and elbow handles retain their compact appearance but use larger invisible hit targets and a dedicated edit layer above Stocks, so attached endpoints can be grabbed reliably without allowing handles to cover protected Stock/Auxiliary labels.
- Dragging either attached Flow endpoint detaches it before movement; releasing over a Stock reuses the normal attachment logic to reconnect it.
- Completed Flows can add elbow handles by right-clicking a selected pipe segment and can be reshaped by dragging those handles.
- Elbows can be removed by right-clicking the handle or by selecting it and pressing Delete/Backspace; the Flow itself remains intact.
- Shift-drag elbow creation, multiline Lookup rows, and Rectangle post-creation resizing remain supported.
- Getting Started documents the Flow detachment and elbow-editing workflow.

Retained 1.1.3 corrective fixes:
- Detached Time/Compare/XY/Histogram plots use the document-safe jqPlot renderer and no longer go blank after detaching the live Output panel.
- Single-run Histogram avoids jqPlot hidden outside-grid legends and retains the reliable light-gray one-series rendering path.
- Copy/paste translates Link Bezier handles and Flow middle points and remaps copied equation references to copied inputs.

Verified output workspace:
- Systemika opens with the Output workspace closed so the modeling canvas uses the full window; the startup Set Time Unit prompt is centered against that full modeling canvas. Output toolbar commands/shortcuts reopen the requested view in the right pane.
- Table, Time Plot, XY Plot, and Histogram toolbar/keyboard actions activate the corresponding output in the upper right pane, with output and settings each using 50% of the available right-panel body height; Equations uses the full output height with no lower pane.
- Vertical and horizontal splitters resize the workspace; × hides the Output workspace without deleting outputs; the active output keyboard shortcut E/T/P/X/H also toggles that view closed/open. The detach/attach control is icon-only, uses the same button footprint as Close, and relies on its tooltip/accessible label; it opens a true external output window and returns the live panel to the main workspace. Closing a detached window hides the workspace and the next output command reopens it docked.
- Runs-to-compare uses a fixed scrollable three-row list. Plot variable selection uses one compact Selected Variable(s) box of matching width with an on-demand + Add Variable finder.
- Time Plot/comparison Time Plot selected-variable rows integrate Dash and Width; XY Plot exposes the same curve Dash/Width controls inside Selected Variable(s); the separate Line Style panel is absent.
- Table uses the same compact Selected Variable(s) + Add Variable finder as plots, retaining per-variable Decimal controls.
- All plot/table setting wrappers use an exact shared 360 px width. Legacy table-based controls collapse their default cell spacing so their visible outer borders fill that full width and align exactly with Selected Variable(s) and Runs to compare. The default dock width is 378 px (105% of the setting-box width) and is synchronized from the mounted settings unless the user manually resizes the dock.
- Equations/Table/plot export controls occupy a dedicated second row of the Output header, aligned to the left below the title/control row; Table provides SVG (all rows, including scrolled-out content) and CSV; plots provide SVG plus plotted-data CSV export. Plot PNG export is intentionally omitted because clipboard image copying already provides raster output.
- Plot legends are below the chart. Single-variable time comparisons label runs only; multi-variable comparisons use Variable [Run] labels in variable-first order.
- Manage Runs text entry is isolated from editor single-key shortcuts; Enter/Ctrl/Cmd+1/Ctrl/Cmd+R run from the Run Name field.
- Number Box creation UI and N shortcut are removed; legacy Number Box models remain loadable.

Verified classroom interface:
- Automatic startup update checking and Help → Check for Updates are present; desktop checks use the Electron update bridge and WebApp checks use the deployed update manifest.
- Help menu is Systemika-specific: Getting Started, Keyboard Shortcuts, Functions & Equations, Unit Checking, Preferences, About, License, Third-party Notices.
- Obsolete StochSD manuals/support links, Full Potential CSS material, restart items, and hidden legacy plugin-menu access are absent.
- Histogram output is available on the toolbar with shortcut H and supports multi-run comparison with shared bins and translucent overlays.
- Single-run Histogram uses light gray fill with black bin borders and no point markers.
- Hide/Unhide Question Marks toolbar control and Q shortcut are present; hiding markers does not disable definition validation.
- Preferences, About, license text, and third-party notices use current Systemika terminology/provenance.
- Keyboard Shortcuts help matches the current interface; obsolete Ctrl/Cmd+Enter equation guidance/binding is removed. Enter inserts equation line breaks and Apply saves definitions.
- Find uses the newly supplied SVG magnifying-glass artwork and opens the sortable Name/Type variable finder with Ctrl/Cmd+F.
- Find Ghosts uses the newly supplied SVG magnifying-glass/ghost artwork, is enabled only for one selected ghostable variable/Ghost, and Ctrl/Cmd+G cycles through every Ghost and back to the original variable.
- Stock names render in a dedicated top SVG layer so Flow pipes, valves, Links, and overlapping model entities cannot obscure the label text.
- Stock and Auxiliary names use compact rounded 72%-opaque adaptive backgrounds in the protected top label layer; matching Ghost labels use the same treatment.
- The Ghost creation tool uses the supplied Ghost SVG artwork.
- The menu bar no longer contains top-right provenance hyperlinks; About Systemika contains links to Systemika (https://systemika.no), StochSD, and Insight Maker.

Simulation and validation:
- Flow rates are signed and unrestricted; negative values are not clamped, and legacy OnlyPositive metadata is normalized/ignored.
- Native Systemika engine retained.
- Strict unit checker retained.
- Permanent validation set retained.

Verified live output settings and Advance editing:
- Selected Variable(s) is the first control in Time/Compare/XY/Histogram/Table settings; variable/run/output controls apply live with no docked Apply footer.
- Plot-page navigation flushes any pending live settings before changing pages and rebuilds the lower settings pane from the selected page, so page-specific controls track the visible graph.
- Table headings remain visible while scrolling long single-run and multi-run Tables; Table rows scroll inside a dedicated docked-table viewport.
- Output settings use a contained scroll area with no exposed content underneath a sticky footer.
- Paused Advance runs hot-recompile state-dependent formulation changes while preserving current stock state and compatible stateful-function memory.
- New model entities/Flows can be added during Advance and become part of subsequent steps.
- Deleting model entities during Advance asks first; confirmation genuinely runs Advance to the configured end before deletion is applied.

Desktop packaging:
- Electron is pinned to 44.3.0 for Electron-based source and Electron-based packaging.
- Release packaging uses electron-builder 26.16.1 as its only npm packaging dependency; Gulp/useref packaging dependencies are removed.
- Linux AppImage packaging pins the static AppImage toolset 1.0.3 to avoid the legacy FUSE2/libfuse.so.2 runtime requirement.
- Installer staging is handled by dependency-free build/build.js; electron-builder native-module rebuilding is disabled because Systemika has no native npm modules.
- Public packaging metadata consistently uses Systemika Studio 1.1.
- macOS Universal app builder is included as BUILD_MACOS_INSTALLER.command.

WebApp packaging:
- build/build.js rebuilds the WebApp from current source rather than using a stale prebuilt editor bundle.
- Generated launcher/editor JS, CSS, SVG, PNG, favicon, and other local asset references carry ?v=1.1.8 plus a content-derived &b=<build-id> cache key.
- The WebApp build emits non-cached `update.json` metadata used by startup/manual update checks.
- The upload-ready WebApp includes .htaccess no-store rules for application assets and WEB_BUILD_INFO.txt with the generated build ID.

- Paged Figures: Time/Compare/XY/Histogram page persistence and legacy compatibility covered by regression tests; page navigation/add/delete controls live on the Figure, with the last page protected from deletion.
- Print Equations: integral/differential/difference forms, type/name/computation sorting, explicit stock Initial Condition fields, persistent model-entity comments, and TXT/CSV/LaTeX export covered by regression tests.
- Graph export: the Output header exposes transparent SVG plus plotted-data CSV for Time/Compare/XY/Histogram; exported legends are below the graph and reproduce dash/width styles. XY Show Number repeats run numbers along curves according to rendered curve length; Figure page navigation is bottom-right and omitted from exports. Plot Period is automatic and no longer exposed in plot properties.
- Figure clipboard: Electron 44 uses clipboard.write() + ClipboardItem for PNG images; toolbar/keyboard Copy and Cut of a single Figure also place a high-resolution transparent PNG on the system clipboard for direct paste into document/presentation software.

Equation/editor refinements:
- Variable-name validation reacts on the input event so spaces/invalid characters are flagged immediately.
- Lookup renames update exact references across equation-bearing model entities without depending on visual Link traversal.
- Canonical Systemika references use bare entity names; legacy bracketed references remain accepted for older `.ssd` files.
- Multiline nested equations require no continuation/escape character.
- Double-click focuses Name first; Tab moves through property fields rather than inserting a tab character.
- Time/Compare Plot line dash and width are stored per plotted entity and per Figure page, with a uniform solid/2px default.

Run management refinement:
- Manage Runs includes Delete All with confirmation; deleting runs removes them from display selections and refreshes output devices.


Systemika Studio 1.1 Calibration Sandbox verification:
- Calibration Sandbox popup sizing uses the available display area; Electron opens the sandbox maximized. The six-plot grid consumes the remaining viewport height directly, with a 3×2 layout on normal widths and 2×3 on narrow widths, so plot bottoms no longer require routine page scrolling.
- Parameter rows use a fixed fluid table layout with shrinkable inputs and no horizontal overflow; side-panel resizing is clamped so the plot workspace retains usable width.
- Calibration Sandbox toolbar action, six plot slots, Reference/Simulated selectors, universal line-style legend, resizable parameter panel, constant sliders, reset controls, and Save as Default are covered by regression tests; Save as Default now shows explicit saved/dirty feedback.
- Slider-driven reruns use the existing Systemika engine, use a 40 ms live-rerun coalescing interval, and avoid run-file persistence after the initial named run for responsive manual calibration. Slider input cancels pending metadata writes; sandbox metadata is committed on slider change/release rather than repeatedly during manipulation.
- Reset and Reset All refresh plots and preserve subsequent live interaction.
- Calibration state restores plot/parameter configuration through lightweight `<Run Name>.sysrun.metadata.json` companion metadata that is merged over the associated `.sysrun` metadata without recompressing the run dataset.
- Same-model copies and cross-model destination name collisions use underscore-number suffixes; cross-window paste preserves original names when those names are free in the destination model.
