-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptions.html
More file actions
224 lines (212 loc) · 10.7 KB
/
Copy pathoptions.html
File metadata and controls
224 lines (212 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<!doctype html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<title>browsa — settings</title>
<link rel="stylesheet" href="lib/theme.css" />
<link rel="stylesheet" href="options.css" />
</head>
<body>
<main>
<header class="page-header">
<img src="icons/icon48.png" alt="" class="logo" />
<div>
<h1>browsa</h1>
<p class="subtitle"><span data-i18n="settingsSubtitle">Settings</span> · <a id="guideLink" href="https://xiaohuzai.github.io/browsa/guide/" target="_blank" rel="noopener noreferrer" data-i18n="guideLinkText">使用指南</a></p>
</div>
</header>
<section class="card">
<div class="card-header">
<h2 data-i18n="uiLangHeading">UI Language</h2>
</div>
<div class="card-body">
<p class="hint" data-i18n="uiLangHint">Switch the interface language. Default follows your browser.</p>
<div class="inline-field">
<label for="uiLang" data-i18n="uiLangLabel">Language</label>
<select id="uiLang">
<option value="auto" data-i18n="uiLangOptAuto">Auto (follow browser)</option>
<option value="en">English</option>
<option value="zh">中文</option>
</select>
</div>
</div>
</section>
<section class="card">
<div class="card-header">
<h2 data-i18n="providersHeading">AI Providers</h2>
</div>
<div class="card-body">
<div class="hint-line">
<span class="hint" data-i18n="providersHint">Configure your AI providers.</span>
<span class="tip" tabindex="0">?<span class="tip-bubble" data-i18n-html="providersTipHtml"><b>Hermes Agent</b>: built-in, just fill Base URL + API key.<br><br><b>LLM</b>: any OpenAI Chat / OpenAI Responses / Anthropic endpoint. Give each an Alias; <b>Ping</b> to verify.</span></span>
</div>
<div id="providers"></div>
</div>
</section>
<section class="card">
<div class="card-header">
<h2 data-i18n="systemPromptHeading">System Prompt</h2>
</div>
<div class="card-body">
<p class="hint" data-i18n-html="systemPromptHintHtml">Prepended as <code>role: system</code> before every conversation. Use this to set the assistant's language, tone, and formatting rules.</p>
<textarea id="systemPrompt" rows="5" data-i18n-placeholder="systemPromptPlaceholder" placeholder="e.g. You are a helpful assistant. Use $...$ for inline math and $$...$$ for display math."></textarea>
<div class="card-actions">
<button data-act="save-system-prompt" class="primary" data-i18n="saveBtn">Save</button>
<button data-act="reset-system-prompt" data-i18n="resetToDefaultBtn">Reset to default</button>
</div>
<div class="inline-field mt-12">
<label for="replyLanguage" data-i18n="replyLanguageLabel">Reply language</label>
<select id="replyLanguage">
<option value="" data-i18n="replyLanguageAuto">Auto (follow system prompt)</option>
<option value="en">English</option>
<option value="zh">中文</option>
<option value="ja">日本語</option>
<option value="ko">한국어</option>
<option value="de">Deutsch</option>
<option value="fr">Français</option>
<option value="es">Español</option>
</select>
<button data-act="save-reply-language" class="primary" data-i18n="saveBtn">Save</button>
</div>
</div>
</section>
<details class="advanced-section">
<summary class="advanced-summary" data-i18n="advancedSummary">⚙ Advanced</summary>
<section class="card">
<div class="card-header">
<h2 data-i18n="toolbarCardHeading">Floating selection toolbar</h2>
</div>
<div class="card-body">
<p class="hint" data-i18n="toolbarCardHint">A mini toolbar appears above selected text with quick actions: Ask, Explain, Translate, Summarize.</p>
<label class="toggle-row">
<input type="checkbox" id="showSelectionToolbar" />
<span data-i18n-html="toolbarToggleLabelHtml">Show floating toolbar on text selection</span>
</label>
<label class="toggle-row mt-8">
<input type="checkbox" id="llmsTxtEnabled" checked />
<span data-i18n-html="llmsTxtToggleLabelHtml">Include <code>llms.txt</code> site instructions when attaching a page (📎)</span>
</label>
<label class="toggle-row mt-8">
<input type="checkbox" id="deepExtractEnabled" checked />
<span data-i18n-html="deepExtractToggleLabelHtml">When a page looks incomplete, automatically expand and page through it before attaching (📎)</span>
</label>
</div>
</section>
<section class="card">
<div class="card-header">
<h2 data-i18n="chatPrefsHeading">Chat Preferences</h2>
</div>
<div class="card-body">
<div class="row">
<label><span data-i18n="fontSizeLabel">Message font size</span>
<div class="range-row mt-4">
<input type="range" id="fontSize" min="12" max="18" step="0.5" value="13.5" />
<span id="fontSizeVal" class="range-val">13.5px</span>
</div>
</label>
</div>
<div class="row mt-12">
<label><span data-i18n="sendShortcutLabel">Send shortcut</span>
<select id="sendShortcut" class="mt-4">
<option value="enter" data-i18n="sendShortcutEnter">Enter (Shift+Enter for newline)</option>
<option value="shift-enter" data-i18n="sendShortcutShiftEnter">Shift+Enter (Enter for newline)</option>
</select>
</label>
</div>
<label class="toggle-row mt-12">
<input type="checkbox" id="thoughtAutoCollapse" />
<span data-i18n="thoughtAutoCollapseLabel">Auto-collapse thinking blocks</span>
</label>
<div class="card-actions">
<button data-act="save-chat-prefs" class="primary" data-i18n="saveBtn">Save</button>
<span id="chat-prefs-status" class="card-status"></span>
</div>
</div>
</section>
<section class="card">
<div class="card-header">
<h2 data-i18n="asrHeading">ASR 字幕识别</h2>
</div>
<div class="card-body">
<label class="toggle-row">
<input type="checkbox" id="asrEnabled" />
<span><span data-i18n="asrEnableLabel">启用 ASR</span><span class="tip" tabindex="0">?<span class="tip-bubble" data-i18n="asrEnableTip">视频页附加时自动转写/解析。平台:仅支持 B 站。</span></span></span>
</label>
<div class="fields">
<div class="field">
<label for="asrProvider">
<span class="field-title" data-i18n="asrProviderLabel">服务商</span>
<select id="asrProvider"></select>
</label>
</div>
<div class="field">
<label for="asrSubtitleSource">
<span class="field-title" data-i18n="asrSubtitleSourceLabel">字幕来源</span>
<select id="asrSubtitleSource">
<option value="original" data-i18n="asrSubtitleOriginal">优先视频自带字幕</option>
<option value="asr" data-i18n="asrSubtitleAsr">优先 ASR 解析字幕</option>
</select>
</label>
</div>
<div class="field">
<label for="asrLanguage">
<span class="field-title" data-i18n="asrLanguageLabel">语种</span>
<select id="asrLanguage">
<option value="auto" data-i18n="asrLanguageAuto">自动检测(Auto)</option>
<option value="zh">中文(简体)</option>
<option value="zh-TW">中文(繁体)</option>
<option value="en">English</option>
<option value="ja">日本語</option>
<option value="ko">한국어</option>
<option value="ru">Русский</option>
<option value="fr">Français</option>
<option value="de">Deutsch</option>
<option value="es">Español</option>
<option value="it">Italiano</option>
<option value="pt">Português</option>
<option value="th">ไทย</option>
<option value="vi">Tiếng Việt</option>
<option value="id">Bahasa Indonesia</option>
<option value="ar">العربية</option>
</select>
</label>
</div>
<div class="field">
<label for="asrApiKey">
<span class="field-title">API Key</span>
<input id="asrApiKey" type="password" />
</label>
</div>
<div class="field">
<label for="asrBaseUrl">
<span class="field-title">Base URL<span class="tip" tabindex="0">?<span id="asrBaseUrlTip" class="tip-bubble"></span></span></span>
<input id="asrBaseUrl" type="text" />
</label>
</div>
<div class="field field-full">
<label for="asrModel">
<span class="field-title" data-i18n="asrModelLabel">模型 ID(音频转写)</span>
<input id="asrModel" type="text" />
</label>
</div>
<div class="field field-full">
<label for="asrVideoModel">
<span class="field-title" data-i18n="asrVideoModelLabel">视频模型 ID(视频解析用,留空则用上面的模型)</span>
<input id="asrVideoModel" type="text" data-i18n-placeholder="asrVideoModelPlaceholder" placeholder="留空 = 同转写模型" />
</label>
</div>
</div>
<div class="card-actions">
<button data-act="save-asr" class="primary" data-i18n="saveBtn">Save</button>
</div>
<a class="doc-link" id="asrDocLink" target="_blank" rel="noopener noreferrer" data-i18n="asrDocLink">
📖 配置文档
</a>
</div>
</section>
</details>
<div id="status" class="status"></div>
</main>
<script type="module" src="options.js"></script>
</body>
</html>