<feed xmlns='http://www.w3.org/2005/Atom'>
<title>labUI.git/ui, 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-08-03T21:32:56Z</updated>
<entry>
<title>Fix acquisition pipeline stutter with many channels</title>
<updated>2026-08-03T21:32:56Z</updated>
<author>
<name>Christian Kolset</name>
<email>ckolset@colostate.edu</email>
</author>
<published>2026-08-03T21:32:56Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=9bcad5d3af258eb72bc9c8ac87e3f1713e1b8b80'/>
<id>urn:sha1:9bcad5d3af258eb72bc9c8ac87e3f1713e1b8b80</id>
<content type='text'>
Batches per-tick device readings into one signal emit instead of one
per channel, evaluates derived channels once per tick instead of once
per raw sample, and makes ChannelBuffer.window() cost scale with the
window size instead of total buffer history. Strip chart X-range now
scrolls on an independent ~30fps timer instead of only snapping when
new data lands, which was the main visible cause of the stutter.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Re-designed control widgets to be fully contrained.</title>
<updated>2026-08-03T18:42:12Z</updated>
<author>
<name>Christian Kolset</name>
<email>ckolset@colostate.edu</email>
</author>
<published>2026-08-03T18:25:36Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=68a0c5ba06f471d1d63aedfb61d708faa4b76565'/>
<id>urn:sha1:68a0c5ba06f471d1d63aedfb61d708faa4b76565</id>
<content type='text'>
- Moved edit and X button to top with header of widget.
- Replaced up/down button with drag-and-drop style headers.
</content>
</entry>
<entry>
<title>Removed floating control panel feature. Floating can make window</title>
<updated>2026-08-03T18:14:31Z</updated>
<author>
<name>Christian Kolset</name>
<email>ckolset@colostate.edu</email>
</author>
<published>2026-08-03T18:14:31Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=c8bc48e5d842e5e903319ea8b75be38d5002856f'/>
<id>urn:sha1:c8bc48e5d842e5e903319ea8b75be38d5002856f</id>
<content type='text'>
disappear and no sidebar panel.

Possible future implementation.
</content>
</entry>
<entry>
<title>Merge branch 'feat/auto-updater'</title>
<updated>2026-08-02T17:05:48Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-08-02T17:05:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=1c349a982026736f4c2a26951d9d0aefe7b963bc'/>
<id>urn:sha1:1c349a982026736f4c2a26951d9d0aefe7b963bc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove Debug window feature</title>
<updated>2026-08-02T07:38:09Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-08-02T07:38:09Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=fa0304793a4525db68cb53b527d695bfa2c65966'/>
<id>urn:sha1:fa0304793a4525db68cb53b527d695bfa2c65966</id>
<content type='text'>
Debug button, DebugWindow, and the stdout/stderr tee (core/debug_log.py)
weren't wanted. developer_mode toggle stays — still gates device
Simulation Mode checkboxes and verbose terminal logging.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge origin/main: reconcile ConfigWindow consolidation with Debug window + protocol updates</title>
<updated>2026-08-02T07:34:43Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-08-02T07:34:43Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=a3aa1df99df8f413cac2ba6020b7cd0dec6d2390'/>
<id>urn:sha1:a3aa1df99df8f413cac2ba6020b7cd0dec6d2390</id>
<content type='text'>
origin/main (23 commits) added a Debug window/log system on top of the old
separate Devices/Channels/Plot windows, plus protocol fixes (cml, mark10,
modbus_rtu, scpi) and device/profile changes. Local main (3 commits)
replaced the separate windows with a unified ConfigWindow + dock panel.

