Skip to content

Add Quick Chat workspace parity - #815

Draft
coneilen wants to merge 7 commits into
mainfrom
coneilen-microsoft-wave-2-implement-d-774
Draft

coneilen wants to merge 7 commits into
mainfrom
coneilen-microsoft-wave-2-implement-d-774

Conversation

@coneilen

@coneilen coneilen commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Completes the approved Lane D Quick Chat workspace slice for #774: workspace chrome is bound to the stable chat ID, presents chat-specific information and actions, and publishes matching UI Automation elements.

Changes

  • Resolve the active chat from the persisted workspace scope and ID, not the current Quick Chats list position. Decode and preserve top-level createdAt for age presentation.
  • Add the chat-specific workspace bar, Restart session and Show in Graph affordances, geometry, and UIA mapping. Restart remains a user-approved, enabled workspace-bar no-op in this slice and does not issue a restart or launch action. The reference README's disabled-state note concerns raw native menus, not this workspace-bar control.
  • Route away when the bound chat is deleted and prevent panel toggles from reopening Quick Chat chrome after Show in Graph. Show in Graph goes to the project surface when a graph exists and Quick Chats otherwise.
  • Keep blocked route-away panel toggles from reporting a false status, route failed loop rescoping to the project surface, and continue publishing workspace-tab UIA when the bound chat is missing. Preserve the normal-loop UIA eligibility values.
  • Use saved pane.launches_agent metadata for tab/pane labels, including UIA names. This is a label-only approved deviation: it does not change role state, styling, geometry, launch/attach behavior, or tab lifecycle, and does not claim that a backend Agent is attached.

Test plan

RED: pwsh -NoProfile -File Tools\windows\Tests\AccessibilityProvider.Native.Tests.ps1 -> FAIL: Quick Chat restart uses its distinct AutomationId prefix; 194 checks, 1 failure
GREEN: pwsh -NoProfile -File Tools\windows\Tests\AccessibilityProvider.Native.Tests.ps1 -> 194 checks, 0 failures
REGRESSION: & $env:GRAPHCODE_ZIG0152 @arguments -> 10/10 passed on 04868be; arguments used --test-filter "Quick Chat" and the documented Windows/MSVC/native-link flags

On 04868be, the focused App filters also passed for header detail toggle (1/1), DPI UIA logical cards (1/1), and DPI UIA terminal tab close and controls (1/1). Together with Quick Chat (10/10), these cover the chat-bound workspace, saved Shell/Agent/split tab labels, DPI/UIA publication and geometry, blocked toggles, and normal-loop tab behavior. The native provider suite passed 194 checks with 0 failures. These were filtered, never-shown local tests using the lane-owned pinned toolchain, documented Windows/MSVC/native-link flags, and lane-local profile/support/temp/cache paths; no broad runner or UIA gate ran.

The first filtered App invocation on 04868be omitted the Windows target and native-link flags and failed during C import (windows.h not found), before tests ran. Its log is retained separately; this is not behavioral RED evidence. The corrected filtered invocations above passed. The App behavioral RED is separate controlled-reversion evidence: after temporarily removing the deletion-routing and panel-scope fixes, the filtered Quick Chat run had two behavioral failures (expected .quick_chats, found .workspace) and six passes. It was not an original-main or pre-implementation RED.

Source-only gate note: when GRAPHCODE_UIA_GATE is enabled, the .quick_chat UIA action calls openQuickChat, which scopes the workspace and calls openNode; this can attach or create a plain shell and restore saved sessions. It does not call resumeSession or launch a backend Agent. The dedicated Quick Chat UIA gate was not executed locally, and this source inspection is not runtime evidence.

