This is an automated email from the ASF dual-hosted git repository.
sbp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git
The following commit(s) were added to refs/heads/main by this push:
new 35fcfa3 Remove the sidebar
35fcfa3 is described below
commit 35fcfa343cf7c81ef4a4ad12db5fd94a84cb4e32
Author: Sean B. Palmer <[email protected]>
AuthorDate: Tue Dec 9 15:36:57 2025 +0000
Remove the sidebar
---
atr/static/css/atr.css | 149 +---------------------
atr/templates/includes/sidebar.html | 238 ------------------------------------
atr/templates/layouts/base.html | 2 -
playwright/test.py | 8 +-
4 files changed, 8 insertions(+), 389 deletions(-)
diff --git a/atr/static/css/atr.css b/atr/static/css/atr.css
index 67486bc..e80ceb6 100644
--- a/atr/static/css/atr.css
+++ b/atr/static/css/atr.css
@@ -38,7 +38,7 @@ body {
}
.bg-info-light {
- background-color: #e3f7fc !important;
+ background-color: #f8f8f8 !important;
}
.dropdown-menu {
@@ -52,6 +52,10 @@ body {
width: 8px; /* Chrome/Edge */
}
+nav.navbar {
+ padding: 0.5rem 2rem;
+}
+
html {
scroll-padding-top: 80px;
}
@@ -319,7 +323,6 @@ span.warning {
.content {
flex: 1;
display: flex;
- margin-left: 250px;
}
.main-container {
@@ -330,82 +333,7 @@ span.warning {
.main-content {
flex: 1;
- padding: 2rem;
-}
-
-aside.sidebar nav i.bi {
- color: #555555;
-}
-
-aside.sidebar nav a {
- text-decoration: none;
-}
-
-aside.sidebar nav a:hover {
- text-decoration: underline;
-}
-
-.sidebar {
- position: fixed;
- left: 0;
- top: 72px;
- bottom: 0;
- height: calc(100vh - 72px); /* ensures the sidebar fills the space below
the top bar */
- overflow-y: auto; /* enables vertical scrolling */
- z-index: 101;
- width: 250px;
- background-color: #e3f7fc !important;
- border-right: 1px solid #d1d2d3;
- padding: 1rem;
-}
-
-.sidebar .user-section {
- margin-bottom: 1.5rem;
- text-align: center;
- border-top: 1px solid #d1d2d3;
- border-bottom: 1px solid #d1d2d3;
- padding: 0.75rem 0;
-}
-
-.sidebar hr {
- border: none;
- border-top: 1px solid #999999;
- margin: 1.5rem auto;
- width: 62%;
- height: 0;
-}
-
-.sidebar nav {
- margin-top: 1.5rem;
- margin-left: 0.5rem;
-}
-
-.sidebar nav ul {
- list-style: none;
- padding-left: 0;
-}
-
-.sidebar nav li {
- margin-bottom: 0.3333rem;
-}
-
-.hamburger {
- display: none;
- background: none;
- border: none;
- cursor: pointer;
- padding: 0;
- padding-top: 20px;
- z-index: 100;
-}
-
-.hamburger span {
- display: block;
- width: 25px;
- height: 3px;
- background-color: #333333;
- margin: 5px 0;
- transition: 0.3s;
+ padding: 1rem 3rem;
}
.nav-toggle {
@@ -419,71 +347,6 @@ aside.sidebar nav a:hover {
}
}
-@media (width <= 768px) {
- .hamburger {
- display: block;
- position: fixed;
- top: 72px;
- padding-left: 2rem;
- transition: 0.3s;
- }
-
- .hamburger::before {
- content: "";
- position: absolute;
- width: 26px; /* size of the square */
- height: 32px;
- bottom: 0; /* anchor to bottom */
- right: 0; /* anchor to right */
- background: #e3f7fc !important;
- border-radius: 4px; /* rounded square */
- box-shadow: 0 2px 2px rgb(0 0 0 / 20%);
- z-index: -1; /* places it behind the icon */
- }
-
- .sidebar {
- position: fixed;
- left: -250px;
- top: 72px;
- bottom: 0;
- height: calc(100vh - 72px); /* ensures the sidebar fills the space
below the top bar */
- overflow-y: auto; /* enables vertical scrolling */
- transition: 0.3s;
- z-index: 101;
- }
-
- /* Show sidebar when checkbox is checked */
- .nav-toggle:checked ~ .sidebar {
- left: 0;
- }
-
- /* Move hamburger with sidebar */
- .nav-toggle:checked ~ .hamburger {
- padding-left: calc(250px + 2rem); /* sidebar width + padding */
- }
-
- .nav-toggle:checked ~ .hamburger span:nth-child(1) {
- transform: rotate(45deg) translate(5px, 5px);
- }
-
- .nav-toggle:checked ~ .hamburger span:nth-child(2) {
- opacity: 0%;
- }
-
- .nav-toggle:checked ~ .hamburger span:nth-child(3) {
- transform: rotate(-45deg) translate(7px, -7px);
- }
-
- .main-content {
- margin-left: 0;
- padding-top: 4rem;
- }
-
- .content {
- margin-left: 0;
- }
-}
-
/* Flash Messages */
.flash-message {
padding: 1rem;
diff --git a/atr/templates/includes/sidebar.html
b/atr/templates/includes/sidebar.html
deleted file mode 100644
index aac14b1..0000000
--- a/atr/templates/includes/sidebar.html
+++ /dev/null
@@ -1,238 +0,0 @@
-<aside class="sidebar">
- <div class="user-section">
- {% if current_user %}
- <div>
- <span>{{ current_user.fullname }}</span>
- (<code>{{ current_user.uid }}</code>)
- <br />
- <a href="#"
- onclick="location.href='/auth?logout=/';"
- class="logout-link btn btn-sm btn-outline-secondary mt-2">Log
out</a>
- </div>
- {% else %}
-
- <a href="#"
- onclick="location.href='/auth?login=' + window.location.pathname;"
- class="login-link btn btn-sm btn-secondary">Log in</a>
- {% endif %}
- </div>
- <nav>
- {% if current_user %}
- <h3>Get started</h3>
- <ul>
- <li>
- <i class="bi bi-play-circle"></i>
- <a href="{{ as_url(get.root.index) }}">Make releases</a>
- </li>
- {% if current_user %}
- <li>
- <i class="bi bi-view-list"></i>
- <a href="{{ as_url(get.release.releases) }}">Browse catalog</a>
- </li>
- {% endif %}
- <li>
- <i class="bi bi-collection"></i>
- <a href="{{ as_url(get.committees.directory) }}">Search
committees</a>
- </li>
- {% if current_user.uid == "sbp" %}
- <!--
- <li>
- <i class="bi bi-collection"></i>
- <a href="{{ as_url(get.projects.projects) }}">Browse projects</a>
- </li>
- -->
- {% endif %}
- <li>
- <i class="bi bi-download"></i>
- {# This path is handled by the frontend proxy server #}
- {# https://djlint.com/docs/ignoring-code/ #}
- {# djlint:off J018 #} <a href="/downloads/">Download artifacts</a>
{# djlint:on #}
- </li>
- </ul>
-
- {% set unfinished_releases = unfinished_releases_fn(current_user.uid) %}
- {% if unfinished_releases %}
- {% for project_short_display_name, project_name, releases in
unfinished_releases %}
- <h3>
- <a href="{{ as_url(get.projects.view, name=project_name) }}"
- class="text-decoration-none text-reset">{{
project_short_display_name }}</a>
- </h3>
- <ul>
- {% for release in releases %}
- <li>
- <i class="bi bi-tag"></i>
- <a href="{{ release_as_url(release) }}">{{ release.version
}}</a>
- </li>
- {% endfor %}
- </ul>
- {% endfor %}
- {% endif %}
- {% else %}
- <h3>Browse</h3>
- <ul>
- <li>
- <i class="bi bi-view-list"></i>
- <a href="{{ as_url(get.release.releases) }}">Releases</a>
- </li>
- <li>
- <i class="bi bi-collection"></i>
- <a href="{{ as_url(get.committees.directory) }}">Committees</a>
- </li>
- </ul>
- <h3>Help</h3>
- <ul>
- <li>
- <i class="bi bi-book"></i>
- <a href="{{ as_url(get.docs.index) }}">Documentation</a>
- </li>
- <li>
- <i class="bi bi-book"></i>
- <a href="{{ as_url(get.root.policies) }}">ASF Policies</a>
- </li>
- </ul>
- {% endif %}
-
- {% if current_user %}
- {% set user_projects = user_projects_fn(current_user.uid) %}
- {% if user_projects %}
- {% set max_projects = 8 %}
- <h3>Start a release</h3>
- <ul>
- {% for project_name, project_full_name in
user_projects[:max_projects] %}
- <li>
- <i class="bi bi-plus-circle"></i>
- <a href="{{ as_url(get.start.selected,
project_name=project_name) }}">{{ project_full_name.removeprefix("Apache
").removesuffix(" (Incubating)") }}</a>
- </li>
- {% endfor %}
- {% if user_projects|length > max_projects %}
- <li>
- <i class="bi bi-three-dots"></i>
- (<a href="{{ as_url(get.root.index) }}">{{ user_projects|length
- max_projects }} more</a>)
- </li>
- {% endif %}
- </ul>
- {% endif %}
- <h3>Security</h3>
- <ul>
- <li>
- <i class="bi bi-key"></i>
- <a href="{{ as_url(get.keys.keys) }}">Public keys</a>
- </li>
- <li>
- <i class="bi bi-key"></i>
- <a href="{{ as_url(get.tokens.tokens) }}">API tokens</a>
- </li>
- </ul>
-
- <h3>Help</h3>
- <ul>
- <li>
- <i class="bi bi-book"></i>
- <a href="{{ as_url(get.root.tutorial) }}">Tutorial</a>
- </li>
- <li>
- <i class="bi bi-book"></i>
- <a href="{{ as_url(get.docs.index) }}">Documentation</a>
- </li>
- <li>
- <i class="bi bi-book"></i>
- <a href="{{ as_url(get.root.policies) }}">ASF Policies</a>
- </li>
- <li>
- <i class="bi bi-file-earmark-code"></i>
- {# djlint:off J018 #} <a href="/api/docs">OpenAPI</a> {# djlint:on #}
- </li>
- </ul>
-
- {% if is_viewing_as_admin_fn(current_user.uid) %}
- <h3>Administration</h3>
- <ul>
- <li>
- <i class="bi bi-list-ul"></i>
- <a href="{{ as_url(admin.all_releases) }}"
- {% if request.endpoint == 'atr_admin_all_releases'
%}class="active"{% endif %}>All releases</a>
- </li>
- <li>
- <i class="bi bi-person-plus"></i>
- <a href="{{ as_url(admin.browse_as_get) }}"
- {% if request.endpoint == 'atr_admin_browse_as_get'
%}class="active"{% endif %}>Browse as user</a>
- </li>
- <li>
- <i class="bi bi-arrow-repeat"></i>
- <a href="{{ as_url(admin.consistency) }}"
- {% if request.endpoint == 'atr_admin_consistency'
%}class="active"{% endif %}>Consistency</a>
- </li>
- <li>
- <i class="bi bi-database"></i>
- <a href="{{ as_url(admin.data) }}"
- {% if request.endpoint == 'atr_admin_data' %}class="active"{%
endif %}>Browse database</a>
- </li>
- <li>
- <i class="bi bi-trash"></i>
- <a href="{{ as_url(admin.delete_committee_keys_get) }}"
- {% if request.endpoint == 'atr_admin_delete_committee_keys_get'
%}class="active"{% endif %}>Delete committee keys</a>
- </li>
- <li>
- <i class="bi bi-trash"></i>
- <a href="{{ as_url(admin.delete_release_get) }}"
- {% if request.endpoint == 'atr_admin_delete_release_get'
%}class="active"{% endif %}>Delete release</a>
- </li>
- <li>
- <i class="bi bi-gear"></i>
- <a href="{{ as_url(admin.env) }}"
- {% if request.endpoint == 'atr_admin_env' %}class="active"{%
endif %}>Environment</a>
- </li>
- <li>
- <i class="bi bi-key"></i>
- <a href="{{ as_url(admin.keys_check_get) }}"
- {% if request.endpoint == 'atr_admin_keys_check_get'
%}class="active"{% endif %}>Keys check</a>
- </li>
- <li>
- <i class="bi bi-key"></i>
- <a href="{{ as_url(admin.keys_regenerate_all_get) }}"
- {% if request.endpoint == 'atr_admin_keys_regenerate_all_get'
%}class="active"{% endif %}>Regenerate all keys</a>
- </li>
- <li>
- <i class="bi bi-key"></i>
- <a href="{{ as_url(admin.keys_update_get) }}"
- {% if request.endpoint == 'atr_admin_keys_update_get'
%}class="active"{% endif %}>Update keys</a>
- </li>
- <li>
- <i class="bi bi-person-plus"></i>
- <a href="{{ as_url(admin.ldap_get) }}"
- {% if request.endpoint == 'atr_admin_ldap_get'
%}class="active"{% endif %}>LDAP search</a>
- </li>
- <li>
- <i class="bi bi-speedometer2"></i>
- <a href="{{ as_url(admin.performance) }}"
- {% if request.endpoint == 'atr_admin_performance'
%}class="active"{% endif %}>Page performance</a>
- </li>
- <li>
- <i class="bi bi-arrow-repeat"></i>
- <a href="{{ as_url(admin.projects_update_get) }}"
- {% if request.endpoint == 'atr_admin_projects_update_get'
%}class="active"{% endif %}>Update projects</a>
- </li>
- <li>
- <i class="bi bi-list-task"></i>
- <a href="{{ as_url(admin.tasks_) }}"
- {% if request.endpoint == 'atr_admin_tasks_' %}class="active"{%
endif %}>Background tasks</a>
- </li>
- <li>
- <i class="bi bi-clock-history"></i>
- <a href="{{ as_url(admin.tasks_recent, minutes=5) }}">Recent
tasks</a>
- </li>
- <li>
- <i class="bi bi-person-badge"></i>
- <a href="{{ as_url(admin.toggle_view_get) }}"
- {% if request.endpoint == 'atr_admin_toggle_view_get'
%}class="active"{% endif %}>Toggle admin view</a>
- </li>
- <li>
- <i class="bi bi-arrow-repeat"></i>
- <a href="{{ as_url(admin.validate_) }}"
- {% if request.endpoint == 'atr_admin_validate_'
%}class="active"{% endif %}>Validate</a>
- </li>
- </ul>
- {% endif %}
- {% endif %}
- </nav>
-</aside>
diff --git a/atr/templates/layouts/base.html b/atr/templates/layouts/base.html
index 5dd1f9e..78293ae 100644
--- a/atr/templates/layouts/base.html
+++ b/atr/templates/layouts/base.html
@@ -60,8 +60,6 @@
<span class="hamburger-line"></span>
</label>
- {% include "includes/sidebar.html" %}
-
<div class="main-container {% block main_class %}{% endblock
main_class %}">
<main class="main-content">
{% if (not current_user) or (current_user.uid != "sbp") %}
diff --git a/playwright/test.py b/playwright/test.py
index c14c925..1dca1cf 100755
--- a/playwright/test.py
+++ b/playwright/test.py
@@ -989,12 +989,8 @@ def test_projects_03_add_project(page: Page, credentials:
Credentials) -> None:
def test_ssh_01_add_key(page: Page, credentials: Credentials) -> None:
logging.info("Starting SSH key addition test")
- go_to_path(page, "/committees")
-
- logging.info("Navigating to Your Public Keys page")
- page.locator('a[href="/keys"]:has-text("Public keys")').click()
- wait_for_path(page, "/keys")
- logging.info("Navigated to Your Public Keys page")
+ go_to_path(page, "/keys")
+ logging.info("Public Keys page loaded")
logging.info("Clicking Add your SSH key button")
# There can be two buttons with the same text if the user did not upload
an SSH key yet
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]