Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
81ee7c0
fix(qml): show the selected IED Browser with non-shadowed slot services
masarray Sep 27, 2026
cd8244a
test(browser): restore validated rendered fleet routing and service c…
masarray Sep 27, 2026
edc3540
test(browser): restore validated rendered fleet routing and service c…
masarray Sep 27, 2026
ec8d87e
test(browser): restore validated rendered fleet routing and service c…
masarray Sep 27, 2026
517c786
test(browser): reject shadowed services and wrong active-slot geometry
masarray Sep 27, 2026
3550f2f
ci(browser): gate rendered active IED and offline signal routing
masarray Sep 27, 2026
f59089f
ci(browser): verify active slot routing in release hardening
masarray Sep 27, 2026
684e32e
fix(qml): restore canonical Browser tree roles and rendered-tree iden…
masarray Sep 27, 2026
1b104d4
fix(qml): bind value-table model roles with required delegate index
masarray Sep 27, 2026
0d1beb8
test(browser): assert rendered model values as well as active signal …
masarray Sep 27, 2026
ed68748
test(qml): lock required model roles and observable Browser tree IDs
masarray Sep 27, 2026
b649c71
test(qml): lock required model roles and observable Browser tree IDs
masarray Sep 27, 2026
cd5551b
test(browser): verify all live service pointers match selected IED slot
masarray Sep 27, 2026
f092db2
test(qml): expose rendered model value label for nonblank GUI assertion
masarray Sep 27, 2026
21dc6df
test(browser): fail rendered QA when first model value label is blank
masarray Sep 27, 2026
4873962
test(browser): retain visible value label identity in observation con…
masarray Sep 27, 2026
18e3977
fix(qml): prevent File Home session self-binding loop
masarray Sep 27, 2026
24bba54
fix(qml): guard transient DataSet selection before dereferencing owne…
masarray Sep 27, 2026
2f71067
test(browser): traverse ListView visual children for rendered label a…
masarray Sep 27, 2026
0d322f0
fix(qml): correct DataSet guard syntax and use safe selection throughout
masarray Sep 27, 2026
aeefe1b
fix(qml): give confirmation dialogs explicit widths to avoid implicit…
masarray Sep 27, 2026
c821c58
fix(qml): give confirmation dialogs explicit widths to avoid implicit…
masarray Sep 27, 2026
f4a12d6
ci(browser): fail rendered milestone on QML binding and runtime errors
masarray Sep 27, 2026
4af3da4
ci(browser): fail rendered milestone on QML binding and runtime errors
masarray Sep 27, 2026
0d858cf
fix(qml): normalize transient undefined DataSet entry to null
masarray Sep 27, 2026
cab1eb0
ci: cancel superseded workbench Qt and release runs; validate exact head
masarray Sep 27, 2026
35e97a7
ci: cancel superseded workbench Qt and release runs; validate exact head
masarray Sep 27, 2026
e53a353
test(browser): reject File session self-binding regression
masarray Sep 27, 2026
4872870
test(browser): enforce null-safe DataSet ownership binding
masarray Sep 27, 2026
08b9ac9
fix(fleet): defer retired QObject services until QML Repeater visual …
masarray Sep 27, 2026
4e93973
test(fleet): require deferred visual-safe service retirement
masarray Sep 27, 2026
fe1e41b
fix(browser): detach QML delegates before fleet destruction
masarray Sep 27, 2026
b883d55
fix(browser): detach QML fleet views in aboutToQuit before C++ teardown
masarray Sep 27, 2026
d06716a
test(browser): preserve shutdown delegate-detach contract
masarray Sep 27, 2026
ca040f0
ci(release): gate Windows RC artifacts on rendered Browser acceptance
masarray Sep 27, 2026
fcb2c0a
fix(qml): freeze per-IED service bindings at delegate creation across…
masarray Sep 27, 2026
c33e7d2
fix(fleet): keep removed IED services alive through visual teardown f…
masarray Sep 27, 2026
d64d4b9
test(browser): lock per-slot service snapshots against Repeater reindex
masarray Sep 27, 2026
8b077f5
test(fleet): track bounded visual teardown grace period
masarray Sep 27, 2026
0f581c8
feat(browser-ux): compact two-row IEDScout-style model and connection…
masarray Sep 27, 2026
a7ed2bb
test(browser-ux): expose command-bar and endpoint geometry for minimu…
masarray Sep 27, 2026
1c3e3c5
test(browser-ux): render 1024px minimum width and assert endpoint com…
masarray Sep 27, 2026
3a3ceef
test(browser-ux): enforce compact two-row header and unique endpoint …
masarray Sep 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test(browser): restore validated rendered fleet routing and service c…
…ontracts
  • Loading branch information
