diff --git a/README.md b/README.md index b421921..87a8011 100644 --- a/README.md +++ b/README.md @@ -1277,7 +1277,7 @@ same reason: a frame can arrive between two layout passes, and a hole that empti the spotlight and the card jump. The card goes under the target, over it, or in the column beside it -- whichever has room -- and only takes the bottom corner when the target *is* the whole content, which is what happens to the plot step in the documented headless run (a 640x480 Xvfb screen gives -the window its 756x894 minimum, and at that width the split view overlays the side panel instead of +the window its 756x894 minimum, and at that width the split view overlays the dock instead of putting it beside the plot). The probe prints the two rectangles (`spot=`, `card=`) rather than asserting a placement, so that case reads as the geometry it is. @@ -3048,11 +3048,13 @@ now — they are listed so they are not mistaken for anything else: trigger mode and the block would grey itself under the click that started it. (8) The **dock's event rows carry no thumbnails** (the page's do) and show a **hollow marker on the members of the group on screen**, which the page's rows do not. (9) The dock lists at most 24 events; the page lists them all. - The signal badges, the signal pages and the drag (step 2) are done. Still to come, in the spec's - order: `USER-GUIDE.md` and the manual's figures (4). The events section in the dock and the `events` - page are done, and the left events pane, its divider and the header's Events toggle are deleted. Until - the manual is swept, it (which still describes the side panel's tabs, and the cursors, measurements - and events as panes of it) still describes the previous layout. + The signal badges, the signal pages and the drag (step 2) are done, and so are the events block in the + dock and the `events` page (the left events pane, its divider and the header's Events toggle are + deleted), the Mallard manual, `USER-GUIDE.md` and the two figures that show the window + (`main-window.png`, `trigger-capture.png`, regenerated with `tools/make-help-shots.sh`). The + manual's `math-editor.png` is the editor's own window and was not regenerated. + The main-window figure shows `'sine' is off: 1 trace left the plots` in the status bar and no sine + badge: the headless enable-all probe that drives the scene ends that way, and the figure records it. - **A plot holds at most eight signals** (`RowSet::kSlotsPerRow`), because a `Plot` cannot give up a trace and the slots are therefore created up front. - **One toggle drives both cursor orientations.** The vertical markers and the @@ -3187,7 +3189,7 @@ silence timeout and then resumes, which is the EMI case end to end. - **The tour card can cover its own target, and in the documented headless run it does.** The card is placed under, over or beside the hole whenever one of those has room; when the target covers the whole content -- which is what the plot does at the - window's 756 px minimum, because the split view overlays the side panel rather than + window's 756 px minimum, because the split view overlays the dock rather than putting it beside the plot -- no placement can avoid it, and the card takes the bottom corner. The probe prints both rectangles instead of asserting a placement, so the case reads as a measurement. diff --git a/docs/USER-GUIDE.md b/docs/USER-GUIDE.md index 81451dd..0e80b76 100644 --- a/docs/USER-GUIDE.md +++ b/docs/USER-GUIDE.md @@ -6,9 +6,22 @@ what was built and why, and `SPECS.md` is the requirement document. ![the main window](img/main-window.png) -*The main window with a source streaming: the signal panel on the right, the plot in the middle, the -status line directly under it, and the toolbar above. The window control — `2 s` — is the first thing -on the left.* +*The main window with a source streaming: the header bar above (the window control — `2 s` — first on +the left), the plot, the badge bar under it with one badge per signal, the status line at the foot, and +the dock on the right with the cursor and measurement readouts and the events block.* + +The window is a plot with three things around it: + +- the **badge bar** under the plot: a badge for each signal you have switched on, a `+` to add one + (past six they fold into one `N signals` badge), and, on the right, **Trigger** and — only for a + source with controls of its own — **Source**; +- the **side panel**, which a badge opens over the plot's right edge, one page at a time: the trigger, + a signal, the list of signals to add, the cursors, the measurements, the events, or a source's own + controls. A second click on the badge, `Esc`, **Close** or a click on the plot closes it, and it + never resizes the plot; +- the **dock** on the right, which the dock button in the header bar (`s`) shows and hides: read-only + **Readouts** of the cursors and of the measurements, each with an **Edit** button that opens its + page, and an **Events** block. ## 1. Connecting @@ -30,7 +43,7 @@ Every launch is its own process, so running two scopes side by side is fine. ## 2. The status line -Directly under the plot, it reads `● · · `, and the ⓘ beside it opens the +At the foot of the window, under the badge bar, it reads `● · · `, and the ⓘ beside it opens the detail: packets, frames, gaps, per-channel sample counts, the buffer's span and its decimation. - **The state word is one word** from a fixed set: `live`, `paused`, `armed`, `capturing`, @@ -44,14 +57,16 @@ detail: packets, frames, gaps, per-channel sample counts, the buffer's span and ## 3. Signals -The signal panel lists every signal the CONFIG described, with a switch each. **Signals start -disabled — enabling one is what starts acquiring it**, and a signal nobody enables costs nothing. -Drag a signal from the panel onto a plot row to add a trace; drag it again to another row to plot the -same signal twice. The colour is per *signal*, so the same signal is the same colour wherever it -appears. +The **`+` badge** (or `g`) opens the **Signals** page, which lists what can be added: the signals the +CONFIG described that are not acquired yet, each with a tick. **Signals start disabled — ticking one +is what starts acquiring it**, and a signal nobody enables costs nothing. Its badge then appears in +the badge bar. Drag the badge onto a plot row to add a trace; drag it again to another row to plot +the same signal twice, or onto another badge to reorder the badges. The colour is per *signal*, so +the same signal is the same colour wherever it appears. -The panel also holds the per-signal calibration: gain and offset, applied at ingest, so the -measurements and the export carry the same numbers the plot shows. +Clicking a signal's badge opens its own page: the colour, **Plot on** buttons for the rows, and +**Calibrate** — gain and offset, applied at ingest, so the measurements and the export carry the same +numbers the plot shows. ## 4. The window and navigation @@ -83,8 +98,9 @@ should look like. *Single mode with a capture held: the axis is the event's own `[-pre, +post]`, the trigger marker sits at the edge, and the status line reads `event held`.* -The trigger panel has the edge, the pre/post split (as a share of the event span), Normal or Single, -and Arm/Disarm. Selecting a signal for the trigger enables it. +The trigger button in the header bar (`t`) turns trigger mode on. The **Trigger** badge opens the +trigger page, which has the signal, the condition, the edge, the pre/post split (as a share of the +event span), Normal or Single, and Arm/Disarm. Selecting a signal for the trigger enables it. - **While a capture fills** the plot keeps drawing live data on the event's clock, so the post side fills in view; the axis does not move. @@ -94,6 +110,10 @@ and Arm/Disarm. Selecting a signal for the trigger enables it. when you disarm is the picture you keep. - The event window is counted in **stream seconds** end to end, so a source whose clock advances in jumps still gets the window it asked for. +- **Events.** With *record events* on (trigger page), each latch is stored. The dock's **Events** block + lists them newest first and **one click replays** one; **Manage** opens the full list as a page, + where a click selects, a double click replays, and **Compare**, **Accumulate** and **Live** act on + the selection or go back to the stream. The block is dimmed until something is recorded. ## 6. Pause @@ -104,22 +124,24 @@ does not walk it off its snapshot. ## 7. Cursors -The cursors toolbar toggle switches on two instruments per row: +The cursors toggle in the header bar (`c`) switches on two instruments per row: - **vertical** — two times, shared by every row; - **horizontal** — two rulers per row; - **both** — the two together; - **mix** — the two times, read off each *trace* where they cross it. -The pane beside it reports each trace's values at the markers, and **Reset** puts them back at the -window's edges. Values read `--` when a marker is past the newest sample and `partial` when only one +The dock reports each trace's values at the markers; **Edit** beside **Cursors** opens the page with +the mode and **Reset**, which puts them back at the window's edges. Values read `--` when a marker is past the newest sample and `partial` when only one marker is over data. ## 8. Measurements -The measurements pane computes statistics of the **visible window** of a signal: average, top, -bottom, min, max, peak to peak, amplitude, pulse duration, period and frequency. `+` adds one, the -row's pencil edits it, and **show on plot** draws its result as a ruler (levels) or markers (times). +A measurement is a statistic of the **visible window** of a signal: average, top, bottom, min, max, +peak to peak, amplitude, pulse duration, period and frequency. `m`, or **Edit** beside +**Measurements** in the dock, opens the page; its `+` adds one, a click on a row (in the page or in +the dock) edits it, and **show on plot** draws its result as a ruler (levels) or markers (times). +The dock shows each measurement's value. `top` and `bottom` take a *split* as a share of the window's own range — the percentage travels between signals where a threshold in volts would not. `period` and `frequency` deliberately have no @@ -127,7 +149,7 @@ split: they count rising crossings of the mid level, one edge per cycle, and a s setting you can only get wrong. The values are refreshed on a cadence — at most every 100 ms while the window is scrolling, once when -it stops, and once per mode change — so a live view cannot cost you frames. The pane's cost is +it stops, and once per mode change — so a live view cannot cost you frames. The cost is reported in the exit dump with the app's self-check. ## 9. Math channels @@ -139,13 +161,14 @@ the square on the right. The orange dot marks the node that carries the channel' A math channel is derived from the others and is then an ordinary channel: enable it and it is acquired, plotted, measured and exported like a streamed signal, and another math channel can use it -as a source. +as a source. The **Signals** page lists them under a `MATH` heading whose `+` creates one; a math +channel's own page has **Edit graph** and **Delete**. Operations: `channel` (a source), `gain + offset`, `abs`, `sqrt`, `clamp`, `low pass`, `high pass`, `band pass` (biquads, corner in Hz against the stored rate), `sum`, `difference`, `product`, `ratio`. - **Click** a node to select it; its parameters appear in the form beside the canvas. -- **Click an output square, then an input square**, to wire them. An input is only offered the nodes +- **Drag from an output square to an input square** to wire them. An input is only offered the nodes above it — the graph is a list walked in order, so a cycle cannot be drawn. - **Drag** a box to move it. **add node**, **delete node** and **set as output** are below the form. - The **output is the last node** of a graph you build top to bottom, and the orange dot says which; diff --git a/docs/img/main-window.png b/docs/img/main-window.png index c8fa754..f626603 100644 Binary files a/docs/img/main-window.png and b/docs/img/main-window.png differ diff --git a/docs/img/trigger-capture.png b/docs/img/trigger-capture.png index 5159e8f..cf2c563 100644 Binary files a/docs/img/trigger-capture.png and b/docs/img/trigger-capture.png differ diff --git a/help/C/org.udpscope.app/cursors.page b/help/C/org.udpscope.app/cursors.page index 6d51f0b..b02eb20 100644 --- a/help/C/org.udpscope.app/cursors.page +++ b/help/C/org.udpscope.app/cursors.page @@ -22,12 +22,13 @@ How to reach it -