The first exact-head CI run on 72c877e failed Windows shell unit shard 0 at compile time: App.zig:9243 referenced TerminalWorkspace.quickChatBarPresentation, which is not a declaration on that module. The call was corrected to TerminalSurface.quickChatBarPresentation in follow-up commit fb2db5d5. This compile failure is not behavioral evidence. The earlier fb2db5d5 check snapshot later reported all displayed non-skipped checks passing; the terminal/contracts check first failed before tests because Actions could not evaluate hashFiles('Tools/windows/bootstrap.ps1'), then passed on a same-head rerun. After rebasing on accepted main commit 9e6d13c0, exact-head 90eaea78 attempt 1 had an external Winghostty dependency-download failure (HttpConnectionClosing); attempt 2 on the same head passed integration, all three unit shards, packaging, packaging contracts, Windows spikes and the applicable required checks. Review follow-up fixes are now in 04868be9, and exact-head CI passed: Windows shell, Windows port, Windows hardening, and TDD evidence. The docs-only successor 133a1ad0 is based on accepted main dd501e1b; git range-diff 9e6d13c0..04868be9 dd501e1b..133a1ad0 maps all five D commits unchanged, and git diff 04868be9..133a1ad0 -- graphcode-windows Tools .github is empty. Exact-head checks all completed: Windows shell, Windows port and spikes, Windows hardening, TDD evidence, and DCO passed, including the required real zmx empty-list test. The path-gated full Windows, Linux and macOS jobs were skipped for this docs-only diff; this is not evidence that those jobs ran. Independent code/evidence acceptance for unchanged product and tooling source carries forward under the user-directed docs-only rebase; no new source review or focused local rerun was performed solely for the documentation base. No D desktop allocation, screenshot capture or UIA gate has run; the D capture preflight remains unaccepted.

The prior no-capture statement in the 133a1ad history paragraph describes that checkpoint; current CI UIA and capture status is recorded below.

git diff --check passes on the rebased tree. The prior zig fmt --check passed before restoring unrelated formatter-only lines to accepted main's existing formatting. The filtered tests above are fresh on 04868be; the first incorrectly flagged App invocation is preserved as a compile-setup failure, not behavioral evidence. The prior unfiltered local WindowsShell run is retained only as partial diagnostic evidence: 18 sections recorded explicit pass counts, the GDI+ asynchronous startup section had no result line, and the Frame buffer section stopped during GraphModel test 113/169 with no completion result; no later sections are recorded. Separately, validate.ps1 -Task windows-shell -ShellPart unit stopped at preflight with access denied while hashing a default-profile zmx log, before executing tests; no profile artifact was touched. Neither run is a full regression pass. Full-suite acceptance remains with exact-head CI.

After the accepted-main rebase to 6916bc2c, focused affected checks passed: bash Tools/ci/tests/classify-changes.test.sh (62 passed, 0 failed), pwsh -NoProfile -File Tools\windows\Tests\AccessibilityProvider.Native.Tests.ps1 (194 checks, 0 failures), UiScenario contracts (166 passed), and ValidationRunner.Tests.ps1 (pass). No broad local Windows runner or UIA gate was run. These are focused rebase checks, not a full local regression run.

Fresh exact-head CI for dfcbb80d completed successfully: Windows shell, Windows spikes, Windows hardening, validation, and DCO. Windows shell unit shards, packaging contracts, real-products packaging, integration, and the Windows spikes terminal/contracts and Swift jobs passed. The first integration attempt's Scrubbed production shell startup child PowerShell exited -1073741502 (0xC0000142); its retained job log is at https://github.com/scgopi/GraphCode/actions/runs/38630147351/job/116079461310. The single authorized retry passed at https://github.com/scgopi/GraphCode/actions/runs/38630147351/job/116088463184. Its log records SCRUBBED_SHELL_STARTUP: PASS; executed=5; developerToolsExcluded=true for first-run Escape, Skip, completion, onboarding-marker, and registered-project cases. It also reached the Native UI Automation live gate section, emitted live UIA evidence, verified UIA process cleanup, then continued into the real daemon wire round trip; the integration retry passed. The job log does not report one aggregate UIA assertion count. The failed attempt's log does not establish the cause, so none is attributed. Path-gated full pinned Windows validation, Linux, and macOS jobs were skipped; those platforms were not validated by this run. At the dfcbb80d checkpoint, no D screenshot capture or separate Quick Chat UIA gate had run.

