From dbb80fdb6174bc96ff9183556e72c153cb58f072 Mon Sep 17 00:00:00 2001 From: Hanjie Deng <87105391+floatDreamWithSong@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:46:28 +0800 Subject: [PATCH 1/4] feat: add context-aware lecture profiles --- .../configuration/SettingsPage.test.tsx | 14 ++ src/features/configuration/SettingsPage.tsx | 131 +++++++++++++++++- src/features/i18n/UiPreferencesProvider.tsx | 29 ++++ .../interpretation/context-policy.test.ts | 81 +++++++++++ src/features/interpretation/context-policy.ts | 72 ++++++++++ src/features/profile/ProfileProvider.tsx | 5 +- src/features/profile/domain.test.ts | 7 + src/features/profile/domain.ts | 46 +++++- 8 files changed, 377 insertions(+), 8 deletions(-) create mode 100644 src/features/interpretation/context-policy.test.ts create mode 100644 src/features/interpretation/context-policy.ts diff --git a/src/features/configuration/SettingsPage.test.tsx b/src/features/configuration/SettingsPage.test.tsx index edd0c2a..9f0549a 100644 --- a/src/features/configuration/SettingsPage.test.tsx +++ b/src/features/configuration/SettingsPage.test.tsx @@ -36,6 +36,20 @@ describe("SettingsPage", () => { expect(inputValue("托盘点击行为")).toBe("toggle-runtime") }) + test("configures natural EU treaty reform lecture context", () => { + renderSettingsPage() + + expect(inputValue("语境模式")).toBe("lecture") + expect(inputValue("课程主题")).toBe("eu-treaty-reform") + fireEvent.change(screen.getByLabelText("自定义术语(每行一个)"), { + target: { value: "constitutional convention\nacquis communautaire" }, + }) + + expect( + screen.getByLabelText("自定义术语(每行一个)").value + ).toContain("acquis communautaire") + }) + test("switches UI language independently from AST API key settings", () => { renderSettingsPage() diff --git a/src/features/configuration/SettingsPage.tsx b/src/features/configuration/SettingsPage.tsx index 59f92b6..87295f9 100644 --- a/src/features/configuration/SettingsPage.tsx +++ b/src/features/configuration/SettingsPage.tsx @@ -163,9 +163,7 @@ export function SettingsPage() { app: { ...profile.app, closeBehavior: event.target.value as - | "exit" - | "minimize" - | "minimize-to-tray", + "exit" | "minimize" | "minimize-to-tray", }, })) } @@ -193,8 +191,7 @@ export function SettingsPage() { app: { ...profile.app, trayClickBehavior: event.target.value as - | "open-main-window" - | "toggle-runtime", + "open-main-window" | "toggle-runtime", }, })) } @@ -210,6 +207,130 @@ export function SettingsPage() { +
+

{t("settings.context")}

+

+ {t("settings.context.description")} +

+
+ + + + + + + + +