[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 70717513a205bf994091efd441ba5c3f2b11e63e to 5a071dc130a93ae785384dc93f7d858df2685ec1
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 c2e14a22542565f66242b44fd73060bf3ded2a05 by hjk on 19/08/2026 at 06:56..
Utils: Recognize what HarmonyOS calls itself

"uname -s" prints "HarmonyOS" there, which nothing mapped, so a device
whose OS is read that way ended up with no type at all: CmdBridge
refused with "Unknown os type: HarmonyOS" and the slow shell file access
carried everything.

Assisted-by: Claude Code
Change-Id: Ie71fb381ad0f2b6ec4f70f4e7786af21c09ee6c5
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/c2e14a22542565f66242b44fd73060bf3ded2a05

Git commit 2a2d46ad1646fb94ec261284e6dc55966de4adbc by hjk on 19/08/2026 at 06:56..
CmdBridge: Let a device prepare the bridge before it is uploaded

Some systems execute only binaries carrying their own signature, which
the bridge cannot have when Qt Creator is built anywhere else. Hand the
bytes to the device on the way to the upload, so it can make them
acceptable.

Assisted-by: Claude Code
Change-Id: Ie2fcb77a32c8520661849e225800d21414f216d9
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/2a2d46ad1646fb94ec261284e6dc55966de4adbc

Git commit 36a4edddc0f868f1b2681b3a1eb583b6500e09b2 by hjk on 19/08/2026 at 06:56..
McpServer: Say why list_directory found nothing

An empty directory, a path that is not there and a device that is not
configured or not reachable all came back as an empty list, so a caller
reads "cannot look" as "nothing there" - which is exactly what happened
here: a remote listing answered {} and the device looked broken while it
was fine, only unknown to this instance yet.

The answer now carries a reason: ok, not_found, not_a_directory, or, for
a remote path, not_found_or_device_unavailable - the two cannot be told
apart without the device internals, and saying so beats guessing.

Assisted-by: Claude Code
Change-Id: I87e5b3e14e8f39a6a4c86aa4f8459eba9d5a1dc4
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/36a4edddc0f868f1b2681b3a1eb583b6500e09b2

Git commit 51cb6557b452eefd229b1e23698ed30a0c579d42 by hjk on 19/08/2026 at 06:56..
McpServer: Add unload_plugin

The counterpart to load_plugin, so a scripted run can check what a
plugin leaves behind: load it, look, take it out, look again. Without it
the only way to reach that code was to close Qt Creator.

Assisted-by: Claude Code
Change-Id: I20345c9365293fcc6cb3b324d0bdb24ef0c1ce1f
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/51cb6557b452eefd229b1e23698ed30a0c579d42

Git commit ae6399d9fa62677fd3233204c5ec16c699f6abe4 by hjk on 19/08/2026 at 06:56..
McpServer: Let read_pane see every output pane

It listed the panes in the plugin object pool, which is three of them,
and reported that list as the available ones - so General Messages, the
pane most worth reading when something went wrong, looked like it did
not exist. It now asks Core, and finds ten.

Assisted-by: Claude Code
Change-Id: I917be8b8365e3e5afcac1169bbee0a13074132b9
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ae6399d9fa62677fd3233204c5ec16c699f6abe4

Git commit e0d20969e1db9af97e66f5f32ce1531f28e363b9 by hjk on 19/08/2026 at 06:56..
McpServer: Open a preferences page, and double-click a row

A settings page could not be reached at all: Preferences is a mode, and
triggering its action from outside does not bring it up, so a page's
widgets - which are built the first time it is shown - never existed for
a scripted run to find. show_settings_page opens one by id.

click_item grew double_click for the same reason: a row that acts only
on a double click ignored two single ones, so what the row stands for
could not be opened.

Assisted-by: Claude Code
Change-Id: I15046c6ffa7888bbd520247a2975c7feed76a2c3
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/e0d20969e1db9af97e66f5f32ce1531f28e363b9

Git commit 2f74ab0cb159b0093a18c071b27ea436aeb28333 by Eike Ziller on 19/08/2026 at 07:46..
Revert "AutoTest: Work around failing options handling"

This reverts commit 2b08d41b0c682c8ad04dbba9b66420f6af77ed36.

This is no longer needed with the passing of command line arguments
to iOS applications being fixed with commit

719f787805edfde9fee4eafab2feee756ee77adc

Change-Id: I8a796110ff1a8d6734e9d006118105c31410c493
Reviewed-by: Christian Stenger <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/2f74ab0cb159b0093a18c071b27ea436aeb28333

Git commit 4b6ac5cbcee035087a4481e372bcbe9261434a93 by hjk on 19/08/2026 at 07:48..
Core: Let a caller find the output panes and their windows

There was no way to ask which output panes exist: every pane registers
itself with the manager, but the list is file-static, so a caller had to
scan the plugin object pool - where only three of them ever end up. And
three panes that do show a Core::OutputWindow never said so, leaving
outputWindows() empty for General Messages, Version Control and Test
Results.

Assisted-by: Claude Code
Change-Id: Iad605636beb73750cb111af88e9d9cbe9af3f519
Reviewed-by: Eike Ziller <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/4b6ac5cbcee035087a4481e372bcbe9261434a93

Git commit deaa17dea46b030afef501889135a9a9cacf7222 by Christian Stenger on 19/08/2026 at 07:51..
Axivion: Guard project info access in task tree setup handlers

Dereferencing an unset std::optional reads its uninitialized storage.
Check for the current project info at runtime of the handlers, not
at the creation time of the recipe. As communication and processing
is asynchronous the optional can be reset in between.
Stop the task if this is the case to avoid accessing uninitialized
string data and constructing a URL holding garbage.
Original issue likely fixed as side-effect of
d55d73c6a8d98a349aeb889e1af2d3f76e54f621, this patch here guards
for similar issues of two different recipes.

Fixes: QTCREATORBUG-33008
Change-Id: I6a02c5bb8e50c36969a150eccd115345e15e516a
Reviewed-by: Jarek Kobus <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/deaa17dea46b030afef501889135a9a9cacf7222

Git commit 7f3f615ed4ba705991231260b4b85d8b0b2c9e97 by Eike Ziller on 19/08/2026 at 07:53..
macOS: Fix that we got unwanted FileOpen events

On macOS, AppKit interprets all command line arguments (as passed to the
process) and if that is an odd number and the last one looks like a file,
that get passed to the application as an "openFile" request. Qt has a
workaround for that, which suppresses this if that argument is also
present in QApplication::arguments(), see application:openFiles: in
qcocoaapplicationdelegate.mm

But to benefit from the workaround in Qt we need to pass all the
arguments to the QApplication. In turn, we need to tell the
PluginManager about all the options that it should ignore, so
that doesn't complain about unknown command line options.

Fixes: QTCREATORBUG-30383
Change-Id: I45836fa0d218c11fe2f7d69cd8c853158d31a4fb
Reviewed-by: Christian Stenger <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/7f3f615ed4ba705991231260b4b85d8b0b2c9e97

Git commit 23f2ee608716114510058f2316bde9bf673bc378 by Christian Stenger on 19/08/2026 at 08:38..
SquishTests: Adapt to ui changes

Extensions mode is gone since 370b26c480d910a2e59b57bc167dbc82ac09d375.

Change-Id: I5fb9c43a1c347d9a5e6945438f5d9ca3c37cf36b
Reviewed-by: Jukka Nokso <[email protected]>
Reviewed-by: Christian Stenger <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/23f2ee608716114510058f2316bde9bf673bc378

Git commit 9ab5c97b8976869eeca866ac618bdd307046999a by Eike Ziller on 19/08/2026 at 09:42..
ProjectExplorer: Fix visible state of active target in project window

When double-clicking a kit item in the project window to make it active,
the "bold" state of the active versus inactive kits did not update until
a forced redraw happened. Inform the model that the items have changed.

Change-Id: I62705b5c55be0d5d16b7b5fe03b80500a30ded58
Reviewed-by: Christian Kandeler <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/9ab5c97b8976869eeca866ac618bdd307046999a

Git commit ea31bfee6cd20a74520b9704267734df3af18920 by hjk on 19/08/2026 at 09:43..
HarmonyOS: Reach the device's files and run commands on it

The device could only be deployed to, by the deploy step calling hdc
itself. Give it the file access and the process interface every other
device has, so that a FilePath on it resolves and a Process on it runs,
which is what any build device support would need.

hdc shell is the channel, with three of its traits worked around: it
does not forward stdin, it merges the remote stderr into stdout, and it
reports neither the command's status nor a failed file transfer in its
exit code. Reads and writes therefore go through "file recv"/"file
send", and the status comes back in a marker the shell echoes.

The test drives whatever device is attached and skips when there is
none.

Assisted-by: Claude Code
Change-Id: I45d0f5eb61843d89a0fb8900d53e7a77744cac88
Reviewed-by: Joerg Bornemann <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ea31bfee6cd20a74520b9704267734df3af18920

Git commit 7399d9c06f96af76dc4b29718975764c1c8aaef1 by hjk on 19/08/2026 at 09:44..
Core: Copy project-relative paths

"Copy Full Path" and "Copy Path and Line Number" copy absolute paths; a
path relative to the project root is more portable to share with others.
Add sibling context-menu actions for both, falling back to the absolute
path when the file is not below the current project.

Fixes: QTCREATORBUG-9028
Assisted-by: Claude Code
Change-Id: Ib4b0835a1bcacdcf68e1e717ac03c70efd480516
Reviewed-by: Eike Ziller <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/7399d9c06f96af76dc4b29718975764c1c8aaef1

Git commit 221c23e561cfd1395050fa5e68b3195ddb734037 by hjk on 19/08/2026 at 09:44..
ProjectExplorer: Create a device's kits once its compilers are known

Tool detection registers MSVC toolchains before their compiler is known:
the vcvars environment capture that reveals cl.exe runs asynchronously.
Kits were created as soon as autoDetect returned, so a kit could be
presented while its compiler command was still empty - 21 s for the
second of the two Visual Studio installations on a remote Windows
device. Configuring a project in that window passes an empty
-DCMAKE_CXX_COMPILER to CMake, which then reports "No CMAKE_CXX_COMPILER
could be found" and leaves a build directory that a plain reconfigure
does not repair.

A toolchain that is not fully known after registration now keeps the
device's tool detection open, through the task count that already gates
kit creation. MSVC takes such a hold while its capture is running and
drops it when the capture finishes, which covers failure and
cancellation as well.

Detecting a device's tools therefore takes visibly longer before its
kits show up: as long as the captures need, about 20 seconds for the
two Visual Studio installations above, where the kits used to appear
immediately. That is the intended trade - a kit that arrives late is
better than one that cannot configure a project.

Assisted-by: Claude Code
Change-Id: Idfd9510e22ea782d5e31ef86530c978a69a24e30
Reviewed-by: David Schulz <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/221c23e561cfd1395050fa5e68b3195ddb734037

Git commit b6f1c3d7add4c2e2a1ad63e1d999229605c1a59f by hjk on 19/08/2026 at 09:45..
Revert "McpServer: Add unload_plugin"

This reverts commit 51cb6557b452eefd229b1e23698ed30a0c579d42.

Unloading is considered harmful due to leftover dangling pointers
etc.

Change-Id: I20345c9365293fcc6cb3b324d0bdb24ef0c1ce1e
Reviewed-by: Alessandro Portale <[email protected]>
Reviewed-by: Eike Ziller <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/b6f1c3d7add4c2e2a1ad63e1d999229605c1a59f

Git commit ec58bc30a0fb726c35222ba9c9e8cd6d0e81ea62 by Eike Ziller on 19/08/2026 at 10:29..
Add zoom shortcuts to Markdown editor preview

The text editor part already could be zoomed with the standard
shortcuts, but not the preview

Change-Id: Icb8ce8479cebcaafb83a21ba6b79fccb37a194a8
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/ec58bc30a0fb726c35222ba9c9e8cd6d0e81ea62

Git commit 1c31ae70ee1eca72b3840690e2e44001d9c8aa1b by hjk on 19/08/2026 at 10:33..
Revert "HarmonyOS: Reach the device's files and run commands on it"

This reverts commit ea31bfee6cd20a74520b9704267734df3af18920.

Too early.

Change-Id: Ia015745b52d6cf85220477cf382cb094e7604196
Reviewed-by: Marcus Tillmanns <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/1c31ae70ee1eca72b3840690e2e44001d9c8aa1b

Git commit c5921fff5ba53fb10831073602a30810f75260ad by Christian Kandeler on 19/08/2026 at 10:33..
ClangCodeModel: Fix some tests

Amends 2dd5eb223c07f20bff2fbaf3ce3809da1ec40a61.

Change-Id: I74de9aa662796d6b833c0759789e788163ba769d
Reviewed-by: Christian Stenger <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/c5921fff5ba53fb10831073602a30810f75260ad

Git commit 9d2a6305b624cd52ccc379dce855cf07d0fe7896 by hjk on 19/08/2026 at 11:20..
ProjectExplorer: Don't block a run on a missing remote executable

444f9d642f3 reported an empty remote executable from checkForIssues() as
an error. That disabled the Run button outright, and with the button
disabled the explanatory message never appeared, so the user was left
with a greyed-out Run and no reason for it.

Report it as a warning instead, and let a run start past warning-level
run-configuration issues (only errors abort). The hint is now shown up
front while the run can still be attempted.

Amends 444f9d642f330acae41552a5bcd44ef68f0eee06.

Assisted-by: Claude Code
Fixes: QTCREATORBUG-34860
Change-Id: I3ed34c6e0bbb7c49ad831b3c1b99644c51f4e7b2
Reviewed-by: Christian Kandeler <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/9d2a6305b624cd52ccc379dce855cf07d0fe7896

Git commit dd4fe6955b1188a007ef1fb71913af278df82d4a by Christian Kandeler on 19/08/2026 at 11:29..
HarmonyOs: Remove unused function

Change-Id: I4043b0cf609ab1a4239c5682062cce7dae85e3ac
Reviewed-by: hjk <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/dd4fe6955b1188a007ef1fb71913af278df82d4a

Git commit 8524b01740ccdcdb5eea9e72715f3e98e4577df0 by Joni Poikelin on 19/08/2026 at 11:31..
Fix linkifying Windows paths with drive letters

Old code assumed there would only be two slashes in a file url if the path
contained a drive letter.

Fixes: QTCREATORBUG-34808
Change-Id: I9b0d2824ecd2317e9a46b535e522f43d1ea44415
Reviewed-by: Christian Kandeler <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/8524b01740ccdcdb5eea9e72715f3e98e4577df0

Git commit 3b400fdd5b336ecfc3cbdfdc61464303b241407c by Marcus Tillmanns on 19/08/2026 at 11:32..
CmdBridge: Let the bridge report its own pid

A launcher cannot tell that the binary it exec'd actually runs. Over ssh
the wrapper echoes the shell's $$ before "exec", so the marker driving
SshProcessInterface emit started() proves only that the shell reached
the exec - a bridge the device refuses to execute still looks started,
and the caller holds file access whose every call then asserts.

The shell cannot do better. It has no close-on-exec, so the errno
self-pipe that QProcess and posix_spawn use cannot be built there; a
shell that fails to exec exits instead of reaching an "||" handler; and
a parent that backgrounds the target cannot tell an exec failure from a
target exiting 126. Exec failure is an event, exec success is the
absence of one.

The target can, though, and this one is ours. Have the bridge wrap its
own getpid() in the marker as the first thing main() does, and drop the
launcher's echo for it. Then the marker means the bridge is running,
and no marker means the exec failed - which handleDone() already
reports as FailedToStart, joining the buffered stderr into the error
string. So the shell's "cannot execute binary file" becomes the message
instead of reaching the packet parser as trash. Neither the interface
nor its two branches change; they were simply never reached, because
the shell satisfied the marker before the exec could fail.

exec() keeps the pid, so the bridge reports the same number the shell
would have, and signalProcess() is unaffected. The marker goes on
stdout, which the launcher parses and strips, while the protocol stays
on stderr.

Strictly opt-in, so nothing changes for a launcher that does not
consume a marker: the device hands the marker to FileAccess, which
passes it to the bridge and tells the interface to stop producing one.
The C implementation takes the option too - ignoring it there would
print no marker and make every bridge look failed to start.

Measured against a remote host, with the bridge cross-built for it:

  wrapper              bridge        marker             verdict
  echo $$ && exec       works         __qtc171211__qtc   started
  echo $$ && exec       cannot exec   __qtc171253__qtc   started
  exec + -pidMarker    works         __qtc171293__qtc   started
  exec + -pidMarker    cannot exec   none               FailedToStart

Not run inside Qt Creator or against a HarmonyOS device yet, so the
started()/FailedToStart transitions are read from the interface rather
than observed. Sent as a prototype for that reason.

WrappedProcessInterface, which serves docker, devcontainer and android,
has the same shape and is stricter about it, so the same move should
help there - but its marker is a template ("__qtc%1qtc__") rather than
a doubled literal, so a shared format would have to come first.

Assisted-by: Claude Code
Change-Id: I87d737c263c3e41b016e4b52f4b33c98a323b7f8
Reviewed-by: hjk <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/3b400fdd5b336ecfc3cbdfdc61464303b241407c

Git commit 14a8aa728095a1827b307524d2233c72b28edf98 by Ahmed El Khazari on 19/08/2026 at 11:33..
Android: Stream logcat only while its output is visible

Drive logcat streaming from the new RunControl::outputVisibilityChanged
signal. AppOutputPane marks a run's output visible only while its tab is
the current one and the pane itself is shown, updating this on both tab
switches and the pane's own show/hide. The `adb logcat` tail runs only
then and stops otherwise, so background tabs and a hidden pane do not
keep idle adb processes alive or compete with other stream consumers.

Stopping tears the tail down at the end of the event loop pass, and only
if streaming stayed off: a synchronous kill can race the tail's
in-flight output, and the tab's visibility flickers while the pane
rearranges.

Task-number: QTCREATORBUG-34397
Task-number: QTCREATORBUG-33853
Co-authored-by: hjk <[email protected]>
Change-Id: I6ba9c74b8cbc565ddcc1d55cd4385acf4e47a324
Reviewed-by: Assam Boudjelthia <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/14a8aa728095a1827b307524d2233c72b28edf98

Git commit 1fdab597cc6b44ff3508693137e2afa046d5ee65 by Ahmed El Khazari on 19/08/2026 at 11:33..
Android: Manage Logcat lifecycle for disconnect/reconnect

Hook `DeviceManager::deviceAdded`, `deviceUpdated` and `deviceRemoved`
to detect disconnect and reconnect transitions for the streamed device.
On disconnect, post a "disconnected" banner to the tab and stop the adb
tail while keeping the tab open. When the device returns to
`DeviceReadyToUse`, the tail resumes automatically if the tab is still
active.

`start()` now also bails out while the device is not ready, and the
`m_disconnected` latch edge-gates the banners: `deviceUpdated` keeps
firing while a device stays offline.

A disconnect now always kills the tail, even while the tab stays
visible: a surviving adb sits in "- waiting for device -" and resumes on
whichever device claims the serial next, and the repeated device update
posted the disconnected banner twice. adb's waiting chatter is dropped
from the tab; the banner alone tells the story.

The tab title becomes the plain device name and never changes.

Task-number: QTCREATORBUG-34397
Task-number: QTCREATORBUG-33853
Change-Id: I6548a0969caeaf3a23acb9e611ed78a9360ea2a5
Reviewed-by: Assam Boudjelthia <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/1fdab597cc6b44ff3508693137e2afa046d5ee65

Git commit 63bacd2f915baa791c3df56df4567d925d92f6e1 by Ahmed El Khazari on 19/08/2026 at 11:33..
ProjectExplorer: Let a RunControl disable the output pane actions

The App Output pane shows Re-run, Stop, and Attach buttons for every
running RunControl. For a passive monitor tab like the Android Logcat
tab these actions make no sense.

Add RunControl::setOutputPaneActionsEnabled(), named after what it
gates. The pane checks it when updating the buttons, and the attach
button's tooltip follows the enabled state. The Logcat tab opts out
when it is created.

Co-authored-by: hjk <[email protected]>
Assisted-by: Claude Code
Task-number: QTCREATORBUG-34397
Task-number: QTCREATORBUG-33853
Change-Id: I58b27fb7eb5b4cfc165096c2b0f012fe3ee317b6
Reviewed-by: Assam Boudjelthia <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/63bacd2f915baa791c3df56df4567d925d92f6e1

Git commit 38e3d19f21a6a7fb56f01d33f32c831752005037 by hjk on 19/08/2026 at 11:41..
Debugger: Give the BridgeEngine's inferior its own tty

The bridge speaks its protocol over gdb's stdout, and the inferior
inherited that same descriptor: its output never reached the Application
Output pane, and a printf could corrupt the framing.

Keep a private dup() of the original stdout for the protocol and point
fd 1 at stderr, so gdb's own console output and stray prints land in the
debugger log instead of in the message stream. The inferior gets a pty
via "set inferior-tty", and a reader thread forwards what it writes as
DAP 'output' events, so output shows up while the inferior runs and not
only at the next stop. Writes are serialized, as that thread shares the
protocol stream with the main loop.

Assisted-by: Claude Code
Change-Id: Ida0d3307887e70f95d4391cf767b7dd119b9e751
Reviewed-by: Christian Stenger <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/38e3d19f21a6a7fb56f01d33f32c831752005037

Git commit 5f71c636c91fc7f537d1c6d55dd07fd85704cc73 by David Schulz on 19/08/2026 at 11:50..
LanguageClient: fix soft asser in completion assist

The m_postponedUpdateConnection was not reset after disconnecting so the
check in running falsely returned true.

Change-Id: Iac3c15d54cc48b571986be9c1d6700d9538397b4
Reviewed-by: Christian Kandeler <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/5f71c636c91fc7f537d1c6d55dd07fd85704cc73

Git commit 5a071dc130a93ae785384dc93f7d858df2685ec1 by Jeff Heller on 19/08/2026 at 12:23..
MCP: Track last-build verdict for get_build_status

Replaces the minimal get_build_status (returned a single status
string that couldn't distinguish "never built" from "idle after a
successful build") with a BuildStateTracker that subscribes to
BuildManager signals globally and captures the full verdict of every
build it observes.

The new output schema carries:

  running, progress_percent, current_step  — live progress
  last_result (never_built / success / failure / canceled)
  last_finished_at (epoch ms), last_duration_ms
  last_error_count, last_warning_count
  summary_text (human-readable one-liner)

last_error_count/last_warning_count count the build categories, via
the existing getErrorTaskCount() and a getWarningTaskCount() added
to match it, so code-model and app-output tasks stay out of the
verdict while a deploy step's own failures stay in it. Both are
taken as a delta against the totals at build start: the issues list
is only cleared when "Clear issues list on new build" is set, so
otherwise a clean build inherited the previous one's errors and
reported success with a non-zero error count. That baseline is also
what keeps a stale deploy task out, without having to drop the
category. Fewer tasks than at build start means the list was
cleared mid-build, and what remains is counted as the build's own.

A build taken from the pending queue is armed when the previous one
finishes, as no buildStateChanged follows it, so its duration is no
longer reported as zero. An empty queue finishes without ever
starting; that signal is ignored, so a real verdict is not replaced
by a synthetic one. last_finished_at and last_duration_ms are
omitted when unknown, since 0 is a legitimate value for both.

BuildManager gains a buildQueueCanceled() signal, emitted just before
buildQueueFinished(false) on the cancel path. Without it a build the
user canceled is indistinguishable from one that failed, and would be
reported as a failure with no errors - the same incoherent verdict
this change exists to prevent. last_result gains 'canceled'.

progress_percent needs a percentage, but currentProgress() returned
the raw future value, whose range is the build-step count times 100,
so any queue past a single step exceeds the schema maximum of 100.
It is renamed to currentProgressPercent() and normalized, which also
corrects the percentage the build tool prints.

This eliminates the "idle looks the same as never-built" ambiguity
that forced callers to add a redundant list_issues call to determine
the build verdict.

Assisted-by: Claude Code
Change-Id: Ib862c4c7fab592c0f743f6e3ad99fa399fefa314

Reviewed-by: Marcus Tillmanns <[email protected]>
Reviewed-by: hjk <[email protected]>
https://invent.kde.org/qt/qt-creator/qt-creator/-/commit/5a071dc130a93ae785384dc93f7d858df2685ec1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.