<div align="center">
<img src="https://github.com/mage-ai/mage-ai/assets/59450879/a20e6f84-9cae-46d1-b849-52bbdc845935" width="65%">
</div>
What's Changed
π Exciting New Features
π New SSO/OAuth providers
<div align="center">
<img src="https://github.com/mage-ai/mage-ai/assets/59450879/9e8f95c6-5d5b-4869-b5f3-8b2e30d8d645" width="30%"/>
</div>
<div align="center">
<img src="https://github.com/mage-ai/mage-ai/assets/59450879/46488e77-2e61-4375-befd-7a5bd74d270c" width="30%"/>
</div>
<br/>
With our latest release, Mage now supports SSO/OAuth from not one, but _two_ providersβ Okta & Google. Our engineers also thought ahead, laying the groundwork for supporting more providers in the future, too! Check out the docsβ [Google](https://docs.mage.ai/production/authentication/google) & [Okta](https://docs.mage.ai/production/authentication/okta).
_by dy46 in https://github.com/mage-ai/mage-ai/pull/3921_
π₯ Compute management for Apache Spark blocks
<div align="center">
<img src="https://github.com/mage-ai/mage-ai/assets/59450879/e77d1df7-8ec8-4a08-803a-aa806e10fb81" width="65%">
</div>
Tommy is back at it with another _massive_ PR, this one adding full support for compute management in Apache Spark blocks. For those of you who leverage Spark, this PR will allow you fine-grained control over your compute. Keep an eye out for completely revamped EMR functionality in the near future!
_by tommydangerous in https://github.com/mage-ai/mage-ai/pull/3883_
π€ HuggingFace AI Client
<div align="center">
<img src="https://github.com/mage-ai/mage-ai/assets/59450879/c4d00071-d453-4e64-a50c-9824f1e2ff97" width="75%">
</div>
Mage now supports using different AI models for interfaces within the applicaiton, not just OpenAI! The first we've added is a HuggingFace client... You can now use HuggingFace with Mage's AI functionality! Read more about getting started [here](https://docs.mage.ai/guides/ai/ai-client).
_by matrixstone in https://github.com/mage-ai/mage-ai/pull/3850 and https://github.com/mage-ai/mage-ai/pull/3919_
𧱠Azure Databricks Delta Lake Destination
<div align="center">
<img src="https://github.com/mage-ai/mage-ai/assets/59450879/3452a517-7806-47d4-a506-da7ffe9bf245" width="75%">
</div>
π Mage now supports Azure Databricks Delta Lake as a destination for data integration pipelines! That means you can write all of your favorite sources to the open, parquet-based storage system on Microsofts cloud infrastructure!
_by Luishfs in https://github.com/mage-ai/mage-ai/pull/3932_
π Prometheus Metrics
<div align="center">
<img src="https://github.com/mage-ai/mage-ai/assets/59450879/4ee96ea1-b3d0-4b5a-8c19-4f2ecf425a96" width="75%">
</div>
Prometheus style metrics are a vendor neutral standard based on a pull model. Prometheus-enabled servers output time-series data on a route (usually /metrics), which can be scraped. Being an open standard, most monitoring tools know how to interface with Prometheus metrics (Open Telemetry support them too).
You can learn more about Prometheus here:
- https://prometheus.io/docs/concepts/data_model/
- https://github.com/prometheus/docs/blob/main/content/docs/instrumenting/exposition_formats.md
This PR enables the basic built-in metrics, which cover the Tornado server (http metrics) and the Python runtime. More metrics can be added in the future! Check out our docs [here](https://docs.mage.ai/integrations/observability/prometheus#prometheus-metrics).
_by adelcast in https://github.com/mage-ai/mage-ai/pull/3910_
π Bug Fixes
* Inject global and pipeline variables in the keyword arguments for extension blocks by tommydangerous in https://github.com/mage-ai/mage-ai/pull/3917
* Fixed Stripe `INCREMENTAL` run and updated tap by Luishfs in https://github.com/mage-ai/mage-ai/pull/3835
* Break `while` loop when not raising error on failure for pipeline triggered by code by johnson-mage in https://github.com/mage-ai/mage-ai/pull/3933
* Make 2nd argument of lambda function optional by tommydangerous in https://github.com/mage-ai/mage-ai/pull/3941
* Update git settings permissions by dy46 in https://github.com/mage-ai/mage-ai/pull/3935
* Fix saving tokens when creating triggers with code by dy46 in https://github.com/mage-ai/mage-ai/pull/3938
* Misc workspace changes by dy46 in https://github.com/mage-ai/mage-ai/pull/3931
* Fix MongoDB destination and add unit test by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3944
* Fix SQL destination reserved words by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3951
* Fix notebook block ordering for upstream blocks by tommydangerous in https://github.com/mage-ai/mage-ai/pull/3955
* Fix Dockerfile and API when using EMR by tommydangerous in https://github.com/mage-ai/mage-ai/pull/3960
* Fix unit tests warnings and errors by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3961
* Clean column name when using batch load in Snowflake destination by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3968
* Serialize Snowflake dataframe `dict` column to `json` if column type is `string` by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3969
* Move dbt seed logic to downstream block by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3953
* Fix project dashboard overview count formatting by johnson-mage in https://github.com/mage-ai/mage-ai/pull/3980
* Fix pipeline scheduler for integration pipelines by dy46 in https://github.com/mage-ai/mage-ai/pull/3981
* Fix roles getting overwritten when updating profile by dy46 in https://github.com/mage-ai/mage-ai/pull/3982
* Fix tree for data integration pipeline by tommydangerous in https://github.com/mage-ai/mage-ai/pull/3986
* Minor bug fix in Pinot config on `io_config.yaml` by shrutimantri in https://github.com/mage-ai/mage-ai/pull/3970
π
Enhancements & Polish
* Support pipeline level EMR config by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3922
* Add keyboard shortcuts for inserting new scratchpad cell by anniexcheng in https://github.com/mage-ai/mage-ai/pull/3926
* Add colour code for pipeline backfills by edmondwinston in https://github.com/mage-ai/mage-ai/pull/3904
* Show dependency graph zoom options by anniexcheng in https://github.com/mage-ai/mage-ai/pull/3899
* Update how global data products are run by dy46 in https://github.com/mage-ai/mage-ai/pull/3872
* Consistent run status colors across tables by johnson-mage in https://github.com/mage-ai/mage-ai/pull/3940
* Enable users to cancel in progress runs when disabling a pipeline trigger by anniexcheng in https://github.com/mage-ai/mage-ai/pull/3905
* Allow getting instance type from environment variable by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3949
* Include Monaco Editor in build to avoid fetching from CDN by johnson-mage in https://github.com/mage-ai/mage-ai/pull/3916
* Interpolate variables and upstream block output in dbt commands by tommydangerous in https://github.com/mage-ai/mage-ai/pull/3945
* Update `duckdb` version by dy46 in https://github.com/mage-ai/mage-ai/pull/3959
* Update backfill variables by johnson-mage in https://github.com/mage-ai/mage-ai/pull/3963
* Always show "Overwrite global variables" setting when editing a trigger by johnson-mage in https://github.com/mage-ai/mage-ai/pull/3973
* Add pipeline run limit for a pipeline by dy46 in https://github.com/mage-ai/mage-ai/pull/3868
* Use personal access token if available by dy46 in https://github.com/mage-ai/mage-ai/pull/3974
* Add exception failure message in callbacks by dy46 in https://github.com/mage-ai/mage-ai/pull/3952
* Support override `assignPublicIp` and `enableExecuteCommand` in EcsConfig by wangxiaoyou1993 in https://github.com/mage-ai/mage-ai/pull/3966
* Add kafka `api_version` to the data loader and data exporter templates by shrutimantri in https://github.com/mage-ai/mage-ai/pull/3967
**Full Changelog**: https://github.com/mage-ai/mage-ai/compare/0.9.43...0.9.45