<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BobinkQtOpcUa/src, branch master</title>
<subtitle>High-level C++/QML library for making OPC UA applications with Qt Quick</subtitle>
<id>http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/atom?h=master</id>
<link rel='self' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/'/>
<updated>2026-04-01T09:54:12Z</updated>
<entry>
<title>Check all unchecked return values and guard error paths</title>
<updated>2026-04-01T09:54:12Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-04-01T09:54:12Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=ed9025f03aa6fcbf720f4e022f3594c85de0a385'/>
<id>urn:sha1:ed9025f03aa6fcbf720f4e022f3594c85de0a385</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add passphrase-protected private key support</title>
<updated>2026-03-31T15:44:35Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-31T15:44:35Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=f3beb1624c24012c246d17a40c4e10c1c6b3b5b5'/>
<id>urn:sha1:f3beb1624c24012c246d17a40c4e10c1c6b3b5b5</id>
<content type='text'>
Wire up QOpcUaClient::passwordForPrivateKeyRequired to a QML dialog,
mirroring the existing certificate trust flow (local QEventLoop + 30s
timeout).
</content>
</entry>
<entry>
<title>Suppress duplicate valueChanged after writeValue</title>
<updated>2026-03-24T15:14:11Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-24T15:14:11Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=6816fc573608cf9a5783caeabd47b8dbe1ac5ac5'/>
<id>urn:sha1:6816fc573608cf9a5783caeabd47b8dbe1ac5ac5</id>
<content type='text'>
Add m_pendingWrite flag to skip the write-path valueAttributeUpdated
emission and let only the monitored item deliver the authoritative
server value. Mirrors the existing m_pendingRangeWrite pattern.
</content>
</entry>
<entry>
<title>Refactor Main.qml into separate components and add comments</title>
<updated>2026-03-23T13:55:32Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-23T13:55:32Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=5ff9705937ffc1647587e1b228effd30c8a0e309'/>
<id>urn:sha1:5ff9705937ffc1647587e1b228effd30c8a0e309</id>
<content type='text'>
Extract ConnectionPage, CertTrustDialog, and DebugConsole from Main.qml
into their own QML files. Add inline comments to
OpcUaMonitoredNode::handleValueUpdated explaining the range write guard,
value store, and timestamp update.
</content>
</entry>
<entry>
<title>Fix auto-accept certificate blocking for 30s on event loop timeout</title>
<updated>2026-03-09T10:16:56Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-09T10:16:56Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=47096b375797c38b5b1e79f1366f1152cc292875'/>
<id>urn:sha1:47096b375797c38b5b1e79f1366f1152cc292875</id>
<content type='text'>
When acceptCertificate() was called synchronously from the
certificateTrustRequested signal handler, m_certLoop was still nullptr
so the quit() call was a no-op. The event loop then blocked for the
full 30-second timeout. Skip the event loop when m_certAccepted is
already set by a synchronous handler.
</content>
</entry>
<entry>
<title>Fix all qmllint warnings in demo QML files</title>
<updated>2026-02-26T12:56:43Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-26T12:56:43Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=d2e8cebe210d558d4abba31eebfb83155e7e5009'/>
<id>urn:sha1:d2e8cebe210d558d4abba31eebfb83155e7e5009</id>
<content type='text'>
- Add pragma ComponentBehavior: Bound to both QML files
- Qualify unqualified property accesses with component id
- Replace var logFunction property with logRequested signal
- Fix layout-managed Rectangle to use implicitHeight
- Register OpcUaNodeInfo gadget as QML_VALUE_TYPE
</content>
</entry>
<entry>
<title>Make build system usable as a git submodule</title>
<updated>2026-02-24T17:18:31Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-24T16:41:35Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=3e8111aaee070dc9b5d51cab3fd44ff88841f63e'/>
<id>urn:sha1:3e8111aaee070dc9b5d51cab3fd44ff88841f63e</id>
<content type='text'>
Replace CMAKE_SOURCE_DIR/CMAKE_BINARY_DIR with PROJECT_SOURCE_DIR/
PROJECT_BINARY_DIR so paths resolve correctly from add_subdirectory().
Guard global settings (CMAKE_CXX_STANDARD, CMAKE_BUILD_RPATH,
qt_standard_project_setup, demo) behind PROJECT_IS_TOP_LEVEL.
Export OPEN62541_INSTALL_DIR and QTOPCUA_INSTALL_DIR as CACHE INTERNAL
so parent projects can set up RPATH and plugin paths.
</content>
</entry>
<entry>
<title>Add ValueRank and ArrayDimensions to OpcUaNodeInfo</title>
<updated>2026-02-24T15:51:15Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-24T15:51:15Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=75d77c39924629eaebf6b721a541407e19ced762'/>
<id>urn:sha1:75d77c39924629eaebf6b721a541407e19ced762</id>
<content type='text'>
Read both attributes at node setup alongside the existing metadata.
ValueRank is mapped to human-readable names (Scalar, OneDimension, etc.)
and ArrayDimensions is formatted as a comma-separated size list.
Both are shown in the demo tooltip.
</content>
</entry>
<entry>
<title>Fix writeValueAtRange sending scalar for single-element range writes</title>
<updated>2026-02-24T15:51:06Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-24T15:51:06Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=0a3a5c241e0de6587f0c19fd3ef73024fa1d4b52'/>
<id>urn:sha1:0a3a5c241e0de6587f0c19fd3ef73024fa1d4b52</id>
<content type='text'>
OPC UA requires an array value when using an index range, even for a
single element.  Strict servers reject a scalar with BadIndexRangeNoData.
Wrap the coerced value in a QVariantList when it isn't one already.
</content>
</entry>
<entry>
<title>Add writeValueAtRange for index-range array writes</title>
<updated>2026-02-23T16:35:34Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-23T16:35:34Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/BobinkQtOpcUa/commit/?id=4ac860baa81f30e3e1fc9aaa42a3f0bb0537543a'/>
<id>urn:sha1:4ac860baa81f30e3e1fc9aaa42a3f0bb0537543a</id>
<content type='text'>
</content>
</entry>
</feed>
