This is a bigger rework to some of the initial assumptions and decisions. Now cli/tui will respect the negotiated microversion and use the corresponding response schemas. Also TUI received a lot of rework to increase amount of code that is produced by the codegenerator rather than manually.
Additionally support for custom auth plugins through WASM has been introduced. It should be considered as alpha state though, a real life tests plugins must appear first to verify the interface.
What's Changed
- feat: Add support for automatic re-auth by @gtema in #1789
- feat: Introduce possibility to skip auth cache by @gtema in #1791
- feat(state): Add file locking to auth cache by @gtema in #1793
- chore(deps): update alpine docker tag to v3.24.0 by @renovate[bot] in #1792
- fix(auth-core): Improve auth-core quality by @gtema in #1794
- chore(ci): Ensure all actions are pinned by hashes by @gtema in #1797
- refactor: Improve auth plugins by @gtema in #1796
- feat: Add OIDC client credentials authentication plugin by @gtema in #1798
- refactor: Address diverse clippy findings by @gtema in #1799
- feat: Enable catalog refresh by @gtema in #1800
- chore(deps): Bump itertools from 0.14.0 to 0.15.0 by @dependabot[bot] in #1805
- chore(deps): Bump bytes from 1.11.1 to 1.12.0 by @dependabot[bot] in #1806
- chore(deps): update actions/checkout action to v7 by @renovate[bot] in #1804
- chore(deps): Bump taiki-e/install-action from 2.58.4 to 2.82.2 by @dependabot[bot] in #1795
- docs: Enhance CONTRIBUTING.md by @gtema in #1808
- fix: Use weak deps for async/sync feature propagation by @gtema in #1812
- chore(deps): update actions/cache action to v6 by @renovate[bot] in #1811
- refactor(tui): Implement FuzzySelect and Popup widget by @gtema in #1813
- refactor(tui): extract GenericResourceView by @gtema in #1814
- refactor(tui): migrate components to GenericResourceView pattern by @gtema in #1818
- fix(tui): Fix cloud and project select popups by @gtema in #1819
- feat: Add region switching support by @gtema in #1820
- chore(deps): update crate-ci/typos action to v1.48.0 by @renovate[bot] in #1821
- chore(deps): update docker/metadata-action action to v6.2.0 by @renovate[bot] in #1824
- chore(deps): update docker/login-action action to v4.4.0 by @renovate[bot] in #1823
- chore(deps): update docker/build-push-action action to v7.3.0 by @renovate[bot] in #1822
- chore(deps): Bump anyhow version due to advisory by @gtema in #1826
- chore(ci): Add more concurrency and cache by @gtema in #1827
- fix(tui): Restore functionality by @gtema in #1830
- chore: Temporarily disable keystone-rs cli by @gtema in #1831
- chore: Another missed place for disabling keystone-rs by @gtema in #1832
- chore(deny): Add exception for rsa Marvin Attack by @gtema in #1833
- feat(compute): Add
server show-plaintextby @dmbuil in #1817 - fix(sdk): Preserve request headers on 401 retry by @gtema in #1834
- chore(deps): update rust docker tag to v1.97.0 by @renovate[bot] in #1841
- refactor: Unify sync client as thin facade over async by @gtema in #1835
- chore(deps): update swatinem/rust-cache action to v2.9.1 by @renovate[bot] in #1843
- chore(deps): update step-security/harden-runner action to v2.20.0 by @renovate[bot] in #1842
- chore(deps): update github/codeql-action action to v4.37.0 by @renovate[bot] in #1837
- chore(deps): Bump reserve-port from 2.4.0 to 2.5.0 by @dependabot[bot] in #1815
- chore: Apply clippy 1.97 by @gtema in #1847
- feat(cli): Add service command version dispatch by @gtema in #1848
- fix(sdk): Single-flight re-authentication on 401 by @gtema in #1849
- fix(sdk): Call anchor_plugins() unconditionally in new_impl by @gtema in #1856
- chore: Bump dependencies by @gtema in #1857
- chore(deps): Bump EmbarkStudios/cargo-deny-action from 2.0.14 to 2.1.1 by @dependabot[bot] in #1850
- fix(sdk): Replace RwLock poisoning with parking_lot by @gtema in #1858
- feat(sdk): Add background token auto-renewal by @gtema in #1859
- fix(sdk): Harden auth cache key, validity, and file GC by @gtema in #1860
- feat(cli,sdk): Diverse UX improvements by @gtema in #1861
- fix(tui): graceful error handling, stale-data cleanup, concurrent discovery by @gtema in #1862
- refactor: Replace RawQueryAsync trait with combinators by @gtema in #1864
- feat: Adapt codegen to use min ver suffix by @gtema in #1870
- fix(deps): update rust crate syn to v3 by @renovate[bot] in #1869
- chore(deps): Bump sha2 from 0.10.9 to 0.11.0 by @dependabot[bot] in #1876
- fix: Fix sha2 0.11 LowerHex removal in config hash by @gtema in #1878
- fix(sdk): Fix microversion header negotiation by @gtema in #1863
- refactor(sdk): Move Dialoguer AuthHelper to auth-core by @gtema in #1865
- feat: Changes from adapted codegenerator templates by @gtema in #1879
- chore(update): Bump dependency versions by @gtema in #1880
- feat(sdk): Start populating max_ver and min_ver by @gtema in #1881
- feat: Start populating max_version for sdk by @gtema in #1883
- fix: Codegenerator fixes by @gtema in #1884
- feat: Stream paginated list responses via iter_async by @gtema in #1885
- chore(deps): update docker/login-action action to v4.5.1 by @renovate[bot] in #1886
- chore: Stop use deprecated RawQuery/RawQueryAsync by @gtema in #1889
- chore(deps): Bump base64 from 0.22.1 to 0.23.0 by @dependabot[bot] in #1890
- feat(tui): Replace per-resource Mode variants by @gtema in #1892
- fix(tui): Remove unsafe pointer cast in confirm popup by @gtema in #1893
- test(tui): Cross-check view keys by @gtema in #1894
- chore(tui): Wrap security_group(_rule) wiring in gen markers by @gtema in #1895
- chore(tui): Wrap remaining resources' wiring by @gtema in #1896
- feat: Generate mode/action/app wiring per resource by @gtema in #1897
- chore(tui): Extract mechanical ResourceBehaviour tier by @gtema in #1898
- feat(sdk): Add builder for AsyncOpenStack/OpenStack connection options by @gtema in #1899
- feat(tui): Generate ResourceBehaviour mechanical tier by @gtema in #1900
- feat(tui): Complete ResourceBehaviour tier for network by @gtema in #1901
- feat: Surface negotiated microversion end to end by @gtema in #1902
- feat(tui): Dispatch item deser per negotiated version by @gtema in #1903
- feat: Add Wait combinator for polling resources by @gtema in #1906
- feat: Add fuzz more targets by @gtema in #1905
- feat: Dispatch response schema per negotiated microversion by @gtema in #1907
- chore(deps): update docker/login-action action to v4.6.0 by @renovate[bot] in #1908
- chore(deps): Bump pem from 3.0.6 to 4.0.0 by @dependabot[bot] in #1913
- feat(tui): Dynamic Value+ColumnSpec items by @gtema in #1914
- feat: Source ColumnSpec from config.yaml, not struct scraping by @gtema in #1915
- refactor(tui): Replace StructTable with config-driven Value rendering by @gtema in #1917
- feat(tui): Remove dynamic_item from generated code by @gtema in #1919
- feat: Add microversion negotiation strategy to RestClient by @gtema in #1918
- fix: Use current MV when max is not set by @gtema in #1920
- feat(tui): Add --cloud-config-from-env flag by @gtema in #1921
- feat(tui): Broadcast actions to all components by @gtema in #1922
- chore(deps): update crate-ci/typos action to v1.49.0 by @renovate[bot] in #1925
- feat: Further preparation for the '--wait' support by @gtema in #1923
- chore(deps): Upgrade comfy-table to version 8 by @gtema in #1927
- chore(ci): Replace attest-build-provenance with attest by @gtema in #1928
- feat: Implement "waitable" interface for rust by @gtema in #1929
- chore(deps): Bump http from 1.4.2 to 1.5.0 by @dependabot[bot] in #1911
- fix(tui): Retry external-editor loop on bad YAML by @gtema in #1930
- feat(tui): Implement editor_template for sgr create by @gtema in #1931
- feat(sdk): Add WASM auth plugin runtime and CLI management by @gtema in #1934
- feat(rust): Emit BODY_SCHEMA const on generated request structs by @gtema in #1935
- feat(tui): Further work for editor by @gtema in #1936
- feat(plugin): Add versioned plugin storage and lockfile by @gtema in #1937
- feat(wasm): Complete WASM auth plugins support by @gtema in #1938
- feat(tui): Wire SG create/update/delete via editor by @gtema in #1939
- fix(sdk): Make response-schema dispatch honor mv_strategy by @gtema in #1942
- feat(wasm): Expand the plugin I/F by @gtema in #1941
- chore: Propagate ConfirmableRequest through enums by @gtema in #1943
- fix(cli): Group kind-suffix response candidates by microversion by @gtema in #1944
- fix: Dispatch response schema by resolved microversion by @gtema in #1945
- feat(cli): Add --os-microversion-strategy flag by @gtema in #1946
- chore(deps): Bump step-security/harden-runner from 2.20.0 to 2.21.0 by @dependabot[bot] in #1954
- chore(deps): Bump x509-parser from 0.16.0 to 0.18.1 by @dependabot[bot] in #1951
- chore(deps): update rust docker tag to v1.98.0 by @renovate[bot] in #1956
- chore: Bump h2 for addressing advisory by @gtema in #1962
- chore: Address another advisories by @gtema in #1963
- chore(deps): Bump jsonschema from 0.49.9 to 0.52.0 by @dependabot[bot] in #1958
- fix(deps): update rust crate base64 to 0.23 by @renovate[bot] in #1949
- chore(deps): bump jsonschema, rcgen, uuid, owo-colors, syn by @gtema in #1964
- chore(deps): update crate-ci/typos action to v1.50.0 by @renovate[bot] in #1960
- fix: Stop infinite recursion in AuthHelper blanket impls by @gtema in #1965
- fix(openapi): Safely handle schemas missing 'type' field by @gtema in #1967
- feat: Add json_pointer_fallback to server list by @gtema in #1968
- fix(openapi): Param dedupe in neutron by @gtema in #1969
- fix(rust-types): render nullable arrays as Option by @gtema in #1970
- fix: CLI error hints for wait combinator failures by @gtema in #1971
- refactor(sdk): Decompose authorize_with_auth_helper by @gtema in #1972
- fix(cli): Avoid panic when config fails to load by @gtema in #1973
- test(wasm): Cover registry::update's outcome matrix by @gtema in #1974
- feat(rust-tui): Enable ResourceBehaviour for next services by @gtema in #1975
- refactor(tui): Forward load_balancer to gen ResourceBehaviour by @gtema in #1978
- refactor(tui): Forward identity to gen ResourceBehaviour by @gtema in #1976
- refactor(tui): Forward block_storage to gen ResourceBehaviour by @gtema in #1977
- chore(deps): update rust crate jsonschema to 0.53 by @renovate[bot] in #1955
- chore(deps): update rust crate dirs to v7 by @renovate[bot] in #1979
- chore: Add libudev-dev to release job by @gtema in #1981
- chore: release by @gtema-release-plz[bot] in #1845
New Contributors
Full Changelog: v0.13.7...v0.13.8