4.0.0
What's Changed
- ci: avoid workflow scope for WinGet releases by @rudrankriyam in #1902
- fix(workflow): accept explicit JSON validation output by @rudrankriyam in #1905
- fix(publish): retry post-upload TestFlight propagation by @rudrankriyam in #1906
- fix(status): correlate TestFlight reviews with their builds by @rudrankriyam in #1908
- feat(testflight): list groups containing a build by @rudrankriyam in #1912
- feat(workflow): add bounded step retry and timeout by @rudrankriyam in #1909
- feat(xcode): expose signing options for export and publish by @rudrankriyam in #1907
- feat(xcode): add first-class build command by @rudrankriyam in #1911
- feat(publish): add TestFlight upload-only mode by @rudrankriyam in #1914
- fix(builds): preserve next-number safety on restricted accounts by @rudrankriyam in #1913
- fix(screenshots): reconcile interrupted upload reservations by @rudrankriyam in #1904
- fix(signing): keep synchronized assets profile-scoped by @rudrankriyam in #1903
- Keep Xcode Cloud artifact writes atomic by @rudrankriyam in #1916
- fix(testflight): renew tester batch request deadlines by @rudrankriyam in #1918
- fix(auth): normalize identifiers before token signing by @rudrankriyam in #1917
- fix(screenshots): validate frame watch options by @rudrankriyam in #1919
- fix(notarization): preserve archive identity during submission by @rudrankriyam in #1915
- Recognize unified certificates for Mac signing by @rudrankriyam in #1924
- fix(screenshots): canonicalize reviewed upload targets by @rudrankriyam in #1923
- fix(xcode): honor reported validation failures by @rudrankriyam in #1920
- fix(api): classify HTTP conflict responses by @rudrankriyam in #1925
- fix(analytics): accept instance and segment resource IDs by @rudrankriyam in #1921
- Validate App Preview files before upload by @rudrankriyam in #1929
- Reject conflicting accessibility pagination options by @rudrankriyam in #1926
- fix(notarization): detect failed multipart completions by @rudrankriyam in #1927
- fix(pricing): keep tier cache writes atomic by @rudrankriyam in #1928
- fix(analytics): refresh request timeouts by @rudrankriyam in #1933
- Reject conflicting category pagination options by @rudrankriyam in #1935
- fix(signing): skip unusable profile certificates by @rudrankriyam in #1931
- fix(builds): refresh expiration request deadlines by @rudrankriyam in #1932
- fix(game-center): return metrics authentication errors by @rudrankriyam in #1938
- fix(assets): renew list request timeouts by @rudrankriyam in #1936
- Renew ratings country request deadlines by @rudrankriyam in #1940
- fix(app-setup): validate localization plans before writes by @rudrankriyam in #1941
- fix(signing): preflight fetch output before profile creation by @rudrankriyam in #1942
- Resolve apps info versions across all pages by @rudrankriyam in #1939
- fix(notify): reject null Slack block payloads by @rudrankriyam in #1943
- Validate App Clip create selectors before authentication by @rudrankriyam in #1944
- feat(release): reconcile routing coverage during staging by @rudrankriyam in #1910
- Propagate structured output write failures by @rudrankriyam in #1946
- Validate migration localizations before network requests by @rudrankriyam in #1930
- Preserve early Xcode failure diagnostics by @rudrankriyam in #1934
- Resolve local profile directory from active Xcode by @rudrankriyam in #1947
- fix(shared): publish new files only after successful writes by @rudrankriyam in #1922
- fix(background-assets): require checksum with file by @rudrankriyam in #1950
- Preserve video preview detail lookup errors by @rudrankriyam in #1949
- Make signing repository Git operations non-interactive by @rudrankriyam in #1945
- Update user roles and app access in one request by @rudrankriyam in #1951
- fix: align HTTP 422 exit code constant by @rudrankriyam in #1953
- Validate version view includes before authentication by @rudrankriyam in #1955
- Preflight certificate request output paths by @rudrankriyam in #1952
- Require certificate includes for pass type queries by @rudrankriyam in #1957
- Fix iPad screenshot slot selection by @rudrankriyam in #1956
- fix(web): preserve Unicode in generated app names by @rudrankriyam in #1958
- fix(validate): check copyright acquisition years by @rudrankriyam in #1959
- fix(webhooks): resume pagination from continuation URLs by @rudrankriyam in #1961
- fix(builds): use highest processed build number by @rudrankriyam in #1960
- fix(game-center): reject non-finite matchmaking weights by @rudrankriyam in #1962
- fix(win-back-offers): support FREE_TRIAL creation via --territory by @rudrankriyam in #1954
- refactor(review)!: remove deprecated item surfaces by @rudrankriyam in #1963
- refactor(analytics)!: remove deprecated compatibility surfaces by @rudrankriyam in #1964
- 4.0.0 pre-release audit: fix all confirmed findings by @rudrankriyam in #1965
- test: harden review regression coverage by @rudrankriyam in #1968
- fix(release): address staging correctness findings by @rudrankriyam in #1969
- fix(review): disclose web-only doctor coverage by @rudrankriyam in #1970
- Fix workflow output validation and documentation gaps by @rudrankriyam in #1971
- Fix output and help fidelity by @rudrankriyam in #1972
- fix(signing): deprecate --device without --create-missing by @rudrankriyam in #1973
- Fix migration reliability findings from 4.0 audit by @rudrankriyam in #1974
- fix(signing): restore TTY-aware fetch output by @rudrankriyam in #1975
- fix(web): clarify SMS fallback during login by @rudrankriyam in #1977
Full Changelog: 3.7.0...4.0.0