Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-remoteobjects for 
openSUSE:Factory checked in at 2026-10-18 19:21:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-remoteobjects (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-remoteobjects.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-remoteobjects"

Sun Oct 18 19:21:34 2026 rev:39 rq:1384408 version:6.12.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-remoteobjects/qt6-remoteobjects.changes      
2026-08-21 16:52:06.834394901 +0200
+++ 
/work/SRC/openSUSE:Factory/.qt6-remoteobjects.new.3698736/qt6-remoteobjects.changes
 2026-10-18 19:21:44.332817272 +0200
@@ -1,0 +2,6 @@
+Wed Sep 30 16:17:52 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.12.0
+  https://www.qt.io/blog/qt-6.12-released
+
+-------------------------------------------------------------------

Old:
----
  qtremoteobjects-everywhere-src-6.11.2.tar.xz

New:
----
  qtremoteobjects-everywhere-src-6.12.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qt6-remoteobjects.spec ++++++
--- /var/tmp/diff_new_pack.6YZ5Dz/_old  2026-10-18 19:21:45.146851020 +0200
+++ /var/tmp/diff_new_pack.6YZ5Dz/_new  2026-10-18 19:21:45.148851103 +0200
@@ -16,8 +16,8 @@
 #
 
 
-%define real_version 6.11.2
-%define short_version 6.11
+%define real_version 6.12.0
+%define short_version 6.12
 %define tar_name qtremoteobjects-everywhere-src
 %define tar_suffix %{nil}
 #
@@ -30,7 +30,7 @@
 %global __requires_exclude qt6qmlimport\\(TimeExample\\)
 #
 Name:           qt6-remoteobjects%{?pkg_suffix}
-Version:        6.11.2
+Version:        6.12.0
 Release:        0
 Summary:        Qt6 RemoteObjects Library
 License:        GPL-2.0-only OR GPL-3.0-or-later OR LGPL-3.0-only

++++++ qtremoteobjects-everywhere-src-6.11.2.tar.xz -> 
qtremoteobjects-everywhere-src-6.12.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtremoteobjects-everywhere-src-6.11.2/.cmake.conf 
new/qtremoteobjects-everywhere-src-6.12.0/.cmake.conf
--- old/qtremoteobjects-everywhere-src-6.11.2/.cmake.conf       2026-08-12 
03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/.cmake.conf       2026-09-26 
16:26:58.000000000 +0200
@@ -1,4 +1,4 @@
-set(QT_REPO_MODULE_VERSION "6.11.2")
+set(QT_REPO_MODULE_VERSION "6.12.0")
 set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
 set(QT_EXTRA_INTERNAL_TARGET_DEFINES
     "QT_NO_CONTEXTLESS_CONNECT=1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtremoteobjects-everywhere-src-6.11.2/.tag 
new/qtremoteobjects-everywhere-src-6.12.0/.tag
--- old/qtremoteobjects-everywhere-src-6.11.2/.tag      2026-08-12 
03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/.tag      2026-09-26 
16:26:58.000000000 +0200
@@ -1 +1 @@
-7271905e6e7b5ccefec0d41750b0dfe652f356e1
+5add069a1b80a345690b911b9c55826a21ca251c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/CONTRIBUTING.md 
new/qtremoteobjects-everywhere-src-6.12.0/CONTRIBUTING.md
--- old/qtremoteobjects-everywhere-src-6.11.2/CONTRIBUTING.md   1970-01-01 
01:00:00.000000000 +0100
+++ new/qtremoteobjects-everywhere-src-6.12.0/CONTRIBUTING.md   2026-09-26 
16:26:58.000000000 +0200
@@ -0,0 +1,11 @@
+## Qt contribution guidelines
+
+We welcome contributions to Qt!
+
+Note that we cannot accept pull requests on GitHub. All contributions
+to the Qt project are exclusively handled through the
+[Gerrit code review system](https://codereview.qt-project.org).
+
+See
+[contribute.qt-project.org](https://contribute.qt-project.org/) to learn
+more.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtremoteobjects-everywhere-src-6.11.2/REUSE.toml 
new/qtremoteobjects-everywhere-src-6.12.0/REUSE.toml
--- old/qtremoteobjects-everywhere-src-6.11.2/REUSE.toml        2026-08-12 
03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/REUSE.toml        2026-09-26 
16:26:58.000000000 +0200
@@ -44,7 +44,8 @@
 SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR BSD-3-Clause"
 
 [[annotations]]
-path = ["**/doc/images/**", "**/README*", "**.qdocconf"]
+path = ["**/doc/images/**", "**/README*", "**.qdocconf",
+        "CONTRIBUTING.md"]
 comment = "documentation"
 precedence = "closest"
 SPDX-FileCopyrightText = "Copyright (C) The Qt Company Ltd."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/dependencies.yaml 
new/qtremoteobjects-everywhere-src-6.12.0/dependencies.yaml
--- old/qtremoteobjects-everywhere-src-6.11.2/dependencies.yaml 2026-08-12 
03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/dependencies.yaml 2026-09-26 
16:26:58.000000000 +0200
@@ -1,7 +1,7 @@
 dependencies:
   ../qtbase:
-    ref: ef55f427f2c8b410d34f8a7681020a3000cf6866
+    ref: 025bdad181de241e81bf853c8a2d7bf3d19261a9
     required: true
   ../qtdeclarative:
-    ref: 4e3399c26ec57246c08de019cfcbda8d23604cfa
+    ref: 4332fbbb4c340463dc8cee36dda0c85d932122d8
     required: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/licenseRule.json 
new/qtremoteobjects-everywhere-src-6.12.0/licenseRule.json
--- old/qtremoteobjects-everywhere-src-6.11.2/licenseRule.json  2026-08-12 
03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/licenseRule.json  2026-09-26 
16:26:58.000000000 +0200
@@ -63,7 +63,9 @@
     },
     {
         "comment": "Files with the following endings are Documentation 
licensed.",
-        "file_pattern_ending": [".qdoc", ".qdocinc" , ".qdocconf", "README", 
"qt_attribution.json"],
+        "file_pattern_ending": [".qdoc", ".qdocinc" , ".qdocconf",
+                                "README", "CONTRIBUTING.md",
+                                "qt_attribution.json"],
         "location":{
             "": {
                 "comment": "",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/doc/src/cmake-macros.qdoc
 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/doc/src/cmake-macros.qdoc
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/doc/src/cmake-macros.qdoc
       2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/doc/src/cmake-macros.qdoc
       2026-09-26 16:26:58.000000000 +0200
@@ -6,7 +6,7 @@
 \ingroup cmake-macros-qtremoteobjects
 
 \title qt_add_repc_replicas
-\keyword qt6_add_repc_replicas
+\keyword qt_add_repc_replicas()
 
 \brief Creates C++ header files for replica types from the Qt Remote Objects 
.rep files.
 
@@ -38,7 +38,7 @@
 \ingroup cmake-macros-qtremoteobjects
 
 \title qt_add_repc_sources
-\keyword qt6_add_repc_sources
+\keyword qt_add_repc_sources()
 
 \brief Creates C++ header files for source types from the Qt Remote Objects 
.rep files.
 
@@ -70,7 +70,7 @@
 \ingroup cmake-macros-qtremoteobjects
 
 \title qt_add_repc_merged
-\keyword qt6_add_repc_merged
+\keyword qt_add_repc_merged()
 
 \brief Creates C++ header files for source and replica types from the Qt 
Remote Objects .rep files.
 
@@ -106,7 +106,7 @@
 \ingroup cmake-macros-qtremoteobjects
 
 \title qt_reps_from_headers
-\keyword qt6_reps_from_headers
+\keyword qt_reps_from_headers()
 
 \brief Creates .rep files from the QObject header files.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/doc/src/remoteobjects-repc.qdoc
 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/doc/src/remoteobjects-repc.qdoc
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/doc/src/remoteobjects-repc.qdoc
 2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/doc/src/remoteobjects-repc.qdoc
 2026-09-26 16:26:58.000000000 +0200
@@ -50,6 +50,11 @@
     is an object based system, these interfaces are defined by APIs available
     through objects, that is, classes with properties, signals, and slots.
 
+    \section2 Comments
+
+    Single-line comments in C++ style (\c{/}\c{/ text}) as well as multi-line 
comments
+    in C style (\c{/}\c{* text *}\c{/}) are supported.
+
     \section2 The class type
 
     Each class defined in a rep file becomes a QObject in the generated header
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/doc/src/remoteobjects-toc.qdoc
 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/doc/src/remoteobjects-toc.qdoc
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/doc/src/remoteobjects-toc.qdoc
  2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/doc/src/remoteobjects-toc.qdoc
  2026-09-26 16:26:58.000000000 +0200
@@ -20,6 +20,7 @@
     \li \l {Remote Object Interaction}
     \li \l {Troubleshooting Qt Remote Objects}{Troubleshooting}
     \li \l {Qt Remote Objects Protocol Versioning}{Protocol Versioning}
+    \li \l {Qt Remote Objects Security Considerations}{Security Considerations}
     \li \l {Changes to Qt Remote Objects}{Upgrading from Qt 5}
     \endlist
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qconnectionfactories.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qconnectionfactories.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qconnectionfactories.cpp
        2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qconnectionfactories.cpp
        2026-09-26 16:26:58.000000000 +0200
@@ -55,7 +55,7 @@
     return true;
 }
 
-/*!
+/*
     All communication between nodes happens through some form of QIODevice with
     an associated QDataStream to handle marshalling of Qt types. 
QtROIoDeviceBase
     is an abstract base class that provides a consistent interface to QtRO, yet
@@ -186,7 +186,7 @@
     d->m_url = url;
 }
 
-/*!
+/*
     The Qt servers create QIODevice derived classes from handleConnection. The
     problem is that they behave differently, so this class adds some
     consistency.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectnode.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectnode.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectnode.cpp
   2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectnode.cpp
   2026-09-26 16:26:58.000000000 +0200
@@ -182,35 +182,11 @@
         ds >> prop;
 }
 
-// Like the Q_GADGET static methods above, we need constructor/destructor 
methods
-// in order to use dynamically defined enums with QVariant or as signal/slot
+// Helpers for dynamically defined enums with QVariant or used as signal/slot
 // parameters (i.e., the queued connection mechanism, which QtRO leverages).
 //
 // We will need the enum methods to support different sizes when typed scope 
enum
 // support is added, so might as well use that now.
-template<typename T>
-static void EnumDestructor(const QtPrivate::QMetaTypeInterface *, void *ptr)
-{
-    static_cast<T*>(ptr)->~T();
-}
-
-template<typename T>
-static void EnumConstructor(const QtPrivate::QMetaTypeInterface *, void *where)
-{
-    new(where) T;
-}
-
-template<typename T>
-static void EnumCopyConstructor(const QtPrivate::QMetaTypeInterface *, void 
*where, const void *copy)
-{
-    new(where) T(*static_cast<const T*>(copy));
-}
-
-template<typename T>
-static void EnumMoveConstructor(const QtPrivate::QMetaTypeInterface *, void 
*where, void *copy)
-{
-    new(where) T(std::move(*static_cast<T*>(copy)));
-}
 
 // Not used, but keeping these in case we end up with a need for save/load.
 template<typename T>
@@ -761,10 +737,22 @@
     Requires a \l QRemoteObjectAbstractPersistedStore class implementation to 
control where and how
     persistence is handled.
 */
+
+/*!
+    \fn void QRemoteObjectNode::persistedStoreChanged(
+            QRemoteObjectAbstractPersistedStore *persistedStore)
+    \since 6.12
+
+    This signal is emitted when the \l persistedStore property changes to
+    \a persistedStore.
+*/
 void QRemoteObjectNode::setPersistedStore(QRemoteObjectAbstractPersistedStore 
*persistedStore)
 {
     Q_D(QRemoteObjectNode);
+    if (d->persistedStore == persistedStore)
+        return;
     d->persistedStore = persistedStore;
+    emit persistedStoreChanged(persistedStore);
 }
 
 
QRemoteObjectAbstractPersistedStore::QRemoteObjectAbstractPersistedStore(QRemoteObjectAbstractPersistedStorePrivate
 &dptr, QObject *parent)
@@ -875,16 +863,18 @@
 template <class Int>
 static TypeInfo *enumMetaType(const QByteArray &name, uint size, const 
QMetaObject *meta=nullptr)
 {
-    static const auto flags = QMetaType::IsEnumeration | 
QMetaType::NeedsConstruction
-                              | QMetaType::NeedsDestruction;
+    static_assert(std::is_integral_v<Int>);
+    Q_ASSERT(size == sizeof(Int));
 
     auto typeInfo = new TypeInfo {
         {
-            0, alignof(Int), size, uint(flags), 0, metaObjectFn, strDup(name),
-            EnumConstructor<Int>,
-            EnumCopyConstructor<Int>,
-            EnumMoveConstructor<Int>,
-            EnumDestructor<Int>,
+            0, alignof(Int), size,
+            uint(QMetaType::fromType<Int>().flags() | 
QMetaType::IsEnumeration),
+            0, metaObjectFn, strDup(name),
+            nullptr,
+            nullptr,
+            nullptr,
+            nullptr,
             EnumEqualsFn<Int>,
             EnumLessThanFn<Int>,
             EnumDebugStreamFn<Int>,
@@ -2263,7 +2253,10 @@
 */
 bool QRemoteObjectRegistryHost::setRegistryUrl(const QUrl &registryUrl)
 {
-    return d_func()->setRegistryUrlRegistryHostImpl(registryUrl);
+    bool success = d_func()->setRegistryUrlRegistryHostImpl(registryUrl);
+    if (success)
+        emit registryUrlChanged(registryUrl);
+    return success;
 }
 
 bool QRemoteObjectRegistryHostPrivate::setRegistryUrlRegistryHostImpl(const 
QUrl &registryUrl)
@@ -2316,6 +2309,14 @@
 
     This is an empty QUrl if there is no registry in use.
 */
+
+/*!
+    \fn void QRemoteObjectNode::registryUrlChanged(const QUrl &registryUrl)
+    \since 6.12
+
+    This signal is emitted when the \l registryUrl property changes to
+    \a registryUrl.
+*/
 QUrl QRemoteObjectNode::registryUrl() const
 {
     Q_D(const QRemoteObjectNode);
@@ -2325,7 +2326,10 @@
 bool QRemoteObjectNode::setRegistryUrl(const QUrl &registryAddress)
 {
     Q_D(QRemoteObjectNode);
-    return d->setRegistryUrlNodeImpl(registryAddress);
+    bool success = d->setRegistryUrlNodeImpl(registryAddress);
+    if (success)
+        emit registryUrlChanged(registryAddress);
+    return success;
 }
 
 bool QRemoteObjectNodePrivate::setRegistryUrlNodeImpl(const QUrl &registryAddr)
@@ -2693,10 +2697,10 @@
         hostNode.enableRemoting<MinuteTimerSourceAPI>(&timer);
     \endcode
 
-    Here the MinuteTimerSourceAPI is the set of Signals/Slots/Properties
-    defined by the TimeModel.rep file. Compile time checks are made to verify
-    the input QObject can expose the requested API, it will fail to compile
-    otherwise. This allows a subset of \a object 's interface to be exposed,
+    Here the MinuteTimerSourceAPI is the \a ApiDefinition, representing the
+    set of Signals/Slots/Properties defined by the TimeModel.rep file.
+    Compile time checks are made to verify the input QObject can expose the
+    requested API, it will fail to compile otherwise. This allows a subset of 
\a object 's interface to be exposed,
     and allows the types of conversions supported by Signal/Slot connections.
 
     Returns \c false if the current node is a client node, or if the QObject is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectnode.h 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectnode.h
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectnode.h 
    2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectnode.h 
    2026-09-26 16:26:58.000000000 +0200
@@ -46,8 +46,9 @@
 class Q_REMOTEOBJECTS_EXPORT QRemoteObjectNode : public QObject
 {
     Q_OBJECT
-    Q_PROPERTY(QUrl registryUrl READ registryUrl WRITE setRegistryUrl)
-    Q_PROPERTY(QRemoteObjectAbstractPersistedStore* persistedStore READ 
persistedStore WRITE setPersistedStore)
+    Q_PROPERTY(QUrl registryUrl READ registryUrl WRITE setRegistryUrl NOTIFY 
registryUrlChanged)
+    Q_PROPERTY(QRemoteObjectAbstractPersistedStore *persistedStore READ 
persistedStore WRITE
+                       setPersistedStore NOTIFY persistedStoreChanged)
     Q_PROPERTY(int heartbeatInterval READ heartbeatInterval WRITE 
setHeartbeatInterval NOTIFY heartbeatIntervalChanged)
 
 public:
@@ -116,6 +117,9 @@
     void remoteObjectAdded(const QRemoteObjectSourceLocation &);
     void remoteObjectRemoved(const QRemoteObjectSourceLocation &);
 
+    Q_REVISION(6, 12) void registryUrlChanged(const QUrl &registryUrl);
+    Q_REVISION(6, 12)
+    void persistedStoreChanged(QRemoteObjectAbstractPersistedStore 
*persistedStore);
     void error(QRemoteObjectNode::ErrorCode errorCode);
     void heartbeatIntervalChanged(int heartbeatInterval);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectsource.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectsource.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectsource.cpp
 2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectsource.cpp
 2026-09-26 16:26:58.000000000 +0200
@@ -129,6 +129,12 @@
 
 } // namespace QtPrivate
 
+QByteArray QtPrivate::qtro_enum_signature_impl(const QMetaObject &mo, const 
char *enumName)
+{
+    const auto qme = mo.enumerator(mo.indexOfEnumerator(enumName));
+    return QByteArrayView(qme.scope()) % "::" % qme.name();
+}
+
 QByteArray QtPrivate::qtro_classinfo_signature(const QMetaObject *metaObject)
 {
     if (!metaObject)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectsource.h
 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectsource.h
--- 
old/qtremoteobjects-everywhere-src-6.11.2/src/remoteobjects/qremoteobjectsource.h
   2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/src/remoteobjects/qremoteobjectsource.h
   2026-09-26 16:26:58.000000000 +0200
@@ -89,11 +89,13 @@
                                   types);
 }
 
+Q_REMOTEOBJECTS_EXPORT
+QByteArray qtro_enum_signature_impl(const QMetaObject &mo, const char 
*enumName);
+
 template <class ObjectType>
 QByteArray qtro_enum_signature(const char *enumName)
 {
-    const auto qme = 
ObjectType::staticMetaObject.enumerator(ObjectType::staticMetaObject.indexOfEnumerator(enumName));
-    return QByteArrayLiteral("1::2").replace("1", qme.scope()).replace("2", 
qme.name());
+    return qtro_enum_signature_impl(ObjectType::staticMetaObject, enumName);
 }
 
 QByteArray qtro_classinfo_signature(const QMetaObject *metaObject);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/src/repparser/parser.g 
new/qtremoteobjects-everywhere-src-6.12.0/src/repparser/parser.g
--- old/qtremoteobjects-everywhere-src-6.11.2/src/repparser/parser.g    
2026-08-12 03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/src/repparser/parser.g    
2026-09-26 16:26:58.000000000 +0200
@@ -28,7 +28,7 @@
 %token comma "[comma],"
 %token equals "[equals]="
 %token comment "[comment](?<comment>[ \\t]*//[^\\n]*\\n)"
-%token mcomment "[mcomment,M](?<comment>/\\*(.*?)\\*/)"
+%token mcomment "[mcomment,M](?<comment>[ \\t]*/\\*(.*?)\\*/)"
 %token preprocessor_directive 
"[preprocessor_directive](?<preprocessor_directive>#[ \\t]*[^\\n]*\\n)"
 %token newline "[newline](\\r)?\\n"
 %token tstart "[tstart]<"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/CMakeLists.txt 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/CMakeLists.txt
--- old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/CMakeLists.txt 
2026-08-12 03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/CMakeLists.txt 
2026-09-26 16:26:58.000000000 +0200
@@ -17,6 +17,7 @@
 add_subdirectory(repcodegenerator)
 add_subdirectory(repcinlib)
 add_subdirectory(repparser)
+add_subdirectory(stringliteral)
 add_subdirectory(subclassreplica)
 if(QT_FEATURE_ssl)
     add_subdirectory(external_IODevice)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/external_IODevice/tst_client/tst_client.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/external_IODevice/tst_client/tst_client.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/external_IODevice/tst_client/tst_client.cpp
    2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/external_IODevice/tst_client/tst_client.cpp
    2026-09-26 16:26:58.000000000 +0200
@@ -22,8 +22,8 @@
     void testRun()
     {
 // TODO: This a limitation of QProcess on Android, QTBUG-88507 is relevant to 
this issue.
-#ifdef Q_OS_ANDROID
-        QSKIP("QProcess doesn't support running user bundled binaries on 
Android");
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
+        QSKIP("QProcess doesn't support running user bundled binaries on 
Android or OHOS");
 #endif
         QProcess serverProc;
         serverProc.setProcessChannelMode(QProcess::ForwardedChannels);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/integration/tst_integration.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/integration/tst_integration.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/integration/tst_integration.cpp
        2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/integration/tst_integration.cpp
        2026-09-26 16:26:58.000000000 +0200
@@ -273,8 +273,11 @@
     {
         QRemoteObjectNode _client;
         Q_SET_OBJECT_NAME(_client);
+        QSignalSpy spy(&_client, &QRemoteObjectNode::persistedStoreChanged);
         TestPersistedStore store;
         _client.setPersistedStore(&store);
+        QVERIFY(spy.isValid());
+        QVERIFY(spy.size() || spy.wait());
 
         const QScopedPointer<EngineReplica> 
engine_r(_client.acquire<EngineReplica>());
         QCOMPARE(engine_r->engineType(), EngineReplica::HYBRID);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/integration_external/external/tst_integration_external.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/integration_external/external/tst_integration_external.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/integration_external/external/tst_integration_external.cpp
     2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/integration_external/external/tst_integration_external.cpp
     2026-09-26 16:26:58.000000000 +0200
@@ -33,8 +33,8 @@
 
     void testRun()
     {
-#ifdef Q_OS_ANDROID
-        QSKIP("QProcess doesn't support running user bundled binaries on 
Android");
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
+        QSKIP("QProcess doesn't support running user bundled binaries on 
Android or HarmonyOS");
 #endif
         QFETCH(bool, templated);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/integration_multiprocess/tst/tst_integration_multiprocess.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/integration_multiprocess/tst/tst_integration_multiprocess.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/integration_multiprocess/tst/tst_integration_multiprocess.cpp
  2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/integration_multiprocess/tst/tst_integration_multiprocess.cpp
  2026-09-26 16:26:58.000000000 +0200
@@ -33,8 +33,8 @@
 
     void testRun()
     {
-#ifdef Q_OS_ANDROID
-        QSKIP("QProcess doesn't support running user bundled binaries on 
Android");
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
+        QSKIP("QProcess doesn't support running user bundled binaries on 
Android or HarmonyOS");
 #endif
         QFETCH(bool, templated);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/proxy/tst_proxy.cpp 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/proxy/tst_proxy.cpp
--- old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/proxy/tst_proxy.cpp    
2026-08-12 03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/proxy/tst_proxy.cpp    
2026-09-26 16:26:58.000000000 +0200
@@ -77,12 +77,20 @@
     QFETCH(bool, dynamic);
 
     //Setup Local Registry
-    QRemoteObjectRegistryHost registry(registryUrl);
+    QRemoteObjectRegistryHost registry;
     SET_NODE_NAME(registry);
+    QSignalSpy spy1(&registry, &QRemoteObjectRegistryHost::registryUrlChanged);
+    registry.setRegistryUrl(registryUrl);
+    QVERIFY(spy1.isValid());
+    QVERIFY(spy1.size() || spy1.wait());
+
     //Setup Local Host
     QRemoteObjectHost host(localHostUrl);
     SET_NODE_NAME(host);
+    QSignalSpy spy2(&host, &QRemoteObjectNode::registryUrlChanged);
     host.setRegistryUrl(registryUrl);
+    QVERIFY(spy2.isValid());
+    QVERIFY(spy2.size() || spy2.wait());
     EngineSimpleSource engine;
     engine.setRpm(1234);
     engine.setType(EngineSimpleSource::Gas);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/proxy_multiprocess/tst/tst_proxy_multiprocess.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/proxy_multiprocess/tst/tst_proxy_multiprocess.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/proxy_multiprocess/tst/tst_proxy_multiprocess.cpp
      2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/proxy_multiprocess/tst/tst_proxy_multiprocess.cpp
      2026-09-26 16:26:58.000000000 +0200
@@ -39,8 +39,8 @@
 
     void testRun()
     {
-#ifdef Q_OS_ANDROID
-        QSKIP("QProcess doesn't support running user bundled binaries on 
Android");
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
+        QSKIP("QProcess doesn't support running user bundled binaries on 
Android or HarmonyOS");
 #endif
         QFETCH(bool, templated);
         QFETCH(ObjectMode, objectMode);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/reconnect/tst/tst_reconnect.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/reconnect/tst/tst_reconnect.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/reconnect/tst/tst_reconnect.cpp
        2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/reconnect/tst/tst_reconnect.cpp
        2026-09-26 16:26:58.000000000 +0200
@@ -21,8 +21,8 @@
 
     void testRun()
     {
-#ifdef Q_OS_ANDROID
-        QSKIP("QProcess doesn't support running user bundled binaries on 
Android");
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
+        QSKIP("QProcess doesn't support running user bundled binaries on 
Android or HarmonyOS");
 #endif
         QFETCH(QString, url);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/rep_from_header/tst_rep_from_header.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/rep_from_header/tst_rep_from_header.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/rep_from_header/tst_rep_from_header.cpp
        2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/rep_from_header/tst_rep_from_header.cpp
        2026-09-26 16:26:58.000000000 +0200
@@ -32,18 +32,16 @@
 {
     QFETCH(QString, actualFile);
     QFETCH(QByteArrayList, expectedLines);
-    const auto readFile = [&](const QString &fileName) {
-        QFile f(fileName);
-        f.open(QIODevice::ReadOnly);
-        QByteArrayList lines;
-        while (!f.atEnd())
-            lines.append(f.readLine().trimmed());
-        return lines;
-    };
 
     QVERIFY2(QFile::exists(actualFile), qPrintable(actualFile));
 
-    QByteArrayList actualLines = readFile(actualFile);
+    QByteArrayList actualLines;
+    {
+        QFile f(actualFile);
+        QVERIFY(f.open(QIODevice::ReadOnly));
+        while (!f.atEnd())
+            actualLines.append(f.readLine().trimmed());
+    }
 
     QVERIFY(actualLines == expectedLines);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/repc/signature/signatureTests/tst_signature.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/repc/signature/signatureTests/tst_signature.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/repc/signature/signatureTests/tst_signature.cpp
        2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/repc/signature/signatureTests/tst_signature.cpp
        2026-09-26 16:26:58.000000000 +0200
@@ -27,8 +27,8 @@
 
     void testRun()
     {
-#ifdef Q_OS_ANDROID
-        QSKIP("QProcess doesn't support running user bundled binaries on 
Android");
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
+        QSKIP("QProcess doesn't support running user bundled binaries on 
Android or HarmonyOS");
 #endif
         qDebug() << "Starting signatureServer process";
         QProcess serverProc;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/repparser/tst_parser.cpp 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/repparser/tst_parser.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/repparser/tst_parser.cpp   
    2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/repparser/tst_parser.cpp   
    2026-09-26 16:26:58.000000000 +0200
@@ -53,7 +53,7 @@
     QTest::newRow("empty class with comment") << "class MyClass 
{\n//comment\n}";
     QTest::newRow("empty exported class with comment") << "class Q_DECL_EXPORT 
MyClass {\n//comment\n}";
     QTest::newRow("comment, class") << "//comment\nclass MyClass {}";
-    QTest::newRow("multicomment, class") << "/* row1\n row2\n */\nclass 
MyClass {}";
+    QTest::newRow("multicomment, class") << "/* row1\n row2\n */\nclass 
MyClass {}\n /* trailing */";
     QTest::newRow("include, comment, class") << "#include 
\"foo\"\n//comment\nclass MyClass {}";
 }
 
@@ -62,7 +62,7 @@
     QFETCH(QString, content);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << content << Qt::endl;
     file.seek(0);
@@ -133,7 +133,7 @@
     QFETCH(bool, expectedPersistence);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << "class TestClass" << Qt::endl;
     stream << "{" << Qt::endl;
@@ -189,7 +189,7 @@
     QFETCH(bool, voidWarning);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << "class TestClass" << Qt::endl;
     stream << "{" << Qt::endl;
@@ -234,7 +234,7 @@
     QFETCH(QString, expectedSignal);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << "class TestClass" << Qt::endl;
     stream << "{" << Qt::endl;
@@ -284,7 +284,7 @@
     QFETCH(QString, expectedvariables);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << podsdeclaration << Qt::endl;
     stream << "class TestClass" << Qt::endl;
@@ -343,7 +343,7 @@
     QFETCH(QString, expectedvariables);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << podsdeclaration << Qt::endl;
     stream << "class TestClass" << Qt::endl;
@@ -374,7 +374,7 @@
 void tst_Parser::testCompilerAttributes()
 {
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << "POD Q_DECL_EXPORT TestPod(int number)" << Qt::endl;
     stream << "class Q_DECL_EXPORT TestClass" << Qt::endl;
@@ -437,7 +437,7 @@
     QFETCH(bool, inclass);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     if (!inclass)
         stream << enumdeclaration << Qt::endl;
@@ -507,7 +507,7 @@
     QFETCH(bool, isflag);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     if (!inclass) {
         stream << " // comment 1" << Qt::endl;
@@ -578,7 +578,7 @@
     QFETCH(QList<ASTModelRole>, expectedRoles);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << " // comment 1" << Qt::endl;
     stream << " // comment 2" << Qt::endl;
@@ -626,7 +626,7 @@
     QFETCH(QString, expectedName);
 
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << " // comment 1" << Qt::endl;
     stream << " // comment 2" << Qt::endl;
@@ -698,7 +698,7 @@
 
     QTest::ignoreMessage(QtWarningMsg, QRegularExpression(warning));
     QTemporaryFile file;
-    file.open();
+    QVERIFY(file.open());
     QTextStream stream(&file);
     stream << content << Qt::endl;
     file.seek(0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/restart/tst/tst_restart.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/restart/tst/tst_restart.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/restart/tst/tst_restart.cpp
    2026-08-12 03:33:55.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/restart/tst/tst_restart.cpp
    2026-09-26 16:26:58.000000000 +0200
@@ -47,8 +47,8 @@
 
     void testRun()
     {
-#ifdef Q_OS_ANDROID
-        QSKIP("QProcess doesn't support running user bundled binaries on 
Android");
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
+        QSKIP("QProcess doesn't support running user bundled binaries on 
Android or HarmonyOS");
 #endif
         QFETCH(RunMode, runMode);
         QFETCH(ObjectMode, objectMode);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/stringliteral/CMakeLists.txt
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/stringliteral/CMakeLists.txt
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/stringliteral/CMakeLists.txt
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/stringliteral/CMakeLists.txt
   2026-09-26 16:26:58.000000000 +0200
@@ -0,0 +1,24 @@
+# Copyright (C) 2026 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+#####################################################################
+## tst_modelreplicatest Test:
+#####################################################################
+
+if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT)
+    cmake_minimum_required(VERSION 3.16)
+    project(tst_stringliteraltest LANGUAGES CXX)
+    find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST)
+endif()
+
+qt_internal_add_test(tst_stringliteraltest
+    SOURCES
+        tst_stringliteraltest.cpp
+    DEFINES
+        SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}/"
+    LIBRARIES
+        Qt::RemoteObjects
+)
+qt6_add_repc_merged(tst_stringliteraltest
+    stringliteral.rep
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/stringliteral/stringliteral.rep
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/stringliteral/stringliteral.rep
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/stringliteral/stringliteral.rep
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/stringliteral/stringliteral.rep
        2026-09-26 16:26:58.000000000 +0200
@@ -0,0 +1,4 @@
+class StringLiteral
+{
+    PROP(QString name="Default")
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/stringliteral/tst_stringliteraltest.cpp
 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/stringliteral/tst_stringliteraltest.cpp
--- 
old/qtremoteobjects-everywhere-src-6.11.2/tests/auto/stringliteral/tst_stringliteraltest.cpp
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtremoteobjects-everywhere-src-6.12.0/tests/auto/stringliteral/tst_stringliteraltest.cpp
        2026-09-26 16:26:58.000000000 +0200
@@ -0,0 +1,52 @@
+// Copyright (C) 2026 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include <QString>
+#include <QtTest>
+#include "rep_stringliteral_merged.h"
+
+class StringLiteralTest : public QObject
+{
+    Q_OBJECT
+
+public:
+    StringLiteralTest() = default;
+
+private Q_SLOTS:
+    void basicFunctions();
+    void basicFunctions_data();
+};
+
+void StringLiteralTest::basicFunctions_data()
+{
+    QTest::addColumn<bool>("templated");
+    QTest::newRow("non-templated enableRemoting") << false;
+    QTest::newRow("templated enableRemoting") << true;
+}
+
+void StringLiteralTest::basicFunctions()
+{
+    QFETCH(bool, templated);
+
+    QRemoteObjectRegistryHost host(QUrl("tcp://localhost:5550"));
+    StringLiteralSimpleSource source;
+    if (templated)
+        host.enableRemoting<StringLiteralSourceAPI>(&source);
+    else
+        host.enableRemoting(&source);
+
+    QRemoteObjectNode client(QUrl("tcp://localhost:5550"));
+    const QScopedPointer<StringLiteralReplica> 
replica(client.acquire<StringLiteralReplica>());
+
+    QVERIFY(replica->waitForSource(300));
+    QCOMPARE(replica->name(), u"Default"_s);
+
+    QSignalSpy nameChangeSpy(replica.get(), 
&StringLiteralReplica::nameChanged);
+    source.setName(u"Changed"_s);
+    QVERIFY(nameChangeSpy.wait());
+    QCOMPARE(replica->name(), u"Changed"_s);
+}
+
+QTEST_MAIN(StringLiteralTest)
+
+#include "tst_stringliteraltest.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tests/shared/testutils.h 
new/qtremoteobjects-everywhere-src-6.12.0/tests/shared/testutils.h
--- old/qtremoteobjects-everywhere-src-6.11.2/tests/shared/testutils.h  
2026-08-12 03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/tests/shared/testutils.h  
2026-09-26 16:26:58.000000000 +0200
@@ -10,7 +10,7 @@
 #include <QStandardPaths>
 #include <QCoreApplication>
 
-#ifdef Q_OS_ANDROID
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
 #define LOCAL_SOCKET "localabstract"
 #else
 #define LOCAL_SOCKET  "local"
@@ -26,7 +26,7 @@
     if (!TestUtils::rootFolder.isEmpty())
         return true;
 
-#ifdef Q_OS_ANDROID
+#if defined(Q_OS_ANDROID) || defined(Q_OS_HARMONY)
     // All libraries are at located at the native libraries folder
     return true;
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-6.11.2/tools/repc/repcodegenerator.cpp 
new/qtremoteobjects-everywhere-src-6.12.0/tools/repc/repcodegenerator.cpp
--- old/qtremoteobjects-everywhere-src-6.11.2/tools/repc/repcodegenerator.cpp   
2026-08-12 03:33:55.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-6.12.0/tools/repc/repcodegenerator.cpp   
2026-09-26 16:26:58.000000000 +0200
@@ -735,6 +735,11 @@
                 m_stream << "        properties << QVariant::fromValue(("
                          << typeForMode(property, mode) << ")" << 
property.defaultValue
                          << ");" << Qt::endl;
+            else if (typeForMode(property, mode) == "QString"_L1
+                     && !property.defaultValue.isEmpty())
+                m_stream << "        properties << QVariant::fromValue("
+                         << "u" << property.defaultValue << "_s"
+                         << ");" << Qt::endl; // Use string literal syntax for 
QString
             else
                 m_stream << "        properties << QVariant::fromValue("
                          << typeForMode(property, mode) << "(" << 
property.defaultValue

Reply via email to