Просмотр исходного кода

feat(app): simplify layout transition messaging

usrnk1 1 месяц назад
Родитель
Сommit
0156d3028f

+ 2 - 7
packages/app/src/components/settings-general.tsx

@@ -24,7 +24,6 @@ import {
   sansInput,
   sansInput,
   terminalDefault,
   terminalDefault,
   terminalFontFamily,
   terminalFontFamily,
-  formatOldInterfaceSunset,
   terminalInput,
   terminalInput,
   useSettings,
   useSettings,
 } from "@/context/settings"
 } from "@/context/settings"
@@ -260,9 +259,7 @@ export const SettingsGeneral: Component = () => {
               <Tag variant="accent">{language.t("settings.general.row.newInterface.badge")}</Tag>
               <Tag variant="accent">{language.t("settings.general.row.newInterface.badge")}</Tag>
             </span>
             </span>
           }
           }
-          description={language.t("settings.general.row.newInterface.description", {
-            date: formatOldInterfaceSunset(language.intl(), true),
-          })}
+          description={language.t("settings.general.row.newInterface.description")}
         >
         >
           <div data-action="settings-new-layout-designs">
           <div data-action="settings-new-layout-designs">
             <Switch
             <Switch
@@ -286,9 +283,7 @@ export const SettingsGeneral: Component = () => {
       <SettingsList>
       <SettingsList>
         <SettingsRow
         <SettingsRow
           title={language.t("settings.general.row.newInterfaceNotice.title")}
           title={language.t("settings.general.row.newInterfaceNotice.title")}
-          description={language.t("settings.general.row.newInterfaceNotice.description", {
-            date: formatOldInterfaceSunset(language.intl()),
-          })}
+          description={language.t("settings.general.row.newInterfaceNotice.description")}
         >
         >
           <Button size="small" variant="ghost" onClick={settings.general.dismissNewInterfaceNotice}>
           <Button size="small" variant="ghost" onClick={settings.general.dismissNewInterfaceNotice}>
             {language.t("settings.general.row.newInterfaceNotice.dismiss")}
             {language.t("settings.general.row.newInterfaceNotice.dismiss")}

+ 20 - 46
packages/app/src/components/settings-v2/general.tsx

@@ -1,6 +1,5 @@
 import { Component, Show, createMemo, createResource, onMount } from "solid-js"
 import { Component, Show, createMemo, createResource, onMount } from "solid-js"
 import { createMediaQuery } from "@solid-primitives/media"
 import { createMediaQuery } from "@solid-primitives/media"
-import { Tag } from "@opencode-ai/ui/v2/badge-v2"
 import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2"
 import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2"
 import { SelectV2 } from "@opencode-ai/ui/v2/select-v2"
 import { SelectV2 } from "@opencode-ai/ui/v2/select-v2"
 import { Switch } from "@opencode-ai/ui/v2/switch-v2"
 import { Switch } from "@opencode-ai/ui/v2/switch-v2"
@@ -22,7 +21,6 @@ import {
   sansInput,
   sansInput,
   terminalDefault,
   terminalDefault,
   terminalFontFamily,
   terminalFontFamily,
-  formatOldInterfaceSunset,
   terminalInput,
   terminalInput,
   useSettings,
   useSettings,
 } from "@/context/settings"
 } from "@/context/settings"
@@ -30,6 +28,7 @@ import { playSoundById, SOUND_OPTIONS } from "@/utils/sound"
 import { Link } from "../link"
 import { Link } from "../link"
 import { SettingsListV2 } from "./parts/list"
 import { SettingsListV2 } from "./parts/list"
 import { SettingsRowV2 } from "./parts/row"
 import { SettingsRowV2 } from "./parts/row"
