The editor¶
Layout¶
On the far left, the activity bar holds a panel per icon: Graphs (the workspace and its
graphs), Nodes (every node with its documentation: drag one onto the canvas), Examples,
Reports (the runs that wrote one), History (this session’s edits) and Constants. Click
an icon to show its panel, and click it again (or press Ctrl+B) to fold the panel away. Help and
Settings are at the bottom of the bar.
On the right, the sidebar holds what follows the selection and the results: Node, Problems
and Requirements above, Outputs, Tracked and Study below. N hides it. Every panel can go
wherever suits the work, as in VS Code:
Drag a tab (or an activity bar icon) onto another group’s tabs to move it there, onto the top or bottom edge of a group to split the sidebar, onto the activity bar, or under the canvas to start a bottom panel. Drop it anywhere else and it floats over the page; a floating panel moves by its tab strip, resizes from its corner, and ⇲ docks it back.
Right-click a tab for the same moves, Open in new window (a panel of its own on a second screen, still live; closing the window puts it back), and Reset layout.
⧉ next to Processing/Reporting (or
\) shows both canvases side by side. The one you last clicked gets the shortcuts, the Node panel and new nodes;`moves between them.Zen mode (
Ctrl+Alt+Z, or View → Zen mode) leaves only the canvas and the top bar.
The layout, the pane sizes and the split are kept in this browser; View → Reset the layout puts them all back.
Keyboard and screen readers¶
Everything in the panels, menus and dialogs works from the keyboard: Tab moves between them, the
arrow keys move within a tab list, the activity bar, a menu or a list, and Enter or Space
activates. A skip link, the first stop on the page, goes straight to the canvas. On the canvas,
Tab opens the selected subgraph or goes back up; with no subgraph there, Tab moves on. In the
Agent terminal, which takes every key, F6 leaves it; Ctrl+C copies a selection (without one
it interrupts the agent) and Ctrl+V pastes, as in a native terminal.
Right-click a row in a panel (a graph or folder in Graphs, a report, an output, a tracked
value, a requirement, a constant, a problem, an edit in History, a run in the reports library)
for what you can do with it: open, show its node, copy its name or path, export, delete.
Shift+F10 or the Menu key opens the same menu on the row that has the focus. In the Agent
terminal, right-click offers Copy, Paste, Select all and Clear. Status messages and run results are
announced to screen readers.
Requirements¶
Write down what a design must achieve in a Requirements node, one per line (or load a CSV/YAML spec):
COM-003 link_margin >= 3 dB [Analysis] # The link shall close with 3 dB to spare
PWR-001 dc_power <= 40 W [Inspection] # The radio shall draw at most 40 W
> and < are strict: a value at the limit meets >= but not >. Requirements are values in the graph. Requirement Value feeds a limit into the design, Verify Requirement checks a result and reports its margin, and Check Candidates scores every row of a trade table or sweep. A requirement that is not met marks its node, is listed with its margin in the Problems tab, fails noodlelab test and is recorded in the run’s provenance. A result with an uncertainty is judged with its expanded uncertainty U = k·u (k = 2, or from the degrees of freedom with “from dof”): when the nominal value meets the limit, but by no more than U, the requirement is inconclusive (marked amber with “?”). That is not a pass, and noodlelab test and noodlelab verify fail on it too. The check also gives the probability of conformity, P(conform), and a decision rule (risk=2.5%, guard=1, rule=simple) can decide with it: see Requirements and conformity. Add Compliance Matrix puts the verifications in a report. Examples 8, 17, 21 and 23 use them.
The Requirements tab lists every requirement of the graph as passed, failed, inconclusive or not verified yet (defined but never checked). Each one shows the value achieved against the limit, its margin, the node that checked it, and where the verdict came from: whether the run computed the check or reused it, and which run computed it when. The tab also has a history of the margin over every run of the saved graph, with a CSV export. Runs from the editor and from noodlelab run both add to it, kept in .noodlelab/requirements/ in the workspace, and GET /api/workspaces/{ws}/requirements/{graph} serves it.
Tracked values¶
Right-click any output socket and choose Add to Tracked to follow that value from run to run. The Tracked tab shows each tracked value with its latest result, whether it is up to date, and which run computed it and when (a reused result names the run that computed it). It also shows a history of every run of the saved graph, with a sparkline for numbers and a CSV export. The list is saved with the graph. Runs from the editor and from noodlelab run both add to the history, which is kept in .noodlelab/tracked/ in the workspace. Examples 8, 9, 17, 21 and 23 track some values already.
In the editor, the add-node search and menu offer only the nodes for the tab you’re on: Report nodes on Reporting, processing nodes on Processing. Turn this off in Settings, or from the canvas right-click menu.
Report templates¶
Render PDF typesets the report with a template: a report, an IEEE-style article, a calculation note, a test report, a one-page summary or slides, or one of your own in the workspace’s templates/ folder. Select a Render PDF node to choose one in the inspector, fill in the fields its title block asks for and preview it. Figures, tables and equations take labels for cross-references, and Add Bibliography adds citations. See Reports and templates.
Calculators¶
Share › Calculator… turns a saved graph into a simple form for people who never open the editor: they fill in the inputs you chose, press Calculate, and see the results and the requirements’ verdicts. A calculator link shares it with someone without an account, and opens nothing else. See Calculators.
Constants¶
A Constant node gives a named constant with its unit: pi, tau and e (plain numbers, as in Python’s math), the exact SI constants (c, h, k_B, N_A, q_e…), measured ones with their CODATA 2022 uncertainty (G, m_e, alpha…), conventions (g0, atm, T0) and a few for Earth and space (R_E, GM_E, au). Its unit setting converts it: 1 makes π a dimensionless quantity for Quantity Math. In a symbolic Values node, a line g = g0, or just c, does the same. A name alone is taken as a constant before a unit, so t = h is Planck’s constant: write t = 1 h for an hour. Values warns when a name like that means something else as a unit (h, e, G, F), and stays quiet for names that mean the same either way (c, g0, atm). Evaluate never fills in a constant by itself, since c might be a damping coefficient, but its error says which missing symbols name one.
The Constants tab lists every constant in force, and clicking one adds a Constant node for it. The graph’s own constants are added and edited there, and saved with the graph. Constants for every graph in a workspace go in constants.toml at its root:
rho_w = "998.2 kg/m^3"
k_spring = "1520 ± 12 N/m"
[g_local]
value = 9.8123
unit = "m/s^2"
uncertainty = 0.0005
source = "gravity survey 2024, station 12"
A graph’s constant replaces a workspace one of the same name, and both can replace a built-in one, which is flagged unless the entry says override = true. pi, tau and e are fixed. Mistakes in the file show in the Problems tab. Editing a constant reruns exactly the nodes that use it, every run’s provenance lists the constants it used, and exported scripts define the graph’s and the workspace’s constants so they run on their own. noodlelab constants prints the same list, and noodlelab.constants has them in Python.
Examples¶
The Help tab has 29 examples. They go from a 3-node “plot a function” up to full studies: calibration curves, uncertainty budgets, time series, spectra, symbolic beam equations with SymPy, parameter sweeps, GPS tracks, watersheds, a satellite downlink link budget, sizing a cantilever bracket with the engineering pack, controlling two masses on springs, from their equations to a PID loop, a Gaussian-process surrogate of a bracket’s stress, classifying weld defects with XGBoost, the tolerance stack-up of a gearbox shaft’s end play, signed off, and a preregistered comparison of annealed and as-printed plastic. Open one, then press Ctrl+Enter to run it.