masarray committed Sep 27, 2026
commit ec8d87e9d7459e68056d38ccd8bcfc69ea2611b8
47 changes: 39 additions & 8 deletions apps/ied_simulator/test_multi_ied_workspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,16 @@ def require(haystack, words, label):
"property var browserSession: fleet.activeSession",
"property var sclWorkspace: fleet.activeEngineering",
"model: fleet",
"currentIndex: fleet.activeIndex",
"browserFleet.contextAt(slotIndex)",
"browserFleet.sessionAt(slotIndex)",
"browserFleet.clientAt(slotIndex)",
"browserFleet.reportsAt(slotIndex)",
"browserFleet.controlsAt(slotIndex)",
"browserFleet.utilitiesAt(slotIndex)",
"browserFleet.engineeringAt(slotIndex)",
"visible: index === root.browserFleet.activeIndex",
"anchors.fill: parent",
'objectName: "iedBrowserView_" + index',
"root.browserFleet.contextAt(index)",
"root.browserFleet.sessionAt(index)",
"root.browserFleet.clientAt(index)",
"root.browserFleet.reportsAt(index)",
"root.browserFleet.controlsAt(index)",
"root.browserFleet.utilitiesAt(index)",
"root.browserFleet.engineeringAt(index)",
"onOpenSourceRequested: function(fileUrl)",
"fleet.prepareForNewSource()",
"FleetGlobalDataPane {",
Expand Down Expand Up @@ -116,6 +118,35 @@ def require(haystack, words, label):
):
if f"{typename} {{" in main:
raise SystemExit(f"P6E_FAIL singleton {typename} remained in Main.qml")
# QML required property 'fleet' in IedBrowserWorkspace shadows Main's
# id 'fleet': `fleet: fleet` resolves to itself and leaves every Browser
# service/context undefined, rendering the exact blank signal screenshot.
require(main, (
"property var browserFleet: fleet",
"fleet: root.browserFleet",
"session: root.browserFleet.sessionAt(index)",
"client: root.browserFleet.clientAt(index)",
"context: root.browserFleet.contextAt(index)",
"reports: root.browserFleet.reportsAt(index)",
"utilities: root.browserFleet.utilitiesAt(index)",
"controls: root.browserFleet.controlsAt(index)",
"engineering: root.browserFleet.engineeringAt(index)",
), "non-shadowed Browser context/service routing")
if "fleet: fleet" in main:
raise SystemExit("P6E_FAIL QML fleet self-shadowing would empty the Browser")

# A StackLayout containing a Repeater has an extra layout child and can
# render slot N-1 while the active tab points at slot N.
if "currentIndex: fleet.activeIndex" in main or \
"currentIndex: fleet.activeIndex + 1" in main:
raise SystemExit("P6E_FAIL Repeater delegates must not use StackLayout indexing")
require(main, (
'id: perIedBrowserHost',
'id: iedBrowserRepeater',
'visible: index === root.browserFleet.activeIndex',
'objectName: "iedBrowserView_" + index',
), "exact active Browser panel routing")

if "Timer {" in all_data:
raise SystemExit("P6E_FAIL aggregate Global Data timer/polling introduced")
if "setEngineeringContext(fleet.activeContext)" in main:
Expand Down
Loading