Repository navigation
Description
Current reconciliation - 2026-11-09
The original connection-order/UIA defects were fixed by the accepted native stack, and the historical beta27 clean-Sandbox four-page packaged first-run/Connected Welcome/persistence execution below remains earned evidence. The page-count gap has since been implemented in PR #905: current main has five pages, with One window per line of work before backend selection.
Still open / Partial: current ordinary packaged five-page first run/reopen and native physical-keyboard qualification; no Narrator/screen-reader conformance is inferred. #779 retains the page-level paired visual obligations. #965's bounded normal onboarding during Create & Open is not a fresh installed-package physical-keyboard first-run flight. The old false-Disconnected/no-tree title is no longer a current source defect claim.
The original report, acceptance criteria and historical evidence below are preserved; the dated scope/progress above supersedes obsolete missing-feature claims.
Describe the bug
On first launch, Onboarding.showFirstRun (graphcode-windows/src/App.zig, around lines 941–953) runs a modal "Welcome to GraphCode" dialog (window class GraphCodeWindowsOnboarding) before self.client.connect() (around line 997). While the dialog is open:
- The main window is disabled but displays "Disconnected" and the red "GraphCode daemon unavailable…" banner, even though a daemon is running and reachable. The CLI connected fine at the same time.
- The daemon receives no connection from the shell until the dialog is dismissed.
- The onboarding dialog exposes no UI Automation descendants (
AutomationElement.FromHandle(...).FindAll(Descendants, TrueCondition)returned nothing). Its Skip and Continue controls are custom-drawn and not reachable by assistive technology.
This made a working build look broken, and I spent a long time diagnosing a "connection failure" that was really the hidden modal.
To reproduce
- Start
graphcoded.exewithGRAPHCODE_SUPPORT_DIRset to a sandbox directory. - Launch
graphcode-windows.exewith the sameGRAPHCODE_SUPPORT_DIR, and no%LOCALAPPDATA%\GraphCode\onboarding-seenfile. - The main window shows "Disconnected"; the daemon logs no shell connection.
- Click Skip on the onboarding dialog. The daemon logs
client connected, the banner clears and "Open Folder…" appears.
Expected behavior
- Connect to the daemon independently of onboarding, or show a neutral "Finishing setup…" state instead of an error banner.
- Make sure the onboarding dialog is foreground and owned by the main window.
- Expose a proper UIA tree (buttons with names) for the dialog's controls. Record any parity-ledger impact in
investigation/ui-parity-matrix.md.
Environment
- GraphCode version: 0.1.77 label, built locally from commit 59ebed1
- OS: Windows 11 Enterprise 26200 x64
Additional context
App.zig is a shared surface; coordinate edits per AGENTS.md.
Activity
coneilen commentedon Oct 1, 2026
Status audit — 2026-10-01
Classification: still reproducible/source-supported startup-order defect plus accessibility gap. Recommendation: keep open. Confidence: high.
The first-run modal still runs before
client.connect()(App.zigonboarding,connect).WindowsOnboarding.zigremains a custom-drawn modal without a UIA/WM_GETOBJECTprovider; existing tests cover state/click logic, not assistive-technology reachability. #563 corrected the ledger only, and #568 did not launch first run.Remaining acceptance criteria: begin daemon connection independently of the modal or show a truthful neutral setup state; expose named keyboard-operable UIA page/actions with deterministic focus; preserve foreground/modal teardown; and exercise package install → first launch → onboarding → connected Welcome using native keyboard and UIA. Runtime evidence must remain distinct from unit/hidden-window coverage.
Preview priority: P0; every first-time tester encounters this path.
Start daemon connection before first-run onboarding
Normalize onboarding provider line endings
coneilen commentedon Oct 2, 2026
Implementation update — 2026-10-01
Classification: source-fixed; remaining acceptance is native/package evidence. Recommendation: keep open until the final first-run flight is witnessed.
Native stack #579 → #580 merged through stack #581 at accepted main
acdb2a625c93046b9443d2437361ef5464b0f347.Implemented progress:
DaemonClient.connect()are now scheduled before genuine first-run onboarding enters its modal message loop, while ordinary startup and automation hooks retain the previous late connection point;Evidence:
WM_KEYDOWNTab traversal;Remaining acceptance criteria:
graphcoded;WM_KEYDOWN;Preview priority: P0 evidence gate. The diagnosed source defects are fixed; the issue stays open so a unit/hidden-window result is not mistaken for the packaged first-run qualification.
coneilen commentedon Oct 2, 2026
Post-queue reconciliation PR #596 merged at main
41b4d9278f90b02c54262bf91d0410f710fef66a. The source fixes remain accepted, but this issue is still correctly open and queued: closing evidence requires explicit authorization for an owned Windows client, exact package install/upgrade/uninstall, ordinary productiongraphcodedfirst launch through onboarding to connected Welcome, desktop-native keyboard/UIA, one named authenticated backend/version with bounded credits, and any claimed assistive-technology observation. While the user is away these are recorded as NotExecuted, not failure or success; no unattended package/native mutation will be attempted.Expose Windows onboarding to UI Automation
Track every Partial parity row in an issue; drop 150% and fixed backe…
coneilen commentedon Oct 13, 2026
Still open: NotExecuted. Run: GraphCode-DevBox-Return-testing-gaps (attempt 2, installed beta26, 100%, injected input). Run B (operator physical keyboard) was not performed in this run.
coneilen commentedon Oct 14, 2026
Local Windows Sandbox run, 2026-10-13 (published
0.1.78-windows.beta27, ZIP9b485543…): the packaged first-run path passed. Physical input: NotExecuted.Run in a clean Windows Sandbox (per-instance vGPU disabled), with keys injected by SendInput inside the guest. Evidence is local in
C:\gc-logs\556-sandbox\; all 562 hashes were re-verified.Passed
graphcodedran.%USERPROFILE%\.graphcode\onboarding-seenwas written.relaunch-welcome.pngmyself.Still open
WH_KEYBOARD_LLhook) is ready.Notes
Keeping this open until a physical-keyboard pass is recorded. That pass can now be done in a local Sandbox; a Dev Box isn't needed.
coneilen commentedon Oct 14, 2026
Narrowed to macOS scope (2026-10-13). macOS is the ground truth, so requirements macOS does not have are no longer parity requirements. This was checked against macOS source by the parity extras audit; citations are in the audit and the ledger.
Dropped: the "Finishing setup�" neutral state (macOS has none).
Remaining requirement:
[-]Windows first-run onboarding blocks daemon connection; main window shows "Disconnected" and dialog has no UIA tree[/-][+]Windows first-run onboarding: current five-page physical-input qualification remains[/+]