Releases: mage-ai/mage-ai
0.9.75 | Wicked 🧙♀️🧹
What's Changed
🎉 Exciting New Features
📋 Airtable Destination
Airtable as a now a destination sync in data integration pipelines. This means you can easily export your data directly to Airtable, keeping everything up to date without any hassle.
by @TalaatHasanin in https://github.com//pull/5454🐍 Support Mage in Python 3.11 and 3.12
Mage now supports Python versions 3.11 and 3.12, offering enhanced performance and access to the latest Python features for a more robust development experience.
by @csharplus in #5393
🪝 Support to multiples webhook endpoints for Microsoft Teams notification service
This enhancement allows users to send notifications to multiple Teams channels simultaneously, providing greater flexibility in notification management.
by @messerzen in #5508
🔴 Updated Redshift connector to enable merge load and correct row count
We’ve added a new configuration option, use_merge_load, to the Redshift destination connector. By default, this setting is disabled. When enabled, it first ingests data into a staging table and then merges it into the target table using Redshift’s Merge process. This feature enhances data loading flexibility and ensures accurate data integration.
by @csharplus in https://github.com//pull/5522🔍 ElasticSearch Enhancements
- Updated Elasticsearch + verify_certs connection option by @syepes in #5462
- Added support of _op_type for bulk operations of destinations by @syepes in #5482
- Elasticsearch support of _op_type for bulk operations by @syepes in #5471
- Elasticsearch - Align the doc publishing with the Standard (batch) by @syepes in #5510
🐘 Added Postgres client package
We've added a new PostgreSQL client to Mage. Now you can connect to your PostgreSQL databases more easily and reliably, making your data management smoother than ever.
by @jx2lee in #5486
🐛 Bug Fixes
- [xh]Pass OpenAI API key to OpenAI Library by @matrixstone in #5430
- [jk] Fix error detail log parsing by @johnson-mage in #5443
- [jk] Render json objects in block outputs as string instead of nested table by @johnson-mage in #5450
- [jk] Block output table cell overflow by @johnson-mage in #5451
- [Bug] Updated SalesForce source to handle multiple date formats by @tolson17 in #5493
- [jk] Handle encoded page_block_layouts and block_outputs routes by @johnson-mage in #5544
- [jk] Revert name of test environment by @johnson-mage in #5478
- [hw] Correct the SSL settings in the nats configuration template by @csharplus in #5579
- Fix encoding in GCS Integration by @TalaatHasanin in #5447
- bugfix/#5562 python data exporter failed insert 2d array to postgres by @sugimiyanto in #5563
- Fix unable to pass extra parameters to psycopg2 in Postgres connector by @kanenorman in #5449
- [hw] Avoid throwing exceptions when
block_type
is None by @csharplus in #5439 - Fix load data in GCS integration by @TalaatHasanin in #5467
💅 Enhancements & Polish
- [xh] Update python version to fix vulnerabilities by @matrixstone in #5523
- [jk] Display ID in block runs table by @johnson-mage in #5457
- [Oracle DB] Modify inefficient code that converts dataframe to list of tuples by @farmboy-dev in #5502
- [jk] Allow user to set number of lines displayed for block output sample preview by @johnson-mage in #5485
- [hw] Use
self.logger.debug
to replaceprint
to make code clean by @csharplus in #5494 - Updated Facebook Ads SDK to 20.0.2 by @jonatansthlmstratlab in #5437
- [Enhancement] io/base.py: add Excel support by @LucasGrugru in #5542
- [hw] Update deltalake to a recent version
0.20.2
by @csharplus in #5541
✨ Other Changes
- Update documentation for Git in Mage in the Getting Started section by @Lennardvb in #5459
- [hw] Use the built-in IntEnum instead of creating a new class by @csharplus in #5433
- [hw] Add time delay to avoid getting the same file timestamp for multiple changes by @csharplus in #5499
- Update text in documentation about enabling HTTPS in AWS by @Lennardvb in #5517
- Fix typos in compute-resource.mdx by @mvillaizan in #5519
- Update alerting-teams.mdx for multiples webhooks. by @messerzen in #5511
- Update README.md by @neubert-analytics in #5441
- Typo fix ai-client.mdx by @MageKai in #5582
- Add information regarding feature dependency to docs by @oscarlofwenhamn in #5584
👏 New Contributors
- @jonatansthlmstratlab made their first contribution in #5437
- @Lennardvb made their first contribution in #5459
- @syepes made their first contribution in #5471
- @jx2lee made their first contribution in #5486
- @mvillaizan made their first contribution in #5519
- @farmboy-dev made their first contribution in #5502
- @tolson17 made their first contribution in #5493
- @neubert-analytics made their first contribution in #5441
- @kanenorman made their first contribution in #5449
- @LucasGrugru made their first contribution in #5542
- @sugimiyanto made their first contribution in #5563
- @oscarlofwenhamn made their first contribution in #5584
Full Changelog: 0.9.74...0.9.75
0.9.74 | KAOS
What's Changed
🎉 Exciting New Features
☁️ Google cloud storage source
You can now effortlessly configure your data integration source blocks to Google Cloud Storage using this snippet. It specifies the destination bucket, sets the file type to Parquet, and provides the path to your service account credentials needed for authentication.
by @TalaatHasanin in #5334
🌬️ 🍽️ Airtable Integration
Effortlessly streamline your data data integration source blocks with Airtable using this tailored script. It establishes a connection to your Airtable base, designates the specific table for integration, and securely integrates your Airtable API key for access.
by @TalaatHasanin in #5404
✂️ Add trim reformat action to transformer block
A new "trim reformat" action has been added to the Python transformer block, allowing for the removal of leading and trailing whitespace from specified text columns. This enhancement ensures cleaner and more consistent data formatting by automatically stripping unnecessary spaces around text entries.
by @cristopheridlc in #5321
🐻❄️ Enable polars dataframe in GCS data exporter
This update enhances the export method of the GCS IO module, expanding its functionality to support exporting Polars DataFrames in addition to the previously supported Pandas DataFrames. This new capability allows users to seamlessly work with both data formats, offering greater flexibility in managing and exporting data from their workflows.
by @TalaatHasanin in #5348
Add support to scheduler name on k8s executor
This update adds the ability to customize Kubernetes scheduler options when using the Kubernetes Executor. Users can now directly configure scheduler settings, providing increased flexibility and control over how pods are scheduled within Kubernetes environments.
by @messerzen in #5412
🐛 Bug Fixes
- [jk] Update condition for cookie secure property by @johnson-mage in #5327
- [xy] Fix NoneType in trigger settings. by @wangxiaoyou1993 in #5329
- [xy] Fix dbt block delete request with nginx. by @wangxiaoyou1993 in #5332
- [xy] Fix API for file versions. by @wangxiaoyou1993 in #5338
- [xy] Fix schema creation when schema name is wrapped with double quotes. by @wangxiaoyou1993 in #5366
- [jk] Update test ENV value by @johnson-mage in #5372
- [xh] Add retry logic and throw if open AI API returns error by @matrixstone in #5375
- [jk] Fix typo for custom frequency in trigger review by @johnson-mage in #5392
- [td] Fix Git syncs API error returning sync_on_executor_start by @tommydangerous in #5388
- #5417 Fix bug: Can't use git with Bitbucket by @kennynguyeenx in #5418
- Dynamic block fixes
- [td] Fix index used in dynamic block by @tommydangerous in #5373
- [xy] Fix the condition of checking dynamic upstreams completed 2f2eeca
- [xy] Some updates and fixes for dynamic blocks 7eba140
- [hw] Fix a missing import issue with data types in a template for Data Exporters by @csharplus in #5377
- SASL_SSL kafka Host Name Validation by @sujiplr in #5380
💅 Enhancements & Polish
- [xy] Reduce CPU usage in scheduler. by @wangxiaoyou1993 in #5331
- [xy] Pass main pod labels to workspaces. by @wangxiaoyou1993 in #5344
- enhancement: bump duckdb to 1.0.0 by @matsonj in #5358
- Pass all SSL settings through for SASL_SSL by @csharplus in #5381
- Update unit tests to use the methods compatible with Python 3.12 by @csharplus in #5398
- Introduce StrEnum and IntEnum classes to resolve unit test failures with Python 3.11+ by @csharplus in #5397
- Add NATS credentials file authentication by @ddecaro11 in #5410
- Update a few unit tests that failed on Python 3.12 by @csharplus in #5420
- Fix kafka module related unit test failure issues in Python 3.12 by @csharplus in #5424
- Add trigger name in kwargs 81e4f91
- Expose column name related config to postgres sink config c40af5f
- [xh] Add ENV variables to turn on/off AI API by @matrixstone in #5394
Other Changes
- Update amazon-s3.mdx by @Ayumi08 in #5337
- Fix spelling in compute-resource.mdx by @samacciu23 in #5356
- Update logger.py by @vffv2000 in #5383
- [hw] Update the user guide for Kafka streaming with latest changes based on testing by @csharplus in #5378
- Update the development document to resolve one issue encountered by @csharplus in #5396
- Fixing spelling error by @benjaminhawn in #5407
New Contributors
- @cristopheridlc made their first contribution in #5321
- @TalaatHasanin made their first contribution in #5348
- @samacciu23 made their first contribution in #5356
- @matsonj made their first contribution in #5358
- @vffv2000 made their first contribution in #5383
- @benjaminhawn made their first contribution in #5407
- @ddecaro11 made their first contribution in #5410
- @Jaykold made their first contribution in #5340
- @kennynguyeenx made their first contribution in #5418
- @messerzen made their first contribution in #5412
Full Changelog: 0.9.73...0.9.74
0.9.73 | Deadpool & Wolverine 🥷🐺
What's Changed
🎉 Exciting New Features
🧠 Memory management upgrade
This feature enhances system performance and stability by optimizing allocation, deallocation, and overall utilization of RAM resources, resulting in improved efficiency and reduced memory-related errors.
Check out the doc for details.
🔄 Dynamic blocks 2.0
Introducing an enhanced Dynamic blocks feature for creating dynamic content blocks that can adapt based on user input or data changes, offering improved flexibility and interactivity for users. This update aims to streamline workflows and enhance the overall user experience by making content more responsive and customizable.
Learn more in this doc.
🔐 Azure DB connection via Key Vault
Securely retrieve a database connection URL stored in Azure Key Vault using environment variables for authentication.
AZURE_KEY_VAULT_URL
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_TENANT_ID
by @wangxiaoyou1993 in #5302
👁️ Workspace monitoring
Add an "Overview" page and "Pipeline runs" page to the Workspace Management UI. This provides some overall monitoring for all of the pipeline runs in the different workspaces without having to individually open up each workspace instance.
by @johnson-mage in #5311
🐛 Bug Fixes
- [td] Fix editor v2 page by @tommydangerous in #5222
- [jk] Add specific lodash dependency version by @johnson-mage in #5237
- [xy] Don't force cast type to int or float. by @wangxiaoyou1993 in #5254
- [xy] Some fixes for using requests base path. by @wangxiaoyou1993 in #5265
- [xy] Update the file content API implementation. by @wangxiaoyou1993 in #5267
- [jk] Default command center item by @johnson-mage in #5275
- [jk] Include base path when loading favicon by @johnson-mage in #5286
- [xy] Only run memory usage failure check when executor type is local python by @wangxiaoyou1993 in #5300
- [xy] Fix kernel interruption. by @wangxiaoyou1993 in #5301
- [jk] Differentiate current_user local storage by @johnson-mage in #5294
- [td] Fix blocks waiting and when fetching upstream w/ no output by @tommydangerous in #5307
💅 Enhancements & Polish
- [td] Canvas nodes by @tommydangerous in #5199
- [td] Menus and more by @tommydangerous in #5227
- Models and API for execution framework by @tommydangerous in #5230
- [xy] Pipeline execution for execution framework by @wangxiaoyou1993 in #5239
- [xy] Interpolate the sql profile. by @wangxiaoyou1993 in #5252
- [xy] Allow optional block groups. by @wangxiaoyou1993 in #5279
- [jk] Cookie session updates by @johnson-mage in #5289
- [xy] Add all upstream dbt blocks when adding a dbt block by @wangxiaoyou1993 in #5290
- [xy] Support customizing node selector in k8s config. by @wangxiaoyou1993 in #5304
✨ Other Changes
- [tc] Update releases.mdx by @thomaschung408 in #5234
- Update using-terraform.mdx by @tk26 in #5235
- [xy] Resolve CVE-2024-35225 by @wangxiaoyou1993 in #5236
- Add create_dataset parameter to Bigquery #5197 by @gracia10 in #5218
- [jk] Add back yarn.lock file by @johnson-mage in #5256
- [jk] Remove unused api/cleaner dir by @johnson-mage in #5291
- [td] Remove fake executables by @tommydangerous in #5308
- [xy] Add export frontend job in github action by @wangxiaoyou1993 in #5313
- [xy] Fix export frontend job by @wangxiaoyou1993 in #5314
- [xy] Remove circleci job. by @wangxiaoyou1993 in #5315
- [xy] Create PR instead of push directly to master branch for frontend build. by @wangxiaoyou1993 in #5317
- [CI] Update frontend build by @github-actions in #5318
- [xy] Bump version to 0.9.73 by @wangxiaoyou1993 in #5312
🆕 New Contributors
- @tk26 made their first contribution in #5235
- @gracia10 made their first contribution in #5218
- @github-actions made their first contribution in #5318
Full Changelog: 0.9.72...0.9.73
0.9.72 | House Targaryen 🐉
What's Changed
🎉 Exciting New Features
🎨 Canvas v2
Navigate large or complex layouts with a new canvas that allows developers to zoom, pan, drag, and drop visual features.
by @tommydangerous in #5193
🐍 Support custom python sink in Streaming pipeline
Support for custom Python sinks in streaming pipelines allows users to write their own streaming sink implementations, providing greater flexibility in how processed data is handled at the end of the pipeline.
by @lgarcia11 in #5174
Allow configuring custom owner credentials
This feature allows users to configure custom owner credentials for their application by setting specific environment variables:
DEFAULT_OWNER_EMAIL
DEFAULT_OWNER_PASSWORD
DEFAULT_OWNER_USERNAME
by @wangxiaoyou1993 in #5165
🐛 Bug Fixes
- [xy] Fix delete/update workspace. by @wangxiaoyou1993 in #5146
- [td] Fix Dockerfile to install faster fifo from source by @tommydangerous in #5152
- [xy] Fix import and add user to verify_project. by @wangxiaoyou1993 in #5151
- [xy] Fix auto_clean_name param. by @wangxiaoyou1993 in #5161
- [xy] Bump the version of dbt-sqlserver to 1.7.4 by @wangxiaoyou1993 in #5162
- [xy] Fix api trigger token comparison. by @wangxiaoyou1993 in #5167
- [td] Update Snowflake timeout to network_timeout by @tommydangerous in #5173
- [xy] Fix executor type when not specified. by @wangxiaoyou1993 in #5175
- [td] Disable playright, never finishes no windows server 3.10 by @tommydangerous in #5190
- [xy] Fix global data product in single project. by @wangxiaoyou1993 in #5205
- [td] Revert Next _app back before breaking change by @tommydangerous in #5207
- [td] Put back Monaco Editor files by @tommydangerous in #5208
💅 Enhancements & Polish
- [xy] Update pypi github action by @wangxiaoyou1993 in #5145
- [td] Magic Kernel using server-sent events to execute code from client by @tommydangerous in #5131
- [td] Standalone Monaco editor by @tommydangerous in #5160
- [td] Integrate LSP by @tommydangerous in #5163
- [xy] Allow configuring AZURE_HOST for authentication. by @wangxiaoyou1993 in #5166
- [xy] Upgrade polars package version by @wangxiaoyou1993 in #5176
- [td] Grid layout v2 by @tommydangerous in #5168
- [td] System browser by @tommydangerous in #5177
- [xy] Speed up Pipeline get and list. by @wangxiaoyou1993 in #5187
- [xy] Speed up autocomplete endpoint with cache. by @wangxiaoyou1993 in #5188
- [td] Browser items API by @tommydangerous in #5189
- [td] Fix styles and integrate real files by @tommydangerous in #5184
- [td] Fix app manager and app loading by @tommydangerous in #5191
- [td] IDE CRUD operations by @tommydangerous in #5192
- [xy] Custom kubernetes job prefix by @wangxiaoyou1993 in #5195
- [xy] Try using xlarge in circleci. by @wangxiaoyou1993 in #5206
✨ Other Changes
- Added repo_path to block kwargs and os.environ, improves multi-project feature by @hugabora in #5144
- [td] DLS v2 by @tommydangerous in #5147
- Updated Variable Name for Cohesion by @Ayumi08 in #5148
- Remove leading whitespace from Telegram notification message (Issue #4877) by @Ayumi08 in #5153
- docs: fix markdown formatting by @ValentinOtt in #5059
- [tc] Update community-examples.mdx by @thomaschung408 in #5172
- [td] System browser context menu by @tommydangerous in #5178
- [cf] Updates to schedules doc by @colefreeman in #5212
- Revert "[xy] Upgrade polars package version" by @wangxiaoyou1993 in #5213
🆕 New Contributors
- @Ayumi08 made their first contribution in #5148
- @ValentinOtt made their first contribution in #5059
- @colefreeman made their first contribution in #5171
- @lgarcia11 made their first contribution in #5174
Full Changelog: 0.9.71...0.9.72
0.9.71 | X-Men ❌
What's Changed
🎉 Exciting New Features
📡 Add Streaming Oracle Destination
This feature adds a new custom exporter option for OracleDB allowing developers to easily export their streaming data to Oracle DB.
by @matrixstone in #4896
👤 Multi Project Platform Support
This feature adds support for each user to have their own active project within a multi project platform that keeps track of every project for every user.
⚙️ Support Job Parameters in K8s Executor
Adds support to help manage environment variables, and control job execution and cleanup policies within the Kubernetes cluster.
k8s_executor_config:
container_config:
image: mageai/mageai:0.9.7
env:
- name: USER_CODE_PATH
value: /home/src/k8s_project
job:
active_deadline_seconds: 120
backoff_limit: 3
ttl_seconds_after_finished: 86400
🔑 Support OIDC_ROLES_MAPPING and user_roles
This feature is used to map roles obtained from an OpenID Connect (OIDC) identity provider to roles used within your application allowing for a standardized way to manage user roles across different identity providers.
by @mihaivint in #5053 and #4899
💅 Enhancements & Polish
- Optimize CPU and memory usage
- [xy] Disable autoreload in non-dev environments to reduce CPU usage. by @wangxiaoyou1993 in #5136
- [xy] Reduce CPU usage in scheduler. by @wangxiaoyou1993 in #5137
- [td] Memory upgrades by @tommydangerous in #5092
- [td] Track resource usage and run block execution function in a context by @tommydangerous in #5105
- Improve page performance
- [xy] Some improvements on multi project by @wangxiaoyou1993 in #5063
- [xy] Cache project platform settings data in API calls. by @wangxiaoyou1993 in #5079
- [xy] Speed up pipeline update endpoint. by @wangxiaoyou1993 in #5125
- Improve dynamic blocks
- [td] Dynamic blocks use the new memory enhancements by @tommydangerous in #5106
- [td] Dynamic block stream mode by @tommydangerous in #5121
- [td] Dynamic block resilience by @tommydangerous in #5113
- [xy] Support configuring logs_dir_path in environment variable. by @wangxiaoyou1993 in #5018
- [dy] Add prune option for fetch by @dy46 in #5014
- [xy] Include server and scheduler process id in status response. by @wangxiaoyou1993 in #5027
- [xy] Add pipeline_run_id to kwargs. by @wangxiaoyou1993 in #5030
- [xy] Allow configuring authentication mode in mssql config. by @wangxiaoyou1993 in #5051
- Reload libraries when running blocks from edit pipeline by @hugabora in #4953
- [xy] Support configuring concurrency config via env vars. by @wangxiaoyou1993 in #5057
- [jk] Improve visibility of variable/secret names by @johnson-mage in #5072
- relax pytz version requirements by @alex-hunsaker in #5006
- upgrade deltalake for tableMerger by @oonyoontong in #5020
- [td] Turn off unoptimized images by @tommydangerous in #5082
- Add pipeline_schedule_description variable to notification sender by @hjhdaniel in #5118
🐛 Bug Fixes
- [xy] Exclude dropped columns from the postgres schema discovery query. by @wangxiaoyou1993 in #5002
- [xy] Fix None Bigquery database error. by @wangxiaoyou1993 in #5005
- [xy] Fix extracting table name from INSERT statement in SQL block. by @wangxiaoyou1993 in #5008
- [xy] Catch yaml interpolation error. by @wangxiaoyou1993 in #5012
- [xy] Not run insert query for empty dataframe. by @wangxiaoyou1993 in #5017
- [dy] Fix git and seed issues by @dy46 in #5025
- [xy] Fix custom template issue on server start. by @wangxiaoyou1993 in #5038
- [xy] Comment out flaky unit tests by @wangxiaoyou1993 in #5046
- [jk] Allow files to be selected for pipeline zip import by @johnson-mage in #5042
- [dy] Update git email field by @dy46 in #5045
- [dy] Fix circular dependency by @dy46 in #5050
- [td] Update charts and make a ton of bug fixes by @tommydangerous in #5075
- [td] Fix IDE outputs by @tommydangerous in #5088
- [td] Fix git issue by @tommydangerous in #5089
- Td fix git2 by @tommydangerous in #5090
- [td] Upgrade deltalake because of Docker image build error by @tommydangerous in #5091
- [xy] Fix websocket authentication. by @wangxiaoyou1993 in #5094
- [td] Fix interpolating dictionaries when adding custom code to ide execution by @tommydangerous in #5095
- [xy] Fix switching active kernel by @wangxiaoyou1993 in #5098
- [xy] Fix retry in streaming pipeline. by @wangxiaoyou1993 in #5099
- [xy] Fix performance issue of fetching variables. by @wangxiaoyou1993 in #5108
- [jk] Fix max concurrent runs value for backfill by @johnson-mage in #5115
- [xy] Fix circular dependency. by @wangxiaoyou1993 in #5122
- [td] Don’t raise error if can’t load by @tommydangerous in #5132
- [xy] Fix custom template creation. by @wangxiaoyou1993 in #5134
- [xy] Fix variables API and BaseEnum by @wangxiaoyou1993 in #5135
- [td] Fix after on pipeline dashboard by @tommydangerous in #5142
- [td] Fix after panel showing up everywhere by @tommydangerous in #5143
- [td] Fix charts when using Spark by @tommydangerous in #5028
- [xy] Not show locals in CLI exception. by @wangxiaoyou1993 in #5009
- [dy] Remove error pop up by @dy46 in #5015
- [td] Fix interactions, triggers, dynamic blocks, charts, and more by @tommydangerous in #5064
- [td] Fix infer variables by @tommydangerous in #5102
- Escaping Backslashes when interpolating code content by @jimilp7 in #5112
✨ New Contributors
- @alex-hunsaker made their first contribution in #5006
- @mihaivint made their first contribution in #4899
- @stefaan1o made their first contribution in #5034
- @richardlhughes made their first contribution in #5033
- @artche made their first contribution in #5044
- @CLHdevOps made their first contribution in #5077
- @jimilp7 made their first contribution in #5112
Full Changelog: 0.9.70...0.9.71
0.9.70 | Fallout ☢️
What's Changed
🎉 Exciting New Features
💥 Add "Last run failed" filter to Pipeline Runs table
This feature adds a new filter option to the Pipeline Runs table, allowing users to easily view and filter pipeline runs that have failed in their most recent execution. This makes it simpler to identify and troubleshoot problematic pipelines.
by @johnson-mage in #4926
🛠️ Add workspace update features
This feature allows users to update the workspace settings (environment variables) and update the workspace main container config from the UI. Being able to update the container config will allow users to update the workspace image as well.
🔄 Add upsert to MySQL, BQ, and Snowflake
Add ability to upsert data in MySQL, BigQuery, and Snowflake IO classes.
It can be achieved by specifying the following params in the export method:
unique_conflict_method='UPDATE',
unique_constraints=['col'],
⚠️ Support alerts and limited retries in streaming pipeline
Streaming pipeline used to be retried automatically and infinitely.
With this feature, when retry_config
is set in streaming pipeline's metadata.yaml at pipeline level, only retry the streaming pipeline with limited times and send alerts when pipeline fails.
Example retry config
retry_config:
# Number of retry times
retries: 3
# Initial delay (in seconds) before retry. If exponential_backoff is true,
# the delay time is multiplied by 2 for the next retry
delay: 5
# Maximum time between the first attempt and the last retry
max_delay: 60
# Whether to use exponential backoff retry
exponential_backoff: true
by @wangxiaoyou1993 in #4902
🔑 Add setting to update user roles on login
This feature adds the UPDATE_ROLES_ON_LOGIN
setting which will tell Mage to update the roles every time a user logs in using LDAP or OAuth (that supports roles mapping). If LDAP or OAuth returns no roles, the roles for the user will not be updated.
🐛 Bug Fixes
- [dy] Catch JSON decode errors in mage targets by @dy46 in #4838
- [dy] Fix permission seed by @dy46 in #4846
- [jk] Replace Block reference with BlockFactory by @johnson-mage in #4850
- [jk] Fix block search add block error by @johnson-mage in #4855
- [xy] Fix spark dataframe read error. by @wangxiaoyou1993 in #4856
- [jk] Fix filters from being reset when items fetched by @johnson-mage in #4859
- [xy] Support cancelling jobs when using multiple replicas. by @wangxiaoyou1993 in #4861
- [xy] Fix updating pipeline content with unicode. by @wangxiaoyou1993 in #4864
- [xy] Fix dangling process when reloading webserver. by @wangxiaoyou1993 in #4866
- [jk] Multi-project platform project settings updates by @johnson-mage in #4878
- [xy] Refresh block run statuses before fetching crashed block runs. by @wangxiaoyou1993 in #4885
- Fix: add template for oracle export by @matrixstone in #4892
- [xy] Catch pipeline error in scheduler. by @wangxiaoyou1993 in #4911
- [dy] Create metadata.yaml file if it doesn't exist by @dy46 in #4884
- [xy] Fix dynamic block with great expectation block. by @wangxiaoyou1993 in #4913
- [dy] Fix duckdb sql by @dy46 in #4915
- [xy] Fix log based sync with uppercase columns. by @wangxiaoyou1993 in #4922
- [jk] Prevent renamed triggers in code from being duplicated by @johnson-mage in #4929
- [td] Lots of fixes and enhancements by @tommydangerous in #4937
- [xy] Skip checking memory in Windows. by @wangxiaoyou1993 in #4944
- [xy] Check type key in anyOf array objects. by @wangxiaoyou1993 in #4948
- [dy] Avoid creating duplicate admin user by @dy46 in #4949
- [xy] Fix downloading xlsx file. by @wangxiaoyou1993 in #4957
- [jk] Bugfix - Dependency tree layout by @johnson-mage in #4961
- [xy] Fix logging tags for streaming pipeline run. by @wangxiaoyou1993 in #4963
- [xy] Catch notification send exceptions. by @wangxiaoyou1993 in #4964
- [dy] Remove git dependency by @dy46 in #4959
- [jk] Cancel unsaved modified file dialogue by @johnson-mage in #4975
- [xy] Always set logger in different blocks separately. by @wangxiaoyou1993 in #4974
- [dy] Fix more git issues by @dy46 in #4980
- [xy] Fix k8s affinity parsing. by @wangxiaoyou1993 in #4985
- [xy] Fix encoding for block action object. by @wangxiaoyou1993 in #4987
- [xy] Fix None job manager. by @wangxiaoyou1993 in #4995
- [dy] Remove unused submodule by @dy46 in #4984
- [dy] Fix some git bugs by @dy46 in #4973
- Update jupyter-server-proxy to fix CVE-2024-28179 by @lqc in #4967
- Trino iceberg and delta lake array issues fix along with issue 4895 and other improvements by @sumanshusamarora in #4952
- [edw] Fix typo in Kafka streaming source by @edmondwinston in #4918
- [dy] Cast ambiguous columns to strings by @dy46 in #4857
- Bugfix/okta authorization url discovery by @moseswynn in #4810
- Update ads_insights_age_and_gender.json by @sumanshusamarora in #4891
- [dy] Use project uuid for workspace default permissions by @dy46 in #4843
- [dy] Update oauth token column type by @dy46 in #4933
💅 Enhancements & Polish
- [xy] Use executor type from pipeline level when block level executor is not set by @wangxiaoyou1993 in #4968
- [jk] Replace blue font with cyan in terminal by @johnson-mage in #4848
- [xy] Kill all jobs on scheduler crash. by @wangxiaoyou1993 in #4851
- [td] Update GX and other libraries to support higher versions of Pydantic by @tommydangerous in #4860
- [xy] Update snowflake destination datetime to use TIMESTAMP type. by @wangxiaoyou1993 in #4875
- [jk] Block output view option by @johnson-mage in #4883
- [jk] Only make specific files request with ArcaneLibrary by @johnson-mage in #4888
- Caching pipeline_project outside of loop to avoid multple lookups by @hugabora in #4887
- [jk] Remove pipeline_runs request appearing on different pages by @johnson-mage in #4890
- [xy] Add measurement to influxdb source. by @wangxiaoyou1993 in #4893
- [jk] Add visibility into project config loading errors by @johnson-mage in #4894
- [jk] Hide header actions on sign-in page by @johnson-mage in #4904
- [jk] Disallow numbers as first character of block names by @johnson-mage in #4914
- [jk] Triggers table UI fixes by @johnson-mage in #4934
- [xy] Support interpolating trigger name in k8s job name. by @wangxiaoyou1993 in #4947
- [xy] Only send failure notification when pipeline run status is failed. by @wangxiaoyou1993 in #4950
- [jk] Backfills table improvements by @johnson-mage in #4942
- [xy] Improve the performance of Postgres source metadata query. by @wangxiaoyou1993 in #4962
- [jk] Allow disabling pipeline autosave by @johnson-mage in #4988
- [xy] Support query pipelines wi...
0.9.68 | Invincible 🦸♂️
What's Changed
🎉 Exciting New Features
🐍 Custom python source in Streaming pipeline
This feature allows users to use custom Python source code in their Streaming pipelines, which provides more flexibility and control for advanced users who need to incorporate custom logic or functionality into their streaming pipelines. Here is the code template:
from mage_ai.streaming.sources.base_python import BasePythonSource
from typing import Callable
if 'streaming_source' not in globals():
from mage_ai.data_preparation.decorators import streaming_source
@streaming_source
class CustomSource(BasePythonSource):
def init_client(self):
"""
Implement the logic of initializing the client.
"""
def batch_read(self, handler: Callable):
"""
Batch read the messages from the source and use handler to process the messages.
"""
while True:
records = []
# Implement the logic of fetching the records
if len(records) > 0:
handler(records)
by @wangxiaoyou1993 in #4763
📦 OracleDB exporter
Add OracleDB exporter template to standard batch pipeline.
by @matrixstone in #4785
🔧 Server logging format template overriding
This feature enables users to override the default server logging format template in Mage. This provides more flexibility in customizing the logging output, which can be useful for troubleshooting, monitoring, or integrating with external logging systems.
Here is an example setting:
export SERVER_LOGGING_TEMPLATE=$'%(asctime)s\t[%(name)25.25s]\t%(levelname)5s: %(message)s'
🔄 Update pipeline name before pipeline creation
Allow user to edit the pipeline name and add a description/tags before creating a new pipeline. Previously, a randomized name was always used for new pipelines, and then users had to go to the pipeline's settings to update the name.
by @johnson-mage in #4790
🐛 Bug Fixes
- [jk] Add check to avoid rendering of invalid JSX element by @johnson-mage in #4755
- [dy] Fix GitLab auth issues by @dy46 in #4760
- [jk] Increase visibility of code block context menu by @johnson-mage in #4768
- [dy] Check status response for REQUIRE_USER_AUTHENTICATION by @dy46 in #4782
- [xy] Fix exporting dataframe to bigquery. by @wangxiaoyou1993 in #4783
- [xy] Catch job manager init error. by @wangxiaoyou1993 in #4784
- [dy] Add all parent block variables to the add on block by @dy46 in #4747
- [dy] Fix clickhouse destination by @dy46 in #4788
- [jk] Bugfixes - table render / rename destination block by @johnson-mage in #4797
- [dy] Update API trigger url by @dy46 in #4800
- [dy] Load pipeline tags from config by @dy46 in #4806
- [xy] Fix insert command for trino deltalake array type. by @wangxiaoyou1993 in #4819
- [jk] Fix unclickable dbt sql file in dbt v1 model select by @johnson-mage in #4822
- [xy] Raise ImportError when spark is not supported. by @wangxiaoyou1993 in #4825
- [xy] Fix mongodb source typo. by @wangxiaoyou1993 in #4833
- [jk] Configure dbt v2 yaml block and other dbt code block improvements by @johnson-mage in #4834
- [xy] Fix writing polars dataframe to gcs storage. by @wangxiaoyou1993 in #4839
- [xy] Create snowflake temp table like original table. by @wangxiaoyou1993 in #4802
- [jk] Bugfix pipeline tag cache by @johnson-mage in #4841
- [xh] Oracle fix issue: incremental datetime bookmark fetch fails by @matrixstone in #4816
- [jk] Clear block_uuid query param when selecting new block by @johnson-mage in #4844
- [dy] Add sign in check to index.tsx by @dy46 in #4781
- [dy] Fix SSO sign in for frontend build by @dy46 in #4794
- [dy] Put cache in try/except by @dy46 in #4796
- [dy] Fix slack notifications with stacktrace by @dy46 in #4826
- [dy] Update config_overwrite by @dy46 in #4811
💅 Enhancements & Polish
- [xh] OracleDB thick mode support in standard pipeline by @matrixstone in #4701
- [jk] Limit number of block output files read and included in pipeline response by @johnson-mage in #4758
- [xy] Only show sql logs in debug environment. by @wangxiaoyou1993 in #4789
- [xy] Interpolate global vars in k8s executor namespace by @wangxiaoyou1993 in #4792
- [enhancement] mongodb stream full_document config option by @moseswynn in #4793
- [xy] Improve the performance of loading dbt blocks. by @wangxiaoyou1993 in #4807
- [jk] Avoid N dbt config option requests for N blocks on Pipeline Editor by @johnson-mage in #4812
- [xy] Speed up backend requests. by @wangxiaoyou1993 in #4815
- [xy] Test kafka connection when initializing the consumer. by @wangxiaoyou1993 in #4832
- [xy] Make path_to_credential optional in GCS logger. by @wangxiaoyou1993 in #4837
- [dy] Expire certain pipeline runs by @dy46 in #4727
- [dy] Add pagination to workspace roles by @dy46 in #4799
- [dy] Improve elasticsearch speed by @dy46 in #4824
✨ New Contributors
- @afal007 made their first contribution in #4772
- @moseswynn made their first contribution in #4793
Full Changelog: 0.9.66...0.9.68
0.9.66 | Shogun 🎌
What's Changed
🎉 Exciting New Features
🗑️ Delete backfills
- Add delete button to backfills table that allows user to delete backfills individually.
- Prevent user from setting a backfill interval unit value less than 1, which could cause issues loading the backfills.
by @johnson-mage in #4726
🪪 Support AzureDevOps using Entra ID/AD authentication
If you have an Azure DevOps organization connected to your Active Directory/Microsoft Entra ID tenant, you can enable DevOps in the version control app.
- First, you will need to enable the Active Directory integration in order for Mage to authenticate your user.
- Once the Active Directory integration is enabled, you simply need to add your DevOps organization as an environment variable, and you should be able to authenticate with DevOps in the version control app
export AZURE_DEVOPS_ORGANIZATION=<organization_name>
📅 Scheduler status endpoint
Add /api/status
endpoint to scheduler when running scheduler in standalone mode.
This endpoint can be used to check the liveness of the scheduler.
by @wangxiaoyou1993 in #4736
🔐 Read authentication settings from AWS secrets manager
Add support for reading settings from AWS secrets manager. The existing authentication settings have been moved to using the new Settings class.
In order to set the settings backend, the user will need to add a section to the project metadata. Here is an example to set the setting backend to AWS secrets manager:
settings_backend:
backend_type: aws_secrets_manager
prefix: default_repo/settings/
Read the doc for details.
💅 Enhancements & Polish
- [jk] Limit block output for dynamic blocks in UI by @johnson-mage in #4693
- [xy] Add auto clean name flag to io classes. by @wangxiaoyou1993 in #4698
- [dy] Add interval variables for cron based schedules by @dy46 in #4699
- [dy] Add error stack trace to the message for pipeline run failure by @dy46 in #4697
- [dy] Add unique_conflict_method for mssql by @dy46 in #4712
- [jk] Scrollbar polish by @johnson-mage in #4732
- [xy] Remove Redshift stl insert query. by @wangxiaoyou1993 in #4735
- [edw] e2e test: load pages no errors by @edmondwinston in #4429
- [dy] Share main project logging config with workspaces by @dy46 in #4656
🐛 Bug Fixes
- [jk] Fix "filter is not a function" type error in schema props by @johnson-mage in #4686
- [xy] Fix list index out of range for dynamic blocks. by @wangxiaoyou1993 in #4688
- [xy] Set default domain for salesforce source by @wangxiaoyou1993 in #4689
- [dy] Handle JSON reading errors for elasticsearch by @dy46 in #4696
- [dy] Add try/except by @dy46 in #4683
- [jk] Update backfill policy to allow update on settings by @johnson-mage in #4706
- [dy] Fix logging for elasticsearch destination by @dy46 in #4709
- [xy] Add upstream_dbt_blocks method back to DBTBlockSQL. by @wangxiaoyou1993 in #4711
- [jk] Bugfix for pipeline interactions by @johnson-mage in #4710
- [xy] Catch sync schedules exception. by @wangxiaoyou1993 in #4717
- [xy] Fix pipeline metadata encoding issue. by @wangxiaoyou1993 in #4718
- [jk] Fix buggy pipeline dashboard by @johnson-mage in #4714
- Bugfix: Fix migration crash when using MSSQL as mage database by @tuokor in #4695
- [xy] Set repo_path when syncing trigger configs. by @wangxiaoyou1993 in #4719
- [jk] Allow file to be opened in Pipeline Editor without Command Center enabled by @johnson-mage in #4728
- [jk] Bugfix dock overlay by @johnson-mage in #4733
- [dy] Display error on oauth by @dy46 in #4734
- [jk] Avoid client error when making request before interactions are done loading by @johnson-mage in #4744
- Trino temp table location fix - Fixes issue #4738 by @sumanshusamarora in #4739
- [xy] Fix alter Snowflake table with lower_case=false by @wangxiaoyou1993 in #4750
- [jk] Fix block run sorting by @johnson-mage in #4751
- [dy] Fix sign in issue by @dy46 in #4753
- [dy] Fix elasticsearch destination by @dy46 in #4687
- fix the incorrect spelling by @ckfear in #4680
- [Bug] Resolve "parsing error" in the trino.mdx screen by @devharipragaz007 in #4702
- Pyarrow version conflicts from Snowflake connector by @Jawahars in #4707
- [dy] Update access token user queries and add tests by @dy46 in #4713
- bug fix with stripe sync by @sumanshusamarora in #4748
✨ New Contributors
- @devharipragaz007 made their first contribution in #4702
- @Jawahars made their first contribution in #4707
- @tuokor made their first contribution in #4695
Full Changelog: 0.9.65...0.9.66
0.9.65 | Demon Slayer 🐗 ⚔️
What's Changed
🎉 Exciting New Features
🔔 Telegram notification
Support for setting up Telegram notification channel for alerts is now available.
Check out the doc for details
by @luthfir-rahman in #4632
🔄 Runtime variables and concurrency config in Backfills
Backfills support configuring global variables override and concurrency limit is now available.
☁️ Export raw files to S3 and GCS
Using S3 and GCS data exporter templates, you can now directly upload raw files in addition to dataframes.
bucket_name = 'test-bucket'
object_key = 'test_file_copy.csv'
S3.with_config(ConfigFileLoader(config_path, config_profile)).export(
'/home/src/test_file.csv',
bucket_name,
object_key,
)
GoogleCloudStorage.with_config(ConfigFileLoader(config_path, config_profile)).export(
'/home/src/test_file.csv',
bucket_name,
object_key,
)
by @wangxiaoyou1993 in #4607
🐛 Bug Fixes
- Luthfir/discord notification by @luthfir-rahman in #4590
- [xy] Support exporting to mysql with selected columns. by @wangxiaoyou1993 in #4605
- [xy] Update the port check to use specified host. by @wangxiaoyou1993 in #4606
- [xy] Set default host when checking port. by @wangxiaoyou1993 in #4610
- [dy] Refactor duplicate git code by @dy46 in #4611
- [jk] Fix unclickable minimized windows by @johnson-mage in #4613
- [dy] Attempt to resolve network issues by @dy46 in #4620
- [jk] Fix block caching when renaming/detaching blocks by @johnson-mage in #4626
- [jk] Update tag and block cache when cloning pipeline by @johnson-mage in #4627
- [jk] Various bugfixes for pipeline search and filter by @johnson-mage in #4631
- [xy] Use milliseconds in parquet by default. by @wangxiaoyou1993 in #4634
- Fixed MongoDB reading input by @Luishfs in #4639
- Fixed random input inside singer destinations by @Luishfs in #4642
- [jk] Fix double scrollbars and draggable height by @johnson-mage in #4643
- [jk] UI bugfixes on Version Control page by @johnson-mage in #4644
- [dy] Fix unit test logging by @dy46 in #4630
- [dy] Add DB locking by @dy46 in #4629
- [jk] Bugfixes for Overview Dashboard by @johnson-mage in #4659
- [jk] Bugfix for save block shortcut by @johnson-mage in #4667
- Fixed postgreSQL reserved words by @Luishfs in #4640
- [dy] Minor workspace fixes by @dy46 in #4658
- [jk] Sync block contents for replica block when minimizing by @johnson-mage in #4672
- Incorrect spelling for the word level in documentation by @Sa1tyBiscuit in #4635
💅 Enhancements & Polish
- [xy] Support filtering google sheets by sheet names by @wangxiaoyou1993 in #4604
- [xy] Combine schedulers. by @wangxiaoyou1993 in #4614
- [xy] Separate scheduler logs and pipeline logs. by @wangxiaoyou1993 in #4621
- [xy] Update initial load of log_based replication to use incremental sync by @wangxiaoyou1993 in #4623
- [jk] Redirect to login page immediately by @johnson-mage in #4662
- [jk] Clean up chart block widths in Pipeline Editor by @johnson-mage in #4665
- [xy] Support extra connection arguments in mysql source and destination. by @wangxiaoyou1993 in #4668
- [xy] Fix image build by @wangxiaoyou1993 in #4671
- Add DEFAULT_EXECUTOR_TYPE by @danieldiamond in #4597
- [dy] Filter out sensitive config by @dy46 in #4594
- mage_ai/io MSSQL connection: add support for DATETIMEOFFSET by @hugabora in #4619
- [xy] Bump up more versions to resolve vulnerabilities. by @wangxiaoyou1993 in #4444
New Contributors
- @danieldiamond made their first contribution in #4597
- @carillpower made their first contribution in #4625
- @Sa1tyBiscuit made their first contribution in #4635
Full Changelog: 0.9.64...0.9.65
0.9.64 | Maestro 🎵
What's Changed
🎉 Exciting New Features
🔭 OpenTelemetry integration
- Added OpenTelemetry Libraries: Integrated OpenTelemetry Python libraries to instrument the application for telemetry data collection.
opentelemetry-api
: Provides the API for tracing and metrics.opentelemetry-sdk
: The core SDK for OpenTelemetry in Python.opentelemetry-instrumentation
: General instrumentation library.opentelemetry-instrumentation-sqlalchemy
: Specific for instrumenting SQLAlchemy operations.opentelemetry-instrumentation-tornado
: For monitoring Tornado-based HTTP server activities.
- Environment Variables: Added new environment variables (
OTEL_EXPORTER_OTLP_HTTP_ENDPOINT
andOTEL_EXPORTER_OTLP_ENDPOINT
) for configuring the OpenTelemetry Collector endpoints. - Database and HTTP Server Instrumentation: Configured instrumentation for both SQLAlchemy database operations and Tornado HTTP server activities to gather traces and metrics.
- Check out this doc for more details
by @mfreeman451 in #4476
🦊 Add GitLab authentication to version control
Support authenticating with GitLab in version control app.
The feature can be enabled by configuring the following environment variables:
GITLAB_HOST
GITLAB_CLIENT_ID
GITLAB_CLIENT_SECRET
🔔 Discord notification integration
Support setting up Discord notification channel for alerts.
Check out the doc for details
by @luthfir-rahman in #4478
🔑 Add OIDC generic provider
This feature allows users to hook up their OIDC server (e.g. Keycloak ) and use it to authenticate with Mage.
It can be enabled by configuring the following environment variables:
OIDC_CLIENT_ID
OIDC_CLIENT_SECRET
OIDC_DISCOVERY_URL
🐛 Bug Fixes
- [xy] Use utc time as the default time for monitor_stats. by @wangxiaoyou1993 in #4554
- Fix Google Ads Catalog to Data Integration Block by @Luishfs in #4565
- [jk] Load custom design logo by @johnson-mage in #4574
- [dy] Adjust alembic logger initialization by @dy46 in #4552
- [dy] Add support for AWS codecommit by @dy46 in #4568
- [dy] Fix frontend crashing issues by @dy46 in #4573
- [xy] Set max width for yaml file to inf. by @wangxiaoyou1993 in #4576
- [dy] Fix DBT logging by @dy46 in #4577
- [dy] Show the load balancer ingress host if there is no host in the ingress rules by @dy46 in #4575
- [xy] Match postgres logical replication records with stream name. by @wangxiaoyou1993 in #4588
💅 Enhancements & Polish
- Added reserved words settings to PostgreSQL by @Luishfs in #4142
- [xy] Improve google sheets source. by @wangxiaoyou1993 in #4561
- [jk] Reuse callback and conditional blocks by @johnson-mage in #4562
- [xy] Show pandas datetime in iso format in notebook. by @wangxiaoyou1993 in #4564
- [xy] Add case_sensitive param to the sql export method. by @wangxiaoyou1993 in #4569
- [xy] Create TEMP Snowflake table in data integration destination by @wangxiaoyou1993 in #4578
- [dy] Misc workspace/git improvements by @dy46 in #4583
- [dy] Update user authentication for subprojects by @dy46 in #4586
New Contributors
- @luthfir-rahman made their first contribution in #4478
Full Changelog: 0.9.63...0.9.64