This is an automated email from the ASF dual-hosted git repository.
kaxil pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 15adc8a492a Add Durable Execution to the registry header navigation
(#76775)
15adc8a492a is described below
commit 15adc8a492a6919f608995194474ac2d91284875
Author: Kaxil Naik <[email protected]>
AuthorDate: Tue Nov 10 11:31:15 2026 +0000
Add Durable Execution to the registry header navigation (#76775)
Link the cross-provider durable and deferrable operators page from the
top-level menu next to Providers, and retitle the page and its existing
links (Explore, Stats) to Durable Execution.
Six links don't fit beside the logo and search below 1024px, so the full
nav now starts at 1024px and narrower screens get the menu button. That
menu rendered beside the header instead of under it, because the
#site-header nav rules also matched it; it now drops down below the
header, left-aligned with the logo.
---
registry/src/_includes/base.njk | 2 ++
registry/src/css/main.css | 41 +++++++++++++++++++++++++++--------------
registry/src/durable.njk | 4 ++--
registry/src/explore.njk | 2 +-
registry/src/stats.njk | 2 +-
5 files changed, 33 insertions(+), 18 deletions(-)
diff --git a/registry/src/_includes/base.njk b/registry/src/_includes/base.njk
index 74553ffcf4c..6fda8fe52be 100644
--- a/registry/src/_includes/base.njk
+++ b/registry/src/_includes/base.njk
@@ -61,6 +61,7 @@
<nav>
<a href="{{ '/providers/' | url }}">Providers</a>
+ <a href="{{ '/durable/' | url }}">Durable Execution</a>
<a href="{{ '/stats/' | url }}">Stats</a>
<a href="{{ '/explore/' | url }}">Explore</a>
<a href="{{ '/api-explorer/' | url }}">API Explorer</a>
@@ -97,6 +98,7 @@
<nav id="mobile-nav">
<a href="{{ '/providers/' | url }}">Providers</a>
+ <a href="{{ '/durable/' | url }}">Durable Execution</a>
<a href="{{ '/stats/' | url }}">Stats</a>
<a href="{{ '/explore/' | url }}">Explore</a>
<a href="{{ '/api-explorer/' | url }}">API Explorer</a>
diff --git a/registry/src/css/main.css b/registry/src/css/main.css
index fca7395209a..cc7e035b47c 100644
--- a/registry/src/css/main.css
+++ b/registry/src/css/main.css
@@ -164,7 +164,7 @@
margin-right: auto;
}
-@media (min-width: 768px) {
+@media (min-width: 1024px) {
#site-header nav {
display: flex;
}
@@ -199,11 +199,18 @@
/* Header Search */
#search-trigger {
display: none;
+ margin-left: auto;
padding: 0.375rem var(--space-2);
background: var(--color-input-bg);
border-color: var(--color-input-border);
}
+@media (min-width: 1024px) {
+ #search-trigger {
+ margin-left: 0;
+ }
+}
+
.js #search-trigger {
display: flex;
}
@@ -285,7 +292,7 @@
color: var(--text-secondary);
}
-@media (min-width: 768px) {
+@media (min-width: 1024px) {
#mobile-menu-btn {
display: none;
}
@@ -296,28 +303,34 @@
height: 1.25rem;
}
-/* Mobile Nav */
-#mobile-nav {
+/* Mobile Nav: #site-header prefix outranks the #site-header nav rules above */
+#site-header #mobile-nav {
display: none;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ right: 0;
flex-direction: column;
- gap: var(--space-3);
- padding-bottom: var(--space-4);
- border-top: 1px solid var(--border-primary);
- margin-top: var(--space-4);
- padding-top: var(--space-4);
+ align-items: stretch;
+ gap: var(--space-1);
+ margin: 0;
+ padding-block: var(--space-4);
+ padding-inline: inherit;
+ background: var(--bg-primary);
+ border-bottom: 1px solid var(--color-header-border);
}
-@media (min-width: 768px) {
- #mobile-nav {
+@media (min-width: 1024px) {
+ #site-header #mobile-nav {
display: none !important;
}
}
-#mobile-nav.active {
+#site-header #mobile-nav.active {
display: flex;
}
-#mobile-nav a {
+#site-header #mobile-nav a {
padding: var(--space-2) 0;
color: var(--text-primary);
}
@@ -3657,7 +3670,7 @@ main {
outline-offset: 2px;
}
-/* Durable and Deferrable Operators Page */
+/* Durable Execution Page */
.durable-page {
padding: var(--space-16) 0;
background: var(--bg-primary);
diff --git a/registry/src/durable.njk b/registry/src/durable.njk
index ffc9b27f113..865c0e7a8dc 100644
--- a/registry/src/durable.njk
+++ b/registry/src/durable.njk
@@ -1,6 +1,6 @@
---
layout: base.njk
-title: Durable and Deferrable Operators
+title: Durable Execution
description: Operators, sensors and decorators across all Airflow providers
that reconnect to their job on retry or wait in the Triggerer instead of
holding a worker slot
mainClass: durable-page
---
@@ -9,7 +9,7 @@ mainClass: durable-page
<div class="container">
<header class="page-header">
- <h1>Durable and Deferrable Operators</h1>
+ <h1>Durable Execution</h1>
<p>{{ counts.all }} operators, sensors and decorators across {{
durableModules.groups.length }} providers that can reconnect to their job on
retry (Durable) or wait in the Triggerer instead of holding a worker slot
(Deferrable).</p>
</header>
diff --git a/registry/src/explore.njk b/registry/src/explore.njk
index f49c98f2e67..b42c55db2a8 100644
--- a/registry/src/explore.njk
+++ b/registry/src/explore.njk
@@ -135,7 +135,7 @@ mainClass: explore-page
<div class="link-buttons">
<a href="{{ '/providers/' | url }}">All Providers</a>
<a href="{{ '/stats/' | url }}">View Statistics</a>
- <a href="{{ '/durable/' | url }}">Durable and Deferrable Operators</a>
+ <a href="{{ '/durable/' | url }}">Durable Execution</a>
<button id="open-search">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round"
stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
diff --git a/registry/src/stats.njk b/registry/src/stats.njk
index 3ff627ac462..a7a120ffb57 100644
--- a/registry/src/stats.njk
+++ b/registry/src/stats.njk
@@ -109,7 +109,7 @@ mainClass: statistics-page
</svg>
</a>
<a href="{{ '/durable/' | url }}" class="access-link">
- <span>Durable and Deferrable Operators</span>
+ <span>Durable Execution</span>
<svg class="chevron" fill="none" stroke="currentColor" viewBox="0
0 24 24">
<path stroke-linecap="round" stroke-linejoin="round"
stroke-width="2" d="M9 5l7 7-7 7" />
</svg>