<feed xmlns='http://www.w3.org/2005/Atom'>
<title>labUI.git/ui/windows/devices_window.py, branch main</title>
<subtitle>Data acquisition program written in Python for use with serial communication devices.
</subtitle>
<id>https://git.kolset.xyz/labUI.git/atom?h=main</id>
<link rel='self' href='https://git.kolset.xyz/labUI.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/'/>
<updated>2026-07-29T19:41:29Z</updated>
<entry>
<title>Merge branch 'feat/device-naming'</title>
<updated>2026-07-29T19:41:29Z</updated>
<author>
<name>Christian Kolset</name>
<email>ckolset@colostate.edu</email>
</author>
<published>2026-07-29T19:41:29Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=934d3fc18bc4fc0e05d26a12d635915b00bd8c8d'/>
<id>urn:sha1:934d3fc18bc4fc0e05d26a12d635915b00bd8c8d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rework channel labeling and add source picker to virtual-channel creation</title>
<updated>2026-07-29T19:10:35Z</updated>
<author>
<name>Christian Kolset</name>
<email>ckolset@colostate.edu</email>
</author>
<published>2026-07-29T19:10:35Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=2c6b4b751ffdd1156254b31745597654b5f2e286'/>
<id>urn:sha1:2c6b4b751ffdd1156254b31745597654b5f2e286</id>
<content type='text'>
Relabel every channel picker/header to "NAME (DEVICE/SIGNAL)" instead of
the previous "DEVICE/SIGNAL (NAME)" ordering, consistently across
channels_window.py (_channel_combo, ChannelPickerDialog,
ChannelPipelineBlock header), plot_builder.py, plot_config.py,
control_editor.py, and plot_window.py.

While touching each of those pickers, added the missing `.enabled`
filter that _make_picker()/_x_cb/_build_channel_picker lacked (the
default-layout builders already filtered disabled channels; these
manual "add channel to pane" pickers didn't).

Devices window Signals tab: removed the separate "Signal ID" column
(folded into the existing non-editable Device column instead of the
editable Name column, to avoid corrupting the in-place channel rename
feature that column already supports).

Channels window Virtual Channels pane: added a "Source" dropdown next
to "+ Add Channel" — picking a source pre-seeds the new derived
channel with it via DerivedBlock._add_src(); leaving it on the default
"none" entry keeps today's behavior of creating an empty channel.

Note: docs/ToDo.md's "Channels window UI" items referred to the *live*
UI (this window's PipelineTab + the Devices window's Signals tab), not
SignalsListTab in this same file, which its own module docstring flags
as dead/unused code kept only for old-profile compatibility — verified
by grepping for any instantiation of it (none exist).

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add editable device display name, persist it across profile save/load</title>
<updated>2026-07-29T19:03:24Z</updated>
<author>
<name>Christian Kolset</name>
<email>ckolset@colostate.edu</email>
</author>
<published>2026-07-29T19:03:24Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=d9ca58e48cf92438087ac24ee261c2c4911316b1'/>
<id>urn:sha1:d9ca58e48cf92438087ac24ee261c2c4911316b1</id>
<content type='text'>
DeviceInfo.name existed but was hardcoded per device type and never
operator-editable. Adds a Display Name field to Add Device and makes
the Info-tab Name field in the device config dialog editable, and
threads the name through get_save_config()/ProfileManager.apply() so
a custom name survives a .labdaq save/reload instead of reverting to
the type default. Name is applied post-construction rather than as a
constructor kwarg, since no device factory declares a "name" param.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Channels/Signals UX: rename labels, calibration section, splitter, sig# IDs</title>
<updated>2026-06-10T03:02:53Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-06-10T03:02:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=b138e72d6f81cf58f27c6c1e4ce65cfebbb58624'/>
<id>urn:sha1:b138e72d6f81cf58f27c6c1e4ce65cfebbb58624</id>
<content type='text'>
Naming conventions:
- Devices window: "Channel ID" column → "Signal ID"
- Serial device auto-gen IDs: CH# → sig# (generic, SCPI, Modbus fallbacks)
- Channels window physical section: "Physical Channels" → "Signals"
- Channels window virtual section: "Virtual Channels" → "Channels"
- "Add Virtual" button → "Add Channel"
- New derived channel default name: "Virtual Channel #" → "Channel #"

Signals panel (ChannelPipelineBlock):
- Remove Calibrate header button; add inline Calibration section in body
- Remove Math section (Derivative/Integral) entirely
- scale_offset excluded from filter dropdown; routed to Calibration section
- Existing pipelines: scale_offset loads into Calibration, math filters dropped
- _FILTER_KEYS excludes derivative, integral, scale_offset

Splitter default position:
- Left (Signals) pane initialised to minimum content width via QTimer.singleShot
- setStretchFactor(0,0) / (1,1): left stays narrow, right grows on resize

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Make Devices, Channels, Plot windows maximizable</title>
<updated>2026-06-03T20:50:32Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-06-03T20:50:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=93e7d0ecdc090fd4f0231b13933fc0fa095a1f22'/>
<id>urn:sha1:93e7d0ecdc090fd4f0231b13933fc0fa095a1f22</id>
<content type='text'>
Remove Qt.WindowType.Tool flag — it suppresses the maximize button.
Window now has standard chrome with minimize/maximize/close.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Sync Channels window with device/channel changes</title>
<updated>2026-06-03T17:38:49Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-06-03T17:38:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=23c669b3c6fb3bc805887cef00d6c37756e5c41e'/>
<id>urn:sha1:23c669b3c6fb3bc805887cef00d6c37756e5c41e</id>
<content type='text'>
- Remove redundant Signals tab from Channels window; PipelineTab is now direct content
- PipelineTab removes stale blocks when devices are removed or reconfigured
- Devices&gt;Signals tab refreshes automatically on device add/remove/configure
- Channel name and unit edits in Devices&gt;Signals propagate live to Channels pipeline block headers; missing blocks auto-added if channel is enabled

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Improved arduino interface. Now allowing the user to configure pins on the fly.</title>
<updated>2026-04-27T22:53:14Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-04-27T22:53:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=2b9943ba0d28449a590acfa8a41555b174b6ba84'/>
<id>urn:sha1:2b9943ba0d28449a590acfa8a41555b174b6ba84</id>
<content type='text'>
</content>
</entry>
<entry>
<title>V8</title>
<updated>2026-04-20T22:55:57Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-04-20T22:55:57Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=d5acb04b88373d33b038bb59945fb5ab8b4f543b'/>
<id>urn:sha1:d5acb04b88373d33b038bb59945fb5ab8b4f543b</id>
<content type='text'>
</content>
</entry>
</feed>
