Skip to content

Clean up Dag View banners - #74516

Merged
bbovenzi merged 1 commit into
apache:mainfrom
astronomer:pr/dag-header-status-chips
Oct 19, 2026
Merged

bbovenzi merged 1 commit into
apache:mainfrom
astronomer:pr/dag-header-status-chips

Conversation

@bbovenzi

@bbovenzi bbovenzi commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

We had too banner banners and buttons telling you some status for backfills, hitl, a deactivated dag, import errors , or a dag draining. This PR consolidates them.

Backfills -> removed banner, pause/stop controls are in the backfill tab now
Draining -> Already shown in the Next Run stat
Dag Import Error + Deactivated: moved to an inline badge in the breadcrumb. Name changes if its stale or has an error
HITL: Same button as the dags list

Before:
Screenshot 2026-10-09 at 1 57 18 PM

After:
Screenshot 2026-10-14 at 5 48 04 PM
Screenshot 2026-10-14 at 5 46 12 PM
Screenshot 2026-10-14 at 5 43 39 PM
Screenshot 2026-10-14 at 5 36 13 PM
Screenshot 2026-10-14 at 5 35 58 PM


Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)
    Claude Opus 5

  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

@boring-cyborg boring-cyborg Bot added the area:UI Related to UI/UX. For Frontend Developers. label Oct 9, 2026
@bbovenzi
bbovenzi marked this pull request as ready for review October 9, 2026 18:39
@ashb

ashb commented Oct 9, 2026

Copy link
Copy Markdown
Member

