feat(header): add opt-in auto-hide-on-scroll for the header (#6738)

* feat(header): add opt-in auto-hide-on-scroll for the header

New per-user header preference (default off): when enabled, the
header slides away while scrolling down and reappears on scroll-up or
near the top of the page. Disabled while in board edit mode, and
skipped entirely while focus is inside the header. Only applies when
the header is set to visible - the existing hover-to-reveal floating
controls already cover the hidden-header case.

* chore(api): regenerate the checked-in OpenAPI schema

check:openapi was failing in CI - the schema on disk hadn't been
regenerated after the header preferences gained autoHideOnScroll.

Add scripts/generate-openapi-schema.mts (and a generate:openapi
package script) alongside the existing check script so this is a
one-command fix next time the schema drifts.

* docs(users): document the header studio's visibility and auto-hide options

Header customization (drag-to-arrange controls, hide/show, hover-reveal
and pin, auto-hide-on-scroll) had no documentation on the user general
settings page.
This commit is contained in:
Bergasha authored and GitHub committed 2026-08-29 14:56:02 +10:00
1 parent ee08beef59
commit e58c229664
11 files changed
+107 -2

No files matched your search

@@ -18,6 +18,7 @@ import {
Paper,
SegmentedControl,
Stack,
Switch,
Text,
ThemeIcon,
Tooltip,
@@ -202,7 +203,16 @@ export const HeaderComposer = ({ value, onChange, boards, homeBoardId }: HeaderC
{t("description")}
</Text>
</Stack>
<Group gap="xs">
<Group gap="sm">
<Tooltip label={t("action.autoHideOnScrollDescription")} disabled={!value.visible}>
<Switch
size="sm"
label={t("action.autoHideOnScroll")}
checked={value.autoHideOnScroll}
disabled={!value.visible}
onChange={(event) => onChange({ ...value, autoHideOnScroll: event.currentTarget.checked })}
/>
</Tooltip>
<Tooltip label={value.visible ? t("action.hide") : t("action.show")}>
<ActionIcon
size="lg"