Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
cd256bc
chore: stage PTP production integration automation
masarray Sep 15, 2026
9cbe678
chore: split PTP source integration from workflow updates
masarray Sep 15, 2026
63d050f
PTP: promote hardware timing engine into v0.1.1 production firmware
github-actions[bot] Sep 15, 2026
b39931f
ci: make PTP-P2 part of production SMV firmware contract
masarray Sep 15, 2026
b68795d
release: advance ARStack Studio package contract to v0.1.1
masarray Sep 15, 2026
10a0ed9
chore: remove PTP production staging helper
masarray Sep 15, 2026
3b3a5b0
chore: stage v0.1.1 manifest capability hardening
masarray Sep 15, 2026
4b739ff
PTP: fail closed on incomplete v0.1.1 firmware capabilities
github-actions[bot] Sep 15, 2026
082e2b1
chore: remove v0.1.1 manifest staging helper
masarray Sep 15, 2026
5535b14
chore: stage PTP VLAN-off production compile fix
masarray Sep 15, 2026
0c581cb
PTP: support untagged production profile without VLAN Kconfig macros
github-actions[bot] Sep 15, 2026
53607af
chore: remove PTP VLAN-off staging helper
masarray Sep 15, 2026
efbba0b
chore: stage v0.1.1 lifecycle and PTP stabilization
masarray Sep 15, 2026
0199df5
chore: simplify v0.1.1 stabilization staging
masarray Sep 15, 2026
232474b
fix(studio): retire workers before GUI event loop exits
github-actions[bot] Sep 15, 2026
4d9a477
chore: stage verified PTP source and normal-close fixes
masarray Sep 15, 2026
8e2f3e0
fix(v0.1.1): verify PTP source TX and normal GUI shutdown
github-actions[bot] Sep 15, 2026
822c47e
ux(ptp): make source start obvious and evidence-driven
masarray Sep 15, 2026
a2e81a8
ci(studio): gate normal Windows close and immediate reopen
masarray Sep 15, 2026
25f0d97
chore: stage real main-window close regression
masarray Sep 15, 2026
a6dc074
ci(ptp): lock verified source-start contract
masarray Sep 15, 2026
ba9899d
test(studio): exercise real primary-window close path
github-actions[bot] Sep 15, 2026
fccf017
chore: stage role-correct PTP status text
masarray Sep 15, 2026
4d98df2
fix(ptp): keep role-specific start semantics truthful
github-actions[bot] Sep 15, 2026
41bd10f
chore(ci): remove temporary v0.1.1 staging workflow
masarray Sep 15, 2026
b1d5003
fix(ptp): use verified TX readiness on ESP-IDF 5.5
masarray Sep 15, 2026
685e9c7
chore(ci): stage v0.1.1 harness fixture fix
masarray Sep 15, 2026
fe35964
test(studio): align S8 fixture with v0.1.1 capabilities
github-actions[bot] Sep 15, 2026
10cfc12
ci(ptp): gate verified TX readiness on ESP-IDF 5.5
masarray Sep 15, 2026
9f286ed
chore(ci): remove temporary v0.1.1 harness patch workflow
masarray Sep 15, 2026
c6f1c59
chore(ci): stage PTP stop declaration fix
masarray Sep 15, 2026
8530d66
chore(ci): remove temporary PTP declaration helper
masarray Sep 15, 2026
17036bb
fix(ptp): declare bounded source stop helper
masarray Sep 15, 2026
b6da439
build(ptp): inject internal stop declaration for source runtime
masarray Sep 15, 2026
7e7768c
fix(ptp): declare stop helper before bounded start
github-actions[bot] Sep 15, 2026
0b3a85a
build(ptp): keep lifecycle declaration local to source
masarray Sep 16, 2026
566afaf
chore(ptp): remove temporary forward-declaration shim
masarray Sep 16, 2026
cc15cc9
ci: stage P0 shared Ethernet TX recovery
masarray Sep 16, 2026
20c3e68
ci: stage authoritative P0 SMV/PTP recovery
masarray Sep 16, 2026
f022b34
fix(p0): serialize concurrent SMV and PTP Ethernet TX
masarray Sep 16, 2026
5d6990f
fix(p0): fail closed when canonical SV transport is dead
masarray Sep 16, 2026
0100563
fix(p0): restore EMAC after failed PTP source start
masarray Sep 16, 2026
094fb86
chore: remove P0 Ethernet recovery staging helper
masarray Sep 16, 2026
b3f6698
ci: rerun authoritative P0 recovery on current head
masarray Sep 16, 2026
7026ad5
chore: remove temporary P0 authoritative recovery workflow
masarray Sep 16, 2026
9e22a6a
ci: stage authoritative SMV/PTP P0 repair
masarray Sep 16, 2026
26d57a2
ci: move P0 repair logic into standalone script
masarray Sep 16, 2026
cada9aa
ci: run P0 repair script with minimal workflow
masarray Sep 16, 2026
fb6a402
ci: push P0 source repair separately from workflow edits
masarray Sep 16, 2026
326d215
ci: align PTP readiness gate with rollback start path
masarray Sep 16, 2026
91d6486
ci: lock shared EMAC and fail-closed SMV contract
masarray Sep 16, 2026
2fee41d
ci: exercise Studio against v0.1.1 production firmware contract
masarray Sep 16, 2026
6875cfa
ci: isolate P0 firmware source repair
masarray Sep 16, 2026
36b0e35
ci: run source-only P0 firmware repair from latest head
masarray Sep 16, 2026
f5a9739
ci: execute P0 source repair on Windows runner
masarray Sep 16, 2026
ec757f8
fix(p0): fail closed SMV transport and restore shared EMAC state
github-actions[bot] Sep 16, 2026
6b387df
ci: execute P0 source repair on ARM64 runner
masarray Sep 16, 2026
722122f
chore: remove temporary P0 repair workflow
masarray Sep 16, 2026
23d2864
chore: remove temporary Windows source repair workflow
masarray Sep 16, 2026
f6ad55c
chore: remove temporary ARM64 source repair workflow
masarray Sep 16, 2026
330e08f
chore: remove obsolete P0 repair script
masarray Sep 16, 2026
3d85fe6
chore: remove temporary P0 source repair script
masarray Sep 16, 2026
74ff9ee
ci: apply smart legacy firmware recovery fix
masarray Sep 16, 2026
206eb8a
ci: add smart firmware recovery patch helper
masarray Sep 16, 2026
0c4515d
ci: simplify smart firmware recovery repair runner
masarray Sep 16, 2026
1a2c6de
ci: run smart firmware recovery repair on Windows
masarray Sep 16, 2026
40a33f7
fix(studio): auto-recover trusted legacy ESP32-P4 firmware
github-actions[bot] Sep 16, 2026
5d930fe
chore: remove temporary smart recovery patch helper
masarray Sep 16, 2026
eea95d6
chore: remove temporary smart recovery workflow
masarray Sep 16, 2026
f05db91
ci: build smart recovery Windows candidate
masarray Sep 16, 2026
3c9e852
ci: route smart recovery candidate to Windows 2025
masarray Sep 16, 2026
d9334b7
ci: build smart recovery candidate with VS2026
masarray Sep 16, 2026
cc5c47e
ci: invoke NSIS from installed absolute path
masarray Sep 16, 2026
fe4661b
chore: remove focused smart recovery candidate workflow
masarray Sep 16, 2026
4cbde22
ci: apply physical P0 runtime repair
masarray Sep 16, 2026
f29bcb0
ci: stage P0 runtime repair script
masarray Sep 16, 2026
efc5426
ci: simplify P0 runtime repair runner
masarray Sep 16, 2026
2e6e5db
ci: move P0 repair to Ubuntu 22 runner
masarray Sep 16, 2026
15fe7fe
fix(p0): hard-exit GUI close and infer single-board firmware recovery
masarray Sep 16, 2026
63561ea
ci: run P0 runtime repair on Windows 2025
masarray Sep 16, 2026
0c75e46
ci: run P0 repair on macOS runner
masarray Sep 16, 2026
7d270ac
ci: build physical P0 Windows candidate
masarray Sep 16, 2026
1d92114
chore: remove temporary P0 runtime repair script
masarray Sep 16, 2026
00201cf
chore: remove temporary P0 runtime candidate workflow
masarray Sep 16, 2026
bee1a58
ci: stage CH343 fast discovery repair
masarray Sep 16, 2026
5744e74
ci: run CH343 fast discovery repair
masarray Sep 16, 2026
df3842f
fix(studio): prioritize CH343 USB injector discovery
masarray Sep 16, 2026
991eca5
ci: build CH343 fast discovery Windows candidate
masarray Sep 16, 2026
f70bc23
ci: fix CH343 candidate lifecycle gate
masarray Sep 16, 2026
2d4a0ba
ci: remove CH343 repair helper
masarray Sep 16, 2026
44f600d
ci: remove CH343 repair workflow
masarray Sep 16, 2026
402451d
ci: remove CH343 candidate workflow
masarray Sep 16, 2026
4616f98
ui: add modern ribbon action component
masarray Sep 16, 2026
fe39de1
ui: add ribbon group component
masarray Sep 16, 2026
5e69ffc
ui: add QML-native tabbed ribbon shell
masarray Sep 16, 2026
d31a65f
ci: add phase 1 ribbon migration patcher
masarray Sep 16, 2026
cc0a4de
ci: apply phase 1 ribbon migration
masarray Sep 16, 2026
17ebf92
ci: add P0 PTP varargs repair patcher
masarray Sep 16, 2026
b268636
ci: apply P0 PTP varargs correction
masarray Sep 16, 2026
d9503ef
fix(ptp): honor ESP-IDF 5.5 varargs contract and expose TX failures
Sep 16, 2026
54f3f32
ci: move ribbon phase 1 apply to macOS runner
masarray Sep 16, 2026
53c2e19
ci: lock ESP-IDF 5.5 PTP timestamp varargs contract
masarray Sep 16, 2026
0b2f9c5
ui: adopt modern tabbed ribbon and compact instrument shell
Sep 16, 2026
d5b5dfb
ci: add Windows fallback for ribbon phase 1 apply
masarray Sep 16, 2026
e1777ae
ci(p0): add ESP-IDF 5.5.4 macOS fallback build gate
masarray Sep 16, 2026
688e671
ci(p0): bound and serialize ESP32-P4 firmware builds
masarray Sep 16, 2026
f84dff6
ci(p0): bound and serialize ESP32-P4 PTP builds
masarray Sep 16, 2026
bc18996
ci: apply P0 firmware build identity contract
masarray Sep 16, 2026
51c954f
ci: stage P0 firmware build identity repair script
masarray Sep 16, 2026
f3bda8a
ci: run one-shot P0 build identity repair
masarray Sep 16, 2026
7c3f5b8
ci: allow one-shot P0 repair on PR runner
masarray Sep 16, 2026
b48e56a
ci: harden one-shot build identity repair
masarray Sep 16, 2026
5ffa3f3
ci: apply P0 build identity without workflow mutation
masarray Sep 16, 2026
09eced1
ci: make P0 build identity repair source-only
masarray Sep 16, 2026
501bd42
ci: move one-shot P0 repair to macOS runner
masarray Sep 16, 2026
6b81cb4
fix(p0): bind firmware updates to semantic build identity
Sep 16, 2026
6774f74
chore(p0): remove one-shot firmware repair scaffolding
masarray Sep 16, 2026
8558857
chore(ptp): retire one-shot varargs repair scaffolding
masarray Sep 16, 2026
decd9cd
test(studio): include firmware provenance in bundle fixture
masarray Sep 16, 2026
368e5cc
chore(ci): restore canonical Studio workflow before provenance fixtur…
masarray Sep 16, 2026
b2f9f5d
test(studio): include firmware provenance in bundle fixture
masarray Sep 16, 2026
b9e5f08
fix(firmware): fail closed semantic build provenance
masarray Sep 16, 2026
bc7d416
chore(p0): stage firmware advisory state-machine repair
masarray Sep 16, 2026
6ae0b1a
chore(p0): run firmware advisory repair once
masarray Sep 16, 2026
2015884
fix(studio): make firmware updates advisory and recoverable
Sep 16, 2026
1188a1b
chore(p0): restore canonical Windows lifecycle gate
masarray Sep 16, 2026
badc8c7
chore(p0): remove one-shot firmware advisory patcher
masarray Sep 16, 2026
f3305c5
fix(studio): make firmware flash progress stream-safe
masarray Sep 16, 2026
e680c60
fix(studio): parse espflash progress across output chunks
masarray Sep 16, 2026
d7ed5a5
feat(studio): present firmware update as staged instrument workflow
masarray Sep 16, 2026
1ec0fc8
chore(p0): add one-shot firmware progress finalizer
masarray Sep 16, 2026
46a2543
chore(p0): add one-shot firmware progress repair job
masarray Sep 16, 2026
8fd76f3
fix(studio): finalize firmware progress observability
Sep 16, 2026
6f572fb
chore(p0): complete firmware progress regression fixture
masarray Sep 16, 2026
d1ed7a4
chore(p0): complete regression fixture in finalizer
masarray Sep 16, 2026
ebfa398
fix(studio): finalize firmware progress regressions
Sep 16, 2026
f98d963
chore(p0): remove one-shot firmware progress helper
masarray Sep 16, 2026
bf20f1a
chore(p0): remove one-shot firmware progress patcher
masarray Sep 16, 2026
52eb18c
chore(p0): remove one-shot firmware progress workflow
masarray Sep 16, 2026
6944984
chore(p0): add one-shot duplicate stage cleanup
masarray Sep 16, 2026
283c395
chore(p0): add one-shot duplicate stage repair job
masarray Sep 16, 2026
37a3ca6
fix(studio): keep one supervisor update stage enum
Sep 16, 2026
3832a2c
chore(p0): remove duplicate-stage one-shot patcher
masarray Sep 16, 2026
1189ffb
chore(p0): remove duplicate-stage one-shot workflow
masarray Sep 16, 2026
1f4f130
ui(studio): simplify command bar actions
masarray Sep 17, 2026
d0166fd
ui(studio): replace tab ribbon with compact command bar
masarray Sep 17, 2026
9c4e78a
ui(studio): refine numeric field density and focus treatment
masarray Sep 17, 2026
936f321
ui(studio): align signal matrix and reduce visual noise
masarray Sep 17, 2026
b78e523
ci(ui): stage one-shot demo shell refinement
masarray Sep 17, 2026
2d2eccd
ci(ui): run one-shot demo shell refinement
masarray Sep 17, 2026
a9f6299
ui(studio): consolidate shell for demo-grade layout
Sep 17, 2026
b34d74d
chore(ui): remove one-shot demo shell patcher
masarray Sep 17, 2026
7380a62
chore(ui): remove one-shot demo shell workflow
masarray Sep 17, 2026
0fc9339
feat(studio): replace ribbon with premium single command bar
masarray Sep 17, 2026
6ff726a
ci(studio): stage phase 1A premium shell patch
masarray Sep 17, 2026
6cde21e
ci(studio): apply phase 1A premium shell patch
masarray Sep 17, 2026
670c4b5
feat(studio): simplify premium demo shell
Sep 17, 2026
63a50e2
chore(studio): remove phase 1A patch scaffold
masarray Sep 17, 2026
014bffe
chore(studio): remove phase 1A workflow scaffold
masarray Sep 17, 2026
300b514
ci(studio): stage phase 1B workspace polish
masarray Sep 17, 2026
7cd3b52
ci(studio): apply phase 1B workspace polish
masarray Sep 17, 2026
1c0d5de
feat(studio): polish injection workspace for demo
Sep 17, 2026
718169e
chore(studio): remove phase 1B patch scaffold
masarray Sep 17, 2026
16365e8
chore(studio): remove phase 1B workflow scaffold
masarray Sep 17, 2026
e393738
feat(studio): tighten premium demo density tokens
masarray Sep 17, 2026
cdda632
ui(studio): refine premium command bar hierarchy
masarray Sep 17, 2026
93b9204
ui(studio): tighten command action geometry
masarray Sep 17, 2026
692925c
ui(studio): reduce preview dock chrome
masarray Sep 17, 2026
f6981ae
ui(studio): refine signal matrix density and alignment
masarray Sep 17, 2026
bad4041
ui(studio): reduce quality strip visual noise
masarray Sep 17, 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
ui(studio): consolidate shell for demo-grade layout
  • Loading branch information