Press the cursors button in the toolbar, or c.

+

Press the cursors button in the header bar, or c. It switches the cursors on + and off.

-

The readings are in the side panel (a read-only copy) and in the cursors panel, which - Edit beside Cursors opens over the plot and which owns a - Reset button. Drag a marker to move it.

+

The readings are in the dock (a read-only copy) and on the Cursors page, which + Edit beside Cursors opens over the plot and which owns the mode + and a Reset button. Drag a marker to move it.

The mode dropdown offers four modes: vertical (the shared time pair), diff --git a/help/C/org.udpscope.app/figures/main-window.png b/help/C/org.udpscope.app/figures/main-window.png index 449791c..f626603 100644 Binary files a/help/C/org.udpscope.app/figures/main-window.png and b/help/C/org.udpscope.app/figures/main-window.png differ diff --git a/help/C/org.udpscope.app/figures/trigger-capture.png b/help/C/org.udpscope.app/figures/trigger-capture.png index 299392e..cf2c563 100644 Binary files a/help/C/org.udpscope.app/figures/trigger-capture.png and b/help/C/org.udpscope.app/figures/trigger-capture.png differ diff --git a/help/C/org.udpscope.app/math.page b/help/C/org.udpscope.app/math.page index 0e207ec..8f7cbd5 100644 --- a/help/C/org.udpscope.app/math.page +++ b/help/C/org.udpscope.app/math.page @@ -22,10 +22,12 @@ How to reach it -

