Discoverable menu button and visible page titles #290

Merged
robbertbos merged 1 commit from menu-and-headers into main 2026-08-12 19:28:51 +00:00
Owner

What

  • The menu sits behind a labeled "Menu" button (nldd-button, popup slot, no chevron): fixed top right on a wide screen - below any status banner, level with the wordmark until that scrolls away - and beside the wordmark on a phone, where it scrolls off with the page. NLDD owns the anchoring, toggling and ARIA.
  • Menu navigation items are real links: plain click stays in the SPA, cmd/ctrl-click opens a new tab, Space activates like Enter. The overview pages sit under an "Overzichten" group label. The menu is its own component (AppMenu) because two triggers can carry it.
  • The wordmark is a plain link to the Inbox above the page (accessible name "Waggle, naar de inbox"), centred on a wide screen and left below 641px, on the same responsive type scale as the page title so the two never drift apart.
  • Inbox, Leeslijst and Instellingen get a visible h1 (nldd-title size 3 app-wide; section h2s stay 4), and document.title follows the route ("Inbox - Waggle"). AccountVerwijderd drops its hand-rolled title.
  • One page column, defined once in base.css and expressed in NLDD's own page-section gutter tokens on NLDD's breakpoints: the header row, page titles, search row, card list and retention banner all consume it instead of each repeating the same rule.
  • The inbox tour starts at the sections step and its steps are numbered 1-7 again; a button that says "Menu" needs no coach-mark.
  • Dev builds only: the user switcher leaves the header for a fixed corner button bottom-right (it covered the brand on narrow screens); users become radio items in an NLDD menu, with "Onboarding opnieuw" below them.
  • Fixed along the way: a card moved with the keyboard could stop half under the fold, because scrollIntoView({block: "nearest"}) does nothing once any part of the element is on screen. The section now aligns the clipped edge and cards carry scroll-margin.
  • E2e: a header spec (SPA marker, new-tab modifier click, headings, tab titles), a spec for the scrolling wordmark and the fixed button that clears the banner, and the landmarks scan now enforces page-has-heading-one on all nine routes.

Why

Direct user feedback: nobody recognized the centered wordmark as the menu - the coach-mark explaining it was the symptom, not the fix - and persistent chrome over the reading column costs the most on a phone. The design follows NN/g findings (centered logos, hidden desktop navigation, labeled menu buttons) and NLDD's own idioms: the menu affordance is literally the word "Menu" with the menu icon, the gutters are NLDD's page-section tokens, and the brand type rides NLDD's display scale.

Verification

  • vue-tsc clean, 1089 unit tests, eslint 0 errors, production build ok
  • Full Playwright e2e green (95 passed, 3 pre-existing skips)
  • Visual pass on a hash-verified preview build at 390/640/760/1200 widths: menu button placement against the banner, gutter alignment, header baselines and brand proportions measured, not eyeballed; dev user switching exercised end-to-end

Follow-ups

  • Focus move to the h1 on route change (deliberately out of scope)
  • Onboarding coach-marks jump while async layers load: #289

Closes #230.

