<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BobinkQtOpcUa/src/BobinkClient.h, branch master</title>
<subtitle>High-level C++/QML library for making OPC UA applications with Qt Quick</subtitle>
<id>http://git.tvcloud.fr/BobinkQtOpcUa/atom/src/BobinkClient.h?h=master</id>
<link rel='self' href='http://git.tvcloud.fr/BobinkQtOpcUa/atom/src/BobinkClient.h?h=master'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/'/>
<updated>2026-02-20T09:41:09Z</updated>
<entry>
<title>Rename classes to OpcUa* prefix, replace BobinkNode with OpcUaMonitoredNode boilerplate</title>
<updated>2026-02-20T09:41:09Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-20T09:41:09Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=0012cb312e92c33f5263478d318eb82da22ee879'/>
<id>urn:sha1:0012cb312e92c33f5263478d318eb82da22ee879</id>
<content type='text'>
Rename BobinkAuth → OpcUaAuth, BobinkClient → OpcUaClient (C++ class
names only; QML module URI and singleton name stay as Bobink).
Remove BobinkNode (QQuickItem-based) and add OpcUaMonitoredNode
skeleton using QObject + QQmlParserStatus, following Qt convention
for non-visual QML types.
</content>
</entry>
<entry>
<title>Extract errorChanged lambda into named handleClientError slot</title>
<updated>2026-02-19T22:12:16Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-19T22:12:16Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=11b99fda8727f2225961c0b83ecdb18674a9670a'/>
<id>urn:sha1:11b99fda8727f2225961c0b83ecdb18674a9670a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refactor BobinkClient and clean up comments</title>
<updated>2026-02-19T21:59:08Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-19T21:59:08Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=f4da422087f77ce9a549ff73250910e5ae217ff0'/>
<id>urn:sha1:f4da422087f77ce9a549ff73250910e5ae217ff0</id>
<content type='text'>
- Format BobinkAuth.cpp to match GNU style used elsewhere
- Replace brittle error name array with QMetaEnum in BobinkClient
- Move QOpcUaPkiConfiguration include from header to .cpp
- Replace m_discoveryInterval member with file-scope constant
- Add doc comments to SecurityMode and SecurityPolicy enums
- Comment endpoint selection strategy in handleEndpointsReceived
- Add missing QML ids to connectionPage and serverListView
</content>
</entry>
<entry>
<title>Reorganize BobinkClient by domain and make s_instance private</title>
<updated>2026-02-19T21:31:16Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-19T21:31:16Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=364430e417600c68133673254b58b4d35608777a'/>
<id>urn:sha1:364430e417600c68133673254b58b4d35608777a</id>
<content type='text'>
Group header and source by domain (Connection, Discovery, PKI) so
properties, methods, and signal handlers live together. Move enums
before constructor, move s_instance to private, and add a public
instance() accessor used by BobinkNode.
</content>
</entry>
<entry>
<title>Rename QML singleton to Bobink and simplify singleton lifecycle</title>
<updated>2026-02-19T17:00:52Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-19T17:00:52Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=e73fe498e86dbb20d74f8d6ca13b541642676b82'/>
<id>urn:sha1:e73fe498e86dbb20d74f8d6ca13b541642676b82</id>
<content type='text'>
Replace QML_ELEMENT with QML_NAMED_ELEMENT(Bobink) so QML references
use `Bobink` instead of `BobinkClient`. Remove instance()/create()
factory in favor of inline s_instance set in the constructor. Import
BobinkPlugin statically in demo, link demo to BobinkQtOpcUaplugin,
and make library link dependencies PUBLIC. Add .qtcreator to gitignore.
</content>
</entry>
<entry>
<title>Log attribute reads to debug console and replace raw C++ types with Qt equivalents</title>
<updated>2026-02-19T11:29:05Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-19T11:29:05Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=50c62c35463b62a3a7acebf9ebe22d44f1c6dca2'/>
<id>urn:sha1:50c62c35463b62a3a7acebf9ebe22d44f1c6dca2</id>
<content type='text'>
Connect QOpcUaNode::attributeRead signal to new handler that logs
read results (value or error code) to the debug console via
BobinkClient::statusMessage. Add nameFromAttribute() helper.