Press the math button in the toolbar, or g.

+

Open the Signals page (the + badge, or g). Math channels + are listed under a MATH heading.

-

The pane's + adds a channel, and opening one shows the graph editor: +

The heading's + adds a channel. Edit graph, on a channel's page, + shows the graph editor: nodes as boxes, click a box to select it and edit its parameters beside the canvas.

@@ -53,7 +55,7 @@ above it. A wire drawn right to left re-sorts the list silently so the graph stays valid. A cycle is unrepresentable: the connection is refused rather than created, and the line beneath the form says why — a loop, or a node asked to read itself.

-

A derived channel is a channel. It appears in the signal panel, can be +

A derived channel is a channel. It is listed with the signals, gets a badge once computed, can be plotted, measured, exported, and used as a source for another math channel.

The math runs on the stored samples — decimated and averaged — so a cutoff you type in Hz means the rate the filter will actually run at. Change the window diff --git a/help/C/org.udpscope.app/measurements.page b/help/C/org.udpscope.app/measurements.page index 5f0add6..c6f19e0 100644 --- a/help/C/org.udpscope.app/measurements.page +++ b/help/C/org.udpscope.app/measurements.page @@ -28,10 +28,12 @@ How to reach it -

Press m, or Edit beside Measurements in the side panel.

