[qt/qt-creator/qt-creator]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/qt-creator/qt-creator Pushed by mirror-service into branch 'master'. Changed from 0dc598f3813b5219db6fd38eb842540ee0680dbb to d8fe01f61a83cb28bd0577c9edd730c61ac77ae3 Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository. This change contains the following new commits: Git commit e736419406026d1048058fba0b9f60c8ec0d8ecf by hjk on 07/08/2026 at 06:28.. Debugger: Extend start_debug to debug a given executable Give the start_debug MCP tool optional executable, kit, arguments, working directory and qml_debugging parameters. With no executable it debugs the current startup project as before; when an executable is given, debug it directly through a RunControl with debugger run parameters (StartExternal) - no project or build needed. qml_debugging plus QTC_DEBUGGER_NATIVE_MIXED activates native combined C++/QML debugging. Assisted-by: Claude Code Change-Id: I0af88a6de6bbdda0494b9f46d65998149c90f956 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/e736419406026d1048058fba0b9f60c8ec0d8ecf Git commit f53752556331275eaaa70e5147c9562be9ad5e97 by hjk on 07/08/2026 at 06:29.. ProjectExplorer: Make kit items configurable over MCP Add a candidateValues() hook to KitAspectFactory so item-backed aspects (debugger, toolchain, Qt version, device, ...) can advertise their valid values, and implement it for the debugger aspect. Expose three generic MCP tools: get_kit_aspects lists a kit's aspects with their current values, get_kit_aspect_options enumerates an aspect's valid values, and set_kit_value sets one - matching an enumerated candidate so the stored value type (e.g. a debugger item id) is preserved. Assisted-by: Claude Code Change-Id: I8a045fac94f62a404edf251e609c0b90424d4ef4 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/f53752556331275eaaa70e5147c9562be9ad5e97 Git commit f3cd58e2cfc636047b98db4e43bb5a510559cc18 by hjk on 07/08/2026 at 06:30.. CmdBridge: Allow building the HarmonyOS server binary HarmonyOS refuses to execute an ELF that carries no .codesign section, and only the OpenHarmony SDK's own lld can write one (--code-sign), so zig cc, which cross-compiles the other platforms, cannot be used here. Add an opt-in target that builds cmdbridge-ohos-arm64 from an SDK given as CMDBRIDGE_OHOS_SDK. Fail at configure time when that lld does not know the flag: the binary would still build, but would fail to start on the device with a bare EACCES. Nothing looks the binary up yet, since Client::getCmdBridgePath() maps OsTypeOtherUnix, which HarmonyOS devices use, to "linux". Choosing it belongs with the device side that will need it. Assisted-by: Claude Code Change-Id: Icb977cc055bf7fbfd88df431faf085ca55345042 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/f3cd58e2cfc636047b98db4e43bb5a510559cc18 Git commit 2b817284d14c41cd1a913df0cc5bbd7ca8ee863f by Marcus Tillmanns on 07/08/2026 at 09:01.. Utils: Add asynchronous getOpenFilePath Add FileUtils::getOpenFilePathAsync() returning a QFuture<FilePath> that resolves once the user chooses a file (or an empty path on cancel). It shows the dialog without a nested event loop, which is required on platforms where blocking the calling thread in QDialog::exec() is not allowed, e.g. Qt for WebAssembly without asyncify. The dialog is window-modal, and the non-native cases (no native dialog available, a non-local directory, or DontUseNativeDialog) take the same Utils::FileDialog route as the blocking variant. The future always carries exactly one result: a dialog destroyed along with its parent resolves it with an empty path, just like a cancel, so callers can consume it with a plain .then([](const FilePath &)). On WebAssembly the file content is materialized into the in-memory filesystem (via QFileDialog::getOpenFileContent) and the future resolves with that temporary copy, so callers can keep reading the result by path from any thread. Assisted-By: Claude Opus 5 (1M context) <[email protected]> Change-Id: Id457431776479fc2bf5a7f25a19517028df6c7a7 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/2b817284d14c41cd1a913df0cc5bbd7ca8ee863f Git commit 445736ae9deb71a608d8e5b11e8666619f006f9a by hjk on 07/08/2026 at 09:12.. Utils: Add LineEdit::onTextChanged to the Layouting builder FancyLineEdit emits textChanged, but the Layouting LineEdit did not expose it, so a builder-style onTextChanged handler was silently dropped. Connect it to FancyLineEdit::textChanged. Assisted-by: Claude Code Change-Id: If2933a107c429386cf6d02b783b7ccd16eee5ee1 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/445736ae9deb71a608d8e5b11e8666619f006f9a Git commit 557427019de106b9cf1fb117a3349448dda74d41 by hjk on 07/08/2026 at 09:12.. Lua: Add SpinnerOverlay Gui binding Expose SpinnerSolution::Spinner (an overlay that centres itself on a target widget and dims it while running) to the Lua Gui module, complementing the inline Spinner. Construct with SpinnerOverlay(widget) and toggle its 'running' property. Assisted-by: Claude Code Change-Id: I94e16586c6bb7f3401dcb95d37a153b9168708bb Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/557427019de106b9cf1fb117a3349448dda74d41 Git commit e3f0e8f7309fe129f47fa45666f301cdb543b394 by Jarek Kobus on 07/08/2026 at 10:35.. CLAUDE.md: Add testing rules Codify what keeps the autotests deterministic: no wall-clock waits, how to bound an assertion about something *not* happening, no raising a shared timeout to hide flakiness, and proving a new test can fail. Change-Id: I8dd388ca05629e45de60730e75121914ddcebf7f Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/e3f0e8f7309fe129f47fa45666f301cdb543b394 Git commit c158441cac37aa3e788b733da56e20a298c9d005 by hjk on 07/08/2026 at 10:36.. ProjectExplorer: Don't assert when a tool check filters a candidate DeviceToolAspectFactory::check() is used as a predicate to filter the tool candidates found on a device. A failed result is a normal outcome: it means the candidate does not apply, e.g. the QNX qnxsdp-env factory registers both .sh and .bat patterns and rejects the suffix that does not match the device OS. Wrapping check() in QTC_ASSERT_RESULT turned each such rejection into a soft assert ("File suffix does not match OS type") during QNX device tool detection. Use the result as the predicate and filter the candidate out silently instead. Assisted-by: Claude Code Change-Id: I6a11c12ca9a8c919c5d22b140e46200d8fbffdd9 Reviewed-by: Christian Kandeler <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/c158441cac37aa3e788b733da56e20a298c9d005 Git commit f0cddb23f91e27acc0111294f0855a50f8088824 by hjk on 07/08/2026 at 10:36.. Debugger: Keep a value display format tied to the item's type A per-item display format chosen in the Locals view was stored keyed only by the item's internal name and reapplied to any later item with the same name, including one of an unrelated type in a different scope. A hexadecimal format set on an "int foo" thus turned a "struct Foo foo" one step later into "0", and the stale format also persisted across runs. Record the type a format was chosen for and honor the stored format only while the item still has that type, both in the frontend (itemFormat) and in the dumper (currentItemFormat). Individual formats stored by earlier versions carry no type, so there is no way to tell whether they still apply; drop them when loading the session instead of letting them keep misfiring. Transient formats are not affected. Fixes: QTCREATORBUG-17221 Assisted-by: Claude Code Change-Id: Ie491d18ce18ab0910478b95074b0ef3dec77f73d Reviewed-by: Orgad Shaneh <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/f0cddb23f91e27acc0111294f0855a50f8088824 Git commit e8a8de65461e08d4a64117864a46037d0bb715c3 by Marcus Tillmanns on 07/08/2026 at 10:42.. Profiler: Port perfdatareader to Utils::Process Replace the raw QProcess member with a Utils::Process. Utils::Process is not a QIODevice, so the parser's stdout is bridged through a small sequential QIODevice (ProcessOutputBuffer) that the PerfProfilerTraceFile streaming reader consumes. Keeping it sequential preserves the reader's incremental progress reporting; a random-access buffer would derive progress from pos()/size(), which is meaningless for a stream we grow and drain in place. The lifecycle is driven via the done()/started()/readyRead*() signals, and the process-mode check replaces isWritable(). On a failed start we now report only the failure instead of also emitting finished(), which would finalize a trace that was never initialized. The disk-spill back-pressure is retained: perfparser's stdin can lag behind the incoming data, so we keep spilling to temporary files and drain them as it catches up. Utils::Process cannot report its write queue depth, so the parser's own output serves as the progress signal. It pumps the drain in place of QIODevice::bytesWritten(), and the bytes written since the last output replace bytesToWrite() as the spill threshold: perfparser emits trace data as it consumes its stdin, so a count that keeps growing without anything coming back means it stalled and what we wrote since is still queued. The recording timer stays on as a heartbeat for a backlog that was spilled while the parser was idle. This also lets perfdatareader compile where QProcess is unavailable (Qt for WebAssembly). Assisted-By: Claude Opus 4.8 (1M context) <[email protected]> Change-Id: Ic61819f101f754e7eb95317fa632a9cf466c1899 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/e8a8de65461e08d4a64117864a46037d0bb715c3 Git commit db5645b62aa9ab23028f2da40654a95070b7071f by Marcus Tillmanns on 07/08/2026 at 10:53.. Utils: Guard desktop-only code paths for WebAssembly Several dependencies have no WebAssembly backend. Skip libptyqt and libarchive on Emscripten, provide a stub INTERFACE target for the latter so its dependents keep resolving their link deps, make unarchiver return errors there (libarchive uses POSIX disk-walking APIs), and skip the execinfo.h backtrace in qtcassert (Emscripten defines Q_OS_UNIX but ships no execinfo.h). Whether libarchive is there is a build system property rather than a compiler one, so unarchiver keys off QTC_UTILS_WITH_LIBARCHIVE, set by CMake where the dependency is declared and unconditionally in the qbs build, which always has libarchive. Assisted-By: Claude Opus 4.8 (1M context) <[email protected]> Change-Id: I9c1492f5fd0e2eb6dbc40a7a39cfbdd1f6f39eef Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/db5645b62aa9ab23028f2da40654a95070b7071f Git commit 3708885798af699e4e3669eda878bafb08c6e0cd by Marcus Tillmanns on 07/08/2026 at 10:53.. QtProfiler: Add a WebAssembly build Add a qtprofiler-wasm CMake preset that cross-compiles the standalone qtprofiler for Qt for WebAssembly: it uses the wasm Qt toolchain, builds statically (QTC_STATIC_BUILD) with only the Profiler plugin dependency closure, and restricts the build to the qtprofiler executable. Invoke Qt's wasm executable finalizer for qtprofiler (add_qtc_executable does not), so the .html shell, qtloader.js and the required MODULARIZE/EXPORT_NAME/embind/memory link options are generated. Initialize the statically-linked Utils resources explicitly, and open trace files via the asynchronous getOpenFilePath()/AsynchronousMessageBox so the UI never blocks the main thread. Assisted-By: Claude Opus 4.8 (1M context) <[email protected]> Change-Id: I3b4c288998970ba8b86d4a49547d3006c87470b2 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/3708885798af699e4e3669eda878bafb08c6e0cd Git commit a9aff3a6ae3ea3defae708aa76eeade48dd538b2 by hjk on 07/08/2026 at 11:05.. CmdBridge: Keep the C sources 7-bit clean The comments used an em dash throughout, and a few lines ran past the 100 column limit. Both are plain style rules, but the first one is the kind that spreads by copy and paste. Amends decaf54a624e5c839f35a8f66677b73238d66857. Assisted-by: Claude Code Change-Id: I7613fcade1a1946d3c9c962427f28df1be687cf5 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/a9aff3a6ae3ea3defae708aa76eeade48dd538b2 Git commit 0cf87a36ebdefce260a73a9bcbc395f41d9776bb by Jarek Kobus on 07/08/2026 at 11:24.. LldbEngine: Report breakpoint locations without debug info SBAddress::GetFunction() needs debug info, so describeBreakpoint() reported function="None" for every breakpoint location in a module built without it. Fall back to the symbol table, which keeps the richer signature where debug info is present. Change-Id: I92cbd873f4b06fb90357d2cc5010f29b9dad0f1d Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/0cf87a36ebdefce260a73a9bcbc395f41d9776bb Git commit d8fe01f61a83cb28bd0577c9edd730c61ac77ae3 by Marcus Tillmanns on 07/08/2026 at 11:29.. QtProfiler: Make the WebAssembly build setup portable The qtprofiler-wasm preset encoded one machine's layout: an absolute macOS Qt path, a 6.11.1 version pin and $env{HOME}/emsdk. The preset is not hidden, so it shows up in every developer's preset list in Qt Creator and configures for nobody but its author. Take the two Qt paths from QT_WASM_ROOT and QT_HOST_PATH and let the activated emsdk provide EMSDK, so only the cache-variable set stays committed, and name the expected variables in the preset description. Call the public qt_finalize_target() rather than the private _qt_internal_finalize_wasm_app(). It runs the same WebAssembly finalizer plus the resource and plugin-import finalization, and cannot silently do nothing if a future Qt renames the private helper. The macOS and Windows finalizers it also carries are guarded by APPLE and WIN32 and so are unreachable from the Emscripten branch. Also say in the resource-init comment what really decides the Q_INIT_RESOURCE call - the static build, which has no C++ define and is approximated here by __EMSCRIPTEN__. Amends 3708885798af699e4e3669eda878bafb08c6e0cd. Assisted-By: Claude Opus 5 (1M context) <[email protected]> Change-Id: I143266cf52b27c6a715650deb326d2a744c1547b Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/d8fe01f61a83cb28bd0577c9edd730c61ac77ae3