## What - The menu sits behind a labeled "Menu" button (nldd-button, popup slot, no chevron): fixed top right on a wide screen - below any status banner, level with the wordmark until that scrolls away - and beside the wordmark on a phone, where it scrolls off with the page. NLDD owns the anchoring, toggling and ARIA. - Menu navigation items are real links: plain click stays in the SPA, cmd/ctrl-click opens a new tab, Space activates like Enter. The overview pages sit under an "Overzichten" group label. The menu is its own component (AppMenu) because two triggers can carry it. - The wordmark is a plain link to the Inbox above the page (accessible name "Waggle, naar de inbox"), centred on a wide screen and left below 641px, on the same responsive type scale as the page title so the two never drift apart. - Inbox, Leeslijst and Instellingen get a visible h1 (nldd-title size 3 app-wide; section h2s stay 4), and document.title follows the route ("Inbox - Waggle"). AccountVerwijderd drops its hand-rolled title. - One page column, defined once in base.css and expressed in NLDD's own page-section gutter tokens on NLDD's breakpoints: the header row, page titles, search row, card list and retention banner all consume it instead of each repeating the same rule. - The inbox tour starts at the sections step and its steps are numbered 1-7 again; a button that says "Menu" needs no coach-mark. - Dev builds only: the user switcher leaves the header for a fixed corner button bottom-right (it covered the brand on narrow screens); users become radio items in an NLDD menu, with "Onboarding opnieuw" below them. - Fixed along the way: a card moved with the keyboard could stop half under the fold, because `scrollIntoView({block: "nearest"})` does nothing once any part of the element is on screen. The section now aligns the clipped edge and cards carry `scroll-margin`. - E2e: a header spec (SPA marker, new-tab modifier click, headings, tab titles), a spec for the scrolling wordmark and the fixed button that clears the banner, and the landmarks scan now enforces page-has-heading-one on all nine routes. ## Why Direct user feedback: nobody recognized the centered wordmark as the menu - the coach-mark explaining it was the symptom, not the fix - and persistent chrome over the reading column costs the most on a phone. The design follows NN/g findings (centered logos, hidden desktop navigation, labeled menu buttons) and NLDD's own idioms: the menu affordance is literally the word "Menu" with the `menu` icon, the gutters are NLDD's page-section tokens, and the brand type rides NLDD's display scale. ## Verification - vue-tsc clean, 1089 unit tests, eslint 0 errors, production build ok - Full Playwright e2e green (95 passed, 3 pre-existing skips) - Visual pass on a hash-verified preview build at 390/640/760/1200 widths: menu button placement against the banner, gutter alignment, header baselines and brand proportions measured, not eyeballed; dev user switching exercised end-to-end ## Follow-ups - Focus move to the h1 on route change (deliberately out of scope) - Onboarding coach-marks jump while async layers load: #289 Closes #230.
Move the menu behind a labeled button and give pages visible titles
All checks were successful
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 15s
security-scan / Python SAST (bandit) (pull_request) Successful in 17s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 47s
test-build / build (frontend) (pull_request) Successful in 55s
test-build / build (backend) (pull_request) Successful in 59s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m5s
CI / backend-test (pull_request) Successful in 1m59s
CI / e2e (pull_request) Successful in 2m13s
CI / release-scripts (pull_request) Successful in 5s
85a8f7f03d
The centered wordmark was the only menu trigger and nobody recognized
it as one - a coach-mark existed just to explain it.

- The wordmark sits left as a home link ("Waggle, naar de inbox");
  next to it a labeled Menu button (nldd-button lg, popup slot, no
  chevron) owns the dropdown: anchoring, toggling and ARIA come from
  NLDD instead of hand-written wiring.
- Menu navigation items are real links: plain click routes through the
  SPA, cmd/ctrl-click opens a new tab, Space activates like Enter. The
  overview pages sit under an "Overzichten" group label.
- Inbox, Leeslijst and Instellingen get a visible h1. Page titles are
  nldd-title size 3 app-wide (section h2s stay 4), aligned to their
  content columns across breakpoints; Settings mirrors the section
  padding via a container query.
- document.title follows the route ("Inbox - Waggle") via route meta
  and one afterEach; AccountVerwijderd drops its hand-rolled title.
- The inbox tour starts at the sections step: a button that says
  "Menu" needs no coach-mark.
- E2e: a header spec (SPA marker, new-tab modifier click, headings,
  tab titles) and the landmarks scan now enforces page-has-heading-one
  on all nine routes.

