Repository navigation
Match new Windows workspace naming to macOS - #966
Merged
Merged
Conversation
Use system ICU transliteration and grapheme boundaries for creation-only naming, preserving legacy rename rules and existing workspace identities. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Reuse the verified Foundation whitespace helper, validate raw nonempty drafts, and share owned naming errors across preview and creation races while retaining legacy workspace identities. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Intake only docs/ramps.json; native naming and validation inputs remain unchanged from 040ba32. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
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
New native Windows workspaces follow macOS naming, preview, and validation rules, including Unicode transliteration and 32-character truncation. Existing directories retain their names, paths, and identities; explicit Rename keeps its existing behavior.
Changes
Test plan
RED: & $env:GRAPHCODE_ZIG0152 test src\WorkspaceLifecycle.zig --test-filter 'workspace creation naming parity' -> 0/3 passed; expected cafe-zurich, found caf-z-rich; expected NameTaken, created a different directory; legacy-preservation scenario returned NameTaken
GREEN: & $env:GRAPHCODE_ZIG0152 test src\WorkspaceLifecycle.zig --test-filter 'workspace creation naming parity' -> 6/6 passed, including 27 Foundation naming fixtures
REGRESSION: & $env:GRAPHCODE_ZIG0152 test src\WorkspaceLifecycle.zig -> 22/22 passed on 040ba32
Direct Zig commands ran from
graphcode-windowswith repository-bootstrapped Zig 0.15.2 and owned temporary/cache roots. The original slug RED/GREEN logs are preserved separately from the later full regression.Result: 21/21 passed. With the same flags and
--test-filter 'new workspace naming whitespace parity', the additional RED was 0/3: a space-only draft incorrectly stayed quiet, NBSP was not trimmed from preview, and collision wording omitted the normalized slug. After the fix, that focused command passed 5/5, including no-directory effects, owned preview/message lifetimes, and creation-race reporting.Actual shared
Workspace.slug, macOS preview, and shared naming-error source were compiled with pinned Swift/Foundation 6.3.3: 27 slug fixtures, 12 preview/validation examples, and an exhaustive 19-scalar Foundation.whitespacesset. These are finite oracle checks, not all-Unicode or cross-version equivalence.The sole desktop executor ran the following admitted current-source gates using owned roots and the already-built canonical guard:
Invoke-NamingAcceptance040ba325-CurrentWindow.ps1 -Mode Run -LaneStateSha256 3A65B799BDCC68F0549179AD9810D2E7FA6E86E73D35AE9143CDCEFB05E5B3B8Invoke-AcceptanceFullNaming040ba325.ps1 -Mode Run -LaneStateSha256 168F51E4822925612EECD664735B3EA9FBB2C374C143A4D34C3154D42232D51Dpwsh -NoProfile -File Tools\windows\Test-ShellSectionManifests.ps1 -Directory D:\namingunits040\sections -ShardCount 3The first two script paths are under
C:\Users\coneilen\.copilot\session-state\481117da-1883-41d1-b2d3-bb19ae883cf4\files.Canonical shell commands executed under those owned supervisors:
All three passed their positive section manifests and cleanup checks. Shard 1 includes lifecycle 22/22 and form 21/21. Shard 0 includes App 1,715 passed/19 skipped and native accessibility 280 passed; skips are not counted as passes. Aggregate output SHA:
CCC33285A2F5796D00EEDC9EC851D36CA08F8B10B2DF2BE5AD27D5119AB4F719.Default integration: the earlier admitted attempt failed waiting for a later
Edit edgemodal, despite an earlier editor opening successfully. Its6F83DCA6211EB9A7858E9CCE4B25410CBFEE3A5395F1890C221744332E4BA0BFterminal remains a failure.WM_COMMANDfallback transport success is not semantic editor-dispatch proof; no naming coupling, physical-user activity, RDP cause, or product root cause is inferred.A separately user-approved unchanged default attempt ran:
Its canonical workload was
Tools\windows\validate.ps1 -Task windows-shell -SkipTrayLive -ShellPart integration -ShellValidationRoot D:\n -SwiftExecutablewith pinned Swift 6.3.3. Workload exit 0 in 434.5490696 seconds, all six cleanup fields true, isolation/provider/smoke/scrubbed-startup/real-daemon/tray-contract markers present, and complete default UIA JSON with two fixtures, seven action patterns, seven surface patterns, edge workflow, node creation, and multiproject rename.The original wrapper remains
passed=falsesolely because it stopped for a new untracked runtime batch, not a workload failure. That exact new 14-file/2,573-byte batch was separately user-approved for nonoverwriting verified preservation, with individual journals. No previous batch permission was reused. The coordinator accepted saved evidence, without rerunning the workload or rewriting its original wrapper receipt:9DE30D315302CC8C8EC0F79BB29E6ED51DDACE9FD5E437D5511746D3A8B5B4629AE83B3056FC7D8688355A6DB983622AB9D66AD062F35DD56182F4FBD87CD05488A31DA49EEDCF83D63B3F1936DADB84737D6EB9D4297AA986550BD629662C42827351E0BED00C3D81F3184C87D5E5C31CA2DF7A85EABFF785A83A13B6A773FBThese receipts are under
D:\namingintegration040b. Saved acceptance verifies deadlines, all markers/cleanup, 876 historical archived files, 448 protected outputs, 23 source controls, preservation, and clean source. Producer custody and raw compiler-file EOF remain unproved. Earlier harness, activation, partial, and integration failures—including the old unknown outer cleanup—remain separate preserved failures; none was relabeled. Initial toolchain/JIT/build-argument errors and private mock-preparation errors are also retained, not used as behavioral RED or native qualification.Current-head applicability: runtime evidence belongs to
040ba3252b754311de48376aa6772e8b5fec10d5. Current headc30b789c2cb70a970960550b6b9e01b5f4f1af7emerges main2073e81af4f89f6eb11f27366f732b391808b3a8; the entire tree differs from the tested head only indocs/ramps.json. All 480 compiled-input occurrences (229/126/125), actual guard MVIDs, seven guard-file bindings, 36 qualified product/runtime bindings, and accepted provider/tool/source inputs were rehashed unchanged. This establishes unchanged-input applicability, not new-head native execution or a new guard build. Required PR CI must run on this actual head.At current head:
Results: canonical privacy passed with 121 investigation inputs; TDD validator scenarios passed 4/4; full-template body validator passed. Four changed files match committed UTF-8/LF,
git diff --checkpasses, and all three commits have DCO/coauthor trailers.Limits: no all-Unicode/version guarantee, original-window focus-restoration claim, paired visual/physical-pointer qualification, injected native creation-race proof, or complete parity-ledger promotion. Shared Swift and macOS code are unchanged.
make test/make checkwere not run on this Windows host. Packaging/scheduler lifecycle work remains CI-only under the existing local exception because it can mutate user settings; it is not claimed as a local pass. No checks, merge protections, or policies are bypassed; no release or auto-merge is requested.Checklist
git commit -s) per the DCOmake test)make check)