Repository navigation
- Rename projects from the CLI and SDK: You can now rename projects with
zenml project update <name-or-uuid>using--name,--display-name, and--description(PR #5367). Technical names and display names can be changed independently while preserving the project UUID and associated resources, and SDK updates now correctly preserve omitted fields or explicitly clear descriptive fields. - Helm chart pods now satisfy restricted Pod Security defaults: The default ZenML Helm chart pod security settings now work in namespaces enforcing Kubernetes Pod Security
restricted(PR #5397). This also applies the chart security values consistently to CA certificate init containers and Helm test pods, reducing the extra overrides needed for locked-down clusters.
Fixed
- More reliable integration installs: Installing ZenML integrations is now less likely to break ZenML’s already-installed dependency set (PR #5399). This prevents cases where adding an integration upgrades shared packages into incompatible versions and causes import failures before pipelines can run.
- GCP runner OpenTelemetry compatibility: GCP runner images now avoid installing an incompatible OpenTelemetry API version alongside ZenML’s pinned SDK (PR #5366). This fixes import failures that could happen before any pipeline steps started.
- MLflow integration installs on Python 3.13 and slim images: The MLflow integration no longer depends on the unused
python-rapidjsonpackage (PR #5360). This avoids source compilation failures in environments without build tools such asg++, especially on Python 3.13 or slim container images. - GCS-backed runs no longer hang during final uploads or cleanup: ZenML aligned GCS-related dependencies and added optional storage controls to avoid pipeline steps getting stuck after their work and outputs have already completed (PR #5373). This addresses hangs from indefinite GCS responses and affected
gcsfscleanup behavior, helping orchestrators observe completed containers instead of waiting forever. - Step outputs are preserved after execution or finalization failures: ZenML no longer deletes step output directories from the launcher exception handler when a step fails after artifacts or server-side completion have already been recorded (PR #5362). Persisted metadata will no longer point to missing files in these partial-failure scenarios, while the original error is still propagated.
- Replay runs include defaulted pipeline parameters: Replaying a run now forwards pipeline parameters that were satisfied by defaults in the original run (PR #5361). This keeps replayed runs consistent with the source run even when users did not explicitly pass every parameter.
- CLI labels can contain equals signs: CLI label parsing now splits
--labelvalues only on the first=, so values such as URLs and query strings are accepted (PR #5383). This fixes label handling across service connector and stack component commands where values likehttps://example.com/?a=bwere previously rejected or misinterpreted. - Hosted Classic dashboard CORS origins are allowed automatically: Pro workspace servers now automatically include the hosted Classic dashboard origin in addition to their configured dashboard origin (PR #5396). Production and staging Classic dashboard URLs are matched exactly over HTTPS, while custom enterprise dashboards and existing custom CORS origins keep their current behavior.
What's Changed
- Add 0.98.0 to the migration tests by @github-actions[bot] in #5358
- Add version 0.97.0 to legacy docs by @github-actions[bot] in #5356
- Bump the minor-and-patch group across 1 directory with 4 updates by @dependabot[bot] in #5363
- Removing
rapidjsondependency from the mlflow integration by @bcdurak in #5360 - Preserve step outputs when execution or finalization fails by @bcdurak in #5362
- Prevent OpenTelemetry conflicts in GCP runner images by @bcdurak in #5366
- Bump the minor-and-patch group across 1 directory with 5 updates by @dependabot[bot] in #5372
- Skip unsupported Jev answer types when logging metadata by @bcdurak in #5375
- Support project renaming in the CLI and SDK by @bcdurak in #5367
- Bump the minor-and-patch group across 1 directory with 5 updates by @dependabot[bot] in #5387
- Bump zizmor from 1.30.1 to 1.31.1 in /.github/zizmor by @dependabot[bot] in #5386
- Fix CI failures caused by incompatible dependency releases by @bcdurak in #5385
- Reuse one Modal App per component instead of creating one per run by @strickvl in #5311
- Align GCS dependencies and add optional storage controls by @bcdurak in #5373
- Allow
=in CLI label values by @RaphaelFakhri in #5383 - Automatically allow hosted Classic dashboard origins by @AlexejPenner in #5396
- Forward defaulted pipeline parameters when replaying a run by @schustmi in #5361
- Add Bots docs to ZenML Pro by @schustmi in #5371
- Keep integration installs from breaking ZenML's dependencies by @bcdurak in #5399
- Fix Windows, macOS and security-scan CI failures by @bcdurak in #5400
- Prepare release 0.98.1 by @github-actions[bot] in #5398
- Add version 0.98.0 to legacy docs (#5405) by @bcdurak in #5407
- Fix heartbeat tests breaking the unit tests on pytest 9.2 (#5408) by @bcdurak in #5409
New Contributors
- @RaphaelFakhri made their first contribution in #5383
Full Changelog: 0.98.0...0.98.1