diff --git a/documentation/compatibility-shims/2026-07-enterprise-config-zip-backslashes.md b/documentation/compatibility-shims/2026-07-enterprise-config-zip-backslashes.md index 2cfc77f9..7ffe201c 100644 --- a/documentation/compatibility-shims/2026-07-enterprise-config-zip-backslashes.md +++ b/documentation/compatibility-shims/2026-07-enterprise-config-zip-backslashes.md @@ -4,7 +4,9 @@ - Introduced: 2026-07-09 - Remove after: when Microsoft fixes dotnet/runtime#27620 and dotnet/runtime#41914 - Code references: + - `app/MindWork AI Studio/Tools/PluginSystem/PluginArchive.cs` - `app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Download.cs` + - `app/MindWork AI Studio/Tools/Services/AssistantPluginInstallService.cs` ## User Impact @@ -14,7 +16,7 @@ Without this shim, Unix systems extract those entries as files whose names conta ## Compatibility Behavior -AI Studio manually extracts downloaded enterprise configuration plugin ZIP files. During extraction, entry names are normalized so both `/` and `\` are treated as archive path separators. +AI Studio manually extracts configuration and imported assistant-plugin archives/ ZIP files. During extraction, entry names are normalized so both `/` and `\` are treated as archive path separators. The extraction still preserves the archive structure and validates each entry before writing it to disk. Rooted paths, drive-qualified paths, and parent-directory traversal paths are rejected. @@ -23,6 +25,5 @@ This works around the behavior described in dotnet/runtime#27620. A related upst ## Removal Checklist - Confirm supported .NET runtimes and administrator packaging guidance no longer require accepting backslashes in enterprise ZIP entry names. -- Replace the manual enterprise configuration plugin ZIP extraction with `ZipFile.ExtractToDirectory(...)`. -- Remove `ExtractConfigPluginArchive(...)`, `NormalizeConfigPluginZipEntryName(...)`, and `GetConfigPluginZipEntryDestinationPath(...)`. +- Replace `PluginArchive.Extract(...)` with `ZipFile.ExtractToDirectory(...)`. - Update this document's status to `Removed`.