For the R2 rebase that produced 853dd467, git range-diff 6916bc2c..dfcbb80d 65194b77..853dd467 mapped all five D commits unchanged; the stable patch ID remains ab564c086c33b262468f6065fb84dde353a0f717. That historical base delta was six tooling/README files only and contained no Windows product source, provider pin, or build-input change. It produced the approved six-file D diff. The independent different-vendor review of that narrow delta returned ACCEPT; normalized review-record digest: 8BD4E717FA3E42518F8ADF33356A6026FC1DCDEADF6AE5F27AE268824D7244BD.

The previously recorded shell binary hash A29F249B76AE559E4F906C79E5AD62CF53A0BBB3EEDE1112B42E5FF71C37C62F is from the pre-E D build at 04868be90dd1d735420c1a2c3e91cd151f058778; it is historical, not a fresh build of the combined E+D head. The recorded Winghostty and zmx hashes (00DF6DAFC75102321550B128BE413CE5875A7AB62DB7E75DCBD511EE86D2CBFA and B8BA8A6457E35575AA950D46A4E86890F007EB82C741FAD26E94BFEB82A52B30) are historical too. The baseline hash from dd501e1b predates E's product changes in App.zig and GraphContextMenu.zig, so it does not establish the current base binary. No local base/current product build was run or authorized.

On rebased source 853dd467, the allow-listed offline checks passed: pwsh -NoProfile -File Tools\windows\Tests\UiCaptureDriver.Tests.ps1 -ScratchRoot C:\gcs\id-r1-current (31/31), and pwsh -NoProfile -File Tools\windows\Tests\UiScenario.Tests.ps1 (166/166). A first driver-test invocation used reserved scratch under C:\gcs\id\ and failed because the unchanged path guard rejects that root; it was retained and not treated as a code regression. I mistakenly started pwsh -NoProfile -File Tools\windows\Tests\ValidationRunner.Tests.ps1; this disallowed local invocation was stopped before completion and is not a full-run pass. Its retained partial output records 17 executed hidden native HWND/EDIT cases (prompt lookup 11/11 and prompt hit 6/6), the UiScenario child 166/166, and 392 UIA_ diagnostic lines. It emitted UIA_PROCESS_TREE_CLEANUP=verified roots=24472 descendants=2; tracked PowerShell shell 15 was stopped (stop receipt preserved), and the post-stop process-ancestry check found zero survivors. The partial invocation produced no ValidationRunner aggregate result; do not treat it as full-run or NotExecuted evidence. No local runner retry, product UI, screenshot capture, or D capture was performed.

