diff --git a/CHANGELOG.md b/CHANGELOG.md index fe68af1..6824113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- **Extensible enum member normalization collision now handled correctly** — the generator had two related defects. *(1) Normalization collision*: when two distinct swagger enum wire values normalize to the same C# identifier (for example, `Etc/GMT+4` and `Etc/GMT-4` both → `EtcGMT4` after stripping sign characters), the second Swagger-order claimant was silently dropped and the identifier was assigned to whichever value appeared first, irrespective of alphabetic order. *(2) Reserved name collision*: when a swagger value normalized to a mandatory struct member name (`Equals`, `GetHashCode`, `ToString`), the generator emitted a property with that name, which shadowed the required override method and produced CS0102 duplicate-definition compile errors. The hardened two-phase assignment (AzureUX-BPM commits d5cb672..07b2718, PR 16971205) pre-scans natural names in phase 1, then in phase 2 assigns in deterministic sorted order so the alphabetically-first wire value keeps the unsuffixed name (`Etc/GMT+4` → `EtcGMT4`) and each subsequent claimant receives a numeric suffix (`Etc/GMT-4` → `EtcGMT42`); reserved names are instead suffixed with `Value`. An empirical scan of all 100 checked-in connector clients against the frozen 2026-08-28 ARM swagger snapshot (cache manifest SHA256 `ED9C3FB8911D0F28C8D5038CE33ABEE38F7265D186249C8C66CC5C4B7B7CF2C8`) found one connector with active normalization collisions in the current swagger: Plumsail (Timezone enum). Plumsail is regenerated; the remaining 99 clients are unchanged. ([#181](https://github.com/Azure/Connectors-NET-SDK/issues/181)) + + The eleven connectors named in the original issue as affected by the reserved-name variant of this bug (Blackbaudaltruconsti, Blackbaudcrmconstitu, Dataflows, Documentscorepackapi, Dynamicssmbsaas, Etsy, Iaconnectmsoffice, Meisterplan, Powerassist, Tabscannerreceiptocr, Workpoint365) are no longer present in the current ARM connector catalog and their swagger is not in the frozen cache; Etsy is present in the catalog but its current swagger carries no reserved-name collision. No reserved-name collision was found in any of the 97 currently-generated connectors. + ### Breaking Changes +- **Plumsail Timezone enum: seven members now map to positive-offset wire values** — the pre-fix generator assigned the unsuffixed name (`EtcGMT2`…`EtcGMT9`, `EtcGMT11`) to whichever swagger value appeared first, which happened to be the `-N` (negative-offset) value for most entries. The fix assigns based on sorted wire value, so `+N` (lower ASCII, sorts first) now owns the clean identifier. Callers using `EtcGMT2`, `EtcGMT3`, `EtcGMT4`, `EtcGMT7`, `EtcGMT8`, `EtcGMT9`, or `EtcGMT11` should verify they are using the intended timezone direction and rename usages if necessary. The new suffixed members (`EtcGMT22`, `EtcGMT32`, `EtcGMT42`, `EtcGMT72`, `EtcGMT82`, `EtcGMT92`, `EtcGMT112`) now expose the previously silently-dropped negative-offset wire values. Additionally, `EtcGMT6`, `EtcGMT5`, `EtcGMT10`, `EtcGMT1`, `EtcGMT0`, and `Gmt0` acquire new discriminated siblings (`EtcGMT62`, `EtcGMT52`, `EtcGMT102`, `EtcGMT15`, `EtcGMT02`/`EtcGMT03`, `Gmt02`/`Gmt03`) for values that were previously dropped. ([#181](https://github.com/Azure/Connectors-NET-SDK/issues/181)) + - **Google Tasks and PDF.co operation name typos corrected** — `CraeteTaskAsync` is now `CreateTaskAsync`, and `PDFSerarchTextAsync` is now `PDFSearchTextAsync`. PDF.co callers must also rename `PDFSerarchTextInput` and the corresponding model-factory method to `PDFSearchTextInput`. Connector routes and wire payload names are unchanged.