Conversation
coneilen
force-pushed
the
coneilen-microsoft-windows-workspace-lifecycle
branch
2 times, most recently
from
September 22, 2026 18:52
bbc0452 to
527102f
Compare
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
force-pushed
the
coneilen-microsoft-windows-workspace-lifecycle
branch
from
September 22, 2026 20:07
527102f to
d205be7
Compare
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
Validation
RED:
zig test graphcode-windows\src\WorkspaceLifecycle.zig(reconstructed pre-implementation state:normalizeNamereturned the raw input unchanged, with no length/character validation, matching the prior "no lifecycle module" behavior) -> FAIL:workspace names normalize to safe stable directory suffixesexpected"caf-z-rich", found"Café / Zürich";workspace validation rejects long namesexpectederror.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