Fresh exact-head CI for 853dd467c01ff831c15eefc5ac15bb6939aee438 completed successfully: Windows shell, Windows spikes, Windows hardening, validation, and DCO. The PR check snapshot had 20 successes, 2 path-gated skips (Linux build and macOS), and 2 opt-in configured skips (Full pinned Windows validation and Gated environment hardening), with no failures. Windows-shell integration, all three unit shards, packaging contracts, real-products packaging, Windows spikes Swift, and terminal/contracts passed. Full pinned Windows validation and gated environment hardening were configured opt-in skips; Linux and macOS were path-gated. None were run. The exact-head integration log contains five scrubbed production startup case results (first-run Escape, Skip, completion, onboarding marker, and registered project), reaches the Native UI Automation live gate, and records REAL_DAEMON_ROUNDTRIP: PASS. It has no aggregate UIA assertion count or post-gate cleanup marker, so neither is claimed. The separate Quick Chat UIA gate and D screenshot capture had not run at this historical head. The locally recorded d-capture-job-65194-853dd467.json is an immutable queued/no-capture historical artifact, not current R2 admission. R1 (#823) is already accepted and merged; it is not a remaining gate.

The current E/D rebase is based on E #816's merge 112d458303891f87af6c1dc6beaf7e48073fd65c; current PR head is 3663499b62f47f3b86f9fb61716afb478ae622ef. The five D commits map 1:1 to the original commits, the stable patch ID remains ab564c086c33b262468f6065fb84dde353a0f717, and the PR diff remains the six approved D files. E's base advance includes App.zig, GraphContextMenu.zig, Tools/windows/Tests/ValidationRunner.Tests.ps1, and Tools/windows/uia-live-gate.ps1; these base changes remain present. A narrow different-vendor review of the actual E/D App and UIA-runner interaction returned ACCEPT for source interaction only (about 85% source confidence); it found no blocking interaction or lost D behavior. The review was configured with Sonnet 5.5/high task metadata, while the reviewer response does not self-attest model/effort. The verbatim review/provenance receipt is retained outside the repository (raw-file SHA-256 CFA6483FBFCC3E082CBA115BD54C3F4153173D0F9D27008F7A536E1848E51409).

Fresh exact-head hosted CI for 3663499b62f47f3b86f9fb61716afb478ae622ef completed successfully. The pre-final-body-edit PR check snapshot had 24 check entries: 20 SUCCESS and 4 SKIPPED, with no failure or pending checks. Windows shell validation passed integration, all three unit shards, packaging contracts, and real-products packaging; Windows port validation passed Windows spikes, Swift, and terminal/contracts; Windows release hardening passed both deterministic jobs. DCO and the pre-edit TDD evidence check also passed. Linux build and macOS shared Swift were path-gated skips; Full pinned Windows validation and Gated environment hardening were configured opt-in skips, not path-gated. The final body was separately checked with the documented local TDD command before publication; its edit-triggered GitHub TDD check is verified after publication. These results are not visual acceptance. No local D-specific base/current product build, desktop GUI, screenshot capture, dedicated Quick Chat UIA gate, adapter, or local full ValidationRunner was run; no local Windows shell/product/zmx validation was run. The prior disallowed partial ValidationRunner disclosure above remains: 17 hidden native HWND/EDIT cases executed (11 lookup and 6 hit), 392 UIA diagnostic lines, shell 15 stopped, zero post-stop survivors, and no aggregate result or full-pass claim.

Visual verification: Not executed. Issue #826 remains open; under the user-directed cutoff, no product GUI or screenshot capture was run. Visual/parity items remain unchecked and unverified for a later single batch. This is not visual acceptance. The old d-capture-job-65194-853dd467.json remains immutable queued/no-capture historical data, not current admission. Any later capture still requires the coordinator's separate authorization and applicable current gates, including accepted R2, a reviewed same-core D scene adapter, fresh current-head/base builds, accepted B release, and a separate D lease. No Ready or merge action was taken.

Checklist

  • I have read the Contributing Guidelines
  • I have signed off my commits (git commit -s) per the DCO
  • Tests pass locally (make test)
  • Code follows the existing style (make check)
  • I added the test/contract before the implementation and observed the intended RED failure

@coneilen
coneilen force-pushed the coneilen-microsoft-wave-2-implement-d-774 branch 4 times, most recently from dfcbb80 to 853dd46 Compare October 15, 2026 00:23
@coneilen
coneilen force-pushed the coneilen-microsoft-wave-2-implement-d-774 branch from 853dd46 to 3663499 Compare October 15, 2026 04:02
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4bb2827c-2516-46b6-9a0c-a52ef0f01fd0
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4bb2827c-2516-46b6-9a0c-a52ef0f01fd0
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4bb2827c-2516-46b6-9a0c-a52ef0f01fd0
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4bb2827c-2516-46b6-9a0c-a52ef0f01fd0
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Keep normal-loop UIA eligibility unchanged and avoid stale chat chrome or UIA publication after a missing chat or failed rescope.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4bb2827c-2516-46b6-9a0c-a52ef0f01fd0
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen force-pushed the coneilen-microsoft-wave-2-implement-d-774 branch from 3663499 to 8d5b914 Compare October 15, 2026 04:59
coneilen and others added 2 commits October 14, 2026 22:03
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4bb2827c-2516-46b6-9a0c-a52ef0f01fd0
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 4bb2827c-2516-46b6-9a0c-a52ef0f01fd0
Signed-off-by: Colin Neilens <coneilen@microsoft.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant