Skip to main content

Changelog

All notable changes to this project will be documented in this file.

[0.12.0] - 2026-10-05​

Bug Fixes​

  • ci: Scope NODE_AUTH_TOKEN to the npm-publish job, not just its final step (#2121)

  • pipelinerun: Propagate Temporal/Cadence workflow failure into error_message (#2126)

  • ci: Scan :main instead of stale :latest tag in CVE Scan (#2127)

  • sandbox: Point minio image at quay.io mirror (#2146)

  • uniflow: Read the Ray task log URL from the RayCluster CR (#2152)

  • docker: Bump ui base image to patched nginx:alpine digest (#2140)

  • go: Bump grpc, thrift, x/crypto to close CVE Scan findings (#2141)

  • sandbox: Point k3d workflow.endpoint at the rendered Cadence Service (#2154)

  • ci: Make CVE Scan's exit-code gate respect its own severity filter (#2159)

  • ui: Default Environment field to Development in Start new pipeline run dialog (#2160)

  • docker: Upgrade libexpat to close CVE-2026-93990 in ui image (#2162)

  • deployment: Don't roll back a deployment's first-ever rollout (#2163)

  • ci: Resolve golangci-lint/Go version mismatch in go-lint.yml (#2166)

  • sandbox: Mirror minio sandbox image to ghcr.io instead of quay.io (#2170)

  • ui: Add missing import for function (#2179)

  • triggerrun: Include run ID in TriggerRun log URLs (#2171)

  • ci: Scope ui-release.yml's push trigger to build-ui-image's actual inputs (#2188)

  • kubeyarpc: Omit request bodies from handler logs (#2197)

  • kubeyarpc: Drop namespace and name tags from API handler metrics (#2198)

  • uniflow: Avoid eager deployment plugin imports (#2204)

  • sandbox: Wire MinIO's own root credentials to michelangeloadmin (#2219)

  • ui: Add Paused to stateTextMap (#2221)

CI/CD​

  • Bump release-drafter/release-drafter from 6.4.0 to 7.7.0 (#2131)

  • Bump docker/login-action from 3 to 4 (#2132)

  • Bump codecov/codecov-action from 7.0.0 to 7.1.1 in the actions-minor-and-patch group (#2130)

  • release: Unify GitHub Release body format on git-cliff, retire release-drafter (#2136)

  • Bump dorny/paths-filter from 3.0.4 to 4.0.3 (#2186)

  • Bump actions/upload-artifact from 4 to 7 (#2187)

  • Bump orhun/git-cliff-action from 4.9.0 to 4.9.1 in the actions-minor-and-patch group (#2185)

  • Fix cve-scan.yml Slack notify to v4's method/payload schema (#2174)

Documentation​

  • user-guides: Record verification of backfill and file-sync guides (#2113)

  • examples: Fix broken run commands and fabricated output in example READMEs (#2112)

  • contributing: Document the tag-ancestry / merge-back invariant (#1978)

  • scheduler: Operator guide for the Kueue backend and updated extension guide (#1985)

  • api-reference: Fix generator HTML escaping and add two Python SDK pages (#2144)

  • Update CHANGELOG.md for v0.11.0 (#2149)

  • core: Remove stray comment on trigger interval-seconds accessor (#2158)

  • Update SECURITY.md supported-versions table to 0.11.x/0.10.x (#2173)

  • Replace Slack invite-by-email with a shareable invite link (#2202)

  • Update CHANGELOG.md for v0.12.0-rc.1 (#2224)

Features​

  • trainer: Add an MLflow-backed ExperimentStore for auto-resume (#1872)

  • schema: Add evaluator task configuration schema (#2125)

  • evaluator: Add EvaluationReport chart builders (#2135)

  • ui: Add pipeline revision detail page (#2091)

  • evaluator: Add the evaluator core -- metrics, gating, and chart… (#2143)

  • ui: Add Environment field to Run trigger dialog (#2153)

  • core: Trigger list column parity (schedule, environment, auto-flip) (#2151)

  • triggerrun: Default environment label on TriggerRun create (#2157)

  • Cascade delete revisions on DeletePipeline (#2167)

  • ui: Use latest revision on pipeline detail page (#2118)

  • ui: Add revision selector on detail page (#2117)

  • trigger: Add Information tab and detail metadata parity (#2161)

  • ui: Render stages as pending (#2014)

  • variables: Add MessageVariable, copied from the internal SDK (#2183)

  • ui: Update columns for pipeline/revision list view (#2194)

  • evaluator: Add the evaluator workflow task, preprocessor, and e… (#2181)

  • ui: Add action menu for revision list item (#2178)

  • ui: Badge the latest revision in the detail page revision selector (#2195)

  • evaluator: Add intrinsic embedding metrics (#2201)

  • ray: Move Ray log persistence to official KubeRay v1.7.1 images (#2200)

Miscellaneous​

  • Merge release/v0.11 back to main (#2123)

  • examples: Remove gpt_oss_20b_finetune from core, now in michelangelo-examples (#2150)

  • sandbox: Enable pipeline revisioning in k3d values (#2138)

  • sandbox: Rename default credential from minioadmin to michelangeloadmin (#2193)

  • go: Bump go.uber.org/cadence to v1.4.0 (#2128)

  • examples: Remove movielens from core, now in michelangelo-examples (#2217)

  • Add Rerun action alongside a static-primary Kill action on trigger runs (#2168)

  • Bump version to 0.12.0-rc.1 (#2223)

  • Release 0.12.0 (#2230)

Testing​

  • trainer: Add a real regression guard for MlflowExperimentStore resume (#2079)

[0.11.0] - 2026-09-21​

Bug Fixes​

  • javascript: Audit placeholder text for accessibility and UX guidelines (#2036)

  • go: Stamp SourcePipelineType label unconditionally on PipelineRun create (#1965)

  • Route go-vet pre-commit hook through bazel nogo (#1855)

  • Delete recycled TriggerRuns from metadata storage (#1976)

  • native_transform: Use proper ceiling division for stats batch_count (#1918)

  • core: Render breadcrumb entity names in Title Case (#2029)

  • core: Title-case entity names in remaining nav consumers (#2040)

  • ray: Persist RayJob immutable annotation and fix always-dirty status check (#2055)

  • ray: Drop reconciles for immutable RayCluster/RayJob objects (#2053)

  • sandbox: Back the mysql Pod with a data volume so restarts keep the databases (#1980)

  • proto-go: Sync gen-proto-go.sh's Go version with MODULE.bazel's SDK pin (#2065)

  • Revert name reflection (#2085)

  • go: Unload models per deployment and per cluster on delete (#2111)

  • ci: Cherry-pick NODE_AUTH_TOKEN scoping fix to release/v0.11 (#2121) (#2124)

CI/CD​

  • Bump softprops/action-gh-release from 2.6.2 to 3.0.3 (#2025)

  • Bump actions/checkout from 4 to 7 (#2024)

  • Bump orhun/git-cliff-action from 4.8.0 to 4.9.0 in the actions-minor-and-patch group (#2038)

  • Bump slackapi/slack-github-action from 1.27.0 to 4.0.0 (#2039)

  • Bump docker/build-push-action from 5 to 7 (#1970)

  • changelog: Fix range fallback to survive release-branch deletion (#2064)

  • Bump actions/setup-node from 4 to 7 (#2076)

  • Bump actions/deploy-pages from 4 to 5 (#2075)

  • Bump actions/github-script from 6 to 9 (#2074)

  • Build the Triton serving image for arm64 as well as amd64 (#2116)

Documentation​

  • Add distributed training guide for LightningTrainer (#2010)

  • architecture: Reject client-side filtering of option lists (#2035)

  • Regenerate changelog snapshot for 0.9.0 and 0.10.0 (#2058)

  • ui: Document lowercase-canonical entity name convention (#2059)

  • Add Code to Cluster conference talk to Further Reading (#2106)

  • Update CHANGELOG.md for v0.11.0-rc.1 (#2120)

Features​

  • model: Validate description length on create/update (#2002)

  • raycluster: Terminate cluster missing from remote and mark all terminal states immutable (#2006)

  • ui: Add retire button (#2037)

  • uniflow: Add scala plugin for pre-compiled Spark JAR tasks (#1690)

  • native_transform: Add tabular_native_transform workflow task (#1919)

  • ui: Add deployment table on model detail page (#2080)

  • deployment-plugin: Add Starlark deployment worker plugin (#2086)

  • ui: Add info tab for pipeline run detail page (#2077)

  • ui: Add delete button (#2042)

  • pipeline: Stamp michelangelo/PipelineType label on Revision (#2087)

  • core: Describe row labels with tooltips (#2107)

  • python: Support file-backed task kwargs (#2015)

  • ui: Add update deployment button (#2044)

  • rpc: Register RevisionService and unpack registered Any payloads (#2088)

  • studio: Add Revisions list view for pipeline (#2089)

  • ui: Add more fields to inference server form (#2104)

  • go: Support a custom Triton serving image on InferenceServer (#2114)

Miscellaneous​

  • docker: Bump nvidia/tritonserver to 25.01-py3 (matches internal), wire it into InferenceServer (#1999)

  • examples: Remove california_housing_xgb pipeline (migrated to michelangelo-examples) (#1751)

  • Populate Model.Spec.SourcePipelineRun from pipeline-run identity env vars (#2034)

  • Merge back release/v0.10 to main (#2032)

  • go: Bump k8s.io/* and controller-runtime to current stable (#2060)

  • Catch zero-arg and unused-overrides test fixtures (#1960)

  • Add ma-sandbox-deploy Claude Code skill (#1638)

  • Add ma-sandbox-setup Claude Code skill (#1637)

  • Add ma-sandbox-reset Claude Code skill (#1639)

  • Add ma-sandbox-debug Claude Code skill (#1640)

  • go: Bump Go SDK, rules_go, and gazelle to latest stable (#2069)

  • Upgrade Bazel from 7.4.1 to 8.8.0 (#2050)

  • Bump version to 0.11.0-rc.1 (#2119)

  • Release 0.11.0 (#2133)

Performance​

  • Improve mobile page load performance (#2028)

Testing​

  • core: Add getCall to createQueryMockRouter (#2067)

[0.10.0] - 2026-09-08​

Bug Fixes​

  • ci: Pin release.yaml's Go setup to go.mod instead of a hardcoded version (#1897)

  • go: Bump Go SDK from 1.26.3 to 1.26.5 to close remaining CVE Scan findings (#1732)

  • release: Close tracking issue on final promotion (#1896)

  • k8sengine: Emit rayStartParams as {} not null for RayClusters (#1932)

  • build: Regenerate proto/api/BUILD.bazel with gazelle (#1953)

  • python: Allow shape=[] (true scalar) in Triton schema validation (#1934)

  • python: ModelPusherPlugin downloads remote artifact URIs before upload (#1948)

  • Preserve backfill TriggerRun status (#1957)

  • rpc: Auto-pack Any/enum fields at the RPC layer, not in UI config (#1959)

  • python: Pusher storage keys, push_id, and deployable-archive config (#1961)

  • examples/bert_cola: Pass the trained model as a ModelVariable, not a local path (#1974)

  • python: Accept inference-multicluster in sandbox demo guard (#1996)

  • ui: Use fieldSelector on pipeline_name for Pipeline detail Runs tab (#1967)

  • go: Simplify trigger-fire environment defaulting to copy-forward only (#1994)

  • Make website Bun installs reproducible (#2017)

  • trainer: Default to SingleDeviceStrategy when world size is 1 (#2005)

  • changelog: Correct v0.10.0-rc.1 range to v0.9.0..v0.10.0-rc.1 (#2045)

CI/CD​

  • Bump actions/upload-pages-artifact from 3 to 5 (#1910)

  • Bump docker/setup-buildx-action from 3 to 4 (#1911)

  • Bump peter-evans/create-pull-request from 6.1.0 to 8.1.1 (#1824)

  • Bump Trivy to v0.74.0 in CVE Scan workflow (#1950)

  • Run CVE Scan on schedule only, not on every main-branch release (#1951)

  • codecov: Mark project and patch status checks informational (#1850)

  • Pin base images by digest and track them via Dependabot (#1952)

  • Bump actions/download-artifact from 4 to 8 (#1971)

  • Bump docker/setup-qemu-action from 3 to 4 (#1969)

Documentation​

  • security: Update supported versions for 0.8.x (#1848)

  • api-reference: Add gRPC service reference for all 15 API services (#1862)

  • Correct batch endpoint, feature store, and traffic splitting claims (#1833)

  • Surface the release changelog on the docs site (#1887)

  • Add role-based learning paths sequencing the existing docs (#1885)

  • Correct sandbox setup prerequisites and resource sizing (#1909)

  • Point monitoring guide at the chart-managed observability resources (#1922)

  • api-reference: Generate Python SDK Reference from docstrings (#1956)

  • Correct A/B testing and inference backend claims (#1928)

  • ui: Update entity config examples for the Pipeline Runs → Runs rename (#2016)

  • Revert getting-started.md tutorial to pytorch_train (MPS fix merged) (#2026)

  • Update CHANGELOG.md for v0.10.0-rc.1 (#2030)

Features​

  • ui: Add model detail page (#1881)

  • ui: Add "All Projects" title (#1903)

  • ui: Add color for phase card (#1845)

  • sandbox: Add demo commands for multi-cluster inference (#1175)

  • deployment: Resolve model storage path from the Model CR (#1907)

  • core: Add pipelines, triggers, and runs to the deploy phase (#1935)

  • model: Default and inherit the environment label on Models (#1912)

  • ui: Add deployment create form (#1899)

  • core: Pluggable ownership resolver for project views (#1947)

  • ui: Add configuration tab on run detail page (#1929)

  • ui: Support pipeline run resume from + retry (#1858)

  • ui: Add inference server create form (#1942)

  • ui: Add more detail on key status indicator for deployment (#1940)

  • Stamp SourcePipelineType label on PipelineRun/TriggerRun creation (#1936)

  • core: Filter pipeline runs and trigger runs by SourcePipelineType label (#1933)

  • python: Add ma sandbox snapshot create/restore for CRD state (#1715)

  • api: Default EnvironmentLabel on PipelineRun create and update (#1945)

  • ui: Reorder phase tabs (Triggers before Runs) and rename Pipeline Runs to Runs (#1964)

  • examples: Package and push the fine-tuned bert_cola model (#1966)

  • ui: Enable the Deploy & Predict phase (#1975)

  • inferenceserver: Add Triton serving image with torch/transformers (#1987)

  • ui: Add Information tab to pipeline run detail page (#1972)

  • ui: Add Environment field to run pipeline dialog (#1995)

  • ui: Add Last Updated and Environment columns to pipeline run list (#1993)

  • Reflect name to unmarshalled table (#1914)

Miscellaneous​

  • Merge release/v0.9 back to main (v0.9.0) (#1925)

  • Update index.md (#1926)

  • go: Link legacy env-label TODOs to tracking issue (#1941)

  • Add pipeline-run notification setup to Run Pipeline dialog (#1868)

  • Delete PR_1430_REVIEW_COMMENT_ANALYSIS.md (#1962)

  • Remove standalone trigger_run demo YAMLs from sandbox (#2001)

  • Upgrade website to TypeScript 7.0.2 (#2018)

  • Schedule pipelines from triggers, and link pipelines, triggers, and their runs together (#1870)

  • Bump version to 0.10.0-rc.1

  • Release 0.10.0 (#2048)

Performance​

  • javascript: Switch test environment from jsdom to happy-dom (#847)

Refactoring​

  • train: Extract profiler helpers from util.py into profiler.py (#1878)

[0.9.0] - 2026-08-24​

Bug Fixes​

  • Reword ma-design-interview skill to reduce duration (#1714)

  • build: Bump Go SDK to 1.26.3 + rules_go to 0.57.0 (CVE Scan fix, step 1/2) (#1567)

  • python: Restore ColumnConfig.shape optional default (#1762)

  • ci: Skip JavaScript coverage PR comment on fork pull requests (#1756)

  • python: Wire up workflowClient.executionUrlFormat for the sandbox (#1761)

  • core: Correct Model list columns for description, environment, type, last updated (#1673)

  • storage/mysql: Validate criterion field name before SQL interpolation (#1707)

  • storage/mysql: Implement directUpdate for the generic Update RPC (#1645)

  • ui: Block entity navigation for disabled/coming-soon phases in menu drawer (#1791)

  • release: Mark -rc tags as prereleases in GitHub releases (#1678)

  • api: Log blob-storage delete failure only when it fails (#1679)

  • helm: Drop placeholder signKey annotation from chart metadata (#1768)

  • api: Use status.Error for non-format error messages (#1782)

  • core: Exempt barrel files and test infra from react-refresh export rule (#1807)

  • go: Sync paused TriggerRun schedules (#1827)

  • python: Stop shipping test files in wheels and sdists (#1832)

  • Create TriggerRun schedules paused (#1828)

  • Make TriggerRun deletion idempotent (#1688)

  • ui: Tighten breadcrumb menu drawer close button and icons (#1799)

  • core: Stop capitalizing entity/phase names (#1846)

  • core: Title-case Data Sources, Evaluations, and Notebooks entity names (#1857)

  • python: Use spec.name for dot_path() under python -m (#1754)

  • go: Pipelinerun revision resolve and pipeline latest revision (#1797)

  • python: Render get as table and fix -o yaml OrderedDict crash (#1822)

  • python: Rename evaluation_strategy to eval_strategy in bert_cola example (#1883)

  • docs,examples: Correct Lightning trainer imports and parameters (#1787)

  • Plumb RayTask gpu, disk and object store memory into the cluster spec (#1801)

  • release: Align website version and add it to version-bump.sh (#1849)

  • ci: Pin release.yaml's Go setup to go.mod (cherry-pick for v0.9.0-rc.1) (#1898)

CI/CD​

  • Bump actions/setup-go from 5 to 7 (#1743)

  • Bump actions/setup-python from 5 to 7 (#1744)

  • Bump aquasecurity/trivy-action from 0.32.0 to 0.36.0 in the actions-minor-and-patch group (#1742)

  • Add least-privilege permissions to workflows missing them (#1711)

  • Pin third-party GitHub Actions to commit SHAs (#1757)

  • Pin the golangci-lint installer script to the version it installs (#1767)

  • Pin apidiff to a Go 1.24-compatible x/exp pseudo-version (#1781)

  • go: Migrate golangci-lint config off deprecated options (#1755)

  • integration-test: Run Playwright browser tests in sandbox-e2e (#1838)

  • Upload coverage reports to Codecov (#1834)

  • Add OpenSSF Scorecard workflow and badge (#1835)

  • Build examples image without pushing on fork PRs (#1802)

  • Pin sticky-pull-request-comment in javascript-coverage to a full SHA (#1810)

  • Remove unused attestations permission from release workflows (#1811)

  • Bump actions/cache from 4 to 6 (#1825)

  • Bump azure/setup-helm from 4 to 5 (#1823)

Documentation​

  • Fix community on-ramps in CONTRIBUTING and docs (#1713)

  • core: Document action rendering surfaces and mutation payload flow (#1722)

  • core: Consolidate javascript skills into CLAUDE.md (#1724)

  • Correct Ray Tune and Ray autoscaling claims (#1788)

  • Repoint california_housing doc references to michelangelo-examples (#1749)

  • Add a migration guide for KubeRay users (#1783)

  • Revert getting-started.md tutorial to xgb_train (pytorch_train crashes on Apple Silicon) (#1871)

  • Update CHANGELOG.md for v0.9.0-rc.2 (#1906)

Features​

  • Export success operations from core (#1716)

  • native_transform: Add fitted-statistics layers (PR B3) (#1683)

  • native_transform: Add IDHashTokenizer wrapper layer (PR B4) (#1684)

  • native_transform: Add Pydantic layer specs (PR B5) (#1685)

  • js: Config-driven form engine skeleton (#1650)

  • native_transform: Add TransformSpec DAG engine + TorchTransformModule (PR B6) (#1730)

  • native_transform: Add auxiliary transform helpers (PR B8) (#1729)

  • ui: Show Coming soon badge on phase cards (#1785)

  • ui: Change steps to ongoing operations (#1784)

  • ui: Add delete pipeline functionality (#1792)

  • trainer: Add an XGBoost trainer built on Ray Train (#1793)

  • js: Schema-aware wrappers for all field types (#1651)

  • js: Declarative validation for form config (#1652)

  • native_transform: Add schema bridge for fitted transform DAGs (PR B7) (#1772)

  • native_transform: Add TransformSpecIO + usage guide (PR E) (#1774)

  • ui: Add deployment information tab (#1708)

  • ui: Add status cards to deployment detail page (#1709)

  • ui: Add source code link (#1826)

  • Add GitHub-backed dev identity override to sandbox UI (#1819)

  • core: Add Experiment & Productionize phase (#1813)

  • core: Add Monitor & Debug coming-soon phase (#1815)

  • Let EntityTable own phase pipeline-type filtering (#1830)

  • form: Add conditional layout with the is operator (#1804)

  • form: Add isNot/isEmpty/containsAny condition operators (#1805)

  • model: Add Model API-hook wiring skeleton (Phase 0) (#1728)

  • native_transform: Add Ray execution adapter (PR C) (#1773)

  • blobstore: Add a native GCS backend (#1837)

  • train: Add FSDP2 strategy to the Lightning trainer (#1877)

Miscellaneous​

  • Add ma-sandbox-test-plan Claude Code skill (#1641)

  • Add dependabot config for weekly grouped dependency updates (#1691)

  • Bump gazelle 0.40.0 to 0.52.2, compatible with rules_go 0.57.0 (#1747)

  • lib: Update california_housing example references in model_manager registry docstrings/tests (#1750)

  • Add Algolia crawler domain verification token to robots.txt (#1766)

  • Merge back release/v0.8 to main (#1721)

  • Add CODEOWNERS file (#1796)

  • Route major feature requests to the enhancements RFC process (#1803)

  • Bump vllm to 0.9.2 to shed known CVEs (#1812)

  • Support the KubeRay suspended cluster state in the MA API (#1700)

  • Bump version to 0.9.0-rc.1 (#1889)

  • Bump version to 0.9.0-rc.2 (#1905)

  • Release 0.9.0 (#1923)

Refactoring​

  • Delete dead code in python/michelangelo/canvas/ (#1727)

  • js: Move form types to types directory (#1671)

  • core: Rename ErrorView to Signpost (#1786)

[0.8.0] - 2026-08-10​

⚠ Breaking Changes​

  • python: Add kind to ModelPusherPlugin (#1687) — add kind to ModelPusherPlugin (#1687)

Bug Fixes​

  • website: Update footer copyright to "Michelangelo AI" (#1664)

  • pusher: Use the shared api.v2 name generator for auto-generated model names (#1633)

  • ui: Tighten spacing and fix stuck focus state on multi-string field (#1681)

  • go: Sync TriggerRun inputs to Temporal schedules (#1663)

  • ci: Widen Cadence worker-connect wait window to 5 min (#1686)

  • docs: Update stale routing source links in integrate-custom-backend (#1625)

  • ui: Stop ArrayFormGroup spacing from depending on parent layout (#1682)

  • ci: Fix Go and Python lint and test checks for fork PRs (#1609)

  • Cherry-pick #1762 (restore ColumnConfig.shape default) + bump to 0.8.0-rc.2 (#1763)

CI/CD​

  • python: Run michelangelo-examples CLI e2e tests in integration-test workflow (#1665)

Documentation​

  • Add MLOps glossary page (#1628)

  • Sync CHANGELOG.md [0.7.0] section to main (#1677)

  • security: Update supported versions for 0.7.x (#1680)

  • Add API service stubs for 10 undocumented proto services (#1587)

  • serving: Add DeleteXxxCollection to serving API table footnote (#1689)

  • Add Docs badge to README badge row (#1696)

  • Add Ask DeepWiki badge to README (#1630)

  • pipelines: Clarify architectural difference between remote-run and dev-run (#1697)

  • Update CHANGELOG.md for v0.8.0-rc.1 (#1719)

  • Update CHANGELOG.md for v0.8.0-rc.2 (#1764)

Features​

  • pipelinerun: Add status reconstruction from workflow engine (#1297)

  • Add design-interview skill for structured UX design (#1676)

  • native_transform: Add structural/shape layers (PR B2) (#1603)

  • trainer: Re-introduce profiler subsystem (PR 5) (#1614)

  • python: Add kind to ModelPusherPlugin (#1687) [BREAKING]

  • python: Migrate tabular_assembler to OSS (#1430)

  • trainer: Pluggable MLflow profiler sink (#1702)

Miscellaneous​

  • Merge back release/v0.7 to main (#1660)

  • Add content index annotation (#1501)

  • Add google.protobuf.Duration support to protoc-gen-validation (#1694)

  • Add LinksBox and MessageContainer components (#1701)

  • Remove dead internal tracker links from code comments (#1712)

  • Bump version to 0.8.0-rc.1 (#1717)

  • Promote v0.8.0 (version strip from 0.8.0-rc.2) (#1769)

[0.7.0] - 2026-08-03​

Bug Fixes​

  • docs: Correct double-suffix branding in README and examples (#1596)

  • ingester: Soft-delete metadata-storage row on kubectl delete for non-opted-in kinds (#1585)

  • ci: Changelog.yml CR_PAT token + stop full-history CHANGELOG.md regeneration (#1599)

  • ci: Nightly.yml npm/helm jobs no longer hardcode stale base version 0.3.0 (#1617)

  • storage/mysql: Validate OrderBy.Field identifier before SQL interpolation (#1616)

  • sandbox: Pin Grafana image to 13.1.1 instead of :latest (CVE-2026-31789) (#1623)

  • build: Bump pinned Node.js 24.14.1 -> 24.18.0 (Wiz-reported CVEs) (#1621)

  • uniflow: Propagate namespace to Ray cluster spec (#1605)

CI/CD​

  • integration-test: Trigger only from Nightly Build (#1613)

Documentation​

  • Refresh governance files and issue templates (#1579)

  • Add missing libomp macOS prerequisite to getting-started guide (#1253)

  • Update CHANGELOG.md for v0.7.0-rc.1 (#1659)

Features​

  • trainer: Add pluggable ExperimentStore for auto-resume (PR 4) (#1571)

  • python: Add server-side --dry-run to apply, create, pipeline run, pipelinerun kill (#1591)

  • python: Additional_columns + filter_field_map hooks on CRD (#1588)

  • python: Framework -r/--root and -R/--recursive on apply+create (#1590)

  • python: --owner and --type filters + OWNER/TYPE columns on pipeline get (#1618)

  • python: --actor and --revision filters + REVISION/USER/ENVIRONMENT/STATE columns on pipeline_run get (#1619)

  • python: Retry + round_robin service_config on mactl gRPC channels (#1615)

  • python: --pipeline/--model/--deployment/--owner filters + 3 columns on revision get (#1620)

  • core: Expose mutationName in success operations resolver context (#1646)

  • core: Set mutationKey on useStudioMutation for MutationCache integration (#1647)

Miscellaneous​

  • Update hero subtitle to "Now open source." (#1606)

  • Merge back release/v0.6 to main (#1597)

  • Bind k3d port-publishes to loopback instead of 0.0.0.0 (#1592)

  • Fix site title, meta description, and favicon for search results (#1624)

  • Bump version to 0.7.0-rc.1 (#1657)

  • Release 0.7.0 (#1666)

[0.6.0] - 2026-07-27​

Bug Fixes​

  • helm: Allow x-user-email header in envoy CORS preflight (#1552)

  • helm: Envoy checksum annotation + missing x-user-name CORS header (#1558)

  • release: Exclude RC/nightly tags from changelog diff boundary, commit CHANGELOG.md via PR (#1561)

  • docs: Wrap Spark DataFrame in DatasetVariable in branching example (#1566)

  • rayjob: Right-size submitter pod instead of cloning the head (#1562)

  • ci: Changelog.yml CR_PAT token + stop full-history CHANGELOG.md regeneration (cherry-pick #1599) (#1602)

Documentation​

  • Add v0.5.0 changelog entry (#1569)

  • Standardize branding to "Michelangelo AI" in READMEs and PyPI (#1577)

  • Standardize branding to "Michelangelo AI" across all docs (#1575)

  • Update CHANGELOG.md for v0.6.0-rc.1 (#1600)

Features​

  • native_transform: Add pyarrow conversion helpers (PR A) (#1543)

  • sandbox: Support --set on ma sandbox create (#1554)

  • native_transform: Add IDHashTokenizer torch layer (PR A2) (#1548)

  • Add MetadataStoragePrimaryKey annotation for k8s migration (#1332)

  • python: Expose clean_reason and clean_details on GitInfo (F037) (#1572)

  • native_transform: Add foundation transform layers (PR B1) (#1570)

Miscellaneous​

  • Quote templated image/secret-name values in core Deployment charts (#1544)

  • Add examples gallery page with all 9 working examples (#1469)

  • core: Upgrade baseui 15→18, move to peerDependencies (#1522)

  • Merge back release/v0.5 to main (#1547)

  • Remove stray test artifact python/create-project.json (#1476)

  • Ma cli: add -o, -A, and default DESC sort to get (#1576)

  • release: Prepare v0.6.0

  • Bump version to 0.6.0-rc.1 (#1595)

  • Release 0.6.0 (#1607)

Refactoring​

  • core: Split public API from primitives entrypoint (#1526)

[0.5.0] - 2026-07-20​

Breaking Changes​

  • controller: Pipeline delete now cascades by default (foreground propagation, no flag). The controllermgr.cascadeDelete.enable Helm value and associated config are removed. Opt out per-delete with kubectl delete pipeline … --cascade=orphan.

  • python: CometParam and LightningTrainerParam.comet_param removed outright. Use ExperimentTrackerConfig(tracker=CometConfig(...)) instead.

Features​

  • ui: Add multi-value tag input to StringField (#1511)

  • sandbox: Provision REGISTRY_ENDPOINT for pipeline task pods (#1533)

  • ui: Export useStudioMutation and MutationConfig from core (#1536)

  • python: CustomTrackerConfig on ExperimentTrackerConfig: bring-your-own experiment tracker via dotted-path factory_fn/factory_kwargs, for trackers with no dedicated config class (W&B, Neptune, etc.)

  • python: ExperimentTrackerConfig.tracker unified entry point for CometConfig/MlflowConfig/CustomTrackerConfig; legacy comet=/mlflow= fields still work and are promoted internally

  • python: MlflowConfig fully supported — use ExperimentTrackerConfig(tracker=MlflowConfig(...)) to log to MLflow. Closes #1427.

  • python: build_comet_logger / build_mlflow_logger factory functions in michelangelo.lib.trainer.torch.pytorch_lightning._private.util, usable as CustomTrackerConfig.factory_fn targets

Bug Fixes​

  • helm: Allow x-user-email header in envoy CORS preflight (#1552, #1553)

  • helm: Envoy checksum annotation + missing x-user-name CORS header (#1558, #1559)

  • scripts: Pin internal @michelangelo-ai workspace deps on version bump (#1507)

  • ci: Publish npm packages when cutting an RC, not just on promote (#1508)

  • ci: Harden CI gate + fix changelog generation for bot-pushed tags (#1509)

  • python: Fall back to MA_NAMESPACE for california_housing_xgb push_step (#1447)

  • ci: Fix npm-publish.yml build order, prerelease tag, auth, and provenance (#1510)

  • ci: Trigger Go/UI container publish for RC/final tags; fix container tag format (#1513)

  • python: Explicitly set local_rank in RayTrainReportCallback (#1519)

  • helm: Tie first-party image tags to chart appVersion (#1515)

  • ci: Exclude release-promote's own jobs from its CI-green check (#1535)

  • core: Re-export UserProvider for custom provider trees (#1523)

  • Fix the trigger notification (#1534)

  • python: MlflowConfig.tracking_uri is now optional (str | None); falls back to MLFLOW_TRACKING_URI env var

Documentation​

  • Fix broken UPGRADING.md link in CONTRIBUTING.md (#1520)

  • Fix broken links flagged by doc quality scanner (#1529)

Miscellaneous​

  • Add user identity to NavigationBar (#1504)

  • Add user identity headers to RPC request contract (#1512)

  • Populate ColumnMeta augmentation to eliminate columnDef.meta casts (#1497)

  • Type CELL_RENDERERS registry with per-entry value types (#1517)

  • Docs/workflow patterns (#1527)

  • Uniflow workflow patterns runnable example (#1524)

  • Print help panel on 'ma' / 'ma -h' with prog='ma' (#1530)

[0.4.0] - 2026-07-10​

Bug Fixes​

  • ci: Bypass poetry-dynamic-versioning in nightly Python build (#1406)

  • ci: Add helm repo registration before dependency build (#1408)

  • ci: Update npm workspace name in nightly workflow (#1407)

  • Reflector error monitoring via DefaultWatchErrorHandler (#1319)

  • ci: Fix python and npm nightly publish failures (#1414)

  • python: Sanitize pre-existing model_manager leaks + fix broken custom-packager import (#1431)

  • trainer: Default RunConfig storage to backend bucket on multi-node runs (#1441)

  • python: Train_tabular returns ModelVariable, drops storage_backend (#1442)

  • ci: CVE Scan fails to resolve trivy-action/trivy binary version (#1444)

  • spark: Infer SparkApplication.Type from entrypoint instead of hardcoding Python (#1465)

  • python: Demote oversized/invalid model registry labels to annotation (#1446)

  • sandbox: Add missing minio-credentials secret and kuberay images (#1474)

CI/CD​

  • Add Trivy CVE scanning workflow for container images (#1398)

  • Add cross-compiled Go binary builds to release workflow (#1399)

  • Add nightly artifact retention cleanup workflow (#1400)

  • Add API surface change detection for Go, Proto, and Helm (#1402)

  • Add compatibility testing matrix for Python, Node.js, and Helm (#1403)

  • Configure Release Drafter for PR-based release notes (#1401)

  • Notify Slack on scheduled/release workflow failures (#1438)

Documentation​

  • Address sandbox setup feedback — timing, sync, missing prereqs, troubleshooting (#1247)

Features​

  • trainer: Add TrainingObserver protocol for pluggable metrics observation (#1364)

  • triggerrun: Make notification settings updatable post-creation (#1385)

  • trainer: Add tabular_trainer config schema (PR 7a, issue #1359) (#1415)

  • ui: Add description field to pipeline run form and list (#1422)

  • trainer: Tabular_trainer pure helpers module (_dataset.py) [PR 7b] (#1421)

  • trainer: Tabular_trainer dispatcher + ModelMetadata fields (PR 7c) (#1426)

  • trainer: Flexible experiment tracking abstraction (#1432)

  • trainer: Wire MLflow experiment tracking (PR 10) (#1434)

  • trainer: Restore fused_model_submodule to warm-start schema (#1435)

  • revision: Add pluggable Revision controller (#1314)

Miscellaneous​

  • Add proxy_user to v2 Trigger message (#1374)

  • Move Roadmap page to Getting Started section (#1412)

  • Add Support & Community section to docs landing page (#1386)

  • Add Dual-Track Pipeline and RFC process to contribution guides (#1387)

  • Respect primary and secondary actions' disabled state (#1413)

  • precommit: Add gofmt and go vet hooks for Go files (#1420)

  • Rename pusher/pusher.py -> pusher/task.py; complete task.py convention (#1429)

  • examples: Remove unused notebook_workflow example (#1439)

  • Delete MAINTAINERS.md (#1449)

  • Fold successOperations into useStudioMutation (#1455)

  • Update intro.md (#1467)

  • Add standalone Support & Community page (#1470)

  • Add require-cast-comment rule; annotate all existing as-assertions (#1333)

  • Replace connect_grpc_bridge with grpc_json_transcoder (#1468)

  • worker: Remove stale implementation TODOs in ray/spark starlark plugins (#1475)

  • Drop skill guidance now enforced by existing eslint rules (#1483)

  • Add a route successOperation that skips the toast (#1485)

Refactoring​

  • trainer: Move _dataset.py into a _private/ subpackage (#1433)

  • ui: Centralize mutation middleware in the mutation hook (#1482)