Replace const char* arrays with QLatin1StringView, bare string
literals with QStringLiteral, uint with quint32, int with qint32.
Rename statusLog to debugLog in Main.qml for consistency.
</content>
</entry>
<entry>
<title>Rename targets, route messages to debug console, clean up</title>
<updated>2026-02-19T04:38:24Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-19T04:13:42Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=a0c7f2a7ef04dbe2e7491eabf828e26423d1bd10'/>
<id>urn:sha1:a0c7f2a7ef04dbe2e7491eabf828e26423d1bd10</id>
<content type='text'>
- Rename CMake project and library target to BobinkQtOpcUa (URI stays Bobink)
- Rename demo target to BobinkDemo, output binary to build/bin/
- Route all QML status/error messages to the in-app debug console
- Remove discoveryInterval QML property, default to 30s internally
- Add errorChanged handler, PKI file validation in applyPki()
</content>
</entry>
<entry>
<title>Add direct connect, auto-detect PKI, and rework demo flow</title>
<updated>2026-02-18T11:03:16Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T11:03:16Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=23916cbb98e952aab752a647ac96020aab709bb6'/>
<id>urn:sha1:23916cbb98e952aab752a647ac96020aab709bb6</id>
<content type='text'>
- connectDirect(policy, mode): connect without endpoint discovery,
  for servers with no unencrypted endpoint. Sets user identity token
  policy matching the auth mode.
- autoDetectPki(): scan own/certs/*.der and own/private/*.pem|crt,
  called automatically at startup.
- Demo: discovery auto-starts, PKI section hidden behind toggle with
  auto-detected cert summary, direct connect appears on connect failure.
  File/folder dialogs for manual PKI override.
</content>
</entry>
<entry>
<title>Refactor and document: fix cert filenames, add Doxygen, improve demo</title>
<updated>2026-02-17T23:18:33Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-17T23:18:33Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=1a79ab468d8cc23cfdf28ddfa85d3e03ffddf44c'/>
<id>urn:sha1:1a79ab468d8cc23cfdf28ddfa85d3e03ffddf44c</id>
<content type='text'>
Refactoring (issues 1,3,4,5,7,8,9,10 from review):
- Replace hardcoded cert filenames with certFile/keyFile properties
- Add 30s timeout to certificate trust QEventLoop
- Cache servers() QVariantList instead of rebuilding per call
- Validate URLs before passing to QtOpcUa
- Use ComboBox valueRole for robust enum mapping
- Add certificate trust dialog to demo
- Remove unnecessary RowLayout wrapper
- Remove debug output from BuildDeps.cmake

Documentation:
- Add Doxygen file blocks to all C++ files
- Document AuthMode enum, toAuthenticationInformation(), key
  Q_INVOKABLE methods, certificateTrustRequested signal contract
- Convert section banners to standard format
- Add file/target comments to CMake and QML files
</content>
</entry>
<entry>
<title>Initial Bobink library: BobinkAuth, BobinkClient, and demo app</title>
<updated>2026-02-17T22:58:08Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-17T22:58:08Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=343169dff6b062074fd3c4a5e240b449ffc4a449'/>
<id>urn:sha1:343169dff6b062074fd3c4a5e240b449ffc4a449</id>
<content type='text'>
Implements the core OPC UA wrapper library with:
- Build system with automatic dep building (open62541, QtOpcUa)
- BobinkAuth: QML auth component (anonymous/userpass/certificate)
- BobinkClient: QML singleton managing connection, LDS discovery,
  PKI configuration, endpoint selection, and certificate trust flow
- Demo app for manual testing of the full connection flow
</content>
</entry>
</feed>