Suggestion, Make it say "Backfills (n)"? (n is how many running+to do? Something slightly "more" than just a tab is my thinking

The one downside to this, is if you have anything (run, TI etc) selected, there is no longer any indication that backfils are still happening.

I don't know if that is important or not, just an observation

@bbovenzi

Copy link
Copy Markdown
Contributor Author

Actually, we had empty space in the grid view. So I put it there since thats where you usually look for an active dag run.

Screenshot 2026-10-12 at 2 04 46 PM

@pierrejeambrun pierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for consolidating these, the header reads much cleaner! A few things I noticed while testing it locally:

  • In graph view, I think we lose any sign that a backfill is running, since the new badge lives in the grid header only (ashb's earlier point). Could we show it somewhere that's visible in both views?
  • The backfill badge now polls on every tick, even when there's no backfill (inline below).
  • Smaller points on the chip severity and a couple of unused branches, inline.

Comment thread airflow-core/src/airflow/ui/src/components/DagDeactivatedChip.tsx Outdated
Comment thread airflow-core/src/airflow/ui/src/components/DrainingBadge.tsx Outdated
Comment thread airflow-core/src/airflow/ui/src/components/StatusChip.tsx Outdated
@bbovenzi bbovenzi added this to the Airflow 3.4.0 milestone Oct 14, 2026
@bbovenzi bbovenzi added the backport-to-v3-4-test Backport to v3-4-test label Oct 14, 2026
@bbovenzi
bbovenzi force-pushed the pr/dag-header-status-chips branch from c510836 to e89a0d7 Compare October 14, 2026 21:26
@bbovenzi

Copy link
Copy Markdown
Contributor Author

Okay I updated a few pieces.

Backfill in Progress is only on the Dag Header card. It isn't necessary for it to be on a dag run or task instance level

I also removed the Retry Reason banner to be a stat on a Task Instance Header card.

@pierrejeambrun pierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM thanks

Dag, Dag-run and task-instance headers had accumulated full-width banners that
stack on each other and repeat across pages. Draining and the pending review
indicator each had two separate implementations, so the same concept rendered
differently depending on which page you were on.

The approach follows review feedback on apache#74131: keep the short status inline
and put the detail behind the control that reports it. Each status now sits
where it can be read without crowding what it qualifies -- the deactivation
marker ahead of the breadcrumb, the backfill notice beside the Dag's name, the
retry reason among the task instance's own facts.

Reparse was previously hidden on a Dag that had failed to parse, which is the
state where it is most useful. A plugin that fails to load no longer replaces
the page with an error.

Co-Authored-By: Claude <noreply@anthropic.com>
@bbovenzi
bbovenzi force-pushed the pr/dag-header-status-chips branch from e89a0d7 to 283dcb1 Compare October 19, 2026 14:55
@bbovenzi
bbovenzi merged commit 7fbcfee into apache:main Oct 19, 2026
77 checks passed
@bbovenzi
bbovenzi deleted the pr/dag-header-status-chips branch October 19, 2026 16:37
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-4-test

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

Status Branch Result
✅ v3-4-test PR Link

github-actions Bot pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Oct 19, 2026
…apache#74516)

Dag, Dag-run and task-instance headers had accumulated full-width banners that
stack on each other and repeat across pages. Draining and the pending review
indicator each had two separate implementations, so the same concept rendered
differently depending on which page you were on.

The approach follows review feedback on apache#74131: keep the short status inline
and put the detail behind the control that reports it. Each status now sits
where it can be read without crowding what it qualifies -- the deactivation
marker ahead of the breadcrumb, the backfill notice beside the Dag's name, the
retry reason among the task instance's own facts.

Reparse was previously hidden on a Dag that had failed to parse, which is the
state where it is most useful. A plugin that fails to load no longer replaces
the page with an error.
(cherry picked from commit 7fbcfee)

Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Claude <noreply@anthropic.com>
aws-airflow-bot pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Oct 19, 2026
…apache#74516)

Dag, Dag-run and task-instance headers had accumulated full-width banners that
stack on each other and repeat across pages. Draining and the pending review
indicator each had two separate implementations, so the same concept rendered
differently depending on which page you were on.

The approach follows review feedback on apache#74131: keep the short status inline
and put the detail behind the control that reports it. Each status now sits
where it can be read without crowding what it qualifies -- the deactivation
marker ahead of the breadcrumb, the backfill notice beside the Dag's name, the
retry reason among the task instance's own facts.

Reparse was previously hidden on a Dag that had failed to parse, which is the
state where it is most useful. A plugin that fails to load no longer replaces
the page with an error.
(cherry picked from commit 7fbcfee)

Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Claude <noreply@anthropic.com>
bbovenzi added a commit that referenced this pull request Oct 19, 2026
…#74516) (#75125)

Dag, Dag-run and task-instance headers had accumulated full-width banners that
stack on each other and repeat across pages. Draining and the pending review
indicator each had two separate implementations, so the same concept rendered
differently depending on which page you were on.

The approach follows review feedback on #74131: keep the short status inline
and put the detail behind the control that reports it. Each status now sits
where it can be read without crowding what it qualifies -- the deactivation
marker ahead of the breadcrumb, the backfill notice beside the Dag's name, the
retry reason among the task instance's own facts.

Reparse was previously hidden on a Dag that had failed to parse, which is the
state where it is most useful. A plugin that fails to load no longer replaces
the page with an error.
(cherry picked from commit 7fbcfee)

Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Claude <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Oct 20, 2026
…#74516) (#75125)

Dag, Dag-run and task-instance headers had accumulated full-width banners that
stack on each other and repeat across pages. Draining and the pending review
indicator each had two separate implementations, so the same concept rendered
differently depending on which page you were on.

The approach follows review feedback on #74131: keep the short status inline
and put the detail behind the control that reports it. Each status now sits
where it can be read without crowding what it qualifies -- the deactivation
marker ahead of the breadcrumb, the backfill notice beside the Dag's name, the
retry reason among the task instance's own facts.

Reparse was previously hidden on a Dag that had failed to parse, which is the
state where it is most useful. A plugin that fails to load no longer replaces
the page with an error.
(cherry picked from commit 7fbcfee)

Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Claude <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Oct 25, 2026
* UI: Fix visual and console-error bugs in Dag list and details

These are pre-existing bugs, all found while testing an unrelated change and
all in the same corner of the UI, so they travel together rather than as a
handful of one-line pull requests.

Several survived review because nothing asserted on them: the Gantt axis only
collided its React keys on runs of roughly twenty seconds or less, the warnings
marker only stretched on a Dag that actually had a warning, and the HITL tab
lookup only logged its 404 on a task that was not human-in-the-loop. Each now
has a test that fails without its fix.

The Dag status markers are consolidated because #74516 moved every other Dag
status onto the shared StatusChip and left this one behind. That left two
markers that looked identical, sat in different containers, and meant different
things, with no single place to see everything wrong with a Dag.

Co-Authored-By: Claude <noreply@anthropic.com>

* UI: Address review on the Dag status chip and warning translations

The merged status chip was introducing the same class of console error the rest
of the change removes. Rich detail was rendered inside a paragraph, which cannot
hold the blocks the import-error view brings, so the browser closed the
paragraph early and the file row inherited an error colour and type scale meant
only for the traceback. Tests now fail on React's markup warnings instead of
letting them scroll past in CI output, which is what let this through: the test
that opens that very modal was passing while logging two nesting errors.

Three assertions could not fail as written. One searched for a nested button
only inside the inner button, so restoring the old wrapper would have gone
unnoticed; one asked for a chip named after a deactivation that the import-error
branch can never produce; one opened the modal for a failed request without
checking the failure reached it.

Warning types reached the heading as the backend's own lowercase enum values,
which would have shown untranslated English in every locale, so they are
translated now rather than passed through. The chip and its modal each walked
the severity order themselves and would have disagreed the moment one changed.

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
github-actions Bot pushed a commit to aws-mwaa/upstream-to-airflow that referenced this pull request Oct 25, 2026
…ails (apache#75418)

* UI: Fix visual and console-error bugs in Dag list and details

These are pre-existing bugs, all found while testing an unrelated change and
all in the same corner of the UI, so they travel together rather than as a
handful of one-line pull requests.

Several survived review because nothing asserted on them: the Gantt axis only
collided its React keys on runs of roughly twenty seconds or less, the warnings
marker only stretched on a Dag that actually had a warning, and the HITL tab
lookup only logged its 404 on a task that was not human-in-the-loop. Each now
has a test that fails without its fix.

The Dag status markers are consolidated because apache#74516 moved every other Dag
status onto the shared StatusChip and left this one behind. That left two
markers that looked identical, sat in different containers, and meant different
things, with no single place to see everything wrong with a Dag.

Co-Authored-By: Claude <noreply@anthropic.com>

* UI: Address review on the Dag status chip and warning translations

The merged status chip was introducing the same class of console error the rest
of the change removes. Rich detail was rendered inside a paragraph, which cannot
hold the blocks the import-error view brings, so the browser closed the
paragraph early and the file row inherited an error colour and type scale meant
only for the traceback. Tests now fail on React's markup warnings instead of
letting them scroll past in CI output, which is what let this through: the test
that opens that very modal was passing while logging two nesting errors.

Three assertions could not fail as written. One searched for a nested button
only inside the inner button, so restoring the old wrapper would have gone
unnoticed; one asked for a chip named after a deactivation that the import-error
branch can never produce; one opened the modal for a failed request without
checking the failure reached it.

Warning types reached the heading as the backend's own lowercase enum values,
which would have shown untranslated English in every locale, so they are
translated now rather than passed through. The chip and its modal each walked
the severity order themselves and would have disagreed the moment one changed.

Co-Authored-By: Claude <noreply@anthropic.com>

---------
(cherry picked from commit da4fafc)

Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Claude <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Oct 25, 2026
…ails (#75418) (#75593)

* UI: Fix visual and console-error bugs in Dag list and details

These are pre-existing bugs, all found while testing an unrelated change and
all in the same corner of the UI, so they travel together rather than as a
handful of one-line pull requests.

Several survived review because nothing asserted on them: the Gantt axis only
collided its React keys on runs of roughly twenty seconds or less, the warnings
marker only stretched on a Dag that actually had a warning, and the HITL tab
lookup only logged its 404 on a task that was not human-in-the-loop. Each now
has a test that fails without its fix.

The Dag status markers are consolidated because #74516 moved every other Dag
status onto the shared StatusChip and left this one behind. That left two
markers that looked identical, sat in different containers, and meant different
things, with no single place to see everything wrong with a Dag.



* UI: Address review on the Dag status chip and warning translations

The merged status chip was introducing the same class of console error the rest
of the change removes. Rich detail was rendered inside a paragraph, which cannot
hold the blocks the import-error view brings, so the browser closed the
paragraph early and the file row inherited an error colour and type scale meant
only for the traceback. Tests now fail on React's markup warnings instead of
letting them scroll past in CI output, which is what let this through: the test
that opens that very modal was passing while logging two nesting errors.

Three assertions could not fail as written. One searched for a nested button
only inside the inner button, so restoring the old wrapper would have gone
unnoticed; one asked for a chip named after a deactivation that the import-error
branch can never produce; one opened the modal for a failed request without
checking the failure reached it.

Warning types reached the heading as the backend's own lowercase enum values,
which would have shown untranslated English in every locale, so they are
translated now rather than passed through. The chip and its modal each walked
the severity order themselves and would have disagreed the moment one changed.



---------
(cherry picked from commit da4fafc)

Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UI Related to UI/UX. For Frontend Developers. backport-to-v3-4-test Backport to v3-4-test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants