This is an automated email from the ASF dual-hosted git repository. kaxilnaik pushed a commit to branch v3-1-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit a701a3756df37784d1873a9c81581ee2d8f66c53 Author: Kaxil Naik <kaxiln...@apache.org> AuthorDate: Tue Sep 9 00:03:23 2025 -0600 Add release notes for 3.1.0b1 --- RELEASE_NOTES.rst | 326 ++++++++++++++++++++++++++++++++++++++++++++++++ reproducible_build.yaml | 4 +- 2 files changed, 328 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst index 97310ce20cc..dd6674201a3 100644 --- a/RELEASE_NOTES.rst +++ b/RELEASE_NOTES.rst @@ -24,6 +24,332 @@ .. towncrier release notes start +Airflow 3.1.0b1 (2025-09-08) +---------------------------- + +Significant Changes +^^^^^^^^^^^^^^^^^^^ + +Human in the Loop (HITL) +"""""""""""""""""""""""" + +Airflow 3.1 introduces :doc:`Human-in-the-Loop (HITL) </tutorial/hitl>` functionality that enables +workflows to pause and wait for human decision-making. This powerful feature is particularly valuable for +AI/ML workflows, content moderation, and approval processes where human judgment is essential. + +HITL tasks pause execution in a ``deferred`` state while waiting for human input via the Airflow UI. Users +with appropriate roles can see pending tasks, review context (including ``XCom`` data and ``DAG`` parameters), and +complete actions through intuitive web forms. The feature also supports API-driven interactions for custom +UIs and notification integration. + +For detailed usage instructions, see :doc:`/tutorial/hitl`. + +**Note**: HITL operators require ``apache-airflow-providers-standard`` package and Airflow 3.1+. + +Task SDK Decoupling for Independent Upgrades +""""""""""""""""""""""""""""""""""""""""""""" + +Airflow 3.1 advances the decoupling of the Task SDK from Airflow Core through +improved DAG serialization with versioned contracts. While complete code separation is planned for Airflow 3.0.2, +the serialization foundation enables independent upgrades when components are deployed separately. + +**For DAG Authors**: Import constructs from ``airflow.sdk`` namespace: +- ``from airflow.sdk import DAG, task, asset`` +- Access to latest authoring features with forward compatibility +- Reduced dependency on server-side Airflow versions + +**For Platform Teams**: Foundation for independent upgrades: +- Schema compliance ensures compatibility across versions +- Deployment flexibility when components are separated +- Reduced coordination overhead between development and operations teams + +For technical details on the serialization contract, see :doc:`/administration-and-deployment/dag-serialization`. + +Deadline Alerts +""""""""""""""" + +Deadline Alerts provide proactive monitoring for DAG execution by automatically triggering notifications +when time thresholds are exceeded. This helps ensure SLA compliance and timely completion of critical workflows. + +Configure deadline monitoring by specifying: + +- **Reference point**: Choose from DAG run queued time, logical date, or fixed datetime +- **Interval**: Time threshold relative to the reference point (positive or negative) +- **Callback**: Response action using Airflow Notifiers or custom functions + +Example use cases: +- Alert if a daily ETL hasn't completed 1 hour after its scheduled time +- Notify stakeholders 30 minutes before a critical deadline +- Escalate when resource-constrained DAGs remain queued too long + +For configuration details and examples, see :doc:`/howto/deadline-alerts`. + +**Warning**: Deadline Alerts are experimental in 3.1 and may change in future versions based on user feedback. + +UI Internationalization +""""""""""""""""""""""" + +Airflow 3.1 delivers comprehensive internationalization (``i18n``) support, making the web interface +accessible to users worldwide. The React-based UI now supports 14 languages with robust translation infrastructure. + +**Supported Languages**: +- Arabic +- Catalan +- German +- English +- Spanish +- French +- Hebrew +- Hindi +- Hungarian +- Korean +- Dutch +- Polish +- Traditional Chinese +- Turkish + +The translation system includes automated completeness checking and clear contribution guidelines for community translators. + +React Plugin System (AIP-68) +""""""""""""""""""""""""""""" + +Airflow 3.1 introduces a modern plugin architecture enabling rich integrations through React components and +external views. This extensibility framework allows organizations to embed custom dashboards, +monitoring tools, and domain-specific interfaces directly within the Airflow UI. + +**New Plugin Capabilities**: +- **React Apps**: Full-featured React applications integrated into Airflow navigation +- **External Views**: Embed external web applications via iframe with seamless authentication +- **Dashboard Integration**: Custom widgets and panels for operational dashboards +- **Menu Integration**: Add custom navigation items and organize tools logically + +**Developer Experience**: +- Hot reloading during development with ``airflow-react-plugin`` dev tools +- TypeScript support and modern React patterns +- Standardized plugin loading and validation +- Comprehensive documentation and boilerplate generation + +This plugin system replaces legacy Flask-based approaches with modern web standards, improving performance, +maintainability, and user experience. + +For more details and examples, see :doc:`/howto/custom-view-plugin`. + +Enhanced UI Views and Filtering +"""""""""""""""""""""""""""""""" + +Airflow 3.1 brings Calendar and Gantt chart views to the modern React UI, along with comprehensive filtering +capabilities. The Calendar and Gantt views from Airflow 2.x have been rebuilt for the modern React UI, +along with enhanced filtering capabilities across all views. + +Inference Execution (Synchronous DAGs) +"""""""""""""""""""""""""""""""""""""" + +Airflow 3.1 introduces a new streaming API endpoint that allows applications to watch DAG runs until completion, +enabling more responsive integration patterns for real-time and inference workflows. + +**New Streaming Endpoint**: +The ``/dags/{dag_id}/dagRuns/{dag_run_id}/wait`` endpoint repeatedly emits JSON updates at specified intervals until the DAG run reaches a finished state. + +.. code-block:: bash + + # Watch a DAG run with 2-second polling interval, including XCom results + curl -X GET "http://localhost:8080/api/v2/dags/ml_pipeline/dagRuns/manual_2024_01_15/wait?result=inference_task" \ + -H "Accept: application/x-ndjson" + +This enables use cases like: + +- **ML Inference Monitoring**: Trigger inference DAGs and wait for completion before returning results +- **Real-time Processing**: Monitor event-driven workflows with immediate response requirements +- **API Integration**: Build responsive services that react to DAG completion without polling +- **Synchronous Workflows**: Create quasi-synchronous behavior for workflows that need immediate feedback + +New Trigger Rule: ``ALL_DONE_MIN_ONE_SUCCESS`` +"""""""""""""""""""""""""""""""""""""""""""""" + +``ALL_DONE_MIN_ONE_SUCCESS``: This rule triggers when all upstream tasks are done (success, failed, or skipped) and +at least one has succeeded, filling a gap between existing trigger rules for complex workflow patterns. + +Enhanced DAG Processing Visibility +""""""""""""""""""""""""""""""""""" + +DAG parsing duration is now exposed in the UI, providing better visibility into DAG processing +performance and helping identify parsing bottlenecks. This information is displayed alongside +other DAG metadata to assist with performance optimization. + +Python 3.13 support added & 3.9 support removed +""""""""""""""""""""""""""""""""""""""""""""""" + +Support for Python 3.9 has been removed, as it has reached end-of-life. +Airflow 3.1.0 requires Python 3.10, 3.11, 3.12 or 3.13. + +New Features +^^^^^^^^^^^^ + +- Add Calendar and Gantt chart views to modern React UI with enhanced filtering (#54252, #51667) +- Add Python 3.13 support for Airflow runtime and dependencies (#46891) +- Add ``SQLAlchemy 2.0`` support with various compatibility fixes (#52233, #52518, #54940) +- Add support for the ``psycopg3`` postgres driver (#52976) +- Add ability to track & display user who triggers DAG runs (#51738, #53510, #54164, #55112) +- Add toggle for log grouping in task log viewer for better organization (#51146) +- Add tag filtering improvements with Any/All selection options (#51162) +- Add comprehensive filtering for DAG runs, task instances, and audit logs (#53652, #54210, #55082) +- Add ``XCom`` browsing with filtering and improved navigation (#54049) +- Add bulk task instance actions and deletion endpoints (#50443, #50165, #50235) +- Add DAG run deletion functionality through UI (#50368) +- Add test connection button for connection validation (#51055) +- Add hyperlink support for URLs in XCom values (#54288) +- Add pool column to task instances list and improve pool integration (#51185, #51031) +- Add drag-and-drop log grouping and improved log visualization (#51146) +- Add color support for XCom JSON display (#51323) +- Add configuration column to DAG runs page (#51270) +- Add enhanced note visibility and management in task headers (#51764, #54163) +- Introduce React plugin system (AIP-68) for modern UI extensions (#52255) +- Add support for external view plugins via iframe integration (#51003, #51889) +- Add dashboard integration capabilities for custom React apps (#54131, #54144) +- Add comprehensive plugin development tools and documentation (#53643) +- Implement complete HITL operator suite (``HITLOperator``, ``ApprovalOperator``, ``HITLEntryOperator``) for human decision workflows (#52868) +- Add HITL UI integration with role-based access and form handling (#53035) +- Add HITL API endpoints with filtering and query support (#53376, #53923) +- Add HITL utility functions for generating URLs to required actions page (#54827) +- Add ordering and filtering support for HITL details endpoints (#55217) +- Add "No Response Received" required action state (#55149) +- Add operator filter for HITL task instances (#54773) +- Implement deadline alert system for proactive DAG monitoring (AIP-86) (#53951, #53903, #53201, #55086) +- Add configurable reference points and notification callbacks (#50677, #50093) +- Add deadline calculation and tracking in DAG execution lifecycle (#51638, #50925) +- Add comprehensive UI translation support for 14 languages (#51266, #51038, #51219, #50929, #50981, #51793) +- Add right-to-left (RTL) layout support for Arabic and Hebrew (#51376) +- Add language selection interface and browser preference detection (#51369) +- Add translation completeness validation and automated checks (#51166, #51131) +- Add calendar data API endpoints for DAG execution visualization (#52748) +- Add endpoint to watch DAG runs until completion (#51920) +- Add DAG run ID pattern search functionality (#52437) +- Add multi-sorting capabilities for improved data navigation (#53408) +- Add bulk connection deletion API and UI (#51201) +- Add task group detail pages across DAG runs (#50412, #50309) +- Add asset event tracking with last event timestamps (#50060, #50279) +- Add ``has_import_errors`` filter to Core API GET ``/dags`` endpoint (#54563) +- Add dag_version filter to get_dag_runs endpoint (#54882) +- Add pattern search for event log endpoint (#55114) +- Add dry_run support with consistent audit log handling (#55116) +- Add utility functions for generic filter counting (#54817) +- Add keyboard navigation for Grid view interface (#51784) +- Add improved error handling for plugin import failures (#49643) +- Add enhanced variable management with upsert operations (#48547) +- Add favorites/pinning support for DAG dashboard organization (#51264) +- Add system theme support with automatic OS preference detection (#52649) +- Add hotkey shortcut to toggle between Grid and Graph views (#54667) +- Add queued DAGs filter button to DAGs page (#55052) +- Add DAG parsing duration visibility in UI (#54752) +- Add owner links support in DAG Header UI for better navigation (#50627) +- Add ``dag_display_name`` aliases for improved API consistency (#50332, #50065, #50014, #49933, #49641) +- Add enhanced search capabilities with SearchParamsKeys constants (#55218) +- Add ALL_DONE_MIN_ONE_SUCCESS trigger rule for flexible task dependencies (#53959) +- Add fail_when_dag_is_paused parameter to TriggerDagRunOperator for better control (#48214) +- Add ``XCom`` validation to prevent empty keys in ``XCom.set()`` and ``XCom.get()`` operations (#46929) +- Add collapsible plugin menu when multiple plugins are present (#55265) +- Add external view plugin categories (admin, browse, docs, user) (#52737) +- Add iframe plugins integration to DAG pages (#52795) +- Add plugin error display in UI with comprehensive error handling (#49643, #49436) +- Add collapsible failed task logs to prevent React error overflow (#54377) +- Add dynamic legend system for calendar view (#55155) +- Add React UI for Edge functionality (#53563) +- Add pending actions display to DAG UI (#55041) +- Add description field for filter parameters (#54903) +- Add Catalan language support to Airflow UI (#55013) +- Add Hungarian language support to Airflow UI (#54716) +- Add map_index validation in categorize_task_instances (#54791) +- Add Grid view UX improvements (#54846) +- Add HITL UX improvements for better user experience (#54990) +- Add async support for Notifiers (AIP-86) (#53831) +- Add filtering capabilities for tasks view (#54484) +- Add asset-based filtering support to DAG API endpoint (#54263) +- Add iframe plugins to navigation (#51706) +- Add RTL (right-to-left) layout support for Arabic and Hebrew (#51376) +- Add test connection button to UI (#51055) +- Add task instance bulk actions endpoint (#50443) +- Add connection bulk deletion functionality (#51201) +- Add pool column to task instances list (#51185) +- Add ``iframe_views`` to backend plugin support (#51003) +- Add keyboard shortcuts to clear and mark state for task instances and DAG runs (#50885) +- Add deadline relationship to DAG runs and deadline model (#50925, #50093) +- Add DAG run deletion UI (#50368) +- Add task instance deletion UI and endpoint (#50235, #50165) +- Switch all airflow logging to structlog (#52651, #55434, #55431) + +Bug Fixes +^^^^^^^^^ + +- Fix DAG list filtering to include ``QUEUED`` runs with null ``start_date`` (#52668) +- Fix XCom deletion failure for mapped task instances through bulk deletion API (#51850) +- Fix XCom deletion failure for mapped task instances (#54954) +- Fix task timeout handling within task SDK (#54089) +- Fix task instance tries API duplicate entries (#50597) +- Fix connection validation and type checking during construction (#54759) +- Fix mapped task instance index display in Task Instances tab (#55363) +- Fix Gantt chart state mismatch with Grid view (#55300) +- Fix Gantt chart status color display issues (#55296) +- Fix XCom mapping for dynamically-mapped task groups (#51556) +- Fix missing ``ti_successes`` and related metrics in Airflow 3.0 Task SDK (#55322) +- Fix bulk operation permissions for connection, pool and variable (#55278) +- Fix ``clearTaskInstances`` API: Restore ``include_past``/``future`` support on UI (#54416) +- Fix migration when XCom has NaN values (#53812) +- Fix HITL related UI schema generated by prek hooks (#55204) +- Fix consistent no-log handling for tasks with try_number=0 in API and UI (#55035) +- Fix timezone conversion in datetime trigger parameters (#54593) +- Fix audit log payload for DAG pause/unpause actions (#55091) +- Fix pushing None as an XCom value (#55080) +- Fix scheduler processing of cleared running tasks stuck in RESTARTING state (#55084) +- Fix XCom deletion failure for mapped task instances (#54954) +- Fix outgoing graph edges should exit opposite of incoming edges (#54789) +- Fix external links in Navigation buttons (#52220) +- Fix Error when viewing DAG details of a no longer configured bundle (#52086) +- Fix compatibility with new numpy and pandas versions (#52071) +- Fix connection recovery from URI when host has protocol (#51953) +- Fix last DAG run not showing on DAG listing (#51115) +- Fix task instance tries API returning duplicate entries (#50597) +- Fix Graph view vanishing and loading issues (#53886, #54756) +- Fix rendered template display formatting for better readability (#53657) +- Fix Grid view expand/collapse button functionality (#54257) +- Fix tooltip visibility and positioning issues (#53913) +- Fix grid keyboard navigation focus management (#54271) +- Fix plugin registration for invalid objects and middleware registration (#55264, #55399) +- Fix external links for plugins with undefined URL routes (#55221) +- Fix language display consistency and flag representation (#51560, #51177) +- Fix RTL layout rendering for Arabic and Hebrew interfaces (#51853) +- Fix graph export cropping when view is partial (#55012) + +Miscellaneous +^^^^^^^^^^^^^ + +- Move secrets masker to shared distribution for better modularity (#54449) +- Move email notifications from scheduler to DAG processor for better architecture (#55238) +- Add graph UI load optimization with latest run info endpoint (#53429) +- Optimize UI bundle size by moving translations to dynamic loading (#51735) +- Relocate Task SDK components for improved separation (#55174, #54795) +- Refactor trigger rule utilities and weight rule consolidation (#54797, #53393) +- Remove deprecated Airflow 2.x modules and legacy imports (#50482) +- Clean up unused code and improve module organization (#52176, #52173, #53031) +- Add SQLAlchemy 2.0 CI support for future compatibility (#52233) +- Improve test fixtures and SDK communication testing (#54795, #50603) +- Add translation completeness linting and validation tools (#51166) +- Upgrade to latest versions of important dependencies (#55350) +- Move webserver configuration options to API section (#50693, #50656) +- Improve DAG bundle handling and versioning support (#47592) +- Add database management CLI tools for external database operations (#50657) +- Add comprehensive HITL operator documentation and examples (#54618) +- Add guards for registering middlewares from plugins (#55399) +- Optimize Gantt group expansion with debouncing and deferred rendering (#55334) + +Doc Only Changes +^^^^^^^^^^^^^^^^ + +- Add comprehensive Human-in-the-Loop operator tutorial and examples (#54618) +- Add deadline alerts configuration and usage documentation (#53727) +- Make term Dag consistent in docs task-sdk (#55100) +- Add DAG bundles triggerer limitation documentation (#55232) +- Add deadline alerts usage guides and best practices (#53727) + Airflow 3.0.6 (2025-08-29) -------------------------- diff --git a/reproducible_build.yaml b/reproducible_build.yaml index 5e91bc02e84..fab917ace5d 100644 --- a/reproducible_build.yaml +++ b/reproducible_build.yaml @@ -1,2 +1,2 @@ -release-notes-hash: 5608b8ff344d72dd3417308a3d711c8a -source-date-epoch: 1756939245 +release-notes-hash: d342a6b6afd8a4b9e3d2641ee10cf369 +source-date-epoch: 1757454290