feat: default to the new mobile layout
Make the new mobile layout the default when no preference is stored, and relabel the legacy 'default' option as Old (localized as Previous/older where it reads better) while keeping its stored value for backwards compatibility.
This commit is contained in:
@@ -1536,7 +1536,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.preview.customServerLine': 'Hello! This is a preview of the custom TTS server.',
|
||||
'settings.openchamber.visual.section.colorMode': 'Color Mode',
|
||||
'settings.openchamber.visual.section.mobileLayout': 'Mobile Layout',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': 'Default',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': 'Old',
|
||||
'settings.openchamber.visual.option.mobileLayout.new': 'New',
|
||||
'settings.openchamber.visual.section.localization': 'Localization',
|
||||
'settings.openchamber.visual.section.spacingAndLayout': 'Spacing & Layout',
|
||||
|
||||
@@ -1503,7 +1503,7 @@ export const settingsDict = {
|
||||
"settings.voice.page.preview.customServerLine": "¡Hola! Esta es una previsualización del servidor TTS personalizado.",
|
||||
"settings.openchamber.visual.section.colorMode": "Modo de color",
|
||||
"settings.openchamber.visual.section.mobileLayout": "Diseño móvil",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Predeterminado",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Anterior",
|
||||
"settings.openchamber.visual.option.mobileLayout.new": "Nuevo",
|
||||
"settings.openchamber.visual.section.localization": "Localización",
|
||||
"settings.openchamber.visual.section.spacingAndLayout": "Espaciado y diseño",
|
||||
|
||||
@@ -1503,7 +1503,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.preview.customServerLine': '안녕하세요! 사용자 정의 TTS 서버 미리보기입니다.',
|
||||
'settings.openchamber.visual.section.colorMode': '색상 모드',
|
||||
'settings.openchamber.visual.section.mobileLayout': '모바일 레이아웃',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '기본값',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '이전',
|
||||
'settings.openchamber.visual.option.mobileLayout.new': '새로움',
|
||||
'settings.openchamber.visual.section.localization': '지역화',
|
||||
'settings.openchamber.visual.section.spacingAndLayout': '간격 및 레이아웃',
|
||||
|
||||
@@ -1008,7 +1008,7 @@ export const settingsDict = {
|
||||
'settings.openchamber.visual.section.chatRenderModeAria': 'Tryb renderowania czatu',
|
||||
'settings.openchamber.visual.section.colorMode': 'Tryb kolorów',
|
||||
'settings.openchamber.visual.section.mobileLayout': 'Układ mobilny',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': 'Domyślny',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': 'Poprzedni',
|
||||
'settings.openchamber.visual.option.mobileLayout.new': 'Nowy',
|
||||
'settings.openchamber.visual.section.diffLayout': 'Układ diffa',
|
||||
'settings.openchamber.visual.section.diffLayoutAria': 'Układ diffa',
|
||||
|
||||
@@ -1503,7 +1503,7 @@ export const settingsDict = {
|
||||
"settings.voice.page.preview.customServerLine": "Olá! Esta é uma prévia do servidor TTS personalizado.",
|
||||
"settings.openchamber.visual.section.colorMode": "Modo de cor",
|
||||
"settings.openchamber.visual.section.mobileLayout": "Layout móvel",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Padrão",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Anterior",
|
||||
"settings.openchamber.visual.option.mobileLayout.new": "Novo",
|
||||
"settings.openchamber.visual.section.localization": "Localização",
|
||||
"settings.openchamber.visual.section.spacingAndLayout": "Espaçamento e layout",
|
||||
|
||||
@@ -1503,7 +1503,7 @@ export const settingsDict = {
|
||||
"settings.voice.page.preview.customServerLine": "Привіт! Це попередній перегляд спеціального сервера TTS.",
|
||||
"settings.openchamber.visual.section.colorMode": "Режим теми",
|
||||
"settings.openchamber.visual.section.mobileLayout": "Мобільний макет",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Стандартний",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Попередній",
|
||||
"settings.openchamber.visual.option.mobileLayout.new": "Новий",
|
||||
"settings.openchamber.visual.section.localization": "Локалізація",
|
||||
"settings.openchamber.visual.section.spacingAndLayout": "Відступи й компонування",
|
||||
|
||||
@@ -1503,7 +1503,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.preview.customServerLine': '你好!这是自定义 TTS 服务器的预览。',
|
||||
'settings.openchamber.visual.section.colorMode': '颜色模式',
|
||||
'settings.openchamber.visual.section.mobileLayout': '移动端布局',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '默认',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '旧版',
|
||||
'settings.openchamber.visual.option.mobileLayout.new': '新版',
|
||||
'settings.openchamber.visual.section.localization': '本地化',
|
||||
'settings.openchamber.visual.section.spacingAndLayout': '间距与布局',
|
||||
|
||||
@@ -1469,7 +1469,7 @@
|
||||
'settings.openchamber.visual.field.mobileKeyboardModeAria': '行動裝置鍵盤行為',
|
||||
'settings.openchamber.visual.field.selectMobileKeyboardModePlaceholder': '選擇鍵盤行為',
|
||||
'settings.openchamber.visual.actions.resetMobileKeyboardModeAria': '重設行動裝置鍵盤行為',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '預設',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '舊版',
|
||||
'settings.openchamber.visual.option.mobileLayout.new': '新版',
|
||||
'settings.openchamber.visual.field.interfaceFontSize': '介面字體大小',
|
||||
'settings.openchamber.visual.field.interfaceFont': '介面字體',
|
||||
|
||||
@@ -3,18 +3,20 @@ export type MobileLayoutPreference = 'default' | 'new';
|
||||
const MOBILE_LAYOUT_PREFERENCE_KEY = 'openchamber-mobile-layout';
|
||||
|
||||
export const normalizeMobileLayoutPreference = (value: unknown): MobileLayoutPreference => {
|
||||
return value === 'new' ? 'new' : 'default';
|
||||
// 'new' is the default; only an explicit 'default' (the legacy/"Old" layout)
|
||||
// opts out of it.
|
||||
return value === 'default' ? 'default' : 'new';
|
||||
};
|
||||
|
||||
export const getStoredMobileLayoutPreference = (): MobileLayoutPreference => {
|
||||
if (typeof window === 'undefined') {
|
||||
return 'default';
|
||||
return 'new';
|
||||
}
|
||||
|
||||
try {
|
||||
return normalizeMobileLayoutPreference(window.localStorage.getItem(MOBILE_LAYOUT_PREFERENCE_KEY));
|
||||
} catch {
|
||||
return 'default';
|
||||
return 'new';
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user