+

Press m, or Edit beside Measurements in the dock. Either opens the + Measurements page over the plot; the dock itself shows each measurement's value, + and a click on one opens its dialog.

-

The panel's + adds one; clicking a row opens the dialog where the signal, +

The page's + adds one; clicking a row opens the dialog where the signal, the type, the threshold share or shares and the on-plot marks are set, with Save and Delete.

diff --git a/help/C/org.udpscope.app/overview.page b/help/C/org.udpscope.app/overview.page index de4e796..0d35572 100644 --- a/help/C/org.udpscope.app/overview.page +++ b/help/C/org.udpscope.app/overview.page @@ -4,7 +4,7 @@ - What udpscope plots, the four parts of the window, and one pass through the + What udpscope plots, the parts of the window, and one pass through the application from connecting to saving. Martino Ferrari @@ -34,11 +34,12 @@
The udpscope window - The header bar above the plots, the side panel on the right, and the status bar - along the bottom. + The header bar above the plots, the badge bar and the status bar under them, and + the dock on the right. -

One figure of three rows with four signals enabled, the Measure tab open in the - side panel, and the status bar reading live.

+

One figure of three rows with three signals plotted, a badge for each in the badge + bar, the dock with its readouts and its events block, and the status bar reading + live.

@@ -55,7 +56,7 @@

The signals arrive disabled. Nothing is acquired until you turn one on in the signal list, and enabling is what starts acquisition — so a freshly opened scope with an - idle side panel is working correctly, not failing to connect. For the same reason a start + empty badge bar is working correctly, not failing to connect. For the same reason a start that has enabled nothing prints no buffer allocated: line on stderr.

@@ -81,32 +82,48 @@ The header bar -

Left to right: the time window (2 s), the trigger and the pause, the - events, cursors and side-panel switches, and the menu, which holds - Fit to data, the Layout editor, Export, - Keyboard shortcuts, Help and About.

-
- - The side panel -

A read-only copy of the cursors and of the measurements; the Edit button - beside each heading opens that instrument's full panel over the plot. The channel - list and the trigger are panels of their own, opened from the badge bar and the - toolbar, where a math channel is a row of the one list under a MATH - heading whose + creates one. One row per channel: its colour, an enable - switch, its name and its unit. A channel's badge in the badge bar is dragged onto a - plot row.

+

Left to right: the time window (2 s), the trigger and the pause; then, on + the right, the cursors switch, the dock switch and the menu, which holds + Fit to data, the Layout editor, Export visible range, + Configurations, Help, Preferences and + About. The trigger button turns trigger mode on and off; the trigger's + settings are in the panel its badge opens.

The plot

Up to eight rows, each with its own y axis and up to four traces, all on one shared time axis. Right-click a row for its own menu (fit, add a signal, remove a trace).

+ + The badge bar +

The strip under the plot. On the left, one badge for each signal you have switched + on, then a +; past six signals they fold into a single N signals + badge. On the right, Trigger, which names the trigger's state, and Source, which is there only when the + source has controls of its own. A badge opens its page in the panel described next; + a signal's badge is also what you drag onto a row.

+
+ + The side panel over the plot +

One panel, 360 px wide, slides over the plot's right edge and shows one page at a + time: the trigger, a signal's colour, calibration and rows, the list of signals to + add, the cursors, the measurements, the events, or a source's own controls. It closes + with a second click on the badge that opened it, with Esc, with + Close, or with a click on the plot, and it never resizes the plot.

+
+ + The dock +