+import { LayoutRetirementNotice, LayoutTransitionToggle } from "./interface-transition"
 import "./settings-v2.css"
 import "./settings-v2.css"
 
 
 let demoSoundState = {
 let demoSoundState = {
@@ -229,53 +228,28 @@ export const SettingsGeneralV2: Component<{
   })
   })
 
 
   const InterfaceSection = () => (
   const InterfaceSection = () => (
-    <div class="settings-v2-section">
-      <div class="settings-v2-interface-feature">
-        <SettingsListV2>
-          <SettingsRowV2
-            title={
-              <span class="flex items-center gap-2">
-                {language.t("settings.general.row.newInterface.title")}
-                <Tag variant="accent">{language.t("settings.general.row.newInterface.badge")}</Tag>
-              </span>
-            }
-            description={language.t("settings.general.row.newInterface.description", {
-              date: formatOldInterfaceSunset(language.intl(), true),
-            })}
-          >
-            <div data-action="settings-new-layout-designs">
-              <Switch
-                checked={settings.general.newLayoutDesigns()}
-                onChange={(checked) => {
-                  settings.general.setNewLayoutDesigns(checked)
-                  if (checked) return
-                  void import("@/components/dialog-settings").then((module) => {
-                    void dialog.show(() => <module.DialogSettings />)
-                  })
-                }}
-              />
-            </div>
-          </SettingsRowV2>
-        </SettingsListV2>
-      </div>
-    </div>
+    <LayoutTransitionToggle
+      title={language.t("settings.general.row.newInterface.title")}
+      badge={language.t("settings.general.row.newInterface.badge")}
+      description={language.t("settings.general.row.newInterface.description")}
+      checked={settings.general.newLayoutDesigns()}
+      onChange={(checked) => {
+        settings.general.setNewLayoutDesigns(checked)
+        if (checked) return
+        void import("@/components/dialog-settings").then((module) => {
+          void dialog.show(() => <module.DialogSettings />)
+        })
+      }}
+    />
   )
   )
 
 
   const InterfaceNoticeSection = () => (
   const InterfaceNoticeSection = () => (
-    <div class="settings-v2-section">
-      <SettingsListV2>
-        <SettingsRowV2
-          title={language.t("settings.general.row.newInterfaceNotice.title")}
-          description={language.t("settings.general.row.newInterfaceNotice.description", {
-            date: formatOldInterfaceSunset(language.intl()),
-          })}
-        >
-          <ButtonV2 size="small" variant="ghost-muted" onClick={settings.general.dismissNewInterfaceNotice}>
-            {language.t("settings.general.row.newInterfaceNotice.dismiss")}
-          </ButtonV2>
-        </SettingsRowV2>
-      </SettingsListV2>
-    </div>
+    <LayoutRetirementNotice
+      title={language.t("settings.general.row.newInterfaceNotice.title")}
+      description={language.t("settings.general.row.newInterfaceNotice.description")}
+      dismiss={language.t("settings.general.row.newInterfaceNotice.dismiss")}
+      onDismiss={settings.general.dismissNewInterfaceNotice}
+    />
   )
   )
 
 
   const GeneralSection = () => (
   const GeneralSection = () => (

+ 54 - 0
packages/app/src/components/settings-v2/interface-transition.tsx

@@ -0,0 +1,54 @@
+import { Tag } from "@opencode-ai/ui/v2/badge-v2"
+import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2"
+import { Switch } from "@opencode-ai/ui/v2/switch-v2"
+import { SettingsListV2 } from "./parts/list"
+import { SettingsRowV2 } from "./parts/row"
+
+export function LayoutTransitionToggle(props: {
+  title: string
+  badge: string
+  description: string
+  checked: boolean
+  onChange: (checked: boolean) => void
+}) {
+  return (
+    <div class="settings-v2-section">
+      <div class="settings-v2-interface-feature">
+        <SettingsListV2>
+          <SettingsRowV2
+            title={
+              <span class="flex items-center gap-2">
+                {props.title}
+                <Tag variant="accent">{props.badge}</Tag>
+              </span>
+            }
+            description={props.description}
+          >
+            <div data-action="settings-new-layout-designs">
+              <Switch checked={props.checked} onChange={props.onChange} />
+            </div>
+          </SettingsRowV2>
+        </SettingsListV2>
+      </div>
+    </div>
+  )
+}
+
+export function LayoutRetirementNotice(props: {
+  title: string
+  description: string
+  dismiss: string
+  onDismiss: () => void
+}) {
+  return (
+    <div class="settings-v2-section">
+      <SettingsListV2>
+        <SettingsRowV2 title={props.title} description={props.description}>
+          <ButtonV2 size="small" variant="ghost-muted" onClick={props.onDismiss}>
+            {props.dismiss}
+          </ButtonV2>
+        </SettingsRowV2>
+      </SettingsListV2>
+    </div>
+  )
+}

+ 0 - 8
packages/app/src/context/settings.test.ts

@@ -1,6 +1,5 @@
 import { describe, expect, test } from "bun:test"
 import { describe, expect, test } from "bun:test"
 import {
 import {
-  formatOldInterfaceSunset,
   hasMeaningfulLayoutData,
   hasMeaningfulLayoutData,
   layoutTransitionState,
   layoutTransitionState,
   maximumSunsetTimeout,
   maximumSunsetTimeout,
@@ -34,15 +33,8 @@ describe("layout transition", () => {
     expect(resolveLayoutTransitionClassification(true, false)).toBe(true)
     expect(resolveLayoutTransitionClassification(true, false)).toBe(true)
   })
   })
 
 
-  test("formats the English deadline with an ordinal before sunset", () => {
-    const sunset = new Date(2026, 7, 6)
-    expect(formatOldInterfaceSunset("en-US", true, sunset)).toBe("August 6th")
-    expect(formatOldInterfaceSunset("en-US", false, sunset)).toBe("August 6")
-  })
-
   test("hides the transition until a sunset is scheduled", () => {
   test("hides the transition until a sunset is scheduled", () => {
     expect(layoutTransitionState(false, true, false, false)).toEqual({ available: false, notice: false })
     expect(layoutTransitionState(false, true, false, false)).toEqual({ available: false, notice: false })
-    expect(formatOldInterfaceSunset("en-US")).toBe("")
   })
   })
 
 
   test("existing profiles can switch before sunset", () => {
   test("existing profiles can switch before sunset", () => {

+ 0 - 15
packages/app/src/context/settings.tsx

@@ -60,21 +60,6 @@ export const newLayoutDesignsDefault = true
 // Existing users can switch layouts until local midnight on this date. Set new Date(YYYY, M-1, D) to show.
 // Existing users can switch layouts until local midnight on this date. Set new Date(YYYY, M-1, D) to show.
 export const oldInterfaceSunset = null as Date | null
 export const oldInterfaceSunset = null as Date | null
 
 
-export function formatOldInterfaceSunset(locale: string, ordinal = false, sunset = oldInterfaceSunset) {
-  if (!sunset) return ""
-  const date = new Intl.DateTimeFormat(locale, { month: "long", day: "numeric" }).format(sunset)
-  if (!ordinal || !locale.startsWith("en")) return date
-  return `${date}${ordinalSuffix(sunset.getDate())}`
-}
-
-function ordinalSuffix(day: number) {
-  if (day % 100 >= 11 && day % 100 <= 13) return "th"
-  if (day % 10 === 1) return "st"
-  if (day % 10 === 2) return "nd"
-  if (day % 10 === 3) return "rd"
-  return "th"
-}
-
 function isRecord(value: unknown): value is Record<string, unknown> {
 function isRecord(value: unknown): value is Record<string, unknown> {
   return typeof value === "object" && value !== null && !Array.isArray(value)
   return typeof value === "object" && value !== null && !Array.isArray(value)
 }
 }

+ 2 - 2
packages/app/src/i18n/ar.ts

@@ -738,9 +738,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "التخطيط الجديد",
   "settings.general.row.newInterface.title": "التخطيط الجديد",
   "settings.general.row.newInterface.badge": "جديد",
   "settings.general.row.newInterface.badge": "جديد",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "استخدم علامات التبويب الجديدة وتخطيط الصفحة الرئيسية. يمكنك التبديل بين التخطيطات حتى {{date}}.",
+    "استخدم علامات التبويب الجديدة وتخطيط الصفحة الرئيسية. يمكنك التبديل بين التخطيطات لفترة محدودة.",
   "settings.general.row.newInterfaceNotice.title": "أنت تستخدم الآن التخطيط الجديد",
   "settings.general.row.newInterfaceNotice.title": "أنت تستخدم الآن التخطيط الجديد",
-  "settings.general.row.newInterfaceNotice.description": "تم إيقاف التخطيط السابق في {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "التخطيط السابق لم يعد متاحًا",
   "settings.general.row.newInterfaceNotice.dismiss": "رفض",
   "settings.general.row.newInterfaceNotice.dismiss": "رفض",
   "settings.general.row.pinchZoom.title": "التكبير بإيماءة القرص",
   "settings.general.row.pinchZoom.title": "التكبير بإيماءة القرص",
   "settings.general.row.pinchZoom.description": "السماح بإيماءة القرص على لوحة اللمس وإيماءة Ctrl-scroll للتكبير",
   "settings.general.row.pinchZoom.description": "السماح بإيماءة القرص على لوحة اللمس وإيماءة Ctrl-scroll للتكبير",

+ 2 - 2
packages/app/src/i18n/br.ts

@@ -749,9 +749,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Novo layout",
   "settings.general.row.newInterface.title": "Novo layout",
   "settings.general.row.newInterface.badge": "Novo",
   "settings.general.row.newInterface.badge": "Novo",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Use as novas abas e o layout da página inicial. Alterne entre os layouts até {{date}}.",
+    "Use as novas abas e o layout da página inicial. Alterne entre os layouts por tempo limitado.",
   "settings.general.row.newInterfaceNotice.title": "Agora você está usando o novo layout",
   "settings.general.row.newInterfaceNotice.title": "Agora você está usando o novo layout",
-  "settings.general.row.newInterfaceNotice.description": "O layout anterior foi descontinuado em {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "O layout anterior não está mais disponível",
   "settings.general.row.newInterfaceNotice.dismiss": "Descartar",
   "settings.general.row.newInterfaceNotice.dismiss": "Descartar",
   "settings.general.row.pinchZoom.title": "Zoom com gesto de pinça",
   "settings.general.row.pinchZoom.title": "Zoom com gesto de pinça",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/bs.ts

@@ -814,9 +814,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Novi raspored",
   "settings.general.row.newInterface.title": "Novi raspored",
   "settings.general.row.newInterface.badge": "Novo",
   "settings.general.row.newInterface.badge": "Novo",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Koristite nove kartice i raspored početne stranice. Prebacujte se između rasporeda do {{date}}.",
+    "Koristite nove kartice i raspored početne stranice. Ograničeno vrijeme možete se prebacivati između rasporeda.",
   "settings.general.row.newInterfaceNotice.title": "Sada koristite novi raspored",
   "settings.general.row.newInterfaceNotice.title": "Sada koristite novi raspored",
-  "settings.general.row.newInterfaceNotice.description": "Prethodni raspored je ukinut {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "Prethodni raspored više nije dostupan",
   "settings.general.row.newInterfaceNotice.dismiss": "Odbaci",
   "settings.general.row.newInterfaceNotice.dismiss": "Odbaci",
   "settings.general.row.pinchZoom.title": "Zumiranje štipanjem",
   "settings.general.row.pinchZoom.title": "Zumiranje štipanjem",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/da.ts

@@ -807,9 +807,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Nyt layout",
   "settings.general.row.newInterface.title": "Nyt layout",
   "settings.general.row.newInterface.badge": "Ny",
   "settings.general.row.newInterface.badge": "Ny",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Brug de nye faner og startsidens layout. Skift mellem layoutene indtil {{date}}.",
+    "Brug de nye faner og startsidens layout. Du kan skifte mellem layoutene i en begrænset periode.",
   "settings.general.row.newInterfaceNotice.title": "Du bruger nu det nye layout",
   "settings.general.row.newInterfaceNotice.title": "Du bruger nu det nye layout",
-  "settings.general.row.newInterfaceNotice.description": "Det tidligere layout blev udfaset den {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "Det tidligere layout er ikke længere tilgængeligt",
   "settings.general.row.newInterfaceNotice.dismiss": "Afvis",
   "settings.general.row.newInterfaceNotice.dismiss": "Afvis",
   "settings.general.row.pinchZoom.title": "Knib for at zoome",
   "settings.general.row.pinchZoom.title": "Knib for at zoome",
   "settings.general.row.pinchZoom.description": "Tillad knibebevægelser på pegefeltet og Ctrl-rulning for at zoome",
   "settings.general.row.pinchZoom.description": "Tillad knibebevægelser på pegefeltet og Ctrl-rulning for at zoome",

+ 2 - 2
packages/app/src/i18n/de.ts

@@ -762,9 +762,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Neues Layout",
   "settings.general.row.newInterface.title": "Neues Layout",
   "settings.general.row.newInterface.badge": "Neu",
   "settings.general.row.newInterface.badge": "Neu",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Verwenden Sie die neuen Tabs und das Startseitenlayout. Sie können bis zum {{date}} zwischen den Layouts wechseln.",
+    "Verwenden Sie die neuen Tabs und das Startseitenlayout. Für begrenzte Zeit können Sie zwischen den Layouts wechseln.",
   "settings.general.row.newInterfaceNotice.title": "Sie verwenden jetzt das neue Layout",
   "settings.general.row.newInterfaceNotice.title": "Sie verwenden jetzt das neue Layout",
-  "settings.general.row.newInterfaceNotice.description": "Das vorherige Layout wurde am {{date}} eingestellt.",
+  "settings.general.row.newInterfaceNotice.description": "Das vorherige Layout ist nicht mehr verfügbar",
   "settings.general.row.newInterfaceNotice.dismiss": "Verwerfen",
   "settings.general.row.newInterfaceNotice.dismiss": "Verwerfen",
   "settings.general.row.pinchZoom.title": "Zoom per Fingergeste",
   "settings.general.row.pinchZoom.title": "Zoom per Fingergeste",
   "settings.general.row.pinchZoom.description": "Zoomen per Zwei-Finger- und Ctrl-Scroll-Geste erlauben",
   "settings.general.row.pinchZoom.description": "Zoomen per Zwei-Finger- und Ctrl-Scroll-Geste erlauben",

+ 2 - 2
packages/app/src/i18n/en.ts

@@ -902,9 +902,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "New layout",
   "settings.general.row.newInterface.title": "New layout",
   "settings.general.row.newInterface.badge": "New",
   "settings.general.row.newInterface.badge": "New",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Use the new tabs and home layout. Switch between layouts until {{date}}.",
+    "Use the new tabs and home layout. Switch between layouts for a limited time.",
   "settings.general.row.newInterfaceNotice.title": "You're now using new layout",
   "settings.general.row.newInterfaceNotice.title": "You're now using new layout",
-  "settings.general.row.newInterfaceNotice.description": "The previous layout was sunset on {{date}}",
+  "settings.general.row.newInterfaceNotice.description": "The previous layout is no longer available",
   "settings.general.row.newInterfaceNotice.dismiss": "Dismiss",
   "settings.general.row.newInterfaceNotice.dismiss": "Dismiss",
   "settings.general.row.pinchZoom.title": "Pinch to zoom",
   "settings.general.row.pinchZoom.title": "Pinch to zoom",
   "settings.general.row.pinchZoom.description": "Allow trackpad pinch and Ctrl-scroll gestures to zoom",
   "settings.general.row.pinchZoom.description": "Allow trackpad pinch and Ctrl-scroll gestures to zoom",

+ 2 - 2
packages/app/src/i18n/es.ts

@@ -819,9 +819,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Nuevo diseño",
   "settings.general.row.newInterface.title": "Nuevo diseño",
   "settings.general.row.newInterface.badge": "Nuevo",
   "settings.general.row.newInterface.badge": "Nuevo",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Usa las nuevas pestañas y el diseño de la página de inicio. Cambia entre los diseños hasta el {{date}}.",
+    "Usa las nuevas pestañas y el diseño de la página de inicio. Durante un tiempo limitado, puedes cambiar entre los diseños.",
   "settings.general.row.newInterfaceNotice.title": "Ahora estás usando el nuevo diseño",
   "settings.general.row.newInterfaceNotice.title": "Ahora estás usando el nuevo diseño",
-  "settings.general.row.newInterfaceNotice.description": "El diseño anterior se retiró el {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "El diseño anterior ya no está disponible",
   "settings.general.row.newInterfaceNotice.dismiss": "Descartar",
   "settings.general.row.newInterfaceNotice.dismiss": "Descartar",
   "settings.general.row.pinchZoom.title": "Pellizcar para ampliar",
   "settings.general.row.pinchZoom.title": "Pellizcar para ampliar",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/fr.ts

@@ -759,9 +759,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Nouvelle mise en page",
   "settings.general.row.newInterface.title": "Nouvelle mise en page",
   "settings.general.row.newInterface.badge": "Nouveau",
   "settings.general.row.newInterface.badge": "Nouveau",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Utilisez les nouveaux onglets et la mise en page de l'accueil. Alternez entre les mises en page jusqu'au {{date}}.",
+    "Utilisez les nouveaux onglets et la mise en page de l'accueil. Vous pouvez alterner entre les mises en page pendant une durée limitée.",
   "settings.general.row.newInterfaceNotice.title": "Vous utilisez maintenant la nouvelle mise en page",
   "settings.general.row.newInterfaceNotice.title": "Vous utilisez maintenant la nouvelle mise en page",
-  "settings.general.row.newInterfaceNotice.description": "La mise en page précédente a été retirée le {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "La mise en page précédente n'est plus disponible",
   "settings.general.row.newInterfaceNotice.dismiss": "Ignorer",
   "settings.general.row.newInterfaceNotice.dismiss": "Ignorer",
   "settings.general.row.pinchZoom.title": "Pincer pour zoomer",
   "settings.general.row.pinchZoom.title": "Pincer pour zoomer",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/ja.ts

@@ -744,9 +744,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "新しいレイアウト",
   "settings.general.row.newInterface.title": "新しいレイアウト",
   "settings.general.row.newInterface.badge": "新機能",
   "settings.general.row.newInterface.badge": "新機能",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "新しいタブとホーム画面のレイアウトを使用します。{{date}}まではレイアウトを切り替えられます。",
+    "新しいタブとホーム画面のレイアウトを使用します。期間限定でレイアウトを切り替えられます。",
   "settings.general.row.newInterfaceNotice.title": "新しいレイアウトを使用しています",
   "settings.general.row.newInterfaceNotice.title": "新しいレイアウトを使用しています",
-  "settings.general.row.newInterfaceNotice.description": "以前のレイアウトは{{date}}に廃止されました。",
+  "settings.general.row.newInterfaceNotice.description": "以前のレイアウトは利用できなくなりました",
   "settings.general.row.newInterfaceNotice.dismiss": "閉じる",
   "settings.general.row.newInterfaceNotice.dismiss": "閉じる",
   "settings.general.row.pinchZoom.title": "ピンチでズーム",
   "settings.general.row.pinchZoom.title": "ピンチでズーム",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/ko.ts

@@ -1002,9 +1002,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "새 레이아웃",
   "settings.general.row.newInterface.title": "새 레이아웃",
   "settings.general.row.newInterface.badge": "신규",
   "settings.general.row.newInterface.badge": "신규",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "새 탭과 홈 화면 레이아웃을 사용합니다. {{date}}까지 레이아웃을 전환할 수 있습니다.",
+    "새 탭과 홈 화면 레이아웃을 사용합니다. 제한된 기간 동안 레이아웃을 전환할 수 있습니다.",
   "settings.general.row.newInterfaceNotice.title": "이제 새 레이아웃을 사용 중입니다",
   "settings.general.row.newInterfaceNotice.title": "이제 새 레이아웃을 사용 중입니다",
-  "settings.general.row.newInterfaceNotice.description": "이전 레이아웃은 {{date}}에 사용이 중단되었습니다.",
+  "settings.general.row.newInterfaceNotice.description": "이전 레이아웃은 더 이상 사용할 수 없습니다",
   "settings.general.row.newInterfaceNotice.dismiss": "닫기",
   "settings.general.row.newInterfaceNotice.dismiss": "닫기",
   "settings.general.row.pinchZoom.title": "핀치 줌",
   "settings.general.row.pinchZoom.title": "핀치 줌",
   "settings.general.row.pinchZoom.description": "트랙패드 핀치 및 Ctrl-스크롤 제스처로 확대/축소 허용",
   "settings.general.row.pinchZoom.description": "트랙패드 핀치 및 Ctrl-스크롤 제스처로 확대/축소 허용",

+ 2 - 2
packages/app/src/i18n/no.ts

@@ -1098,9 +1098,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Nytt oppsett",
   "settings.general.row.newInterface.title": "Nytt oppsett",
   "settings.general.row.newInterface.badge": "Ny",
   "settings.general.row.newInterface.badge": "Ny",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Bruk de nye fanene og startsidens oppsett. Bytt mellom oppsettene frem til {{date}}.",
+    "Bruk de nye fanene og startsidens oppsett. I en begrenset periode kan du bytte mellom oppsettene.",
   "settings.general.row.newInterfaceNotice.title": "Du bruker nå det nye oppsettet",
   "settings.general.row.newInterfaceNotice.title": "Du bruker nå det nye oppsettet",
-  "settings.general.row.newInterfaceNotice.description": "Det forrige oppsettet ble faset ut {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "Det forrige oppsettet er ikke lenger tilgjengelig",
   "settings.general.row.newInterfaceNotice.dismiss": "Avvis",
   "settings.general.row.newInterfaceNotice.dismiss": "Avvis",
   "settings.general.row.pinchZoom.title": "Knip for å zoome",
   "settings.general.row.pinchZoom.title": "Knip for å zoome",
   "settings.general.row.pinchZoom.description": "Tillat knipebevegelser på styreflaten og Ctrl-rulling for å zoome",
   "settings.general.row.pinchZoom.description": "Tillat knipebevegelser på styreflaten og Ctrl-rulling for å zoome",

+ 2 - 2
packages/app/src/i18n/pl.ts

@@ -749,9 +749,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Nowy układ",
   "settings.general.row.newInterface.title": "Nowy układ",
   "settings.general.row.newInterface.badge": "Nowość",
   "settings.general.row.newInterface.badge": "Nowość",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Używaj nowych kart i układu strony głównej. Możesz przełączać się między układami do {{date}}.",
+    "Używaj nowych kart i układu strony głównej. Przez ograniczony czas możesz przełączać się między układami.",
   "settings.general.row.newInterfaceNotice.title": "Korzystasz teraz z nowego układu",
   "settings.general.row.newInterfaceNotice.title": "Korzystasz teraz z nowego układu",
-  "settings.general.row.newInterfaceNotice.description": "Poprzedni układ został wycofany {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "Poprzedni układ nie jest już dostępny",
   "settings.general.row.newInterfaceNotice.dismiss": "Odrzuć",
   "settings.general.row.newInterfaceNotice.dismiss": "Odrzuć",
   "settings.general.row.pinchZoom.title": "Powiększanie gestem szczypania",
   "settings.general.row.pinchZoom.title": "Powiększanie gestem szczypania",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/ru.ts

@@ -815,9 +815,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Новая компоновка",
   "settings.general.row.newInterface.title": "Новая компоновка",
   "settings.general.row.newInterface.badge": "Новое",
   "settings.general.row.newInterface.badge": "Новое",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Используйте новые вкладки и компоновку главной страницы. Переключаться между вариантами компоновки можно до {{date}}.",
+    "Используйте новые вкладки и компоновку главной страницы. В течение ограниченного времени можно переключаться между вариантами компоновки.",
   "settings.general.row.newInterfaceNotice.title": "Теперь вы используете новую компоновку",
   "settings.general.row.newInterfaceNotice.title": "Теперь вы используете новую компоновку",
-  "settings.general.row.newInterfaceNotice.description": "Прежняя компоновка была окончательно отключена {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "Прежняя компоновка больше недоступна",
   "settings.general.row.newInterfaceNotice.dismiss": "Закрыть",
   "settings.general.row.newInterfaceNotice.dismiss": "Закрыть",
   "settings.general.row.pinchZoom.title": "Масштабирование щипком",
   "settings.general.row.pinchZoom.title": "Масштабирование щипком",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/th.ts

@@ -804,9 +804,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "เลย์เอาต์ใหม่",
   "settings.general.row.newInterface.title": "เลย์เอาต์ใหม่",
   "settings.general.row.newInterface.badge": "ใหม่",
   "settings.general.row.newInterface.badge": "ใหม่",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "ใช้แท็บใหม่และเลย์เอาต์หน้าแรก สลับระหว่างเลย์เอาต์ได้จนถึง {{date}}",
+    "ใช้แท็บใหม่และเลย์เอาต์หน้าแรก คุณสามารถสลับระหว่างเลย์เอาต์ได้ในช่วงเวลาจำกัด",
   "settings.general.row.newInterfaceNotice.title": "ขณะนี้คุณกำลังใช้เลย์เอาต์ใหม่",
   "settings.general.row.newInterfaceNotice.title": "ขณะนี้คุณกำลังใช้เลย์เอาต์ใหม่",
-  "settings.general.row.newInterfaceNotice.description": "เลย์เอาต์ก่อนหน้าถูกยกเลิกเมื่อวันที่ {{date}}",
+  "settings.general.row.newInterfaceNotice.description": "เลย์เอาต์ก่อนหน้าไม่พร้อมใช้งานอีกต่อไป",
   "settings.general.row.newInterfaceNotice.dismiss": "ปิด",
   "settings.general.row.newInterfaceNotice.dismiss": "ปิด",
   "settings.general.row.pinchZoom.title": "บีบนิ้วเพื่อซูม",
   "settings.general.row.pinchZoom.title": "บีบนิ้วเพื่อซูม",
   "settings.general.row.pinchZoom.description": "อนุญาตให้ใช้ท่าบีบนิ้วบนแทร็คแพดและ Ctrl-scroll เพื่อซูม",
   "settings.general.row.pinchZoom.description": "อนุญาตให้ใช้ท่าบีบนิ้วบนแทร็คแพดและ Ctrl-scroll เพื่อซูม",

+ 2 - 2
packages/app/src/i18n/tr.ts

@@ -819,9 +819,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Yeni düzen",
   "settings.general.row.newInterface.title": "Yeni düzen",
   "settings.general.row.newInterface.badge": "Yeni",
   "settings.general.row.newInterface.badge": "Yeni",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Yeni sekmeleri ve ana sayfa düzenini kullanın. {{date}} tarihine kadar düzenler arasında geçiş yapabilirsiniz.",
+    "Yeni sekmeleri ve ana sayfa düzenini kullanın. Sınırlı bir süre boyunca düzenler arasında geçiş yapabilirsiniz.",
   "settings.general.row.newInterfaceNotice.title": "Artık yeni düzeni kullanıyorsunuz",
   "settings.general.row.newInterfaceNotice.title": "Artık yeni düzeni kullanıyorsunuz",
-  "settings.general.row.newInterfaceNotice.description": "Önceki düzen {{date}} tarihinde kullanımdan kaldırıldı.",
+  "settings.general.row.newInterfaceNotice.description": "Önceki düzen artık kullanılamıyor",
   "settings.general.row.newInterfaceNotice.dismiss": "Kapat",
   "settings.general.row.newInterfaceNotice.dismiss": "Kapat",
   "settings.general.row.pinchZoom.title": "Sıkıştırarak yakınlaştır",
   "settings.general.row.pinchZoom.title": "Sıkıştırarak yakınlaştır",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/uk.ts

@@ -905,9 +905,9 @@ export const dict = {
   "settings.general.row.newInterface.title": "Новий макет",
   "settings.general.row.newInterface.title": "Новий макет",
   "settings.general.row.newInterface.badge": "Нове",
   "settings.general.row.newInterface.badge": "Нове",
   "settings.general.row.newInterface.description":
   "settings.general.row.newInterface.description":
-    "Використовуйте нові вкладки та макет головної сторінки. Перемикайтеся між макетами до {{date}}.",
+    "Використовуйте нові вкладки та макет головної сторінки. Протягом обмеженого часу можна перемикатися між макетами.",
   "settings.general.row.newInterfaceNotice.title": "Тепер ви використовуєте новий макет",
   "settings.general.row.newInterfaceNotice.title": "Тепер ви використовуєте новий макет",
-  "settings.general.row.newInterfaceNotice.description": "Попередній макет було виведено з експлуатації {{date}}.",
+  "settings.general.row.newInterfaceNotice.description": "Попередній макет більше недоступний",
   "settings.general.row.newInterfaceNotice.dismiss": "Відхилити",
   "settings.general.row.newInterfaceNotice.dismiss": "Відхилити",
   "settings.general.row.pinchZoom.title": "Масштабування щипком",
   "settings.general.row.pinchZoom.title": "Масштабування щипком",
   "settings.general.row.pinchZoom.description":
   "settings.general.row.pinchZoom.description":

+ 2 - 2
packages/app/src/i18n/zh.ts

@@ -798,9 +798,9 @@ export const dict = {
   "settings.general.row.editToolPartsExpanded.description": "默认在时间线中展开 edit、write 和 patch 工具部分",
   "settings.general.row.editToolPartsExpanded.description": "默认在时间线中展开 edit、write 和 patch 工具部分",
   "settings.general.row.newInterface.title": "新布局",
   "settings.general.row.newInterface.title": "新布局",
   "settings.general.row.newInterface.badge": "新",
   "settings.general.row.newInterface.badge": "新",
-  "settings.general.row.newInterface.description": "使用新的标签页和主页布局。在{{date}}之前可在不同布局之间切换。",
+  "settings.general.row.newInterface.description": "使用新的标签页和主页布局。在有限时间内可在不同布局之间切换。",
   "settings.general.row.newInterfaceNotice.title": "你现在使用的是新布局",
   "settings.general.row.newInterfaceNotice.title": "你现在使用的是新布局",
-  "settings.general.row.newInterfaceNotice.description": "之前的布局已于{{date}}停用。",
+  "settings.general.row.newInterfaceNotice.description": "之前的布局不再可用",
   "settings.general.row.newInterfaceNotice.dismiss": "忽略",
   "settings.general.row.newInterfaceNotice.dismiss": "忽略",
   "settings.general.row.pinchZoom.title": "双指缩放",
   "settings.general.row.pinchZoom.title": "双指缩放",
   "settings.general.row.pinchZoom.description": "允许使用触控板双指捏合和 Ctrl-scroll 手势缩放",
   "settings.general.row.pinchZoom.description": "允许使用触控板双指捏合和 Ctrl-scroll 手势缩放",

+ 2 - 2
packages/app/src/i18n/zht.ts

@@ -794,9 +794,9 @@ export const dict = {
   "settings.general.row.editToolPartsExpanded.description": "在時間軸中預設展開 edit、write 和 patch 工具區塊",
   "settings.general.row.editToolPartsExpanded.description": "在時間軸中預設展開 edit、write 和 patch 工具區塊",
   "settings.general.row.newInterface.title": "新版面",
   "settings.general.row.newInterface.title": "新版面",
   "settings.general.row.newInterface.badge": "新",
   "settings.general.row.newInterface.badge": "新",
-  "settings.general.row.newInterface.description": "使用新的分頁和首頁版面。在{{date}}之前可切換版面。",
+  "settings.general.row.newInterface.description": "使用新的分頁和首頁版面。在限定時間內可切換版面。",
   "settings.general.row.newInterfaceNotice.title": "你現在使用的是新版面",
   "settings.general.row.newInterfaceNotice.title": "你現在使用的是新版面",
-  "settings.general.row.newInterfaceNotice.description": "先前的版面已於{{date}}停用。",
+  "settings.general.row.newInterfaceNotice.description": "先前的版面已無法使用",
   "settings.general.row.newInterfaceNotice.dismiss": "忽略",
   "settings.general.row.newInterfaceNotice.dismiss": "忽略",
   "settings.general.row.pinchZoom.title": "雙指縮放",
   "settings.general.row.pinchZoom.title": "雙指縮放",
   "settings.general.row.pinchZoom.description": "允許使用觸控板雙指開合和 Ctrl-捲動手勢縮放",
   "settings.general.row.pinchZoom.description": "允許使用觸控板雙指開合和 Ctrl-捲動手勢縮放",