ARStack UI Refinement
ARStack UI Refinement committed Sep 17, 2026
commit a9f629965c1904dab504bd04a34ba0a84a79cad8
133 changes: 28 additions & 105 deletions apps/arstack_studio/qml/Main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -429,121 +429,45 @@ ApplicationWindow {
}
}

header: Rectangle {
height: 50
color: studioTheme.chrome
border.width: 1
border.color: studioTheme.lineSoft

RowLayout {
anchors.fill: parent
anchors.leftMargin: 15
anchors.rightMargin: 15
spacing: 9

Rectangle {
width: 30
height: 30
radius: 6
color: "#101b27"
border.width: 1
border.color: "#315071"
Image {
anchors.centerIn: parent
width: 17
height: 17
source: Qt.resolvedUrl("../assets/lucide/radio-tower.svg")
sourceSize.width: 34
sourceSize.height: 34
}
}

ColumnLayout {
spacing: 0
Layout.alignment: Qt.AlignVCenter
Label { text: "ARSTACK61850"; color: studioTheme.muted; font.family: root.uiFont; font.pixelSize: studioTheme.captionSize - 1; font.weight: Font.Bold; font.letterSpacing: 1.0; verticalAlignment: Text.AlignVCenter }
Label { text: "SMV Injector"; color: studioTheme.text; font.family: root.uiFont; font.pixelSize: 13; font.weight: Font.DemiBold; verticalAlignment: Text.AlignVCenter }
}

Item { Layout.fillWidth: true }

Rectangle {
Layout.preferredWidth: root.compactLayout ? 170 : 210
implicitHeight: 32
radius: 7
color: studioTheme.surface2
border.width: 1
border.color: workflowBar.smartStateColor

RowLayout {
anchors.fill: parent
anchors.leftMargin: 10
anchors.rightMargin: 10
spacing: 8
Rectangle { width: 8; height: 8; radius: 4; color: workflowBar.smartStateColor }
Label {
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
text: workflowBar.displayState
color: workflowBar.smartStateColor
font.family: root.uiFont
font.pixelSize: 9
font.weight: Font.DemiBold
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
Label {
text: device.deviceVerified ? "•••" : "↻"
color: studioTheme.accent
font.family: root.uiFont
font.pixelSize: 13
font.weight: Font.Bold
verticalAlignment: Text.AlignVCenter
}
}
MouseArea {
id: identityMouse
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
enabled: !device.discovering
onClicked: device.deviceVerified
? root.openConfiguration()
: workflowBar.session.requestConnect()
}
ToolTip.visible: identityMouse.containsMouse
ToolTip.text: workflowBar.session.statusText
ToolTip.delay: 450
}
}
}

footer: Rectangle {
height: 30
height: 28
color: studioTheme.chrome
border.width: 1
border.color: studioTheme.lineSoft

RowLayout {
anchors.fill: parent
anchors.leftMargin: 15
anchors.rightMargin: 15
spacing: 9
anchors.leftMargin: 12
anchors.rightMargin: 12
spacing: 8

Rectangle { width: 6; height: 6; radius: 3; color: workflowBar.smartStateColor }
Label {
Layout.fillWidth: true
text: workflowBar.session.statusText
text: device.deviceVerified ? device.portName + " · ESP32-P4" : workflowBar.displayState
color: device.deviceVerified ? studioTheme.textSoft : workflowBar.smartStateColor
font.family: root.uiFont
font.pixelSize: 9
font.weight: Font.Medium
}
Rectangle { width: 1; height: 14; color: studioTheme.lineSoft }
Label {
text: workflowBar.injectionRunning ? "SMV output active" : "4I + 4V · 4000 samples/s"
color: studioTheme.muted
font.family: root.uiFont
font.pixelSize: studioTheme.captionSize
elide: Text.ElideRight
font.pixelSize: 9
}
Item { Layout.fillWidth: true }
Label {
visible: device.running
text: "FPS " + device.fps + " · MISSED " + device.missed + " · TX FAIL " + device.txFailures
visible: device.deviceVerified
text: device.running
? "FPS " + device.fps + " MISSED " + device.missed + " TX FAIL " + device.txFailures
: "READY"
color: (Number(device.missed) > 0 || Number(device.txFailures) > 0) ? studioTheme.amber : studioTheme.textSoft
font.family: root.monoFont
font.pixelSize: studioTheme.captionSize
font.pixelSize: 9
font.weight: Font.Medium
}
}
}
Expand Down Expand Up @@ -673,14 +597,14 @@ ApplicationWindow {

ColumnLayout {
anchors.fill: parent
anchors.margins: root.compactLayout ? 9 : 11
spacing: root.compactLayout ? 9 : 11
anchors.margins: 8
spacing: 8

WorkflowBar {
id: workflowBar
Layout.fillWidth: true
Layout.preferredHeight: workflowBar.implicitHeight
Layout.minimumHeight: workflowBar.implicitHeight
Layout.preferredHeight: 62
Layout.minimumHeight: 62
theme: studioTheme
controller: root
device: device
Expand Down Expand Up @@ -743,7 +667,6 @@ ApplicationWindow {
Layout.fillWidth: true
ColumnLayout {
spacing: 1
Label { text: "INJECTION"; color: studioTheme.muted; font.family: root.uiFont; font.pixelSize: studioTheme.captionSize; font.weight: Font.DemiBold; font.letterSpacing: 0.9 }
Label { text: "4I + 4V Injection"; color: studioTheme.text; font.family: root.uiFont; font.pixelSize: root.compactLayout ? 18 : 20; font.weight: Font.DemiBold }
}
Item { Layout.fillWidth: true }
Expand Down Expand Up @@ -986,7 +909,7 @@ ApplicationWindow {
}

TelemetryDock {
visible: root.telemetryDockVisible
visible: root.telemetryDockVisible && root.telemetryExpanded
SplitView.fillWidth: true
SplitView.minimumHeight: root.telemetryExpanded ? 88 : 32
SplitView.maximumHeight: root.telemetryExpanded ? 320 : 32
Expand All @@ -1009,7 +932,7 @@ ApplicationWindow {
StatusToast {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 48
anchors.bottomMargin: 38
theme: studioTheme
uiFont: root.uiFont
message: root.toastMessage
Expand Down
2 changes: 1 addition & 1 deletion apps/arstack_studio/qml/WorkflowBar.qml
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ SurfacePanel {
}
}

implicitHeight: ribbon.compact ? 70 : 96
implicitHeight: 62
color: "transparent"
border.width: 0

Expand Down