Skip to content

xiiui ← Update header bar elements and remove headline and breadcrumbs - #27101

Merged
formfcw merged 44 commits into
feat/twelve-uifrom
florian/cms-1927-update-header-elements
Apr 15, 2026
Merged

formfcw merged 44 commits into
feat/twelve-uifrom
florian/cms-1927-update-header-elements

Conversation

@formfcw

@formfcw formfcw commented Apr 13, 2026 •

Copy link
Copy Markdown
Contributor

Scope

What's changed:

  • Removed breadcrumbs from content, files, users, deployment, and insights routes; replaced useBreadcrumb with useTitle
    where applicable
  • Removed the headline slot from the header bar; moved version menu to title-outer:append
  • Restructured header bar action slots: added actions:primary and actions:prepend, moved bookmark controls and primary
    CTAs into dedicated slots
  • Moved CollabIndicatorHeader to actions:prepend, moved FlowDialogs out of the actions slot
  • Added Insights overview tab to preserve route access after breadcrumb removal
  • Always use dense navigation list (design request)
  • Removed hardcoded header bar height from comparison modal, using the global CSS variable instead
  • Used shared header action button in add-folder dialog
  • Fixed tooltip position for bookmark button in header bar
  • Wrapped prepend slot content in a div for improved structure
  • Removed dynamic class binding for nav toggle

Potential Risks / Drawbacks

  • Extension authors: The headline slot has been removed from the header bar β€” any extension relying on it will silently
    lose that content
  • Header bar action slot restructuring (actions:primary, actions:prepend) changes the slot API surface that extensions
    may depend on

Tested Scenarios

  • Navigation across content, files, users, deployment, and insights routes after breadcrumb removal
  • Header bar rendering with bookmarks, version menu, and action buttons in their new slot positions
  • Dense navigation list rendering across all modules
  • Responsive Design

Review Notes / Questions

  • Rebuild: pnpm --filter themes build before testing
  • SCSS breakpoint mixins were realigned with JS breakpoint.smallerOrEqual() semantics
  • An overview tab was added to insights navigation specifically to ensure the overview route remains accessible after
    breadcrumb removal
  • Drawer header will be covered in a future PR

Recommended Review

  1. Header bar slot API (private-view-header-bar.vue, private-view-header-bar-actions.vue) β€” this is where the structural
    refactor lives
  2. Breadcrumb removal completeness β€” check all module routes (content, files, users, deployment, insights) still have
    clear navigation paths without breadcrumbs
  3. Insights overview tab β€” new navigation entry; confirm it correctly replaces the breadcrumb as the way to reach the
    overview route
  4. Responsive behavior β€” the SCSS breakpoint mixin fix touches responsive logic

Checklist

  • Added or updated tests
  • Documentation PR created here or not required
  • OpenAPI package PR created here or not required

Addresses CMS-1927

HZooly and others added 28 commits April 9, 2026 16:57
This ensures it matches the breakpoint.smallerOrEqual() calls
Review note: Build `pnpm --filter themes build`
@formfcw
formfcw requested a review from AlexGaillard as a code owner April 13, 2026 06:59
@linear

linear Bot commented Apr 13, 2026

Copy link
Copy Markdown

Comment thread app/src/views/private/components/layout-subheader.vue Outdated
Base automatically changed from hugo/cms-2076-ensure-sidebar-opens-with-initialsnap-size-after-collapsing to feat/twelve-ui April 15, 2026 10:22
@alvarosabu
alvarosabu self-requested a review April 15, 2026 15:31

@alvarosabu alvarosabu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

F it, ship it

