[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 976f038b0c846c4827dc323378fb3e6b08a86427 to f0e83d756db657e8f6f89c343e3227a645c58388 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 a845fb3173be7071775a9ead1747abbe0f8454e6 by Marcus Tillmanns on 10/08/2026 at 12:45.. Profiler: Drop the QtSupport dependency in the WebAssembly build The Profiler plugin only uses QtSupport for the live-profiling launch integration (selecting a Qt kit/version to run and profile an app), which is unavailable on WebAssembly. Pulling it in also drags in ProParser and qmake, which do not build there. Make QtSupport a conditional PLUGIN_DEPENDS (dropped on Emscripten) and guard the few QtSupport call sites so the offline trace viewer builds without it. The QML file finder consequently stays unpopulated there, so the viewer resolves no source locations and skips detail rewriting. It has no project to find files in anyway. profiler.qbs keeps its unconditional QtSupport dependency: qbs has no Emscripten target. Assisted-By: Claude Opus 4.8 (1M context) <[email protected]> Change-Id: I542b02a1b0f5f8cbcb8b32fe9fb6db2afa3e7b86 Reviewed-by: hjk <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/a845fb3173be7071775a9ead1747abbe0f8454e6 Git commit 1102ec944332236cdfab4f9e6bf7326e3d66cb50 by hjk on 10/08/2026 at 13:55.. Tracing: Report only visible blocks from forEachRulerTick The tick callback was clipped to the visible width, the block callback was not, leaving TimeRuler to repeat the check. Clip both, and write down which positions the callbacks report and which are clipped. Assisted-by: Claude Code Change-Id: I1c65e6efe3d4bc44efa4b29fe69a1575a7808ab0 Reviewed-by: Alessandro Portale <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/1102ec944332236cdfab4f9e6bf7326e3d66cb50 Git commit 5fc104e60ae8196bbf41fd639aa7bb9a8ebb09c3 by hjk on 10/08/2026 at 13:55.. McpServer: Add widget resolver and input tools Add find_widgets, click_widget, type_text and select_combo_item so MCP scenarios can address the UI semantically ("the OK button in dialog X") instead of by screen coordinates, which rot on layout changes and encode nothing a reader can verify. find_widgets walks QApplication::allWidgets() and matches on objectName, visible text, class (exact or subclass) and window title, reporting geometry, state and window id. The action tools build on it and treat more than one match as an error, so an ambiguous query is a bug in the scenario rather than a coin toss. Buttons are clicked through their own click() slot and combo items chosen via setCurrentIndex(), avoiding the popup and dropdown pitfalls of synthetic input. Assisted-by: Claude Code Change-Id: Ib8c47cd36f53d7b26a961e0214b63a9069122633 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/5fc104e60ae8196bbf41fd639aa7bb9a8ebb09c3 Git commit 4711d159e80c206831cdf632592cd3f7360898a8 by hjk on 10/08/2026 at 13:55.. McpServer: Add query, assertion and screenshot tools Add widget_exists, list_windows, read_pane and screenshot, so an MCP client can observe the UI it drives, not just act on it. widget_exists and list_windows reuse the widget resolver to answer "did the preview open?" and "which dialog is up?". read_pane returns the plain text of an output pane (Application Output, Compile Output, ...) by display name, distinct from get_application_output which returns Qt Creator's own log; it lists the available panes when asked without a name and flags non-text panes such as Issues. screenshot renders a window with QWidget::grab() rather than an external screen grab. Because grab() repaints the widget in-process the image is deterministic and never blank, so no compositor and no settle-and-retry are needed. The PNG is embedded as base64 or saved to a path. Assisted-by: Claude Code Change-Id: Idbd573a4b3bb0858ce9531102a345d89c006a7a2 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/4711d159e80c206831cdf632592cd3f7360898a8 Git commit c0dfe4d2fb6496fab55352430d3f56011537faec by hjk on 10/08/2026 at 13:56.. CmdBridge: Fix exec on Windows Standard input never reached the child: HANDLE_FLAG_INHERIT was cleared on the read end, the end the child needs, leaving our write end inheritable so the child held its own input open. Only our end is cleared now, and the payload is written from a thread of its own, so a child that does not drain its input cannot stop us from reading its output - writing it all up front deadlocked past the 64K pipe buffer. Env was ignored altogether, CreateProcessW being passed a null environment block, so a command always ran with the bridge's own environment however carefully the client had built one. Cancelling an exec closed the process handle twice, once through exec_kill() and again on the way out, and read the exit code from the handle in between - from an uninitialised variable, the return of GetExitCodeProcess() never being checked. The registry entry was also only ever dropped after a cancel, so a successful exec leaked an allocation and left a stale pid behind. Arguments longer than 4096 characters were dropped and the command line was cut off at 8192, silently: a long compiler invocation ran with fewer arguments than it was given. It grows as needed now, quoted so that CommandLineToArgvW() parses it back unchanged. Output was collected by peeking a hundred times per millisecond, which kept a core busy for the whole run of any command that was merely slow. Amends decaf54a624e5c839f35a8f66677b73238d66857. Assisted-by: Claude Code Change-Id: Ie08abfe2e01845dacded91a0a995fb2f7a7551a2 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/c0dfe4d2fb6496fab55352430d3f56011537faec Git commit a70572c08701382bf58fc76affd030ac691ea8dc by hjk on 10/08/2026 at 13:56.. Utils: Add normalizeTerminalOutput() A pseudo-terminal is not a transparent byte pipe: the remote line editor, and ConPTY on Windows, inject escape sequences and redraw lines with carriage returns and backspaces. Anything that matches on output read from a Process with pty data needs to reduce the stream to the text a terminal would display first. The tqtc-plugin-vxworks device shell grew a local copy of this, which is what prompted moving it here. Assisted-by: Claude Code Change-Id: I9c6e740ace0bd79393698ace0389640850faf5d8 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/a70572c08701382bf58fc76affd030ac691ea8dc Git commit 1adad61578f09d610994543186283da4775eb215 by hjk on 10/08/2026 at 13:56.. ProjectExplorer: Allow bypassing the known_hosts file Devices whose hardware gets reflashed come back with a new host key. The stale known_hosts entry then makes ssh refuse password authentication, so those device types need to opt out of the file rather than have every user clean up by hand. Not tied to SshHostKeyCheckingNone, which is what IDevice::fromMap() defaults to for every device that has no stored value. Assisted-by: Claude Code Change-Id: I78d0dadbcd85616041d7865332ae43daccc57fbb Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/1adad61578f09d610994543186283da4775eb215 Git commit 38edb7623601c819378167b4086c8b4a8d97dc69 by hjk on 10/08/2026 at 13:56.. Core: Give SecretAspect an explicit service and key, and a remover Deriving both from the settings key by splitting it at the last '.' is not discoverable, and it forces anyone who wants to delete a secret to reproduce the split by hand. A mismatch is silent: the entry stays in the keychain. deleteSecret() also removes the plaintext fallback entry, which survived a hand-rolled CredentialQuery because that only talks to QKeychain. Assisted-by: Claude Code Change-Id: Ie78e307c19b00b2d127b55b8c3ab7c867da5ac67 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/38edb7623601c819378167b4086c8b4a8d97dc69 Git commit f341edef4be8148d0466d3710017e1e3a0a690f2 by hjk on 10/08/2026 at 13:57.. CmdBridge: Stop exec from waiting on output that cannot end Commands run on several threads, and the pipes were created without O_CLOEXEC, so a child spawned by one exec inherited the pipes of every other exec in flight and held their write ends open. The exec behind it then waited for an end of output that could only come once that unrelated process exited. A spawned program saw thirteen descriptors it had no business having, where the Go implementation passes three. Everything the bridge opens is now closed on exec: pipes, files, the inotify queue and the watched file handles. Draining the child's output blocked until read() returned 0, which on a still-open pipe means waiting for more. A child waiting for the rest of its own standard input therefore never got it, because the loop that feeds it was never reached again - both sides sat there until the watchdog killed the bridge. The reads are non-blocking now, and the four near-identical copies of the forwarding code have become one. The exit code could come from an unset variable: the poll timeout path reaps the child, and the wait afterwards then failed with ECHILD and left the status it read untouched. Amends decaf54a624e5c839f35a8f66677b73238d66857. Assisted-by: Claude Code Change-Id: Id83952bcf284e373057f533d72db350d3281a324 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/f341edef4be8148d0466d3710017e1e3a0a690f2 Git commit b1befb5f25059b4171ee791d718da242b3eb9023 by hjk on 10/08/2026 at 13:57.. CmdBridge: Close a forwarded connection only once Stopping a forward server closed every connection's descriptor while its own thread was still using it, and that thread closed it again on the way out. In between, the number could have been handed to an unrelated file or socket, which the second close then shut. Whoever gets there first closes it now, and the other side sees -1. The select() wrapper compared a SOCKET against 0 to spot an unused slot, which is always true for an unsigned type, so a closed connection was passed to select() - and when that failed, nothing had set revents and the caller read whatever was on the stack. Amends decaf54a624e5c839f35a8f66677b73238d66857. Assisted-by: Claude Code Change-Id: Ic9fc9cbd4183136b67d9d07d32c0959ee9075dfa Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/b1befb5f25059b4171ee791d718da242b3eb9023 Git commit 3ed1fb6f0e0c7e3cad076e192ecded7dcd72e25c by hjk on 10/08/2026 at 13:57.. CmdBridge: Follow a watched file across atomic saves Writing a temporary and renaming it over the original is how editors save, and it detaches an inotify watch from the file. The code meant to re-arm the watch looked for IN_DELETE, which inotify reports for entries *inside* a watched directory and never for the watched file itself, and IN_DELETE_SELF, which has to be requested and was not in the mask. So it never ran: a watched file stopped being watched the first time anything saved it, and nothing said so. The mask now asks for IN_DELETE_SELF and the re-arm also triggers on IN_MOVE_SELF and IN_IGNORED, the one event that says for certain the watch is gone. Events that map to no operation are no longer forwarded as an empty one. On Windows a file could not be watched at all, ReadDirectoryChangesW working only on directories; the request was refused and the client heard nothing about the file again. It is watched through its parent now, with the events filtered back down to the one name, which is what fsnotify did. test_watch_file_readd_on_recreation asserted the old Windows behaviour, so it moves along with it rather than one commit later. Amends decaf54a624e5c839f35a8f66677b73238d66857. Assisted-by: Claude Code Change-Id: I383471087319737cf175817995ead7dcf7128795 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/3ed1fb6f0e0c7e3cad076e192ecded7dcd72e25c Git commit a892cf5928f43085abdbe33c0f3e9d6539d5e11d by hjk on 10/08/2026 at 13:59.. Debugger: Do not fetch registers twice per step with LLDB LldbEngine::updateAll() fetched the stack and, separately, reloaded the registers. But fetchStack()'s completion reaches activateFrame(), which already reloads the registers, so each step fetched them twice while the Registers view was open. Drop the redundant call; the fetchStack -> activateFrame path still covers stepping, frame switches and thread switches (selectThread also goes through fetchStack). Fixes: QTCREATORBUG-17843 Assisted-by: Claude Code Change-Id: Id2021752b5324377bb29941696d7a3d615c84c0f Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/a892cf5928f43085abdbe33c0f3e9d6539d5e11d Git commit 37a466f5318b1c0ac9c71f91901f0d691eda907b by Alessandro Portale (on behalf of Eike Ziller) on 10/08/2026 at 14:27.. QtQuick wizard: Make Figma2Qt detection opt-out The option is always shown, but the selected value is remembered and used as default for later wizard usages. Also moves all the check boxes together by putting the (most important) Qt version selection to the top. Fixes: QTCREATORBUG-34719 Change-Id: I2076b6bf9176e1bfc91348f4e9a209b9eb8fa5f6 Reviewed-by: Mitch Curtis <[email protected]> Reviewed-by: Alessandro Portale <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/37a466f5318b1c0ac9c71f91901f0d691eda907b Git commit 93ae422e4977bcfb059774fa35d42190fa5fee40 by Alessandro Portale (on behalf of Paul Olav Tvete) on 10/08/2026 at 14:35.. Update to latest QCanvasPainter API QCanvasPainter::setRenderHint was removed during API review. In Qt 6.12, the only way to enable/disable antialiasing is through setAntialias(float), which should also work with the tech preview API in Qt 6.11. Change-Id: I2f5e5bc5385cee6ec0ed133ae5f725ac78de53e7 Reviewed-by: Marcus Tillmanns <[email protected]> Reviewed-by: Alessandro Portale <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/93ae422e4977bcfb059774fa35d42190fa5fee40 Git commit 78025a0fb21722321057e96ad5abaac0b1745179 by hjk on 10/08/2026 at 15:17.. CmdBridge: Test the command spelling the client actually sends build_cbor_map() cannot express a nested map, so 94 of the 96 commands the tests build were flat - {"Type": "find", "Directory": ...} - which the C server accepts as a fallback but the client never sends and the Go server never understood. Everything that mattered about find, stat and exec was therefore tested through a shape nothing in production uses, which is why a recursive find returning only its top directory, an untranslated Windows file time, an ignored Env and a stdin that never reached the child all passed 78 tests on both platforms. build_cbor() encodes arbitrary values, and the new tests use it to cover those cases and the descriptor and deadlock ones with them. test_watch_file_readd_on_recreation no longer returns early on Windows, where watching a file is expected to work now. Assisted-by: Claude Code Change-Id: I84d5083d42a0ddda6d7623f3be6b397aca1d1a7d Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/78025a0fb21722321057e96ad5abaac0b1745179 Git commit 43e05ed247f4ddf5e32ad7c21418cd8398a0e1f3 by hjk on 10/08/2026 at 15:17.. CmdBridge: Keep the sources 7-bit clean The em dashes were the reason to keep writing them: a reviewer can point at the neighbouring file and call the ASCII spelling the inconsistent one. Removing them in one go settles that, and keeps the fix that prompted it free of unrelated churn. The Unicode file names in cmdbridge_py_test.py stay - they are what the test is about. Assisted-by: Claude Code Change-Id: Ia0efac4bb2027e77b05804bb62e7a357fc21a0c5 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/43e05ed247f4ddf5e32ad7c21418cd8398a0e1f3 Git commit 89ebdd6c1f8e0bbaae571774a2bfa8e8160b93a9 by hjk on 10/08/2026 at 15:18.. Utils: Add StyleHelper::tintedPixmap() Flatten a pixmap to a single color while keeping its alpha (a SourceIn fill). Unlike Icon's mask tint, which derives coverage from luminance and discards alpha, this preserves transparency - so tinting a transparent SVG does not turn it into a solid rectangle. Also drop a redundant second SourceIn tint pass in drawIconWithShadow(); the two identical passes produced the same result. Assisted-by: Claude Code Change-Id: I0636879d92d61171f4bf5a9895ce2d37a875d5ce Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/89ebdd6c1f8e0bbaae571774a2bfa8e8160b93a9 Git commit 32f47a8a0698f6b97ed10fdba69c3dcdafe2a43a by hjk on 10/08/2026 at 15:20.. Debugger: Add the CDB native combined service round-trip Bring up the NativeQmlDebugger service round-trip on CDB. The service is driven by inferior calls with string arguments, and cdb's .call rejects string literals, so strings are marshalled into target memory and passed by pointer. qtcreatorcdbext: add the two primitives the marshalling needs: - cdbext.writeRawMemory(address, bytes), mirroring readRawMemory via IDebugDataSpaces::WriteVirtual; - cdbext.allocate(size), via a new ExtensionContext::allocateMemory that runs '.dvalloc' and parses the returned address. cdbbridge.py: implement the service-call seam overrides on top of those - marshalString() (allocate -> write bytes+NUL -> address), callServiceFunction() (module-qualified cdbext.call with (char *) pointers), and readServiceVariable(). Validated end to end on Windows (cdb 10.0.26100, Qt 6.11.0 msvc2022_64): enable service -> setbreakpoint -> backtrace returns a live QML frame. cdb-roundtrip.cdb captures the validated flow and the two cdb-script gotchas (';' is a command separator; '!qtcreatorcdbext.pid' hooks the output callbacks that .call / allocate need). Out of scope (next, needs Windows iteration): the interpreter breakpoint resolver / "QML stop" wiring (CdbEngine has no in-debugger event loop), stepping orchestration, and the C++->QML skip mechanism. See tests/manual/debugger/qmlmix/cdb-reference.md sections 5-7. Assisted-by: Claude Code Change-Id: I35f4eb653e38027cb1febfc8653b8478b5b49a59 Reviewed-by: hjk <[email protected]> Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/32f47a8a0698f6b97ed10fdba69c3dcdafe2a43a Git commit 443231cb81da87210cc0e4eef9d5629b6469f13f by hjk on 10/08/2026 at 15:21.. Debugger: Drive native combined debugging from CdbEngine Build on the CDB service round-trip and the two internal hooks armed in runEngine() to make the CDB engine handle the QML side of a native combined (C++/QML) session. CdbEngine::insertBreakpoint now routes QML breakpoints to the in-process NativeQmlDebugger service via the bridge (insertInterpreterBreakpoint) instead of the C++ path. examineStopReason() intercepts the two hook frames by the stopped function name and handles them asynchronously, without a user-visible stop, mirroring the conditional-breakpoint pattern: qt_qmlDebugConnectorOpen resolves the pending QML breakpoints and continues, while qt_qmlDebugMessageAvailable asks the bridge to decode the event and stops only for a real QML break. Unlike GDB and LLDB, which decide stops from a Python stop handler, CDB drives stops from the C++ engine, so dumper.py gains reportInterpreterMessage() to report the decoded event back to the engine over the script channel. With this a QML breakpoint in a native combined session is inserted, resolved once the connector opens, and stops the debugger when hit, verified against a live CDB session. The QML stack splice (the QML frame on top of the C++ stack) is left for a follow-up. Task-number: QTCREATORBUG-7433 Task-number: QTCREATORBUG-2171 Assisted-by: Claude Code Change-Id: I33c0aa76c1cd146b0c793ab06a7c989078d47790 Reviewed-by: Marcus Tillmanns <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/443231cb81da87210cc0e4eef9d5629b6469f13f Git commit f0e83d756db657e8f6f89c343e3227a645c58388 by hjk (on behalf of Alessandro Portale) on 10/08/2026 at 15:21.. Remote: Give remote devices recognizable OS icons The remote macOS, Windows and Linux device factories all set an empty icon, so the devices showed up without one (e.g. in the file dialog's device sidebar). Add three simple, recognizable, non-trademark OS glyphs as new masks in the icon source SVG (looped command square for macOS, a four-pane grid for Windows, a penguin for Linux), each with a large and a small variant, and wire each factory to its combined icon. Assisted-by: Claude Code Change-Id: I276214675481847919bcc409adbb1e7a777c856d Reviewed-by: Alessandro Portale <[email protected]> https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/f0e83d756db657e8f6f89c343e3227a645c58388