Repository navigation
Windows: make the right loop panel readable and match its macOS hierarchy - #789
Merged
coneilen merged 6 commits intoOct 14, 2026
Merged
Conversation
coneilen
force-pushed
the
coneilen-microsoft-fix-right-loop-panel-escalated
branch
from
October 14, 2026 06:58
dbe9ec9 to
e6fcc49
Compare
2 of 5 tasks
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc42ae02-a736-4bad-a084-8a3cf0c9cde5 Signed-off-by: Colin Neilens <coneilen@microsoft.com> (cherry picked from commit f94ced6)
Keep the right-loop rail from leaving blank minimap boxes or skipped-row gaps, and narrow adjacent labels so they don't collide. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc42ae02-a736-4bad-a084-8a3cf0c9cde5 Signed-off-by: Colin Neilens <coneilen@microsoft.com> (cherry picked from commit 874acc7)
Reuse reviewed panel commits f94ced6 and 874acc7; stack one-hop minimap blocks, keep conditions below titles, use target state dots, and share painted footer/metric bounds with UIA. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: cd7356bf-1770-4937-b9d7-cb326c8ee5fc Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Handle explicit awaitingInput states as well as presence, and convert the creation date using the date-specific local time-zone rule. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: cd7356bf-1770-4937-b9d7-cb326c8ee5fc Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Reproduce main clipping in an offscreen GDI raster contract, stop full handoff rows before lower sections, follow target-state hollow indicators, ignore stale input presence after resolution, and use the Windows short-time locale format. Link the existing GraphCanvas test root to user32 and gdi32 with coordinator approval. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: cd7356bf-1770-4937-b9d7-cb326c8ee5fc Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Document the private RailMinimap surface outside Theme.swift and compare its source RGB with the exact Windows COLORREF value so the exception cannot drift silently. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: cd7356bf-1770-4937-b9d7-cb326c8ee5fc Signed-off-by: Colin Neilens <coneilen@microsoft.com>
coneilen
force-pushed
the
coneilen-microsoft-fix-right-loop-panel-escalated
branch
from
October 14, 2026 08:16
e6fcc49 to
2010487
Compare
coneilen
marked this pull request as ready for review
October 14, 2026 08:51
coneilen
deleted the
coneilen-microsoft-fix-right-loop-panel-escalated
branch
October 14, 2026 14:34
This was referenced Oct 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restore readable right-loop-panel text at wide and narrow window sizes, and align its minimap, handoff rows and started-time footer with the shipping macOS reference.
Refs #773. Supersedes closed draft #786; deliberately reuses reviewed commits
f94ced63and874acc7d, now cherry-picked/rebased as1787068fand0e02bb43onto main including #788.Changes
metric_command,goal_summary,model_tier, backend/path fallback), invented primary-checkout/empty-metric placeholders and empty sparklines.App.syncAccessibilityTochange: publish the same footer/sparkline bounds the canvas paints, omit sparklines with fewer than two samples, and cover 96/144/192-DPI geometry.-luser32 -lgdi32to the existing GraphCanvas root, so its offscreen native raster contract runs in the full unit gate; no new root or section.RailMinimap.surfaceexception and verify its Swift RGB against the exact Windows0x001A1616value.Test plan
RED: C:\gct\b2\zig-0.15.2\zig.exe test src\GraphCanvas.zig --test-filter "canvas text raster" -target x86_64-windows-msvc -lc -luser32 -lgdi32 -IC:\gcp\b2\winghostty\include --cache-dir C:\gcs\b2\before-cache --global-cache-dir C:\gcs\b2\global -> main snapshot f892656 with the raster test added: expected 811 ink pixels, found 0 beyond x1200; 0 passed, 1 failed (red-main-raster.log)
GREEN: C:\gct\b2\zig-0.15.2\zig.exe test src\GraphCanvas.zig --test-filter "canvas text raster" -target x86_64-windows-msvc -lc -luser32 -lgdi32 -IC:\gcp\b2\winghostty\include --cache-dir C:\gcs\b2\cache --global-cache-dir C:\gcs\b2\global -> referenceInk=811 wideInk=811; All 1 tests passed, including zero ink outside the small owning rectangle (green-raster.log)
REGRESSION: pwsh -NoProfile -File Tools\windows\validate.ps1 -Task windows-shell -ShellPart unit -SkipTrayLive -ShellValidationRoot C:\gc-b2 -ShellTestManifest C:\gcs\b2\logs\full-unit-rerun1-sections.json -SwiftExecutable C:\Users\coneilen\AppData\Local\Programs\Swift\Toolchains\6.3.3+Asserts\usr\bin\swift.exe -> exit0; 55/55 sections, 58 wired files, 79 positive Zig invocations / 4389 imported-inclusive executions; full-unit-rerun1.log; process-scoped scratch profile guard only
The full unit ran inside the coordinator desktop lease (00:31, extended until01:16) and finished at01:00:54; lease released immediately. The test-runner agent executed it; its later reporting turn failed with a service error, so the complete raw log/result/manifest were reconciled directly. Every executed root/filter count is below, not just App's last summary. Counts include imported modules and repeated filtered roots, not unique cases. Additionally: isolation Pester 5/5, live GDI+ 1 execution / 2 observations, worktree harness 17 positive scenarios plus 4 expected-rejection fixtures, all completed without unexpected failures.
Every executed Zig root/filter count (79 positive invocations)
Accessibility.zigWire.zigCodespaces.zigWindowsCodespaceDialog.zigForms.zigEdgeCreationTests.zigEdgeEditing.zigWin32.zigNativeForms.zigUpdateOfferPresentation.zigSketchPromotion.zigGraphContextMenu.zigMainWindow.zigJumpPalette.zigWindowsOnboarding.zigWindowsProductSettings.zigModalTeardown.zigWindowsUpdates.zigWindowsUpdateInstall.zigFrameBuffer.zigDaemonClient.zigDaemonRoundTripTests.zigDaemonSupervisor.zigWorkspaceLayout.zigInputRouter.zigTerminalKeys.zigZmxSession.zigLoopLaunchWait.zigLoopBarLayout.zigTerminalVt.zigTerminalKeyEncoding.zigTerminalSelection.zigTerminalSurface.zigClipboard.zigGraphModel.zigCanvasInput.zigGraphCanvas.zigWorktreeStatus.zigworktree-git-tests.zig (scope-dir)worktree-git-tests.zig (scope-mixed-case)worktree-git-tests.zig (scope-config-count)worktree-git-tests.zig (scope-config-parameters)worktree-git-tests.zig (index)worktree-git-tests.zig (objects)worktree-git-tests.zig (preserve)worktree-git-tests.zig (streams)worktree-git-tests.zig (stdout-cap)worktree-git-tests.zig (stderr-cap)worktree-git-tests.zig (errors)worktree-git-tests.zig (git-stderr)worktree-git-tests.zig (allocations)worktree-git-tests.zig (removals)worktree-git-tests.zig (removal-output-direct)worktree-git-tests.zig (removal-output-selected)worktree-git-tests.zig (removal-output-forced)DraftAttachments.zigWorktreeDialog.zigDpi.zigTemplateLibrary.zigGraphContextMenu.zig (custody child)NativeForms.zig (custody child)GraphModel.zig (custody selection)App.zig (custody child)Diagnostics.zigWorkspaceLifecycle.zigWorkspaceManager.zigWorkspaceTeardown.zigWorkspaceManagerForm.zigNavigation.zigWorkspaceControls.zigSidebar.zigWindowsRepositoryDialogs.zigGdiGradient.zigAppFont.zigGdiplusAA.zigUpdateOfferDialog.zigUpdateInstallDialog.zigWindowsNativeDialogs.zigApp.zigAll rows are positive executed summaries. The worktree harness additionally exercised four intentionally rejected unknown-scenario fixtures; those expected negative checks are not green Zig summaries. No unexpected test failure occurred in the successful rerun.
The original refinement RED is retained separately (
red-panel.log: 2/4 passed, missing Always rectangle and minimap expected118/found72). The stale succeeded+awaitingInput-presence RED is retained (red-stale-status.log: 0/1 passed); the correction is covered by All 9 loop-detail tests passed (green-review-panel.log). The inherited fixed-edge helper was already implemented when this session began; the additional raster RED ran against an exact main snapshot, not a rewritten implementation.Focused App
--test-filter "loop detail UIA": All 1 tests passed (green-uia-rerun.log). The first attempt did not compile because the VT static library had not been installed;build prepare-terminal-vtsupplied it. Both logs retained.The independent literal App DPI bounds test
--test-filter "DPI UIA logical cards headers sidebar and direct inserts scale once"also reports All 1 tests passed (green-dpi-literal.log). Together these establish logical/UIA wiring and literal 96/144/192-DPI geometry, not painted-pixel equality.Provider build: the initial hand-written zmx build used its default MSVC target and failed compiling SIMD intrinsics (
provider-zmx.log). The repository's canonicalTools\windows\provider-build.ps1used the pinned GNU target and passed both providers (provider-canonical.log,PROVIDER_BUILD_EXECUTED=2). No provider or toolchain pin changed.Required Windows shell CI run 38525363552 passed on reviewed/rebased head
e6fcc49543449078709b62ac11705adc45eaea7c, including integration, all three unit shards, both packaging jobs and the complete-section aggregator.ci-integration-reviewed.logreportsSCRUBBED_SHELL_STARTUP: PASS; executed=5, withregistered-projectrowopen-project-1559143368152282765andfatalLogAbsent=true. These PR runs buildrefs/pull/789/merge, associated with the stated exact PR head, not a raw head checkout or manual dispatch. Earlier passing run38521326970and superseded/cancelled initial run0daa3d3aare retained separately.Coverage gap and correction: that passing shell workflow was not the whole required portfolio. Windows port run
38525363547one6fcc495failed the unregisteredloop_minimap_surfaceinventory, then its channel-swap negative fixture (CI failure #1, retained). Local asserted REDred-palette-asserted.logconfirms 2/4 passed, 2 failed; correctedgreen-palette.logconfirms 5/5 passed, including source RGB and exact COLORREF checks. The first local RED wrapper mistakenly exited0 after redirecting the PassThru result; its failing Pester output remains inred-palette.log, and the corrected assertion exited1.The full local
-ShellPart unitdoes not include palette parity.-Task visual-baselineis the actual local entrypoint used by the workflow'swindows-spikesterminal/contracts job. It was run twice locally, but an existing ConciseView diagnostic-wrap assertion fails before palette.palette-entrypoint.logcaptures the failure;palette-entrypoint-rerun1.logcontains only the banner, with its terminating exception retained in the session tool output. The same directVisualBaseline.Tests.ps1failure reproduces on untouched mainf7f7754ain this console (visual-baseline-main-environment.log, host buffer120): the intended hash-rejection phrase wraps betweenno longerandmatches. This is disclosed as local environment/harness evidence, not a pass or product regression; that harness was not edited.Final head
20104872445b35ea93b756860429caef7b953eda: all seven workflow runs completed successfully (nonempty exact-head portfolio inci-all-final.json): DCO, TDD evidence, Windows release hardening, macOS shared Swift regression, Linux, Windows shell 38533914719, and Windows port / windows-spikes 38533914827. The platform workflows' legitimate path-gated skips are not claims of macOS/Linux test execution. Final integration logci-integration-final-head.logconfirms all five scrubbed-startup cases and populatedregistered-projectrowopen-project-2010372392230797688, with no fatal log. The final palette-only commit and intervening main documentation do not change any renderer/product file, so the captured/native-unit renderer ate6fcc495is source-identical; only the separate palette Pester contract changed.Acceptance scope and visual evidence
Targeted boxes: container-derived readable headings/rows at widths 960 px and above;
THIS LOOPminimap,HANDS OFF TOtitle/condition/type-bar/status-dot rows and started-time footer.Cross-vendor Sonnet5.5 paired-image verdict: accepted PARTIAL, no blocking findings. Both issue boxes are evidenced for the scoped change; the broader fidelity/action residuals below remain explicit and the ledger is not promoted:
THIS LOOP/ typed minimap,HANDS OFF TOrow structure and started-clock footer match the claimed macOS information/hierarchy.Paired captures use normal production painting at 96 DPI / 100%, without
GRAPHCODE_UIA_GATEor the daemon-supervisor hook. Both Windows builds use the same owned reference-shaped protocol fixture (ParityRef,RefMain,RefGoal,RefCompositeplus five neighbors), with a real pinned zmxcmd.exefixture session. This is not a production graphcoded/backend qualification. Before binary: mainf8926561; its GraphCanvas blob is unchanged in subsequent main. After binary:e6fcc495, with renderer sources unchanged at final head20104872.The after panel crops at 960 outer, 960 client and 1800 outer are byte-identical, so the attachment upload deduplicated them; their distinct HWND geometry, original full-client PNGs and hashes remain in each run's
captured-images.json/evidence.json.Minimum-height stress capture: actual 960 x 517 client, six outgoing edges, four minimap blocks, branch plus sparkline plus footer. Three complete rows fit above
RECENT PASSES; the remaining rows are omitted rather than overlapping lower sections. Full-height stress crop shows all six rows, intentional long-title ellipsis, hollow waiting/stopped/blocked vs solid awaiting-input dots, and the fired-condition label.Neighboring surfaces: panned cards before / after, and overview lanes before / after. In both pairs the rightmost card names disappear before at x1200 and are readable after. Existing card/type-palette and workspace/sidebar differences remain separate work.
Capture attempts are preserved:
before-ref1lacked a backend;before-ref2used the harness's incorrect v3-prefixed session rather than GraphCode'sgraphcode-UUIDname and lacked sibling staging. Both reached real screenshots but failed the final attachment assertion, so are not called successful capture runs.before-ref3,after-ref1andafter-stress1completed with the correct ownedgraphcode-UUIDbackend and the same pinned zmx staged beside each shell; File > Exit ended each successful run.All twelve unique published PNGs were opened and inspected: they show GraphCode's fixture surfaces, not Copilot or another overlaid app. The capture harness additionally guarded HWND process/creation identity, foreground, 96-DPI client geometry and higher-Z-order overlap before/after
CopyFromScreen. No contaminated capture was published.Cross-vendor rubber duck
claude-sonnet-5.5: CODE accepted / EVIDENCE accepted / VISUAL accepted PARTIAL; no blocking findings. It opened the paired/native neighbor images, complete approved diff, raw RED/GREEN/full-unit logs and count table, palette RED/GREEN and CI startup JSON. The initial sync reviewer could not receive a follow-up through the tool; a background final follow-up reviewer completed the remaining evidence checks.running; explicit Windows representation difference disclosedOptional nonblocking review suggestions not taken: mutation proof for the new palette mirror test and refining its source-line diagnostic number. These do not change the verified equality or render behavior.
Not verified
zmx-validation-ee\logs\zmx.log;full-unit.logretains it. The successful coordinator-authorized rerun snapshots a process-scoped scratch profile. The real user's LocalAppData was not snapshotted.runningpluspresence=awaitingInputalso gets the human-attention tint/dot. macOS's rail teststarget.state.wantsHumanonly; this representation difference is retained explicitly. Small GDI status dots are less circular than the macOS antialiased dots.make test/make check: macOS commands not runnable on this Windows host.Earlier captures failed before fixture installation because
capture-visual-baseline.ps1wroteonboarding-seenunderLOCALAPPDATA\GraphCode, whileWindowsOnboarding.StoreusesGRAPHCODE_SUPPORT_DIR\onboarding-seen. First-run entered startup/onboarding and the fresh fixture directory had nographcoded.exe. The successful runs seeded only their own fixture support marker, kept normal production painting, and used this session's pinned providers. Predecessor failed logs remain read-only inC:\gcs\b\capture-*.Checklist
git commit -s) per the DCOmake test)make check)