Skip to content

Fix Windows workspace lifecycle safety and isolation - #456

Merged
coneilen merged 3 commits into
mainfrom
coneilen-microsoft-workspace-lifecycle-evidence
Sep 26, 2026
Merged

coneilen merged 3 commits into
mainfrom
coneilen-microsoft-workspace-lifecycle-evidence

Conversation

@coneilen

Copy link
Copy Markdown
Collaborator

Summary

Fix Windows workspace lifecycle ownership, child-instance isolation, and native dialog result handling. Preserve the merged #454 DPI/menu/diagnostic work. The lifecycle parity row remains Partial.

Changes

  • Preserve accepted text after dialog teardown; reject read/allocation failures.
  • Use consistent lexical workspace identity and restore only the matching window.
  • Protect rename/delete with reservations and fail closed on current, open, or unidentified workspaces.
  • Prevent rename from overwriting an existing destination.
  • Block lifecycle changes with a restart-required status after an incompatible support-directory rebind.
  • Give new workspace children their own support scope without inheriting the parent's daemon-pipe override.
  • Use native menu checked state and presence-aware disabled-item tests.

Evidence

RED: Run production-helper fixtures against original behavior -> accepted dialog text becomes empty, partial allocations leak, file collisions are accepted, and child instances inherit the parent's daemon pipe.
GREEN: Run identical fixtures with fixes -> pass; focused lifecycle, native-dialog and window/menu suites pass.
REGRESSION: Run WindowsShell.Tests.ps1 and the production build on merged #454 foundation -> 43 source suites pass, App/C++ 332/332 pass, and the shell builds successfully.

The coordinator independently reviewed the combined changes and reran App/C++ tests. Tests use disposable filesystem fixtures and never-shown native controls; no real user workspace was renamed or deleted.

Limits

No shown multi-instance, keyboard/UIA, app-driven save/reload, or real-backend lifecycle walkthrough is claimed. Structured Manage UI, macOS-style cycling, and recoverable deletion with session teardown remain follow-up work.

Reviewed head: bbeade3.
Commits include DCO sign-off and Copilot coauthor.

coneilen and others added 3 commits September 25, 2026 15:46
Preserve accepted native dialog values, guard workspace ownership, and isolate new child daemon endpoints. Add production-helper, allocation-failure, disposable-filesystem, and hidden-native regressions. Keep lifecycle parity Partial pending authentic multi-instance, UIA, keyboard, and backend evidence.

Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Integrate the verified Windows platform merge while preserving lifecycle identity and dialog safety. Reconcile MenuRefresh state-change and popup-open routing, retain physical UIA bounds and fatal diagnostics, and initialize the new workspace identity in the existing DPI fixture. Combined focused tests, the full WindowsShell suite, and the production shell build pass.

Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve both the toolbar keyboard callback and workspace identity validation at startup. Retain incoming logical header layout, typed UIA bounds, focus routing, fixture geometry, and accumulated native link flags alongside the reviewed lifecycle safeguards. Focused coverage, the complete wired Windows suite, and the production shell build pass on the combined tree.

Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@coneilen
coneilen merged commit aad0ae7 into main Sep 26, 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