The column on the right, which the dock button in the header bar (s) + shows and hides. Its Readouts are a read-only copy of the cursors and of + every measurement; Edit beside each heading opens that instrument's full + page. Under them, Events lists the captured events, newest first; a click + replays one and Manage opens the full list.

+
The status bar -

Directly above the plot's bottom edge — the state word, the stored sample rate and +

The last line, under the badge bar — the state word, the stored sample rate and the window, and the ⓘ beside it for packets, gaps and the buffer's own figures. The - second screenshot below is what a held capture looks like: event held, the - axis pinned to the event, and the trigger marker at the edge.

+ second screenshot below is what a capture looks like: the trigger marker at the edge + and the axis pinned to the event.

@@ -129,12 +146,12 @@ and port.

-

Enable a signal in the Add a signal page (the + badge). The plot stays empty for the first +

Enable a signal in the Signals page (the + badge, or g). The plot stays empty for the first fraction of a second while the first window fills — the buffer holds only what has arrived.

-

Drag it onto a row. Drop a second signal on another row, or the same +

Drag its badge onto a row. Drop a second signal on another row, or the same signal again for a second view of it. The colour is per signal, so it is the same one wherever it appears.

@@ -154,8 +171,10 @@ got.

-

Measure it — the measurements pane computes a statistic of the visible - window, and show on plot marks it as a ruler or a pair of markers.

+

Measure it — press m, or Edit beside + Measurements in the dock. A measurement is a statistic of the visible + window, its value is shown in the dock, and show on plot marks it as a + ruler or a pair of markers.

Save the data with Export visible range, which writes the diff --git a/help/C/org.udpscope.app/pause.page b/help/C/org.udpscope.app/pause.page index 9f8dbe3..5659e70 100644 --- a/help/C/org.udpscope.app/pause.page +++ b/help/C/org.udpscope.app/pause.page @@ -22,7 +22,7 @@ How to reach it -

Press the pause button in the toolbar, or Space.

+

Press the pause button in the header bar, or Space.

Press it again to resume, which rebinds the live ring and puts the window back on diff --git a/help/C/org.udpscope.app/sessions.page b/help/C/org.udpscope.app/sessions.page index 5a37359..615b52a 100644 --- a/help/C/org.udpscope.app/sessions.page +++ b/help/C/org.udpscope.app/sessions.page @@ -57,7 +57,7 @@

What a configuration persists: the time window, the rows and each row's slot signals, the calibration, the trace colours, which signals were enabled, the math - channels with their graphs, the measurements pane — and the startup settings: samples + channels with their graphs, the measurements — and the startup settings: samples per signal, relative time and the packet capture's ring size.

Signal identity is the name throughout, because a new CONFIG renumbers the channels.

diff --git a/help/C/org.udpscope.app/signals.page b/help/C/org.udpscope.app/signals.page index 5ca7b67..500af40 100644 --- a/help/C/org.udpscope.app/signals.page +++ b/help/C/org.udpscope.app/signals.page @@ -23,11 +23,15 @@ How to reach it -

Open the side panel (s), which lists every signal with a switch.

+

Click the + badge in the badge bar, or press g. The + Signals page lists what can be added — the signals the source declares that + are not acquired yet, each with a tick that acquires it. Past six acquired signals the + badges fold into one N signals badge, and the page then lists every signal.

-

The Signal list item in the overflow menu opens the editor where the - unit and the calibration live.

+

Once a signal is acquired its badge appears. Click it to open that signal's page: its + colour, Plot on buttons for the rows, and Information and + Calibrate, where the signal's details and its calibration live.

@@ -38,7 +42,7 @@

Signals start disabled, and enabling one is what starts acquiring it. A trigger on a signal nobody acquires can never fire, so arming a trigger enables its signal for you.

-

Calibrate in a signal's row menu opens the gain and offset it is +

Calibrate on a signal's page opens the gain and offset it is currently drawn through, so a trace already scaled by a gain of 2 shows 2 — pressing Apply confirms it rather than resetting it. A signal nobody calibrated shows the identity, 1 and 0.

@@ -51,12 +55,12 @@ refuses to put it in a row rather than binding a trace that would read nothing for ever.

A signal's colour follows the signal, not the slot, so the same signal - on two rows is one colour and the side panel's chip identifies it unambiguously. A - signal on no row gets a grey chip rather than none, so the panel's rows keep their - height.

-

