Retire Linux-era view shims#906
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR retires legacy Linux/Mono-era managed Views shims (ViewInputManager, ManagedVwWindow) and updates code/docs/build plumbing to rely solely on the Windows-native Views input and geometry paths.
Changes:
- Removed managed shim projects/sources and related solution/build/reg-free manifest wiring.
- Simplified native Views codepaths to always use Windows-native
VwTextStore(input) andGetClientRect(geometry), eliminating COM activation branches. - Updated OpenSpec architecture docs/specs and change-tracking artifacts to reflect the shim retirement.
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| openspec/specs/architecture/ui-framework/views-rendering.md | Updates architecture diagram text to reflect Windows-native input/geometry and shim retirement. |
| openspec/specs/architecture/interop/native-boundary.md | Updates interop boundary documentation to remove ManagedVwWindow as an active boundary. |
| openspec/specs/architecture/interop/com-contracts.md | Notes retired shims in COM contracts documentation. |
| openspec/changes/retire-linux-era-view-shims/** | Adds proposal/design/research/tasks and requirements specs for shim retirement and validation. |
| Src/views/VwRootBox.cpp | Removes non-Windows COM activation branch for ViewInputManager. |
| Src/views/VwSelection.cpp | Removes non-Windows IVwWindow wrapper path; always uses GetClientRect. |
| Src/views/VwTextStore.cpp | Removes non-Windows conditional around ClientToScreen / TSF-related behavior. |
| Src/views/Views.idh | Removes IVwWindow/VwWindow interface+coclass; adjusts IViewInputMgr comment. |
| Src/views/Views_GUIDs.cpp | Removes GUID exports for IVwWindow/VwWindow. |
| Src/Common/SimpleRootSite/ViewInputManager.cs | Deletes managed ViewInputManager shim. |
| Src/ManagedVwWindow/** | Deletes managed ManagedVwWindow project and its tests. |
| Build/RegFree.targets | Removes ManagedVwWindow.dll from managed COM manifest inputs. |
| Src/Common/FieldWorks/BuildInclude.targets | Removes ManagedVwWindow.dll from FieldWorks manifest inputs. |
| Build/mkall.targets | Removes excluded CLSIDs for the retired managed shims. |
| Build/Src/FwBuildTasks/CollectTargets.cs | Removes special-case Unix-only condition for ManagedVwWindow project. |
| FieldWorks.sln | Removes ManagedVwWindow projects from the solution. |
| .github/src-catalog.md | Removes catalog entry for ManagedVwWindow. |
NUnit Tests 1 files ±0 1 suites ±0 9m 25s ⏱️ - 1m 43s Results for commit 32dbddd. ± Comparison against base commit b0bf8a8. This pull request removes 2 tests. |
jasonleenaylor
left a comment
There was a problem hiding this comment.
@jasonleenaylor reviewed 20 files and all commit messages, and made 1 comment.
Reviewable status: 20 of 28 files reviewed, 4 unresolved discussions (waiting on johnml1135).
Add missing manifest files to RescuePatching target The base build 1437 (from release/9.3.9) still contains ManagedVwWindow.manifest and SimpleRootSite.manifest, which were removed on main by #906. The existing fix (#909) handled .dll, .dll.config, and .pdb but missed the two .manifest files, causing PYRO0305 errors during patch builds. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- VersionInfoProvider: copyright year no longer freezes at whatever year the constant was last edited, ApplicationVersion resolves from the correct assembly instead of always falling back to the entry assembly, and MajorVersion/ParseInformationalVersion index defensively instead of assuming a fixed part count. Covered by new VersionInfoProviderTests.cs. - RegFree.targets: removes a dangling ManagedVwWindow.dll entry; the project was already retired in #904/#906, so the entry pointed at nothing. - opsx-*.prompt.md: replace inlined instructions with delegation to the existing .claude/skills/openspec-*/SKILL.md files, per this repo's skills-over-inline-prompts convention. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…d files ManagedVwWindow.dll was retired with the Linux-era view shims (#906). The RegFree.targets fallback entry was removed earlier in this PR, but BuildInclude.targets pre-populates ManagedComAssemblies explicitly for FieldWorks.exe (bypassing that fallback), so the "Could not find file" warning kept firing for the main product. Also drops the matching stale CLSID exclusion in mkall.targets. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ManagedVwWindow.dll was retired with the Linux-era view shims (#906). The RegFree.targets fallback entry was removed earlier in this PR, but BuildInclude.targets pre-populates ManagedComAssemblies explicitly for FieldWorks.exe (bypassing that fallback), so the "Could not find file" warning kept firing for the main product. Also drops the matching stale CLSID exclusion in mkall.targets. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Summary
ViewInputManagerandManagedVwWindow, including their solution and build wiringVwTextStore/IViewInputMgrand HWND client-rectangle geometry while removing staleIVwWindow/VwWindowinterop exposureValidation
./build.ps1./test.ps1 -SkipManaged -TestProject TestViews./test.ps1 -TestProject FwBuildTasksTests -TestFilter "FullyQualifiedName~RegFreeCreator"./test.ps1 -TestProject SimpleRootSiteTestsCI: Whitespace checkThis change is