feat: add an always-show scrollbars preference

Adds a device-local setting to keep overlay scrollbars visible.
Surfaces the setting in visual settings and settings search.
Updates scrollbar behavior and tests for the new preference.
This commit is contained in:
Bohdan Triapitsyn
2026-09-07 23:16:36 +03:00
parent 7b206b1014
commit 2ec0238e5c
24 changed files with 273 additions and 14 deletions
@@ -16,6 +16,7 @@ import { useSkillsCatalogStore } from '@/stores/useSkillsCatalogStore';
import { useConfigStore } from '@/stores/useConfigStore';
import { Tooltip, TooltipTrigger } from '@/components/ui/tooltip';
import { ErrorBoundary } from '@/components/ui/ErrorBoundary';
import { ScrollableOverlay } from '@/components/ui/ScrollableOverlay';
import { AgentsSidebar } from '@/components/sections/agents/AgentsSidebar';
import { AgentsPage } from '@/components/sections/agents/AgentsPage';
import { BehaviorPage } from '@/components/sections/behavior/BehaviorPage';
@@ -841,7 +842,7 @@ export const SettingsView: React.FC<SettingsViewProps> = ({ onClose, forceMobile
</div>
{/* Scrollable nav items */}
<div className="flex-1 min-h-0 overflow-y-auto overflow-x-hidden">
<ScrollableOverlay outerClassName="flex-1 min-h-0" disableHorizontal>
<div className="flex flex-col gap-0.5 px-4 pt-4 pb-2">
{hasSearchQuery ? (
settingsSearchResults.length > 0 ? (() => {
@@ -956,7 +957,7 @@ export const SettingsView: React.FC<SettingsViewProps> = ({ onClose, forceMobile
));
})()}
</div>
</div>
</ScrollableOverlay>
{/* Footer */}
<div className="overflow-hidden transition-opacity duration-150 opacity-100">