refactor(ui): 打勾框收敛为 FancyCheck 单一组件并修复残缺路径
- 新增 components/common/FancyCheck.vue 作为全局唯一打勾框实现(checked/size/accent-checked) - 修复个人空间「编辑摘要实时显示」开关 d 路径中段缺失导致对勾渲染变长 - 38 处内联 SVG 全部改为组件引用,删除四处重复的 fancy 样式
This commit is contained in:
parent
79f8ffa368
commit
492b738859
@ -109,15 +109,7 @@
|
|||||||
:checked="getCategoryDefault(cat.id)"
|
:checked="getCategoryDefault(cat.id)"
|
||||||
@change="setCategoryDefault(cat.id, $event.target.checked)"
|
@change="setCategoryDefault(cat.id, $event.target.checked)"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true">
|
<FancyCheck :checked="getCategoryDefault(cat.id)" accent-checked />
|
||||||
<svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path>
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
<span>{{ cat.default_enabled ? '开' : '关' }}</span>
|
<span>{{ cat.default_enabled ? '开' : '关' }}</span>
|
||||||
</label>
|
</label>
|
||||||
<div class="dropdown" :class="{ open: openForceMenu === cat.id }">
|
<div class="dropdown" :class="{ open: openForceMenu === cat.id }">
|
||||||
@ -144,15 +136,7 @@
|
|||||||
<div class="toggle-grid">
|
<div class="toggle-grid">
|
||||||
<label v-for="model in defaults.models" :key="model" class="toggle-row">
|
<label v-for="model in defaults.models" :key="model" class="toggle-row">
|
||||||
<input type="checkbox" :checked="isModelDisabled(model)" @change="toggleModel(model)" />
|
<input type="checkbox" :checked="isModelDisabled(model)" @change="toggleModel(model)" />
|
||||||
<span class="fancy-check" aria-hidden="true">
|
<FancyCheck :checked="isModelDisabled(model)" accent-checked />
|
||||||
<svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path>
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
<span>{{ model }}</span>
|
<span>{{ model }}</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
@ -168,15 +152,7 @@
|
|||||||
:checked="!!form.config.ui_blocks[key]"
|
:checked="!!form.config.ui_blocks[key]"
|
||||||
@change="toggleUiBlock(key, $event)"
|
@change="toggleUiBlock(key, $event)"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true">
|
<FancyCheck :checked="!!form.config.ui_blocks[key]" accent-checked />
|
||||||
<svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path>
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
<span>{{ uiBlockLabel(key) }}</span>
|
<span>{{ uiBlockLabel(key) }}</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
@ -313,6 +289,7 @@
|
|||||||
import { computed, reactive, ref, onMounted, onBeforeUnmount, watch } from 'vue';
|
import { computed, reactive, ref, onMounted, onBeforeUnmount, watch } from 'vue';
|
||||||
import { useSecondaryPass } from './useSecondaryPass';
|
import { useSecondaryPass } from './useSecondaryPass';
|
||||||
import SecondaryGate from './SecondaryGate.vue';
|
import SecondaryGate from './SecondaryGate.vue';
|
||||||
|
import FancyCheck from '@/components/common/FancyCheck.vue';
|
||||||
|
|
||||||
type TargetType = 'global' | 'role' | 'user' | 'invite';
|
type TargetType = 'global' | 'role' | 'user' | 'invite';
|
||||||
|
|
||||||
@ -1367,43 +1344,6 @@ button:disabled {
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle-row .fancy-check {
|
|
||||||
width: 28px;
|
|
||||||
height: 28px;
|
|
||||||
border-radius: 6px;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
box-shadow: none;
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-row .fancy-check svg {
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
overflow: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fancy-path {
|
|
||||||
fill: none;
|
|
||||||
stroke: var(--text-secondary);
|
|
||||||
stroke-width: 5;
|
|
||||||
stroke-linecap: round;
|
|
||||||
stroke-linejoin: round;
|
|
||||||
transition:
|
|
||||||
stroke-dasharray 0.5s ease,
|
|
||||||
stroke-dashoffset 0.5s ease,
|
|
||||||
stroke 0.2s ease;
|
|
||||||
stroke-dasharray: 241 9999999;
|
|
||||||
stroke-dashoffset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-row input:checked + .fancy-check .fancy-path {
|
|
||||||
stroke: var(--accent);
|
|
||||||
stroke-dasharray: 70.5096664428711 9999999;
|
|
||||||
stroke-dashoffset: -262.2723388671875;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-row span {
|
.toggle-row span {
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|||||||
83
static/src/components/common/FancyCheck.vue
Normal file
83
static/src/components/common/FancyCheck.vue
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
/**
|
||||||
|
* 打勾框(fancy-check)——全局唯一的自定义 checkbox 图标实现。
|
||||||
|
*
|
||||||
|
* 未勾选时描出圆角方框轮廓,勾选时同一条路径通过 dasharray/offset
|
||||||
|
* 动画「变形」为对勾。所有开关统一引用本组件,禁止再内联复制 SVG。
|
||||||
|
*
|
||||||
|
* 用法:
|
||||||
|
* <label class="xxx-toggle-row">
|
||||||
|
* <input type="checkbox" :checked="form.x" @change="..." />
|
||||||
|
* <FancyCheck :checked="form.x" />
|
||||||
|
* </label>
|
||||||
|
*
|
||||||
|
* - checked:与配套 input 的 checked 保持一致(本组件不处理交互,仅渲染)
|
||||||
|
* - size:svg 边长,默认 22;小号场景(如「默认」标记)传 14
|
||||||
|
* - accent-checked:勾选后描边变为 --accent 强调色(默认不变色,仅形状变形)
|
||||||
|
*/
|
||||||
|
withDefaults(
|
||||||
|
defineProps<{
|
||||||
|
checked?: boolean;
|
||||||
|
size?: number;
|
||||||
|
accentChecked?: boolean;
|
||||||
|
}>(),
|
||||||
|
{
|
||||||
|
checked: false,
|
||||||
|
size: 22,
|
||||||
|
accentChecked: false
|
||||||
|
}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<span
|
||||||
|
class="fancy-check"
|
||||||
|
:class="{ 'is-checked': checked, 'accent-checked': accentChecked }"
|
||||||
|
aria-hidden="true"
|
||||||
|
>
|
||||||
|
<svg viewBox="0 0 64 64" :style="{ width: `${size}px`, height: `${size}px` }">
|
||||||
|
<path
|
||||||
|
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
||||||
|
pathLength="575.0541381835938"
|
||||||
|
class="fancy-path"
|
||||||
|
></path>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.fancy-check {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancy-check svg {
|
||||||
|
display: block;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancy-path {
|
||||||
|
fill: none;
|
||||||
|
stroke: var(--text-secondary);
|
||||||
|
stroke-width: 5;
|
||||||
|
stroke-linecap: round;
|
||||||
|
stroke-linejoin: round;
|
||||||
|
transition:
|
||||||
|
stroke-dasharray 0.5s ease,
|
||||||
|
stroke-dashoffset 0.5s ease,
|
||||||
|
stroke 0.2s ease;
|
||||||
|
stroke-dasharray: 241 9999999;
|
||||||
|
stroke-dashoffset: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancy-check.is-checked .fancy-path {
|
||||||
|
stroke-dasharray: 70.5096664428711 9999999;
|
||||||
|
stroke-dashoffset: -262.2723388671875;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fancy-check.is-checked.accent-checked .fancy-path {
|
||||||
|
stroke: var(--accent);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,6 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';
|
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';
|
||||||
import type { ReasoningEffort } from '../../stores/personalization';
|
import type { ReasoningEffort } from '../../stores/personalization';
|
||||||
|
import FancyCheck from '../common/FancyCheck.vue';
|
||||||
|
|
||||||
const LEVELS: ReasoningEffort[] = ['low', 'medium', 'high', 'xhigh', 'max'];
|
const LEVELS: ReasoningEffort[] = ['low', 'medium', 'high', 'xhigh', 'max'];
|
||||||
// 轨道两端档位圆钮中心 inset;比圆钮半径(23)小 3px,
|
// 轨道两端档位圆钮中心 inset;比圆钮半径(23)小 3px,
|
||||||
@ -215,15 +216,7 @@ onBeforeUnmount(() => {
|
|||||||
<span class="header-title">推理强度</span>
|
<span class="header-title">推理强度</span>
|
||||||
<span class="default-toggle" :class="{ checked: isDefault }" @click.stop="toggleDefault">
|
<span class="default-toggle" :class="{ checked: isDefault }" @click.stop="toggleDefault">
|
||||||
<span class="default-label">默认</span>
|
<span class="default-label">默认</span>
|
||||||
<span class="fancy-check" aria-hidden="true">
|
<FancyCheck :checked="isDefault" :size="14" />
|
||||||
<svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path>
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-state header-drag">
|
<div class="header-state header-drag">
|
||||||
@ -334,35 +327,6 @@ onBeforeUnmount(() => {
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
}
|
}
|
||||||
.default-toggle .fancy-check {
|
|
||||||
width: 18px;
|
|
||||||
height: 18px;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.default-toggle .fancy-check svg {
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
overflow: visible;
|
|
||||||
}
|
|
||||||
.fancy-path {
|
|
||||||
fill: none;
|
|
||||||
stroke: var(--text-secondary);
|
|
||||||
stroke-width: 5;
|
|
||||||
stroke-linecap: round;
|
|
||||||
stroke-linejoin: round;
|
|
||||||
transition:
|
|
||||||
stroke-dasharray 0.5s ease,
|
|
||||||
stroke-dashoffset 0.5s ease,
|
|
||||||
stroke 0.2s ease;
|
|
||||||
stroke-dasharray: 241 9999999;
|
|
||||||
stroke-dashoffset: 0;
|
|
||||||
}
|
|
||||||
.default-toggle.checked .fancy-path {
|
|
||||||
stroke-dasharray: 70.5096664428711 9999999;
|
|
||||||
stroke-dashoffset: -262.2723388671875;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ========== 滑块区域 ========== */
|
/* ========== 滑块区域 ========== */
|
||||||
.slider-zone {
|
.slider-zone {
|
||||||
|
|||||||
@ -98,14 +98,7 @@
|
|||||||
})
|
})
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true"
|
<FancyCheck :checked="form.auto_generate_title" />
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg
|
|
||||||
></span>
|
|
||||||
</label>
|
</label>
|
||||||
<div class="settings-action-row">
|
<div class="settings-action-row">
|
||||||
<span class="settings-row-copy">
|
<span class="settings-row-copy">
|
||||||
@ -184,14 +177,7 @@
|
|||||||
:disabled="toggleUpdating"
|
:disabled="toggleUpdating"
|
||||||
@change="personalization.toggleEnabled()"
|
@change="personalization.toggleEnabled()"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true"
|
<FancyCheck :checked="form.enabled" />
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg
|
|
||||||
></span>
|
|
||||||
</label>
|
</label>
|
||||||
<label class="settings-input-row">
|
<label class="settings-input-row">
|
||||||
<span class="settings-row-title">AI 智能体自称</span>
|
<span class="settings-row-title">AI 智能体自称</span>
|
||||||
@ -296,14 +282,7 @@
|
|||||||
:checked="stackedHideBorders"
|
:checked="stackedHideBorders"
|
||||||
@change="handleStackedHideBordersChange($event)"
|
@change="handleStackedHideBordersChange($event)"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true"
|
<FancyCheck :checked="stackedHideBorders" />
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg
|
|
||||||
></span>
|
|
||||||
</label>
|
</label>
|
||||||
<label
|
<label
|
||||||
v-if="currentBlockDisplayMode === 'minimal'"
|
v-if="currentBlockDisplayMode === 'minimal'"
|
||||||
@ -318,14 +297,7 @@
|
|||||||
:checked="minimalExpandHeightLimited"
|
:checked="minimalExpandHeightLimited"
|
||||||
@change="handleMinimalExpandHeightLimitedChange($event)"
|
@change="handleMinimalExpandHeightLimitedChange($event)"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true"
|
<FancyCheck :checked="minimalExpandHeightLimited" />
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg
|
|
||||||
></span>
|
|
||||||
</label>
|
</label>
|
||||||
<div class="settings-select-row">
|
<div class="settings-select-row">
|
||||||
<span class="settings-row-copy">
|
<span class="settings-row-copy">
|
||||||
@ -617,14 +589,7 @@
|
|||||||
key: 'group_sidebar_by_workspace',
|
key: 'group_sidebar_by_workspace',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.group_sidebar_by_workspace" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">新建对话跳转空白页</span
|
><span class="settings-row-title">新建对话跳转空白页</span
|
||||||
@ -639,14 +604,7 @@
|
|||||||
key: 'new_chat_button_behavior',
|
key: 'new_chat_button_behavior',
|
||||||
value: $event.target.checked ? 'route' : 'blank'
|
value: $event.target.checked ? 'route' : 'blank'
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.new_chat_button_behavior === 'route'" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">使用自定义称呼</span
|
><span class="settings-row-title">使用自定义称呼</span
|
||||||
@ -661,14 +619,7 @@
|
|||||||
key: 'use_custom_names',
|
key: 'use_custom_names',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.use_custom_names" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">增强工具显示</span
|
><span class="settings-row-title">增强工具显示</span
|
||||||
@ -683,14 +634,7 @@
|
|||||||
key: 'enhanced_tool_display',
|
key: 'enhanced_tool_display',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.enhanced_tool_display" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">显示助手状态形象</span
|
><span class="settings-row-title">显示助手状态形象</span
|
||||||
@ -705,14 +649,7 @@
|
|||||||
key: 'show_status_avatar',
|
key: 'show_status_avatar',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.show_status_avatar" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">显示 Git 状态栏</span
|
><span class="settings-row-title">显示 Git 状态栏</span
|
||||||
@ -727,14 +664,7 @@
|
|||||||
key: 'show_git_status_bar',
|
key: 'show_git_status_bar',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.show_git_status_bar" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">自动打开终端面板</span
|
><span class="settings-row-title">自动打开终端面板</span
|
||||||
@ -749,14 +679,7 @@
|
|||||||
key: 'auto_open_terminal_panel',
|
key: 'auto_open_terminal_panel',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.auto_open_terminal_panel" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">快捷窗口自动展开</span
|
><span class="settings-row-title">快捷窗口自动展开</span
|
||||||
@ -771,14 +694,7 @@
|
|||||||
key: 'quick_dock_auto_expand',
|
key: 'quick_dock_auto_expand',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.quick_dock_auto_expand" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">编辑摘要实时显示</span
|
><span class="settings-row-title">编辑摘要实时显示</span
|
||||||
@ -793,14 +709,7 @@
|
|||||||
key: 'edit_summary_live_display',
|
key: 'edit_summary_live_display',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.edit_summary_live_display" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">预览窗口自动换行显示</span
|
><span class="settings-row-title">预览窗口自动换行显示</span
|
||||||
@ -815,14 +724,7 @@
|
|||||||
key: 'file_preview_auto_wrap',
|
key: 'file_preview_auto_wrap',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.file_preview_auto_wrap" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<div class="settings-select-row">
|
<div class="settings-select-row">
|
||||||
<span class="settings-row-copy"
|
<span class="settings-row-copy"
|
||||||
><span class="settings-row-title">堆叠块显示模式</span
|
><span class="settings-row-title">堆叠块显示模式</span
|
||||||
@ -873,14 +775,7 @@
|
|||||||
:checked="stackedHideBorders"
|
:checked="stackedHideBorders"
|
||||||
@change="handleStackedHideBordersChange($event)"
|
@change="handleStackedHideBordersChange($event)"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true"
|
<FancyCheck :checked="stackedHideBorders" />
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg
|
|
||||||
></span>
|
|
||||||
</label>
|
</label>
|
||||||
<label
|
<label
|
||||||
v-if="currentBlockDisplayMode === 'minimal'"
|
v-if="currentBlockDisplayMode === 'minimal'"
|
||||||
@ -895,14 +790,7 @@
|
|||||||
:checked="minimalExpandHeightLimited"
|
:checked="minimalExpandHeightLimited"
|
||||||
@change="handleMinimalExpandHeightLimitedChange($event)"
|
@change="handleMinimalExpandHeightLimitedChange($event)"
|
||||||
/>
|
/>
|
||||||
<span class="fancy-check" aria-hidden="true"
|
<FancyCheck :checked="minimalExpandHeightLimited" />
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg
|
|
||||||
></span>
|
|
||||||
</label>
|
</label>
|
||||||
<div class="settings-select-row">
|
<div class="settings-select-row">
|
||||||
<span class="settings-row-copy"
|
<span class="settings-row-copy"
|
||||||
@ -1002,14 +890,7 @@
|
|||||||
key: 'agents_md_auto_inject',
|
key: 'agents_md_auto_inject',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.agents_md_auto_inject" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
|
|
||||||
<div class="settings-section-divider">
|
<div class="settings-section-divider">
|
||||||
<span class="settings-section-divider__label">版本控制</span>
|
<span class="settings-section-divider__label">版本控制</span>
|
||||||
@ -1029,14 +910,7 @@
|
|||||||
key: 'versioning_enabled_by_default',
|
key: 'versioning_enabled_by_default',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.versioning_enabled_by_default" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
|
|
||||||
<div class="settings-select-row">
|
<div class="settings-select-row">
|
||||||
<span class="settings-row-copy"
|
<span class="settings-row-copy"
|
||||||
@ -1102,14 +976,7 @@
|
|||||||
key: 'goal_review_mode',
|
key: 'goal_review_mode',
|
||||||
value: $event.target.checked ? 'active' : 'readonly'
|
value: $event.target.checked ? 'active' : 'readonly'
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.goal_review_mode === 'active'" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
|
|
||||||
<div class="settings-select-row">
|
<div class="settings-select-row">
|
||||||
<span class="settings-row-copy"
|
<span class="settings-row-copy"
|
||||||
@ -1142,16 +1009,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
:checked="goalTokenLimitEnabled"
|
:checked="goalTokenLimitEnabled"
|
||||||
@change="toggleGoalTokenLimit($event.target.checked)" /><span
|
@change="toggleGoalTokenLimit($event.target.checked)" /><FancyCheck :checked="goalTokenLimitEnabled" /></label>
|
||||||
class="fancy-check"
|
|
||||||
aria-hidden="true"
|
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
|
|
||||||
<div v-if="goalTokenLimitEnabled" class="settings-select-row">
|
<div v-if="goalTokenLimitEnabled" class="settings-select-row">
|
||||||
<span class="settings-row-copy"
|
<span class="settings-row-copy"
|
||||||
@ -1193,14 +1051,7 @@
|
|||||||
key: 'recent_conversations_prompt_enabled',
|
key: 'recent_conversations_prompt_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.recent_conversations_prompt_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<div
|
<div
|
||||||
class="settings-input-row"
|
class="settings-input-row"
|
||||||
v-if="form.recent_conversations_prompt_enabled"
|
v-if="form.recent_conversations_prompt_enabled"
|
||||||
@ -1237,14 +1088,7 @@
|
|||||||
key: 'auto_shallow_compress_enabled',
|
key: 'auto_shallow_compress_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.auto_shallow_compress_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row inner"
|
<label class="settings-toggle-row inner"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">自动深层压缩</span></span
|
><span class="settings-row-title">自动深层压缩</span></span
|
||||||
@ -1256,14 +1100,7 @@
|
|||||||
key: 'auto_deep_compress_enabled',
|
key: 'auto_deep_compress_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.auto_deep_compress_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<div class="settings-compression-grid">
|
<div class="settings-compression-grid">
|
||||||
<label
|
<label
|
||||||
><span>浅压缩触发上下文</span
|
><span>浅压缩触发上下文</span
|
||||||
@ -1349,14 +1186,7 @@
|
|||||||
key: 'deep_compress_form',
|
key: 'deep_compress_form',
|
||||||
value: $event.target.checked ? 'inject' : 'file'
|
value: $event.target.checked ? 'inject' : 'file'
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.deep_compress_form === 'inject'" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<div class="settings-inline-actions right">
|
<div class="settings-inline-actions right">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@ -1384,14 +1214,7 @@
|
|||||||
key: 'silent_tool_disable',
|
key: 'silent_tool_disable',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.silent_tool_disable" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">隐藏工具审核面板</span
|
><span class="settings-row-title">隐藏工具审核面板</span
|
||||||
@ -1406,14 +1229,7 @@
|
|||||||
key: 'hide_tool_approval_panel',
|
key: 'hide_tool_approval_panel',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.hide_tool_approval_panel" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">工具意图提示</span
|
><span class="settings-row-title">工具意图提示</span
|
||||||
@ -1428,14 +1244,7 @@
|
|||||||
key: 'tool_intent_enabled',
|
key: 'tool_intent_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.tool_intent_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row"
|
<label class="settings-toggle-row"
|
||||||
><span class="settings-row-copy"
|
><span class="settings-row-copy"
|
||||||
><span class="settings-row-title">Skill 提示系统</span
|
><span class="settings-row-title">Skill 提示系统</span
|
||||||
@ -1450,14 +1259,7 @@
|
|||||||
key: 'skill_hints_enabled',
|
key: 'skill_hints_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.skill_hints_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<div class="settings-group-block">
|
<div class="settings-group-block">
|
||||||
<div class="settings-group-title">
|
<div class="settings-group-title">
|
||||||
<span class="settings-row-title">强约束系统</span
|
<span class="settings-row-title">强约束系统</span
|
||||||
@ -1473,14 +1275,7 @@
|
|||||||
key: 'skill_strict_terminal_enabled',
|
key: 'skill_strict_terminal_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.skill_strict_terminal_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row inner"
|
<label class="settings-toggle-row inner"
|
||||||
><span class="settings-row-title">子智能体系列工具</span
|
><span class="settings-row-title">子智能体系列工具</span
|
||||||
><input
|
><input
|
||||||
@ -1491,14 +1286,7 @@
|
|||||||
key: 'skill_strict_sub_agent_enabled',
|
key: 'skill_strict_sub_agent_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.skill_strict_sub_agent_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row inner"
|
<label class="settings-toggle-row inner"
|
||||||
><span class="settings-row-title">run_command 前台模式</span
|
><span class="settings-row-title">run_command 前台模式</span
|
||||||
><input
|
><input
|
||||||
@ -1509,14 +1297,7 @@
|
|||||||
key: 'skill_strict_run_command_foreground_enabled',
|
key: 'skill_strict_run_command_foreground_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.skill_strict_run_command_foreground_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
<label class="settings-toggle-row inner"
|
<label class="settings-toggle-row inner"
|
||||||
><span class="settings-row-title">run_command 后台模式</span
|
><span class="settings-row-title">run_command 后台模式</span
|
||||||
><input
|
><input
|
||||||
@ -1527,14 +1308,7 @@
|
|||||||
key: 'skill_strict_run_command_background_enabled',
|
key: 'skill_strict_run_command_background_enabled',
|
||||||
value: $event.target.checked
|
value: $event.target.checked
|
||||||
})
|
})
|
||||||
" /><span class="fancy-check" aria-hidden="true"
|
" /><FancyCheck :checked="form.skill_strict_run_command_background_enabled" /></label>
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-group-block" v-if="skillsCatalog.length">
|
<div class="settings-group-block" v-if="skillsCatalog.length">
|
||||||
<div class="settings-group-title">
|
<div class="settings-group-title">
|
||||||
@ -1553,16 +1327,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
:checked="form.enabled_skills.includes(skill.id)"
|
:checked="form.enabled_skills.includes(skill.id)"
|
||||||
@change="personalization.toggleSkill(skill.id)" /><span
|
@change="personalization.toggleSkill(skill.id)" /><FancyCheck :checked="form.enabled_skills.includes(skill.id)" /></label>
|
||||||
class="fancy-check"
|
|
||||||
aria-hidden="true"
|
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-group-block" v-if="toolCategories.length">
|
<div class="settings-group-block" v-if="toolCategories.length">
|
||||||
@ -1579,16 +1344,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
:checked="form.disabled_tool_categories.includes(category.id)"
|
:checked="form.disabled_tool_categories.includes(category.id)"
|
||||||
@change="toggleCategory(category.id)" /><span
|
@change="toggleCategory(category.id)" /><FancyCheck :checked="form.disabled_tool_categories.includes(category.id)" /></label>
|
||||||
class="fancy-check"
|
|
||||||
aria-hidden="true"
|
|
||||||
><svg viewBox="0 0 64 64">
|
|
||||||
<path
|
|
||||||
d="M 0 16 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 16 L 32 48 L 64 16 V 8 A 8 8 90 0 0 56 0 H 8 A 8 8 90 0 0 0 8 V 56 A 8 8 90 0 0 8 64 H 56 A 8 8 90 0 0 64 56 V 16"
|
|
||||||
pathLength="575.0541381835938"
|
|
||||||
class="fancy-path"
|
|
||||||
></path></svg></span
|
|
||||||
></label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@ -2137,6 +1893,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, watch, onMounted, nextTick, onBeforeUnmount } from 'vue';
|
import { ref, computed, watch, onMounted, nextTick, onBeforeUnmount } from 'vue';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
|
import FancyCheck from '@/components/common/FancyCheck.vue';
|
||||||
import { usePersonalizationStore } from '@/stores/personalization';
|
import { usePersonalizationStore } from '@/stores/personalization';
|
||||||
import { useResourceStore } from '@/stores/resource';
|
import { useResourceStore } from '@/stores/resource';
|
||||||
import { useUiStore } from '@/stores/ui';
|
import { useUiStore } from '@/stores/ui';
|
||||||
@ -4012,44 +3769,6 @@ const applyThemeOption = async (theme: ThemeKey) => {
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings-toggle-row .fancy-check {
|
|
||||||
width: 28px;
|
|
||||||
height: 28px;
|
|
||||||
border-radius: 6px;
|
|
||||||
background: transparent;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
box-shadow: none;
|
|
||||||
transition: opacity 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.settings-toggle-row .fancy-check svg {
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
overflow: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fancy-path {
|
|
||||||
fill: none;
|
|
||||||
stroke: var(--text-secondary);
|
|
||||||
stroke-width: 5;
|
|
||||||
stroke-linecap: round;
|
|
||||||
stroke-linejoin: round;
|
|
||||||
transition:
|
|
||||||
stroke-dasharray 0.5s ease,
|
|
||||||
stroke-dashoffset 0.5s ease,
|
|
||||||
stroke 0.2s ease;
|
|
||||||
stroke-dasharray: 241 9999999;
|
|
||||||
stroke-dashoffset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.settings-toggle-row input:checked + .fancy-check .fancy-path {
|
|
||||||
stroke: var(--text-secondary);
|
|
||||||
stroke-dasharray: 70.5096664428711 9999999;
|
|
||||||
stroke-dashoffset: -262.2723388671875;
|
|
||||||
}
|
|
||||||
|
|
||||||
.settings-group-block {
|
.settings-group-block {
|
||||||
border-bottom: 1px solid var(--theme-control-border);
|
border-bottom: 1px solid var(--theme-control-border);
|
||||||
padding: 14px 0 16px;
|
padding: 14px 0 16px;
|
||||||
|
|||||||
@ -209,49 +209,6 @@
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle-row .fancy-check {
|
|
||||||
width: 28px;
|
|
||||||
height: 28px;
|
|
||||||
border-radius: 6px;
|
|
||||||
background: transparent;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
box-shadow: none;
|
|
||||||
transition: opacity 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-row .fancy-check svg {
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
overflow: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fancy-path {
|
|
||||||
fill: none;
|
|
||||||
stroke: var(--text-secondary);
|
|
||||||
stroke-width: 5;
|
|
||||||
stroke-linecap: round;
|
|
||||||
stroke-linejoin: round;
|
|
||||||
transition:
|
|
||||||
stroke-dasharray 0.5s ease,
|
|
||||||
stroke-dashoffset 0.5s ease,
|
|
||||||
stroke 0.2s ease;
|
|
||||||
stroke-dasharray: 241 9999999;
|
|
||||||
stroke-dashoffset: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-row input:checked + .fancy-check {
|
|
||||||
background: transparent;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-row input:checked + .fancy-check .fancy-path {
|
|
||||||
stroke: var(--accent);
|
|
||||||
stroke-dasharray: 70.5096664428711 9999999;
|
|
||||||
stroke-dashoffset: -262.2723388671875;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-row span {
|
.toggle-row span {
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user