@formfcw
formfcw merged commit fd092ab into feat/twelve-ui Apr 15, 2026
3 checks passed
@formfcw
formfcw deleted the florian/cms-1927-update-header-elements branch April 15, 2026 15:45
AlexGaillard added a commit that referenced this pull request Jun 10, 2026
* xiiui ← Update type system, borders, and theme variables (#26938)

* xiiui ← Refactor focus ring from border/box-shadow to outline (#26941)

* xiiui ← Put the sidebar into the content area (#26942)

* xiiui ← Update sidebar styles (#26990)

* xiiui ← Back button always navigates one level up (#27004)

Co-authored-by: formfcw <dev@formfcw.com>

* xiiui ← Update module navigation bar styling (#27009)

Co-authored-by: formfcw <dev@formfcw.com>

* xiiui ← Update content section spacing and drawer content spacing (#27019)

Co-authored-by: formfcw <dev@formfcw.com>

* xiiui ← Remove rounded buttons and adopt shared header action button across all views (#27030)

Co-authored-by: HZooly <torzuoli.hugo@gmail.com>

* xiiui ← Fix bookmark icon and color not showing in header (#27034)

Co-authored-by: HZooly <torzuoli.hugo@gmail.com>

* xiiui ← Update header and navigation bar and introduce shell theme scope (#27058)

Co-authored-by: HZooly <torzuoli.hugo@gmail.com>

* xiiui ← Remove VResizeable (#27059)

Co-authored-by: HZooly <torzuoli.hugo@gmail.com>

* xiiui ← Fix VButton sizes and padding to match design specs (#27074)

* xiiui ← Extract the card subheader into a reusable subheader component (#27077)

* xiiui ← Sidebar reopening at minimum size after being collapsed via drag handle (#27090)

Co-authored-by: formfcw <dev@formfcw.com>

* xiiui ← Update header bar elements and remove headline and breadcrumbs (#27101)

* xiiui ← Refactor header bar action slots and reorganize CTAs (#27102)

* xiiui ← Refactor drawer header layout and simplify v-drawer API (#27103)

* xiiui ← Update module bar buttons style (#27110)

Co-authored-by: formfcw <dev@formfcw.com>

* xiiui ← Extract reusable ModuleBarButton component (#27123)

* xiiui ← Limit mobile sidebar width (#27118)

* xiiui ← Body overflow hidden (#27120)

Co-authored-by: formfcw <dev@formfcw.com>

* xiiui ← fix pagination button appearance (#27122)

Co-authored-by: formfcw <dev@formfcw.com>

* xiiui ← update import background checkbox design (#27125)

* xiiui ← fix v-divider icon alignment (#27127)

* xiiui ← Fix flow handle button alignment in flow editor (#27128)

* xiiui ← Add split-menu slot to v-button and migrate primary header actions (#27130)

* Add new /ai/object endpoint to generate structured objects (#26862)

* wip

* fix additional properties bug

* wip: fix tests

* fix changeset

* add telemetry

* don't load settings twice for files router

* format

* switch object endpoint to streaming

* fix formatting

* fix test ts errors

* ok github

* format

* formatter

* Fix MARKETPLACE_REGISTRY env not being passed to registry list call when generating extension settings (#27076)

* fix: pass MARKETPLACE_REGISTRY env to registry list call

* fix: update changeset

* Restore "All Users" tab (#27078)

* restore all users tab

* changeset

* remove changeset

* Add save as new file option to image editor (CMS-2099) (#27084)

* Add save as new file option to image editor

* Add changeset

* Update .changeset/old-chairs-end.md

* Fix file not creating in correct folder

---------

Co-authored-by: Alex Gaillard <alex@directus.io>

* Trim trailing spaces and punctuation from search queries (#27089)

* sanitize search query - remove trailing spaces and punctuation

* changeset

* simplify and detect only unicode punctuation

* update changeset

* just trim leading and trailing spaces

* Add case for whitespace only search

* Fix formatting errors

* Allow for white space only search

* Fix formatting

* More formatting fixes

---------

Co-authored-by: Alex Gaillard <alex@directus.io>

* Fix promotion of deleted relation returning invalid date time value error (#27040)

* fix: use nullish coalescing for overwriteDefaults in payload transformers

* Revert "fix: use nullish coalescing for overwriteDefaults in payload transformers"

This reverts commit 79e1e86.

* fix: return undefined defaultOverwrites for primitive arrays in splitRecursive

* fix: propagate parent overwrite defaults to primitive arrays in splitRecursive

* Update moody-papers-help.md

---------

Co-authored-by: daedalus <44623501+ComfortablyCoding@users.noreply.github.com>

* Improve configurability of health checks (#26987)

* suffix file health checks with machine id

* add changeset

* add ttl support for local cache

* improve configurability of healthcheck and cache results

* add cahngesets

* restrict `/server/health` to authenticated users

* tweaks

* Ensure consistent bracket usage

* Apply suggestion from @ComfortablyCoding

* add notice for dropping cache/ratelimiter/ratelimiterglobal

* move unauthenticated check to service

* add bb tests

* improve server health return type

* Update shaggy-news-check.md

* fix vendor db check

* Update shaggy-news-check.md

* Fix bb tests

* Fix `VBadge` intercepting pointer events on slotted elements (#27087)

* prevent VBadge from intercepting clicks on slotted elements

* add changeset

* Dependabot updates (#27081)

* bump axios, basic-ftp and liquidjs

* bumping vite

* bump overridden packages

* bump nodemailer

* bump minimatch

* bump hono

* add changeset

* updated basic-ftp

* Fix export failing on collections with virtual fields like $thumbnail by excluding them from export defaults and the field picker (#27073)

* fix(app): exclude virtual fields from export default field selection

* fix(app): exclude virtual fields from export defaults

* Add om-singh-D to contributors list

* style(app): format export sidebar files

* fix(app): exclude virtual fields from export picker

* Update .changeset/curvy-tigers-exist.md

Co-authored-by: Gaetan SENN <gaetan.senn@gmail.com>

---------

Co-authored-by: Gaetan SENN <gaetan.senn@gmail.com>

* Fix api building with node_modules (#27067)

* start fixing building of api

* fully migrate from typebox to zod

* add changeset

* fmt

* cleanup

* update lock

* fix(app): deduplicate aggregate count requests on content navigation (#26906)

* fix(app): deduplicate aggregate count requests on content navigation

When navigating to /content/:collection, the useItems composable fired
two separate watchers with immediate:true, causing 2-3 redundant
aggregate[countDistinct] API calls. This merges both watchers into a
single coordinated watcher and reuses the totalCount result for
itemCount when no user filters or search are active (or when the user
filter matches the system filter).

Fixes #25194

* address review feedback: simplify with until, separate watchers, remove spread

* fix lockfile

* refactor: use useMemoize to prevent duplicate aggregate calls

Replace loadingTotalCount/until logic with useMemoize from vueuse,
which automatically deduplicates concurrent calls with the same
arguments by reusing active promises.

* cleanup code

* chore: sign CLA

* fix: guard against race conditions in getTotalCount and getItemCount

Use generation counters to discard stale responses when rapid
navigation or filter changes cause overlapping requests. This
prevents an older response from overwriting a newer result.

* Add om-singh-D to contributors list

---------

Co-authored-by: Nitwel <mail@nitwel.de>

* fix(api): include custom query params in cache key (#26935)

* fix(api): include custom query params in cache key

The cache key only used req.sanitizedQuery which strips non-Directus
query params. This caused Flow webhook endpoints and custom endpoints
to return stale cached responses when called with different custom
query parameters.

Include req.query in the cache key hash for non-GraphQL requests so
requests with different custom params produce different cache keys.

Fixes #26929

* fix: only include rawQuery when query params exist

Skip adding rawQuery to cache key when req.query is empty ({}),
preserving existing cache keys for standard requests without
custom query params. This avoids unnecessary cache invalidation
on deploy.

* fix(api): scope raw query param cache key inclusion to flow triggers

Address review feedback from @Nitwel: including all raw query params
globally made it trivial to bypass cache on standard REST endpoints.

Now only /flows/trigger endpoints include raw query params in the
cache key, since those endpoints pass arbitrary query params to the
flow execution context. Standard REST endpoints rely on sanitizedQuery
which already captures all Directus-recognized parameters.

* feat(api): add configurable cache query params for flow triggers

Allow admins to configure which query parameters should affect the
cache key for webhook flow triggers. When cacheQueryParams is set in
the flow trigger options, only those params are included in the cache
key. When not configured, all query params are included (preserving
the fix for #26929).

This prevents unexpected cache busting while still supporting
query-param-dependent flow responses.

Changes:
- FlowManager: store flow options alongside webhook handlers, expose
  getWebhookFlowOptions() for cache key computation
- getCacheKey: extract flow UUID from path, look up flow options,
  filter req.query by the configured allowlist
- Admin UI: add "Cache Query Parameters" tags input on webhook
  trigger options, visible when Cache is enabled

* fix: validate cacheQueryParams type, fix UI visibility, add app changeset

- Add runtime Array.isArray validation for cacheQueryParams to prevent
  silent cache key corruption from non-array values
- Fix hidden condition: use cacheEnabled === false instead of
  !cacheEnabled so the field shows when cache defaults to enabled
- Add @directus/app to changeset (UI changes require it)

* style: add blank line to satisfy padding-line-between-statements

* test(app): add tests for cacheQueryParams UI visibility

* fix: use typed function signature instead of Function type

* fix: use inline labels instead of missing translation keys for cache query params field

* simplify and cleanup

* update tests

* update text

* update changeset

* test(api): add FlowManager.getFlow unit tests

* style: format flows.test.ts with prettier

---------

Co-authored-by: Nitwel <mail@nitwel.de>

* Fix "Use named routes instead of hardcoded path strings #26733" (#26809)

* In app\src\components\v-list-item.vue, change the type of `to` from RouteLocation to RouteLocationRaw.

* In app\src\modules\settings\index.ts, name two paths: 'ai' and 'extensions'.

* Update ai-conversation.vue

* Update app\src\composables\use-collab.ts

* Update app\src\modules\activity\routes\item.vue

* Update app\src\modules\content

* Update app\src\modules\deployment

* Update app\src\modules\files\

* Update app\src\modules\insights\

* Update app\src\modules\users\

* Update app\src\views\private\

* Update app\src\modules\settings\

* Create good-geckos-ask.md

* Fix format problems

* Fix unit test in app\src\composables\use-collab.test.ts.

* Fix format problem.

* Update previously missed files.

app\src\modules\deployment\routes\provider\dashboard.vue
app\src\modules\files\routes\add-new.vue
app\src\modules\settings\routes\flows\overview.vue

* Modify app\src\modules\settings\routes\flows\overview.test.ts

* Fix format issues.

* Fix formt issue.

* In app\src\modules\deployment\components\navigation.vue, use `if-else` instead of ternary operator to set `link`'s value.

* fix item

* fix user nav

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Nitwel <mail@nitwel.de>

* Fix MSSQL schema application failing for text fields with MAX length … (#26934)

* Fix MSSQL schema application failing for text fields with MAX length (-1)

* Add begsaquib to contributors list

* fix: Normalize MSSQL text field `MAX` length to `null` in `parseMaxLength` during schema introspection to prevent invalid SQL during schema application, and introduce a new `apply-diff` utility

* fix: Normalize MSSQL text field MAX length (`-1`) to `null` in `parseMaxLength` to prevent invalid SQL during schema application.

* test: Add comprehensive tests for the `applyDiff` utility, covering snapshot application to collections and fields.

* feat: Introduce `FieldsService` for comprehensive field metadata, schema, and permission management, including a new test file.

* update changeset

---------

Co-authored-by: Nitwel <mail@nitwel.de>

* Revert "Improve configurability of health checks (#26987)" (#27131)

This reverts commit 41edb6c.

* New Crowdin updates (#27063)

* Update source file en-US.yaml

* Update source file en-US.yaml

* Update source file en-US.yaml

* Release 11.17.3 (#27132)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Add opt-in must-revalidate and ETag headers for assets via ASSETS_CACHE_REVALIDATE env var (#27027)

* feat: add cache revalidate for assets

* build: add changeset

* refactor: check conditional headers before loading asset from storage

* fix: add env variable to type-map

* fix: use admin access to get modified_on field

* fix: use admin file service if modified_on return null

* fix: remove default config to env-stub

* refactor: avoid double permission validation

* refactor: move logic to bb testing

* refactor: test using conditional ASSET_CACHE_REVALIDATE value

* remove redundant accountability:null

---------

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* fix(api): reject collection names containing "/" (#27114)

* fix(api): reject collection names containing "/"

Collection names with "/" break URL routing because Express interprets
the slash as a path separator, making the collection unreachable via
REST API. Add input validation at creation time to reject "/" in
collection names, following the existing directus_ prefix validation
pattern.

Closes #27093

* add changeset

---------

Co-authored-by: Nitwel <mail@nitwel.de>

* Add ai policy (#27146)

* add ai policy

* simplify

* add ai policy note to CoC

* Update ai_policy.md

* fix(sdk): reflect policies permission system in policy/user types (#27152)

* fix(sdk): reflect policies permission system in policy/user types

directus_policies.users, directus_policies.roles and directus_users.policies
are M2M relations through directus_access, but the SDK types had them typed
as direct arrays of DirectusUser / DirectusRole / DirectusPolicy. That meant
payloads built from these types didn't match the API at runtime (e.g.
creating a policy with users required each entry to be a { user: id } access
item, not a user id).

Retype them as DirectusAccess[] to match the schema.

Closes #25757

* Fix SDK types for user access relations

Updated SDK types to correctly link to the directus_access junction collection, reflecting the policies permission system.

---------

Co-authored-by: Nitwel <mail@nitwel.de>

* Fix `VERSION_SAVE` activity/revisions not respecting collection tracking settings (#27096)

* fix(api): respect collection accountability on content version save

The VersionsService.save() method was always writing activity and revision
records for content version saves, ignoring the accountability configuration
of the underlying collection. As a result, collections configured to "Do Not
Track Anything" still produced activity and revision rows whenever a version
was saved.

Check the underlying collection's accountability setting before writing:

- accountability === null     -> skip both activity and revision
- accountability === 'activity' -> create activity, skip revision
- accountability === 'all'     -> create both (existing behaviour)

This matches the gate already used by ItemsService.createOne/updateMany
for regular item mutations.

Fixes #25894

* Address review feedback on version accountability tracking

- Inline activity/revisions service instantiation to match flows.ts pattern
- Reword changeset summary for clarity
- Share test schema across tracking cases via per-collection fixtures
- Use mockItemsService test-utils for consistent items-service mocking
- Sign CLA

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* default accountability to null

* rename to trackingAccountability to reduce confusion

* improve tests

* Apply suggestion from @ComfortablyCoding

* Apply suggestion from @AlexGaillard

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: daedalus <44623501+ComfortablyCoding@users.noreply.github.com>
Co-authored-by: Alex Gaillard <alex@directus.io>

* Improve user token flows with immediate save and safer actions (#27108)

* Improve user token flows with immediate save and safer actions

* Cleanup redudant code, make route logic generic

* Remove now invalid translation key

* Add in en-GB translation strings

---------

Co-authored-by: Alex Gaillard <alex@directus.io>

* Add a force option to schema apply to bypass hash check (#27136)

* added force option to schema apply

* Update api/src/controllers/schema.ts

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Update .changeset/cute-rivers-mate.md

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* cleanup

* default to false

* adjust error message

* add test

* add jsdoc

* add new option to service type

* Update cute-rivers-mate.md

* Update cute-rivers-mate.md

---------

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* Fix `useShortcut` attempting to access document before available (#27155)

* move event listener registration to onMounted

* add changeset

* rework text checks in bb (#27156)

* Update license

* Fixed flows not awaiting reload (#27137)

* fixed flows not awaiting reload

* switch to p-queue

* fix

* only await queue when there are items pending

---------

Co-authored-by: judda <44623501+ComfortablyCoding@users.noreply.github.com>

* xiiui ← Update sidebar styles (#26990)

* xiiui ← Update header and navigation bar and introduce shell theme scope (#27058)

Co-authored-by: HZooly <torzuoli.hugo@gmail.com>

* xiiui ← Update header bar elements and remove headline and breadcrumbs (#27101)

* xiiui ← Update primary header actions to show label and replace outlined header action buttons (#27147)

* xiiui ← Update collab avatar indicator design (#27162)

* xiiui ← UI refinements: drawer width, disabled ghost button, header alignment, table height (#27171)

* xiiui ← Introduce VersionChip component (#27172)

* xiiui ← Update Visual Editor header bar buttons (#27182)

* xiiui β†’ Update Visual Editor popover/modal action buttons (#27186)

* Enhance public view with TresJS shader background

- Replaced the CSS animated-blob fallback in the public view with a TresJS canvas scaffold for a WebGL shader background.
- Added new shader components and updated the Vite configuration to include the vite-plugin-glsl.
- Updated ESLint configuration to ignore TresJS custom-renderer elements.
- Added new dependencies for TresJS and updated existing ones in pnpm-lock.yaml and package.json.

* Remove cursor interaction on shader

* prevent layout shift when navigating away from visual editor (#27367)

* xiiui ← Update color system for VChip and VersionMenu components (#27339)

* xiiui β†’ Calendar layout toolbar responsiveness (#27317)

* xiiui β†’ Image Editor save button uses split button (#27318)

* xiiui ← Update SearchInput component to match the new design (#27370)

* xiiui ← Update mobile appearance of drawer sidebar (#27377)

* fix merge conflict resolution issue

* xiiui ← Update UI for the Draft & Publish workflow (#27414)

* xiiui ← Update theme preview component to match the new design (#27413)

* Enhance shader background with dynamic project color support

* Add tresjs shader background for public pages in Directus app

* update changsets

* fix merge conflict resolution issues

* Recalculate particles on canvas resize with proper disposal

* Enhance shader background and experience components with dynamic color handling and improved particle geometry. Implement responsive resizing for particle density and update shader uniforms for better visual effects.

* fix: Adjust clear color calculation in shader background for improved visual consistency

* Integrate theme configuration for dynamic clear color adjustment in shader background

* feat: add DotGridShader and webgpu rendering

* feat: integrate @tresjs/leches controls for tweaking

* refactor: enhance canvas controls and update clear color logic in shader background

* Enhance DotGridShader and ShaderBackground components with improved color handling and control updates. Adjusted dot radius, noise parameters, and added a secondary color for gradient effects. Updated canvas color logic to support dynamic project color changes.

* Add new defaults for shader config and remove dev dep tres leches

* Lazy-load shader background to keep three.js out of the eager router chunk

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

* Remove unused plasma shader leftovers and their deps

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

* Add motion preference handling to DotGridShader component

- Integrated `useLoop` and `usePreferredReducedMotion` for improved performance.
- Implemented logic to stop the rendering loop based on user motion preferences, enhancing accessibility.
- Updated rendering behavior to accommodate reduced motion settings.

---------

Co-authored-by: Florian C. Wachmann <dev@formfcw.com>
Co-authored-by: Hugo Torzuoli <torzuoli.hugo@gmail.com>
Co-authored-by: Bryant Gillespie <bryant@directus.io>
Co-authored-by: Gaetan SENN <gaetan.senn@gmail.com>
Co-authored-by: Rob Luton <rob.luton@gmail.com>
Co-authored-by: James White <jamesw1013@googlemail.com>
Co-authored-by: Alex Gaillard <alex@directus.io>
Co-authored-by: daedalus <44623501+ComfortablyCoding@users.noreply.github.com>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Om Singh <omsingh2849@gmail.com>
Co-authored-by: Nitwel <mail@nitwel.de>
Co-authored-by: okxint <130782884+okxint@users.noreply.github.com>
Co-authored-by: John Costa <costajohnt@gmail.com>
Co-authored-by: powerseed <42278237+powerseed@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Saquib Beg <123379270+begsaquib@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yogeshwaran C <84272111+yogeshwaran-c@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: LZylstra <11338479+LZylstra@users.noreply.github.com>
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Jun 15, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants