feat(studio): plan progress, office preview and new-answer divider are switches as the board draws them; the language reads Simplified Chinese; execution rows lose the fold arrow

This commit is contained in:
esengine committed 2026-11-05 10:45:25 +00:00
1 parent 802f368ce8
commit 965b9c1af8
5 files changed
+8 -13

No files matched your search

@@ -188,3 +188,4 @@
.flow .call[data-k="host"][data-light] > .c > .hl .tag { background: none; padding: 0; color: var(--faint); font: var(--w-med) var(--fs-micro) var(--ui); }
.activity-group .activity-errors { font-size: var(--fs-micro); }
.activity-body .hl .tag { display: none; }
.activity-body .hl > .tool-fold { display: none; }
@@ -160,7 +160,7 @@ export const SETTINGS: Messages = {
"settings.tabs": { zh: "个", en: "tabs" },
"settings.tabs_with_a_live_connection": { zh: "实时连接的标签数", en: "Tabs with a live connection" },
"settings.takes_effect_after_a_restart": { zh: "重启后生效", en: "Takes effect after a restart" },
"settings.text": { zh: "中文", en: "中文" },
"settings.text": { zh: "简体中文", en: "简体中文" },
"settings.the_answer_is_written_or": { zh: "回答写完、或者这一轮失败了", en: "The answer is written, or the turn failed" },
"settings.changed_settings": { zh: "改过的设置", en: "Changed settings" },
"settings.every_setting_is_the_default": { zh: "所有设置都是默认值", en: "Every setting is the default" },
@@ -2,15 +2,13 @@ import { useSyncExternalStore } from "react";
import { t } from "../i18n";
import { onNewAnswerMarkerChange, setShowsNewAnswerMarker, showsNewAnswerMarker } from "../state/newAnswers";
import { Group } from "./Group";
import { Switch } from "./Switch";
export function NewAnswerSection() {
const on = useSyncExternalStore(onNewAnswerMarkerChange, showsNewAnswerMarker, showsNewAnswerMarker);
return (
<Group id="new-answer-marker" inline title={t("settings.new_answer_divider")} hint={t("settings.divider_before_new_answer")}>
<div className="seg" data-text role="group" aria-label={t("settings.new_answer_divider")}>
<button data-action="appearance.new-answer-marker" data-value="off" aria-pressed={!on} onClick={() => setShowsNewAnswerMarker(false)}>{t("common.close")}</button>
<button data-action="appearance.new-answer-marker" data-value="on" aria-pressed={on} onClick={() => setShowsNewAnswerMarker(true)}>{t("common.show")}</button>
</div>
<Switch data-action="appearance.new-answer-marker" on={on} label={t("settings.new_answer_divider")} onClick={() => setShowsNewAnswerMarker(!on)} />
</Group>
);
}
@@ -2,15 +2,13 @@ import { useSyncExternalStore } from "react";
import { t } from "../i18n";
import { onOfficePreviewChange, previewsOffice, setPreviewsOffice } from "../state/prefs";
import { Group } from "./Group";
import { Switch } from "./Switch";
export function OfficePreviewSection() {
const on = useSyncExternalStore(onOfficePreviewChange, previewsOffice, previewsOffice);
return (
<Group id="office-preview" inline title={t("common.office_document_preview")} hint={t("settings.preview_office_in_workbench")}>
<div className="seg" data-text role="group" aria-label={t("common.office_document_preview")}>
<button data-action="appearance.office-preview" data-value="off" aria-pressed={!on} onClick={() => setPreviewsOffice(false)}>{t("common.close")}</button>
<button data-action="appearance.office-preview" data-value="on" aria-pressed={on} onClick={() => setPreviewsOffice(true)}>{t("common.preview")}</button>
</div>
<Switch data-action="appearance.office-preview" on={on} label={t("common.office_document_preview")} onClick={() => setPreviewsOffice(!on)} />
</Group>
);
}
@@ -2,15 +2,13 @@ import { useSyncExternalStore } from "react";
import { t } from "../i18n";
import { onPlanProgressChange, setShowsPlanProgress, showsPlanProgress } from "../state/prefs";
import { Group } from "./Group";
import { Switch } from "./Switch";
export function PlanProgressSection() {
const on = useSyncExternalStore(onPlanProgressChange, showsPlanProgress, showsPlanProgress);
return (
<Group id="plan-progress" inline title={t("plan.show_collapsed_plan_progress")} hint={t("settings.plan_progress_beside_title")}>
<div className="seg" data-text role="group" aria-label={t("plan.show_collapsed_plan_progress")}>
<button data-action="appearance.plan-progress" data-value="off" aria-pressed={!on} onClick={() => setShowsPlanProgress(false)}>{t("common.close")}</button>
<button data-action="appearance.plan-progress" data-value="on" aria-pressed={on} onClick={() => setShowsPlanProgress(true)}>{t("common.show")}</button>
</div>
<Switch data-action="appearance.plan-progress" on={on} label={t("plan.show_collapsed_plan_progress")} onClick={() => setShowsPlanProgress(!on)} />
</Group>
);
}