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:
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Bildlaufleisten immer anzeigen',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Bildlaufleisten bleiben sichtbar, damit du sie ohne vorheriges Scrollen ziehen kannst. Gilt nur auf diesem Gerät.',
|
||||
'settings.providers.page.openCodeGo.title': 'OpenCode Go Nutzungsverfolgung',
|
||||
'settings.providers.page.openCodeGo.description': 'Verbinden Sie das OpenCode Go Dashboard, um rollierenden, wöchentlichen und monatlichen Verbrauch anzuzeigen.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'Workspace-ID',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Always show scrollbars',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Keep scrollbars visible so you can drag them without scrolling first. Applies on this device only.',
|
||||
'settings.providers.page.openCodeGo.title': 'OpenCode Go usage tracking',
|
||||
'settings.providers.page.openCodeGo.description': 'Connect the OpenCode Go dashboard to show rolling, weekly, and monthly quota.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'Workspace ID',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Mostrar siempre las barras de desplazamiento',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Mantén las barras visibles para poder arrastrarlas sin desplazarte primero. Solo se aplica en este dispositivo.',
|
||||
'settings.providers.page.openCodeGo.title': 'Seguimiento de uso de OpenCode Go',
|
||||
'settings.providers.page.openCodeGo.description': 'Conecta el panel de OpenCode Go para ver las cuotas móvil, semanal y mensual.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'ID del espacio de trabajo',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Toujours afficher les barres de défilement',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Gardez les barres visibles pour pouvoir les faire glisser sans commencer par faire défiler le contenu. Uniquement sur cet appareil.',
|
||||
'settings.providers.page.openCodeGo.title': 'Suivi de l’utilisation d’OpenCode Go',
|
||||
'settings.providers.page.openCodeGo.description': 'Connectez le tableau de bord OpenCode Go pour afficher les quotas glissant, hebdomadaire et mensuel.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'ID de l’espace de travail',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'スクロールバーを常に表示',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'スクロールバーを常に表示し、先にスクロールしなくてもドラッグできるようにします。このデバイスにのみ適用されます。',
|
||||
'settings.providers.page.openCodeGo.title': 'OpenCode Go 使用量追跡',
|
||||
'settings.providers.page.openCodeGo.description': 'OpenCode Go ダッシュボードを接続して、ローリング、週間、月間のクォータを表示します。',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'ワークスペース ID',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': '스크롤바 항상 표시',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': '먼저 스크롤하지 않고도 드래그할 수 있도록 스크롤바를 항상 표시합니다. 이 기기에만 적용됩니다.',
|
||||
'settings.providers.page.openCodeGo.title': 'OpenCode Go 사용량 추적',
|
||||
'settings.providers.page.openCodeGo.description': 'OpenCode Go 대시보드를 연결하여 롤링, 주간 및 월간 할당량을 표시합니다.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': '워크스페이스 ID',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Zawsze pokazuj paski przewijania',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Paski przewijania pozostają widoczne, aby można było je przeciągać bez wcześniejszego przewijania. Dotyczy tylko tego urządzenia.',
|
||||
'settings.providers.page.openCodeGo.title': 'Śledzenie użycia OpenCode Go',
|
||||
'settings.providers.page.openCodeGo.description': 'Połącz panel OpenCode Go, aby wyświetlać limity kroczące, tygodniowe i miesięczne.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'ID przestrzeni roboczej',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Sempre mostrar barras de rolagem',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Mantenha as barras visíveis para poder arrastá-las sem precisar rolar primeiro. Aplica-se apenas a este dispositivo.',
|
||||
'settings.providers.page.openCodeGo.title': 'Monitoramento de uso do OpenCode Go',
|
||||
'settings.providers.page.openCodeGo.description': 'Conecte o painel do OpenCode Go para exibir as cotas móvel, semanal e mensal.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'ID do workspace',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Kaydırma çubuklarını her zaman göster',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Önce kaydırma yapmadan sürükleyebilmeniz için kaydırma çubuklarını görünür tutar. Yalnızca bu cihazda geçerlidir.',
|
||||
'settings.providers.page.openCodeGo.title': 'OpenCode Go kullanım takibi',
|
||||
'settings.providers.page.openCodeGo.description': 'Kayan, haftalık ve aylık kotayı göstermek için OpenCode Go kontrol panelini bağlayın.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'Çalışma alanı ID\'si',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': 'Завжди показувати смуги прокручування',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': 'Залишати смуги прокручування видимими, щоб можна було перетягнути повзунок без попереднього прокручування. Лише на цьому пристрої.',
|
||||
'settings.providers.page.openCodeGo.title': 'Відстеження використання OpenCode Go',
|
||||
'settings.providers.page.openCodeGo.description': 'Підключіть панель OpenCode Go, щоб бачити ковзну, тижневу та місячну квоту.',
|
||||
'settings.providers.page.openCodeGo.workspaceId': 'ID робочого простору',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': '始终显示滚动条',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': '保持滚动条可见,无需先滚动即可拖动。仅在此设备上生效。',
|
||||
'settings.providers.page.openCodeGo.title': 'OpenCode Go 用量跟踪',
|
||||
'settings.providers.page.openCodeGo.description': '连接 OpenCode Go 控制面板以显示滚动、每周和每月配额。',
|
||||
'settings.providers.page.openCodeGo.workspaceId': '工作区 ID',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { linearIntegrationI18n } from './linear-integration.i18n';
|
||||
export const settingsDict = {
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbars': '一律顯示捲軸',
|
||||
'settings.openchamber.visual.field.alwaysShowScrollbarsHint': '保持捲軸可見,不必先捲動就能拖曳。僅在此裝置上生效。',
|
||||
'settings.providers.page.openCodeGo.title': 'OpenCode Go 用量追蹤',
|
||||
'settings.providers.page.openCodeGo.description': '連接 OpenCode Go 控制面板以顯示滾動、每週和每月配額。',
|
||||
'settings.providers.page.openCodeGo.workspaceId': '工作區 ID',
|
||||
|
||||
@@ -544,6 +544,7 @@ export const LOCAL_DEVICE_KEYS = [
|
||||
'linearIssueListPriority',
|
||||
'showTerminalQuickKeysOnDesktop',
|
||||
'dockBadgeEnabled',
|
||||
'alwaysShowScrollbars',
|
||||
'agentMemoryViewedAt',
|
||||
'projectContextSidebarWidth',
|
||||
] as const;
|
||||
|
||||
@@ -17,6 +17,17 @@ const runtimeCtx = {
|
||||
};
|
||||
|
||||
describe('settings search', () => {
|
||||
test('finds the scrollbar preference on every surface', () => {
|
||||
for (const context of [runtimeCtx, { ...runtimeCtx, isDesktop: true }, { ...runtimeCtx, isVSCode: true }, { ...runtimeCtx, isMobile: true }]) {
|
||||
const results = buildSettingsSearchResults({
|
||||
query: 'scrollbar',
|
||||
runtimeCtx: context,
|
||||
t,
|
||||
getPageTitle: (page) => page,
|
||||
});
|
||||
expect(results.find((result) => result.id === 'appearance.scrollbars')?.page).toBe('appearance');
|
||||
}
|
||||
});
|
||||
test('finds Linear connect on the integrations page', () => {
|
||||
const results = buildSettingsSearchResults({
|
||||
query: 'linear',
|
||||
|
||||
@@ -75,6 +75,13 @@ const SETTINGS_SEARCH_ITEMS: readonly SettingsSearchItem[] = [
|
||||
// Electron shell (isMac already implies isDesktopShell), local or remote host.
|
||||
isAvailable: (ctx) => ctx.isMac,
|
||||
},
|
||||
{
|
||||
id: 'appearance.scrollbars',
|
||||
page: 'appearance',
|
||||
titleKey: 'settings.openchamber.visual.field.alwaysShowScrollbars',
|
||||
descriptionKey: 'settings.openchamber.visual.field.alwaysShowScrollbarsHint',
|
||||
keywords: ['scrollbar', 'scrollbars', 'scroll', 'mouse', 'wheel', 'accessibility', 'always visible'],
|
||||
},
|
||||
{
|
||||
id: 'appearance.pwa-install-name',
|
||||
page: 'appearance',
|
||||
|
||||
Reference in New Issue
Block a user