Conversation
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ort' into alzollin/dotnetSupport
Refactored the code to collect all <dependency> nodes from the .nuspec XML, removing the previous logic that distinguished between ungrouped and grouped dependencies. This streamlines dependency extraction but may mix dependencies from different target frameworks.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ort' into alzollin/dotnetSupport
There was a problem hiding this comment.
Pull request overview
Adds a VS Code custom editor (“AppxManifest Editor”) to visually edit AppxManifest.xml / .appxmanifest files, backed by format-preserving XML string operations and real-time validation, plus a large Playwright E2E suite and unit tests to validate behavior across representative fixture manifests.
Changes:
- Registers a custom editor provider and adds an onboarding notification to reopen manifests in the visual editor.
- Introduces manifest-editor implementation (webview UI, XML ops/utils, types, validation integration).
- Adds extensive unit + Playwright E2E coverage with multiple real-world manifest fixtures.
Reviewed changes
Copilot reviewed 47 out of 49 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/winapp-VSC/src/test/xml-utils.test.ts | Unit tests for low-level XML manipulation helpers. |
| src/winapp-VSC/src/test/redos-prevention.test.ts | Performance regression test to prevent ReDoS in validation. |
| src/winapp-VSC/src/test/fixtures/winui-gallery.appxmanifest | Real-world manifest fixture for parsing/editing tests. |
| src/winapp-VSC/src/test/fixtures/widgets-sample.appxmanifest | Fixture stressing nested capabilities and mixed formatting. |
| src/winapp-VSC/src/test/fixtures/push-notifications-sample.appxmanifest | Fixture for COM/protocol extension scenarios. |
| src/winapp-VSC/src/test/fixtures/edge-cases.appxmanifest | Adversarial/edge-case fixture for parser robustness. |
| src/winapp-VSC/src/test/fixtures/background-task-sample.appxmanifest | Fixture for background tasks + dependency subtypes. |
| src/winapp-VSC/src/test/extension-templates.test.ts | Tests extension template insertion and real-world parsing round-trips. |
| src/winapp-VSC/src/test/extension-field-validator.test.ts | Unit tests for extension-field validation branches. |
| src/winapp-VSC/src/test/e2e/shared-context.ts | Shared VS Code instance lifecycle utilities for E2E specs. |
| src/winapp-VSC/src/test/e2e/resources-tab.spec.ts | E2E coverage for Resources tab CRUD/reorder flows. |
| src/winapp-VSC/src/test/e2e/README.md | Documentation of E2E suite architecture and inventory. |
| src/winapp-VSC/src/test/e2e/push-notifications-fixture.spec.ts | E2E validation against push notifications fixture. |
| src/winapp-VSC/src/test/e2e/properties-tab.spec.ts | E2E coverage for Properties tab fields and optional sections. |
| src/winapp-VSC/src/test/e2e/parse-error.spec.ts | E2E coverage for malformed XML error view behavior. |
| src/winapp-VSC/src/test/e2e/mrt-validation.spec.ts | E2E tests for MRT resource-key validation for image fields. |
| src/winapp-VSC/src/test/e2e/identity-tab.spec.ts | E2E coverage for Identity fields, validation, PhoneIdentity, regressions. |
| src/winapp-VSC/src/test/e2e/helpers.ts | Playwright helpers to launch VS Code and interact with the webview. |
| src/winapp-VSC/src/test/e2e/global-teardown.ts | Global teardown to close the shared VS Code instance. |
| src/winapp-VSC/src/test/e2e/editor-launch.spec.ts | E2E smoke tests for editor launch and tab navigation. |
| src/winapp-VSC/src/test/e2e/dependencies-tab.spec.ts | E2E coverage for dependencies CRUD across multiple subtypes. |
| src/winapp-VSC/src/test/e2e/capabilities-tab.spec.ts | E2E coverage for capabilities toggling, namespaces, custom caps. |
| src/winapp-VSC/src/test/e2e/background-task-fixture.spec.ts | E2E validation against background-task fixture. |
| src/winapp-VSC/src/manifest-editor/xml-utils.ts | XML string utilities (namespaces, bounds, attribute/text edits). |
| src/winapp-VSC/src/manifest-editor/webview-styles.ts | Webview CSS extracted for maintainability. |
| src/winapp-VSC/src/manifest-editor/webview-script-resources.ts | Webview script chunk for Resources tab UI/events. |
| src/winapp-VSC/src/manifest-editor/webview-script-identity.ts | Webview script chunk for Identity tab optional-field behaviors. |
| src/winapp-VSC/src/manifest-editor/webview-script-dependencies.ts | Webview script chunk for Dependencies tab UI/events. |
| src/winapp-VSC/src/manifest-editor/webview-script-capabilities.ts | Webview script chunk for Capabilities tab interactions. |
| src/winapp-VSC/src/manifest-editor/manifest-xml-ops-applications.ts | String-based add/remove/update logic for Applications/Extensions. |
| src/winapp-VSC/src/manifest-editor/manifest-types.ts | Shared types + templates + known capabilities metadata. |
| src/winapp-VSC/src/manifest-editor/manifest-editor-provider.ts | Custom editor provider wiring, update loop, file/image helpers. |
| src/winapp-VSC/src/extension.ts | Activation wiring: registers editor + shows “open with editor” prompt. |
| src/winapp-VSC/README.md | Adds user-facing documentation for the visual editor feature. |
| src/winapp-VSC/playwright.config.ts | Playwright config for VS Code-as-Electron E2E suite. |
| src/winapp-VSC/package.json | Registers custom editor contribution + adds E2E script/deps. |
| src/winapp-VSC/.vscodeignore | Excludes Playwright artifacts and review docs from VSIX. |
| .gitignore | Ignores Playwright artifacts and VSIX outputs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Regenerated the lockfile to restore missing packages that were dropped during the merge conflict resolution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
@copilot resolve the merge conflicts in this pull request |
|
@copilot resolve the merge conflicts in this pull request |
Co-authored-by: nmetulev <711864+nmetulev@users.noreply.github.com>
Merge conflict in |
Description
Adds Support for VS Code AppxManifest Editor. Editor provides easy-to-use GUI to user to edit their manifest files from within VS Code. Supports many of the different appxmanifest customizations and include in-line validation.
Adds Unit and E2E tests for the editor to validate its behavior across sample manifest files. ~8600 lines of code changes are just tests.
Design Decisions
Note: The editor is designed to make surgical string changes to a manifest's xml. It does not use the existing XML parser APIs. This is because the XML parser APIs serialize the manifest data when they read/write to the manifest. This results in the manifest's white space being altered. Opted to use surgical string changes to avoid contaminating white space.
Validation of the manifest in the editor occurs after each change to the manifest. All validation checks are always done. I explored only running checks pertaining to the elements that were edited but there was no meaningful performance change because the validation only too ~4ms in the first place.
Usage Example
Open an appxmanifest file in VS Code. Reopen the file with the WinApp editor. Use the GUI to customize your manifest as you like. Changes are automatically reflected in manifest's xml.
Related Issue
Resolves #331
Checklist
Screenshots / Demo
Additional Notes
AI Description
This update introduces a visual editor for
AppxManifest.xmland.appxmanifestfiles within VS Code, offering a user-friendly interface for editing manifest properties, including identity, properties, dependencies, resources, capabilities, and applications. The editor supports real-time validation, format-preserving edits, and allows for easy management of extensions. Users can utilize this feature by right-clicking anAppxManifest.xmlor.appxmanifestfile and selecting the Open With… command to access the new GUI.