Click a coloured chip to change that signal's colour. A grey chip - names no trace, so it is not clickable. The colour is saved with the session; - Default colour in the signal's ⋯ menu gives the palette entry back.

+ on two rows is one colour, and the dot on its badge shows it. A signal on no row gets a + grey dot rather than none.

+

Change a signal's colour with Change colour on its page; a + signal on no row has no trace to colour, so the button is dimmed. The colour is saved + with the session; Default colour on the same page gives the palette entry + back.

diff --git a/help/C/org.udpscope.app/status.page b/help/C/org.udpscope.app/status.page index 5a0ad46..3360273 100644 --- a/help/C/org.udpscope.app/status.page +++ b/help/C/org.udpscope.app/status.page @@ -18,7 +18,7 @@
How to reach it -

The bar is always visible under the plot. Click ⓘ for the detail popover.

+

The bar is always visible at the foot of the window, under the badge bar. Click ⓘ for the detail popover.

diff --git a/help/C/org.udpscope.app/trigger.page b/help/C/org.udpscope.app/trigger.page index 60f0f75..60bf4e6 100644 --- a/help/C/org.udpscope.app/trigger.page +++ b/help/C/org.udpscope.app/trigger.page @@ -23,15 +23,16 @@ How to reach it -

The trigger button in the toolbar (t) reveals the trigger panel: the - signal, the level, the shape, the edge (rising, falling, either), the mode (Normal or - Single) and the pre-trigger share.

+

Click the Trigger badge at the right of the badge bar to open the + trigger page: the signal, the level, the shape, the edge (rising, falling, either), the + mode (Normal or Single) and the pre-trigger share. The trigger button in the header bar + (t) turns trigger mode on and off; it does not open the page.

Arm starts watching; a arms and disarms from the keyboard. - When the pane is locked with its [edit] button — so that it states what the + When the page is locked with its edit button — so that it states what the trigger is set to instead of showing the controls — Arm/Disarm is in its - heading, and the trigger can be armed or disarmed without unfolding the panel. It is + heading, and the trigger can be armed or disarmed without unfolding the page. It is offered only while trigger mode is on, because a trigger that is off has no engine to arm.

@@ -170,29 +171,32 @@

Every triggered acquisition is kept. Latches are written to the event cache (~/.cache/udpscope/events/<source>/) as a .npy of the event, a .txt of what it was, and a .bmp picture drawn from the - samples. The Events pane on the left — opened from the toolbar's - event-history button, which appears while recording is enabled, and collapsed until you - ask for it — lists the last 32 newest first (time, duration, signals, rate), each row with - its own picture beside the numbers.

+ samples. The Events block at the foot of the dock lists them, newest first, one + short row each: a marker for the event on screen, its title and its number. It is dimmed + until recording is on, an event is stored or one is being replayed. Manage + beside its heading opens the Events page over the plot, which keeps the last 32 + (time, duration, signals, rate), each row with its own picture beside the numbers.

-

Clicking a row replays it: the stored event is loaded exactly like an exported +

Clicking a row in the dock replays it: the stored event is loaded exactly like an exported file, without changing the layout — the rows, the colours, the window, the cursors and the measurements stay where they are and read the stored data instead. A - replay leaves trigger mode, because a file has no edge to wait for, and the pane stays - open. Drag the pane's edge to resize it. Live goes back to the stream; the - status bar names the file until you do.

+ replay leaves trigger mode, because a file has no edge to wait for. Live, on the + Events page, goes back to the stream; the status bar names the file until + you do.

-

Select two or more events in the list and the two buttons under the header act on them: +

On the Events page, select two or more events in the list and the two buttons + under its header act on them: Compare puts two events in two plots side by side, keeping the layout you have — one plot per event, the axes synchronised, so zooming a row in one zooms the same row in the other — and Accumulate overlays up to four of them in the same traces, translucent, so where they agree the trace is brighter. Your own traces stay where they - are in both. They need events with the same signals and the same length. A single click - selects, a double click replays.

+ are in both. They need events with the same signals and the same length. On this page a + single click selects and a double click replays.

-

Record events, in the trigger panel with the trigger's other options, is +

Record events, on the trigger page with the trigger's other options, is what decides whether anything is kept. It is off by default — nothing is written - to disk until you ask — and with it off the history button goes with it.

+ to disk until you ask — and with it off, and nothing stored, the dock's events block and + the page stay dimmed.