Skip to content

Add Windows workspace lifecycle parity - #409

Merged
coneilen merged 4 commits into
scgopi:mainfrom
coneilen:coneilen-microsoft-windows-workspace-lifecycle
Sep 22, 2026
Merged

coneilen merged 4 commits into
scgopi:mainfrom
coneilen:coneilen-microsoft-windows-workspace-lifecycle

Conversation

@coneilen

@coneilen coneilen commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add a discoverable Windows Workspace menu with list, selection/switch, create, rename, delete, and next/previous actions.
  • Scope process identity and daemon support-directory launches per workspace so multiple workspace instances can coexist.
  • Add typed validation, native dialogs, fail-closed deletion confirmation, dynamic UIA targets, focused lifecycle tests, and an evidence-backed parity ledger entry.

Validation

RED: zig test graphcode-windows\src\WorkspaceLifecycle.zig (reconstructed pre-implementation state: normalizeName returned the raw input unchanged, with no length/character validation, matching the prior "no lifecycle module" behavior) -> FAIL: workspace names normalize to safe stable directory suffixes expected "caf-z-rich", found "Café / Zürich"; workspace validation rejects long names expected error.NameTooLong, found the raw 50-byte input -- proving name normalization/validation did not exist. (Note: this is a faithful reconstruction, not the literal command run chronologically before implementation, since the module and its tests were authored together; the assertions and failure mode are genuine.)
GREEN: zig test graphcode-windows\src\WorkspaceLifecycle.zig -> PASS (3 tests).
REGRESSION: git diff --check HEAD^ HEAD -> PASS.

Scope and limitations

  • No templates, attachments, Codespaces, project/worktree changes, or terminal rendering/layout changes were added.
  • Starter/news content was not invented because no authoritative Windows source was found.
  • Rename/delete reject Default and the current workspace; deletion uses explicit native confirmation and cancellation is the default.
  • Full Windows shell build and live multi-instance/UIA gates remain dependent on the repository's expected Windows toolchain and SDK (not reproducible in this environment); this is an environment/toolchain gap, not evidence for the RED/GREEN contract above.

@coneilen
coneilen force-pushed the coneilen-microsoft-windows-workspace-lifecycle branch 2 times, most recently from bbc0452 to 527102f Compare September 22, 2026 18:52
coneilen and others added 4 commits September 22, 2026 13:07
Add discoverable workspace listing, switching, creation, rename, and deletion to the Windows shell, including support-directory-scoped instances and UIA coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Rename the inner workspace-list loop capture so it no longer shadows the outer activity-loop index, and switch the instance-mutex hash to the Zig 0.15.2 Sha256.hash(bytes, *out, options) signature with std.fmt.bytesToHex instead of the removed fmtSliceHexLower helper.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Move the workspace-switch accessibility loop out of the activity-row loop so its identity constant no longer shadows the outer loop's identity, and use a labeled block to return null from refreshWorkspaceList's error path instead of an ignored bare null expression.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
showWorkspaceText referenced NativeForms.Result/NativeForms.textWithDescription,
but NativeForms.zig has no such type or function -- it only exposes the
choice-driven node/edge/settings/jump dialog kinds. The dedicated
WindowsNativeDialogs module (already imported as NativeDialogs and already
used by renameSelectedQuickChat) provides the exact Result/textWithDescription
API the workspace create/rename/delete flows need, so point showWorkspaceText
at it instead of inventing a symbol that never existed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen force-pushed the coneilen-microsoft-windows-workspace-lifecycle branch from 527102f to d205be7 Compare September 22, 2026 20:07
@coneilen
coneilen merged commit 9a98da3 into scgopi:main Sep 22, 2026
10 checks passed
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