Closes #230.
robbertbos force-pushed menu-and-headers from 85a8f7f03d
All checks were successful
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 15s
security-scan / Python SAST (bandit) (pull_request) Successful in 17s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 47s
test-build / build (frontend) (pull_request) Successful in 55s
test-build / build (backend) (pull_request) Successful in 59s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m5s
CI / backend-test (pull_request) Successful in 1m59s
CI / e2e (pull_request) Successful in 2m13s
CI / release-scripts (pull_request) Successful in 5s
to 7d89ca4acb
Some checks failed
CI / pre-commit (pull_request) Successful in 1m57s
CI / release-scripts (pull_request) Successful in 11s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m2s
security-scan / Python SAST (bandit) (pull_request) Successful in 37s
security-scan / JS SCA (npm audit) (pull_request) Successful in 40s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 26s
security-scan / SBOM (trivy) (pull_request) Successful in 17s
CI / frontend-test (pull_request) Successful in 5m44s
test-build / build (backend) (pull_request) Successful in 2m36s
test-build / build (frontend) (pull_request) Successful in 2m40s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Failing after 11m6s
CI / backend-test (pull_request) Successful in 13m2s
2026-08-10 21:39:24 +00:00
Compare
robbertbos force-pushed menu-and-headers from 7d89ca4acb
Some checks failed
CI / pre-commit (pull_request) Successful in 1m57s
CI / release-scripts (pull_request) Successful in 11s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m2s
security-scan / Python SAST (bandit) (pull_request) Successful in 37s
security-scan / JS SCA (npm audit) (pull_request) Successful in 40s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 26s
security-scan / SBOM (trivy) (pull_request) Successful in 17s
CI / frontend-test (pull_request) Successful in 5m44s
test-build / build (backend) (pull_request) Successful in 2m36s
test-build / build (frontend) (pull_request) Successful in 2m40s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Failing after 11m6s
CI / backend-test (pull_request) Successful in 13m2s
to a8f3c2a88c
Some checks failed
CI / pre-commit (pull_request) Successful in 1m59s
CI / release-scripts (pull_request) Successful in 12s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m2s
security-scan / Python SAST (bandit) (pull_request) Successful in 41s
security-scan / JS SCA (npm audit) (pull_request) Successful in 45s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 29s
security-scan / SBOM (trivy) (pull_request) Successful in 17s
CI / frontend-test (pull_request) Successful in 6m4s
test-build / build (backend) (pull_request) Successful in 2m45s
test-build / build (frontend) (pull_request) Successful in 2m55s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Failing after 13m34s
CI / backend-test (pull_request) Successful in 14m42s
2026-08-11 13:45:56 +00:00
Compare
robbertbos force-pushed menu-and-headers from a8f3c2a88c
Some checks failed
CI / pre-commit (pull_request) Successful in 1m59s
CI / release-scripts (pull_request) Successful in 12s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m2s
security-scan / Python SAST (bandit) (pull_request) Successful in 41s
security-scan / JS SCA (npm audit) (pull_request) Successful in 45s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 29s
security-scan / SBOM (trivy) (pull_request) Successful in 17s
CI / frontend-test (pull_request) Successful in 6m4s
test-build / build (backend) (pull_request) Successful in 2m45s
test-build / build (frontend) (pull_request) Successful in 2m55s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Failing after 13m34s
CI / backend-test (pull_request) Successful in 14m42s
to 43e3beb625
All checks were successful
security-scan / Python SCA (pip-audit) (pull_request) Successful in 41s
test-build / build (frontend) (pull_request) Successful in 1m4s
test-build / build (backend) (pull_request) Successful in 1m5s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m13s
CI / pre-commit (pull_request) Successful in 1m39s
CI / backend-test (pull_request) Successful in 2m16s
CI / e2e (pull_request) Successful in 3m8s
CI / release-scripts (pull_request) Successful in 9s
security-scan / SBOM (trivy) (pull_request) Successful in 12s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 17s
security-scan / JS SCA (npm audit) (pull_request) Successful in 19s
security-scan / Python SAST (bandit) (pull_request) Successful in 22s
2026-08-11 14:07:57 +00:00
Compare
robbertbos force-pushed menu-and-headers from 43e3beb625
All checks were successful
security-scan / Python SCA (pip-audit) (pull_request) Successful in 41s
test-build / build (frontend) (pull_request) Successful in 1m4s
test-build / build (backend) (pull_request) Successful in 1m5s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m13s
CI / pre-commit (pull_request) Successful in 1m39s
CI / backend-test (pull_request) Successful in 2m16s
CI / e2e (pull_request) Successful in 3m8s
CI / release-scripts (pull_request) Successful in 9s
security-scan / SBOM (trivy) (pull_request) Successful in 12s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 17s
security-scan / JS SCA (npm audit) (pull_request) Successful in 19s
security-scan / Python SAST (bandit) (pull_request) Successful in 22s
to 225d337be5
All checks were successful
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 18s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 36s
CI / pre-commit (pull_request) Successful in 49s
test-build / build (frontend) (pull_request) Successful in 57s
test-build / build (backend) (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m9s
CI / backend-test (pull_request) Successful in 2m4s
CI / e2e (pull_request) Successful in 2m17s
2026-08-11 14:27:37 +00:00
Compare
robbertbos force-pushed menu-and-headers from 225d337be5
All checks were successful
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 18s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 36s
CI / pre-commit (pull_request) Successful in 49s
test-build / build (frontend) (pull_request) Successful in 57s
test-build / build (backend) (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m9s
CI / backend-test (pull_request) Successful in 2m4s
CI / e2e (pull_request) Successful in 2m17s
to 24c29c1bfa
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 15s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SAST (bandit) (pull_request) Successful in 20s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 52s
test-build / build (frontend) (pull_request) Successful in 57s
test-build / build (backend) (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m4s
CI / e2e (pull_request) Successful in 2m17s
CI / backend-test (pull_request) Successful in 2m5s
2026-08-11 14:39:00 +00:00
Compare
robbertbos force-pushed menu-and-headers from 24c29c1bfa
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 15s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SAST (bandit) (pull_request) Successful in 20s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 52s
test-build / build (frontend) (pull_request) Successful in 57s
test-build / build (backend) (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m4s
CI / e2e (pull_request) Successful in 2m17s
CI / backend-test (pull_request) Successful in 2m5s
to 50b86968a1
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 16s
security-scan / JS SCA (npm audit) (pull_request) Successful in 18s
security-scan / Python SAST (bandit) (pull_request) Successful in 20s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 38s
CI / pre-commit (pull_request) Successful in 51s
test-build / build (frontend) (pull_request) Successful in 56s
test-build / build (backend) (pull_request) Successful in 1m0s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m8s
CI / backend-test (pull_request) Successful in 2m5s
CI / e2e (pull_request) Successful in 2m18s
2026-08-11 15:08:04 +00:00
Compare
robbertbos force-pushed menu-and-headers from 50b86968a1
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 16s
security-scan / JS SCA (npm audit) (pull_request) Successful in 18s
security-scan / Python SAST (bandit) (pull_request) Successful in 20s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 38s
CI / pre-commit (pull_request) Successful in 51s
test-build / build (frontend) (pull_request) Successful in 56s
test-build / build (backend) (pull_request) Successful in 1m0s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m8s
CI / backend-test (pull_request) Successful in 2m5s
CI / e2e (pull_request) Successful in 2m18s
to 578900f0f5
Some checks failed
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 14s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SAST (bandit) (pull_request) Successful in 22s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 50s
test-build / build (frontend) (pull_request) Successful in 56s
test-build / build (backend) (pull_request) Successful in 59s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m4s
CI / backend-test (pull_request) Successful in 2m1s
CI / e2e (pull_request) Successful in 2m15s
2026-08-11 15:38:19 +00:00
Compare
robbertbos force-pushed menu-and-headers from 578900f0f5
Some checks failed
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 14s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SAST (bandit) (pull_request) Successful in 22s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 50s
test-build / build (frontend) (pull_request) Successful in 56s
test-build / build (backend) (pull_request) Successful in 59s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m4s
CI / backend-test (pull_request) Successful in 2m1s
CI / e2e (pull_request) Successful in 2m15s
to b85dd69855
Some checks failed
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 17s
security-scan / Python SAST (bandit) (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 38s
test-build / build (frontend) (pull_request) Successful in 58s
test-build / build (backend) (pull_request) Successful in 58s
test-build / build (pull_request) Successful in 0s
CI / pre-commit (pull_request) Successful in 1m1s
CI / frontend-test (pull_request) Failing after 1m3s
CI / backend-test (pull_request) Successful in 2m15s
CI / e2e (pull_request) Successful in 2m20s
2026-08-11 15:56:00 +00:00
Compare
robbertbos force-pushed menu-and-headers from b85dd69855
Some checks failed
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 17s
security-scan / Python SAST (bandit) (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 38s
test-build / build (frontend) (pull_request) Successful in 58s
test-build / build (backend) (pull_request) Successful in 58s
test-build / build (pull_request) Successful in 0s
CI / pre-commit (pull_request) Successful in 1m1s
CI / frontend-test (pull_request) Failing after 1m3s
CI / backend-test (pull_request) Successful in 2m15s
CI / e2e (pull_request) Successful in 2m20s
to 4a6912d288
Some checks failed
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 16s
security-scan / JS SCA (npm audit) (pull_request) Successful in 17s
security-scan / Python SAST (bandit) (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 39s
CI / pre-commit (pull_request) Successful in 51s
test-build / build (frontend) (pull_request) Successful in 56s
test-build / build (backend) (pull_request) Successful in 1m0s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m4s
CI / backend-test (pull_request) Successful in 2m16s
CI / e2e (pull_request) Successful in 2m17s
2026-08-11 17:04:16 +00:00
Compare
robbertbos force-pushed menu-and-headers from 4a6912d288
Some checks failed
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 16s
security-scan / JS SCA (npm audit) (pull_request) Successful in 17s
security-scan / Python SAST (bandit) (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 39s
CI / pre-commit (pull_request) Successful in 51s
test-build / build (frontend) (pull_request) Successful in 56s
test-build / build (backend) (pull_request) Successful in 1m0s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m4s
CI / backend-test (pull_request) Successful in 2m16s
CI / e2e (pull_request) Successful in 2m17s
to 9051ef58ce
Some checks failed
test-build / build (backend) (pull_request) Successful in 1m0s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m2s
CI / backend-test (pull_request) Successful in 2m16s
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 50s
test-build / build (frontend) (pull_request) Successful in 57s
CI / e2e (pull_request) Successful in 2m19s
2026-08-11 17:25:30 +00:00
Compare
robbertbos force-pushed menu-and-headers from 9051ef58ce
Some checks failed
test-build / build (backend) (pull_request) Successful in 1m0s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m2s
CI / backend-test (pull_request) Successful in 2m16s
CI / release-scripts (pull_request) Successful in 7s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 37s
CI / pre-commit (pull_request) Successful in 50s
test-build / build (frontend) (pull_request) Successful in 57s
CI / e2e (pull_request) Successful in 2m19s
to 9b2cbd2f54
Some checks failed
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 15s
security-scan / JS SCA (npm audit) (pull_request) Successful in 17s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 39s
CI / pre-commit (pull_request) Successful in 55s
test-build / build (frontend) (pull_request) Successful in 58s
test-build / build (backend) (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m9s
CI / backend-test (pull_request) Successful in 2m21s
CI / e2e (pull_request) Successful in 2m27s
2026-08-11 17:46:02 +00:00
Compare
robbertbos force-pushed menu-and-headers from 9b2cbd2f54
Some checks failed
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 15s
security-scan / JS SCA (npm audit) (pull_request) Successful in 17s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 39s
CI / pre-commit (pull_request) Successful in 55s
test-build / build (frontend) (pull_request) Successful in 58s
test-build / build (backend) (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Failing after 1m9s
CI / backend-test (pull_request) Successful in 2m21s
CI / e2e (pull_request) Successful in 2m27s
to d52076bad2
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 9s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 18s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 40s
test-build / build (frontend) (pull_request) Successful in 58s
test-build / build (backend) (pull_request) Successful in 58s
CI / pre-commit (pull_request) Successful in 59s
CI / frontend-test (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 2m17s
CI / e2e (pull_request) Successful in 3m27s
2026-08-11 21:05:23 +00:00
Compare
robbertbos force-pushed menu-and-headers from d52076bad2
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 9s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 13s
security-scan / JS SCA (npm audit) (pull_request) Successful in 18s
security-scan / Python SAST (bandit) (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 40s
test-build / build (frontend) (pull_request) Successful in 58s
test-build / build (backend) (pull_request) Successful in 58s
CI / pre-commit (pull_request) Successful in 59s
CI / frontend-test (pull_request) Successful in 1m1s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 2m17s
CI / e2e (pull_request) Successful in 3m27s
to f45f7f6bd0
All checks were successful
CI / pre-commit (pull_request) Successful in 3m1s
CI / release-scripts (pull_request) Successful in 9s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 55s
security-scan / Python SAST (bandit) (pull_request) Successful in 36s
security-scan / JS SCA (npm audit) (pull_request) Successful in 41s
CI / frontend-test (pull_request) Successful in 5m54s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 26s
security-scan / SBOM (trivy) (pull_request) Successful in 18s
test-build / build (backend) (pull_request) Successful in 2m29s
test-build / build (frontend) (pull_request) Successful in 2m32s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 16m47s
CI / e2e (pull_request) Successful in 7m28s
CI / release-scripts (push) Successful in 26s
security-scan / SBOM (trivy) (push) Successful in 32s
security-scan / Filesystem scan (trivy fs) (push) Successful in 33s
security-scan / JS SCA (npm audit) (push) Successful in 34s
security-scan / Python SAST (bandit) (push) Successful in 35s
security-scan / Python SCA (pip-audit) (push) Successful in 53s
publish-main / build (frontend) (push) Successful in 1m7s
publish-main / build (backend) (push) Successful in 1m14s
publish-main / build (push) Successful in 0s
CI / frontend-test (push) Successful in 1m34s
CI / pre-commit (push) Successful in 2m10s
CI / backend-test (push) Successful in 2m37s
CI / e2e (push) Successful in 4m14s
2026-08-11 21:30:02 +00:00
Compare
robbertbos deleted branch menu-and-headers 2026-08-12 19:28:51 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle!290
No description provided.