Kept local's ConfigWindow/dock architecture and ported the Debug window
onto it: new toolbar button + _open_debug(), gated by developer_mode same
as origin's version. Deduped the two independent "developer mode" toggles
that had collided in SettingsWindow (origin's General-tab checkbox gating
Debug window + device sim-mode visibility, local's Advanced-tab checkbox
setting verbose logging) into one General-tab checkbox that does both.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix Settings button calling nonexistent _toggle_win method</title>
<updated>2026-08-02T07:15:14Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-08-02T07:15:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=f5066a8ca2fb50aa3dddf2c8847e52574cdde6ad'/>
<id>urn:sha1:f5066a8ca2fb50aa3dddf2c8847e52574cdde6ad</id>
<content type='text'>
Consolidation of Devices/Channels/Plot into ConfigWindow left the
Settings button wired to a method that no longer exists.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Consolidate Devices/Channels/Plot into unified ConfigWindow</title>
<updated>2026-08-02T06:58:34Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-08-02T06:58:34Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=f6b68f1482a6b6491c9163cf7e9b1489aa24d6d0'/>
<id>urn:sha1:f6b68f1482a6b6491c9163cf7e9b1489aa24d6d0</id>
<content type='text'>
Replaces three separate floating windows with single tabbed ConfigWindow:
- Tab 0: Devices (device cards, add/remove/configure)
- Tab 1: Channels (signal table with Dir/IN/OUT badge + pipeline ⚙ per row; derived channels pane)
- Tab 2: Plot (layout canvas + pane config)

Adds is_output field to ChannelConfig for output channel direction badges.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Major control panel improvements.</title>
<updated>2026-08-02T05:02:14Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-08-02T04:55:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=e1b951db7714a9496ebf7f861a6741598d4c7e67'/>
<id>urn:sha1:e1b951db7714a9496ebf7f861a6741598d4c7e67</id>
<content type='text'>
    - Added dedicated firmware file for arduino
    - Added View button to consolidate windows
    - Control Panel changes:
        - Changed name fron "Controls" to "Control Panel"
        - Blue side bar when Panel is hidden.
        - Supports "popping" out contorl panel
    - Settings &gt; Advanced tab added with developer settings
</content>
</entry>
<entry>
<title>Rename LabDAQ → LabUI and overhaul plugin system</title>
<updated>2026-08-02T01:06:36Z</updated>
<author>
<name>Christian Kolset</name>
<email>christian.kolset@gmail.com</email>
</author>
<published>2026-08-02T01:06:36Z</published>
<link rel='alternate' type='text/html' href='https://git.kolset.xyz/labUI.git/commit/?id=0aa59c13af65beeae104662593b21ba4d8a37789'/>
<id>urn:sha1:0aa59c13af65beeae104662593b21ba4d8a37789</id>
<content type='text'>
Branding:
- Rename app, window title, file extension (.labdaq → .labui), user data
  dirs (~/.labui/), spec file (labdaq.spec → labui.spec), and APP_NAME
  throughout all source, docs, and config files

Plugin system:
- Plugins no longer bundled in the PyInstaller build — installed at
  runtime by users via Settings → Plugins → Install Plugin (zip)
- PluginManager now takes user_dir + extra_scan_dirs; user plugins live
  in ~/.labui/plugins/, dev scan additionally covers project plugins/
- install_from_zip / uninstall / is_user_installed added to PluginManager
- vendor/ dir inside plugin zips: prepended to sys.path at load time so
  plugins can ship their own deps without requiring pip on end-user machine
- source_url field in manifest.json: shown as Download button in the
  missing-plugins dialog when a profile requires an absent plugin
- Frozen-app pip install now targets ~/.labui/plugin_packages/ using a
  real system Python (sys.executable is the exe in frozen builds)

Profile loading:
- Profile now stores plugins_manifest snapshot (id, name, version,
  source_url) alongside plugins_enabled
- On load, missing or dep-broken plugins trigger MissingPluginsDialog
  before the rest of the profile is applied; user can install from zip
  or download via source_url in-dialog, or cancel the load
- Plugin reconciliation only enables installed plugins — missing ones
  are not written to enabled.json

UI:
- Version label added to status bar (bottom-right, muted colour)
- Settings → Plugins tab: Install Plugin… button, per-plugin Remove
  button for user-installed plugins, live list refresh after install/remove

Docs:
- New docs/building.md covers the full release pipeline
- docs/plugin-development.md updated for new install flow, vendoring,
  source_url, profile behaviour, and distribution instructions

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
