codexmate 0.0.43 → 0.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/README.zh.md +2 -0
- package/cli/claude-proxy.js +611 -14
- package/cli/update.js +77 -7
- package/cli.js +188 -21
- package/package.json +1 -1
- package/web-ui/app.js +21 -2
- package/web-ui/logic.claude.mjs +65 -2
- package/web-ui/logic.runtime.mjs +0 -7
- package/web-ui/modules/app.methods.claude-config.mjs +28 -12
- package/web-ui/modules/app.methods.index.mjs +1 -1
- package/web-ui/modules/app.methods.install.mjs +129 -1
- package/web-ui/modules/app.methods.session-actions.mjs +7 -2
- package/web-ui/modules/app.methods.session-timeline.mjs +0 -1
- package/web-ui/modules/app.methods.startup-claude.mjs +26 -3
- package/web-ui/modules/i18n/locales/en.mjs +18 -0
- package/web-ui/modules/i18n/locales/ja.mjs +18 -0
- package/web-ui/modules/i18n/locales/vi.mjs +20 -0
- package/web-ui/modules/i18n/locales/zh.mjs +18 -0
- package/web-ui/partials/index/layout-header.html +24 -0
- package/web-ui/partials/index/modals-basic.html +18 -1
- package/web-ui/partials/index/panel-config-claude.html +4 -1
- package/web-ui/partials/index/panel-config-codex.html +2 -1
- package/web-ui/res/web-ui-render.precompiled.js +114 -21
- package/web-ui/styles/controls-forms.css +5 -5
- package/web-ui/styles/layout-shell.css +145 -0
- package/web-ui/styles/responsive.css +12 -0
|
@@ -1,11 +1,39 @@
|
|
|
1
1
|
window.__CODEXMATE_WEB_UI_RENDER__ = (() => {
|
|
2
|
-
const { toDisplayString: _toDisplayString,
|
|
2
|
+
const { toDisplayString: _toDisplayString, openBlock: _openBlock, createElementBlock: _createElementBlock, createCommentVNode: _createCommentVNode, createTextVNode: _createTextVNode, createElementVNode: _createElementVNode, normalizeClass: _normalizeClass, Fragment: _Fragment, renderList: _renderList, vShow: _vShow, withDirectives: _withDirectives, vModelSelect: _vModelSelect, vModelText: _vModelText, withKeys: _withKeys, withModifiers: _withModifiers, isMemoSame: _isMemoSame, withMemo: _withMemo, normalizeStyle: _normalizeStyle, vModelDynamic: _vModelDynamic, vModelCheckbox: _vModelCheckbox } = Vue
|
|
3
3
|
|
|
4
4
|
return function render(_ctx, _cache) {
|
|
5
5
|
return (_openBlock(), _createElementBlock(_Fragment, null, [
|
|
6
6
|
(!_ctx.sessionStandalone)
|
|
7
7
|
? (_openBlock(), _createElementBlock("div", {
|
|
8
8
|
key: 0,
|
|
9
|
+
class: "mobile-brand-bar"
|
|
10
|
+
}, [
|
|
11
|
+
_createElementVNode("div", { class: "mobile-brand-title" }, [
|
|
12
|
+
_createTextVNode("Codex Mate"),
|
|
13
|
+
(_ctx.appVersion)
|
|
14
|
+
? (_openBlock(), _createElementBlock("span", {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "brand-version"
|
|
17
|
+
}, " v" + _toDisplayString(_ctx.appVersion), 1 /* TEXT */))
|
|
18
|
+
: _createCommentVNode("v-if", true)
|
|
19
|
+
]),
|
|
20
|
+
(_ctx.isAppVersionStatusVisible())
|
|
21
|
+
? (_openBlock(), _createElementBlock("button", {
|
|
22
|
+
key: 0,
|
|
23
|
+
type: "button",
|
|
24
|
+
class: _normalizeClass(['mobile-update-chip', 'mobile-update-chip--' + _ctx.appVersionStatusKind()]),
|
|
25
|
+
title: _ctx.appVersionStatusTitle(),
|
|
26
|
+
onClick: _ctx.handleAppVersionStatusClick
|
|
27
|
+
}, [
|
|
28
|
+
_createElementVNode("span", { class: "side-update-dot" }),
|
|
29
|
+
_createElementVNode("span", { class: "mobile-update-text" }, _toDisplayString(_ctx.appUpdateNoticeText()), 1 /* TEXT */)
|
|
30
|
+
], 10 /* CLASS, PROPS */, ["title", "onClick"]))
|
|
31
|
+
: _createCommentVNode("v-if", true)
|
|
32
|
+
]))
|
|
33
|
+
: _createCommentVNode("v-if", true),
|
|
34
|
+
(!_ctx.sessionStandalone)
|
|
35
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
36
|
+
key: 1,
|
|
9
37
|
class: "top-tabs",
|
|
10
38
|
role: "tablist",
|
|
11
39
|
"aria-label": _ctx.t('nav.topTabs.aria')
|
|
@@ -126,7 +154,7 @@ return function render(_ctx, _cache) {
|
|
|
126
154
|
: _createCommentVNode("v-if", true),
|
|
127
155
|
(!_ctx.sessionStandalone)
|
|
128
156
|
? (_openBlock(), _createElementBlock("div", {
|
|
129
|
-
key:
|
|
157
|
+
key: 2,
|
|
130
158
|
class: "lang-fab"
|
|
131
159
|
}, [
|
|
132
160
|
_createElementVNode("button", {
|
|
@@ -163,7 +191,22 @@ return function render(_ctx, _cache) {
|
|
|
163
191
|
: _createCommentVNode("v-if", true)
|
|
164
192
|
])
|
|
165
193
|
])
|
|
166
|
-
])
|
|
194
|
+
]),
|
|
195
|
+
(_ctx.isAppVersionStatusVisible())
|
|
196
|
+
? (_openBlock(), _createElementBlock("button", {
|
|
197
|
+
key: 0,
|
|
198
|
+
type: "button",
|
|
199
|
+
class: _normalizeClass(['side-update-notice', 'side-update-notice--' + _ctx.appVersionStatusKind()]),
|
|
200
|
+
title: _ctx.appVersionStatusTitle(),
|
|
201
|
+
onClick: _ctx.handleAppVersionStatusClick
|
|
202
|
+
}, [
|
|
203
|
+
_createElementVNode("span", { class: "side-update-dot" }),
|
|
204
|
+
_createElementVNode("span", { class: "side-update-copy" }, [
|
|
205
|
+
_createElementVNode("span", { class: "side-update-title" }, _toDisplayString(_ctx.appUpdateNoticeText()), 1 /* TEXT */),
|
|
206
|
+
_createElementVNode("span", { class: "side-update-meta" }, _toDisplayString(_ctx.appUpdateNoticeMeta()), 1 /* TEXT */)
|
|
207
|
+
])
|
|
208
|
+
], 10 /* CLASS, PROPS */, ["title", "onClick"]))
|
|
209
|
+
: _createCommentVNode("v-if", true)
|
|
167
210
|
]),
|
|
168
211
|
_createElementVNode("div", { class: "side-rail-nav" }, [
|
|
169
212
|
_createElementVNode("div", {
|
|
@@ -958,6 +1001,7 @@ return function render(_ctx, _cache) {
|
|
|
958
1001
|
_createElementVNode("label", { class: "settings-toggle-row tool-config-write-toggle" }, [
|
|
959
1002
|
_createElementVNode("input", {
|
|
960
1003
|
type: "checkbox",
|
|
1004
|
+
autocomplete: "off",
|
|
961
1005
|
checked: _ctx.isToolConfigWriteAllowed('codex'),
|
|
962
1006
|
disabled: _ctx.toolConfigPermissionSaving.codex,
|
|
963
1007
|
onChange: $event => (_ctx.setToolConfigPermission('codex', $event.target.checked))
|
|
@@ -1583,6 +1627,7 @@ return function render(_ctx, _cache) {
|
|
|
1583
1627
|
_createElementVNode("label", { class: "settings-toggle-row tool-config-write-toggle" }, [
|
|
1584
1628
|
_createElementVNode("input", {
|
|
1585
1629
|
type: "checkbox",
|
|
1630
|
+
autocomplete: "off",
|
|
1586
1631
|
checked: _ctx.isToolConfigWriteAllowed('claude'),
|
|
1587
1632
|
disabled: _ctx.toolConfigPermissionSaving.claude,
|
|
1588
1633
|
onChange: $event => (_ctx.setToolConfigPermission('claude', $event.target.checked))
|
|
@@ -1905,13 +1950,33 @@ return function render(_ctx, _cache) {
|
|
|
1905
1950
|
"aria-current": _ctx.currentClaudeConfig === name ? 'true' : null
|
|
1906
1951
|
}, [
|
|
1907
1952
|
_createElementVNode("div", { class: "card-leading" }, [
|
|
1908
|
-
_createElementVNode("div", { class: "card-icon" },
|
|
1953
|
+
_createElementVNode("div", { class: "card-icon" }, [
|
|
1954
|
+
_createTextVNode(_toDisplayString(name.charAt(0).toUpperCase()), 1 /* TEXT */),
|
|
1955
|
+
(config.targetApi === 'chat_completions' || config.targetApi === 'ollama')
|
|
1956
|
+
? (_openBlock(), _createElementBlock("span", {
|
|
1957
|
+
key: 0,
|
|
1958
|
+
class: "card-icon-dot",
|
|
1959
|
+
title: _ctx.t('config.transformProvider.title')
|
|
1960
|
+
}, null, 8 /* PROPS */, ["title"]))
|
|
1961
|
+
: _createCommentVNode("v-if", true)
|
|
1962
|
+
]),
|
|
1909
1963
|
_createElementVNode("div", { class: "card-content" }, [
|
|
1910
1964
|
_createElementVNode("div", { class: "card-title" }, _toDisplayString(name), 1 /* TEXT */),
|
|
1911
1965
|
_createElementVNode("div", { class: "card-subtitle card-subtitle-model" }, _toDisplayString(config.model || _ctx.t('claude.model.unset')), 1 /* TEXT */),
|
|
1912
|
-
(config.
|
|
1966
|
+
(config.targetApi === 'chat_completions')
|
|
1913
1967
|
? (_openBlock(), _createElementBlock("div", {
|
|
1914
1968
|
key: 0,
|
|
1969
|
+
class: "card-subtitle"
|
|
1970
|
+
}, _toDisplayString(_ctx.t('claude.targetApi.chatCompletionsBadge')), 1 /* TEXT */))
|
|
1971
|
+
: (config.targetApi === 'ollama')
|
|
1972
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
1973
|
+
key: 1,
|
|
1974
|
+
class: "card-subtitle"
|
|
1975
|
+
}, _toDisplayString(_ctx.t('claude.targetApi.ollamaBadge')), 1 /* TEXT */))
|
|
1976
|
+
: _createCommentVNode("v-if", true),
|
|
1977
|
+
(config.baseUrl)
|
|
1978
|
+
? (_openBlock(), _createElementBlock("div", {
|
|
1979
|
+
key: 2,
|
|
1915
1980
|
class: "card-subtitle card-subtitle-url"
|
|
1916
1981
|
}, _toDisplayString(config.baseUrl), 1 /* TEXT */))
|
|
1917
1982
|
: _createCommentVNode("v-if", true)
|
|
@@ -5320,7 +5385,7 @@ return function render(_ctx, _cache) {
|
|
|
5320
5385
|
_createCommentVNode(" 添加提供商模态框 "),
|
|
5321
5386
|
(_ctx.showAddModal)
|
|
5322
5387
|
? (_openBlock(), _createElementBlock("div", {
|
|
5323
|
-
key:
|
|
5388
|
+
key: 3,
|
|
5324
5389
|
class: "modal-overlay",
|
|
5325
5390
|
onClick: _withModifiers(_ctx.closeAddModal, ["self"])
|
|
5326
5391
|
}, [
|
|
@@ -5477,7 +5542,7 @@ return function render(_ctx, _cache) {
|
|
|
5477
5542
|
_createCommentVNode(" 编辑提供商模态框 "),
|
|
5478
5543
|
(_ctx.showEditModal)
|
|
5479
5544
|
? (_openBlock(), _createElementBlock("div", {
|
|
5480
|
-
key:
|
|
5545
|
+
key: 4,
|
|
5481
5546
|
class: "modal-overlay",
|
|
5482
5547
|
onClick: _withModifiers(_ctx.closeEditModal, ["self"])
|
|
5483
5548
|
}, [
|
|
@@ -5589,7 +5654,7 @@ return function render(_ctx, _cache) {
|
|
|
5589
5654
|
_createCommentVNode(" 添加模型模态框 "),
|
|
5590
5655
|
(_ctx.showModelModal)
|
|
5591
5656
|
? (_openBlock(), _createElementBlock("div", {
|
|
5592
|
-
key:
|
|
5657
|
+
key: 5,
|
|
5593
5658
|
class: "modal-overlay",
|
|
5594
5659
|
onClick: _withModifiers(_ctx.closeModelModal, ["self"])
|
|
5595
5660
|
}, [
|
|
@@ -5629,7 +5694,7 @@ return function render(_ctx, _cache) {
|
|
|
5629
5694
|
_createCommentVNode(" 模型列表模态框 "),
|
|
5630
5695
|
(_ctx.showModelListModal)
|
|
5631
5696
|
? (_openBlock(), _createElementBlock("div", {
|
|
5632
|
-
key:
|
|
5697
|
+
key: 6,
|
|
5633
5698
|
class: "modal-overlay",
|
|
5634
5699
|
onClick: _withModifiers($event => (_ctx.showModelListModal = false), ["self"])
|
|
5635
5700
|
}, [
|
|
@@ -5670,7 +5735,7 @@ return function render(_ctx, _cache) {
|
|
|
5670
5735
|
_createCommentVNode(" 添加Claude配置模态框 "),
|
|
5671
5736
|
(_ctx.showClaudeConfigModal)
|
|
5672
5737
|
? (_openBlock(), _createElementBlock("div", {
|
|
5673
|
-
key:
|
|
5738
|
+
key: 7,
|
|
5674
5739
|
class: "modal-overlay",
|
|
5675
5740
|
onClick: _withModifiers(_ctx.closeClaudeConfigModal, ["self"])
|
|
5676
5741
|
}, [
|
|
@@ -5791,6 +5856,20 @@ return function render(_ctx, _cache) {
|
|
|
5791
5856
|
}, _toDisplayString(_ctx.claudeConfigFieldError('add', 'model')), 1 /* TEXT */))
|
|
5792
5857
|
: _createCommentVNode("v-if", true)
|
|
5793
5858
|
]),
|
|
5859
|
+
_createElementVNode("div", { class: "form-group" }, [
|
|
5860
|
+
_createElementVNode("label", { class: "form-label" }, _toDisplayString(_ctx.t('claude.targetApi.label')), 1 /* TEXT */),
|
|
5861
|
+
_withDirectives(_createElementVNode("select", {
|
|
5862
|
+
"onUpdate:modelValue": $event => ((_ctx.newClaudeConfig.targetApi) = $event),
|
|
5863
|
+
class: "form-input"
|
|
5864
|
+
}, [
|
|
5865
|
+
_createElementVNode("option", { value: "responses" }, _toDisplayString(_ctx.t('claude.targetApi.responses')), 1 /* TEXT */),
|
|
5866
|
+
_createElementVNode("option", { value: "chat_completions" }, _toDisplayString(_ctx.t('claude.targetApi.chatCompletions')), 1 /* TEXT */),
|
|
5867
|
+
_createElementVNode("option", { value: "ollama" }, _toDisplayString(_ctx.t('claude.targetApi.ollama')), 1 /* TEXT */)
|
|
5868
|
+
], 8 /* PROPS */, ["onUpdate:modelValue"]), [
|
|
5869
|
+
[_vModelSelect, _ctx.newClaudeConfig.targetApi]
|
|
5870
|
+
]),
|
|
5871
|
+
_createElementVNode("div", { class: "form-hint" }, _toDisplayString(_ctx.t('claude.targetApi.hint')), 1 /* TEXT */)
|
|
5872
|
+
]),
|
|
5794
5873
|
_createElementVNode("div", { class: "btn-group" }, [
|
|
5795
5874
|
_createElementVNode("button", {
|
|
5796
5875
|
class: "btn btn-cancel",
|
|
@@ -5808,7 +5887,7 @@ return function render(_ctx, _cache) {
|
|
|
5808
5887
|
_createCommentVNode(" 编辑Claude配置模态框 "),
|
|
5809
5888
|
(_ctx.showEditConfigModal)
|
|
5810
5889
|
? (_openBlock(), _createElementBlock("div", {
|
|
5811
|
-
key:
|
|
5890
|
+
key: 8,
|
|
5812
5891
|
class: "modal-overlay",
|
|
5813
5892
|
onClick: _withModifiers(_ctx.closeEditConfigModal, ["self"])
|
|
5814
5893
|
}, [
|
|
@@ -5930,6 +6009,20 @@ return function render(_ctx, _cache) {
|
|
|
5930
6009
|
}, _toDisplayString(_ctx.claudeConfigFieldError('edit', 'model')), 1 /* TEXT */))
|
|
5931
6010
|
: _createCommentVNode("v-if", true)
|
|
5932
6011
|
]),
|
|
6012
|
+
_createElementVNode("div", { class: "form-group" }, [
|
|
6013
|
+
_createElementVNode("label", { class: "form-label" }, _toDisplayString(_ctx.t('claude.targetApi.label')), 1 /* TEXT */),
|
|
6014
|
+
_withDirectives(_createElementVNode("select", {
|
|
6015
|
+
"onUpdate:modelValue": $event => ((_ctx.editingConfig.targetApi) = $event),
|
|
6016
|
+
class: "form-input"
|
|
6017
|
+
}, [
|
|
6018
|
+
_createElementVNode("option", { value: "responses" }, _toDisplayString(_ctx.t('claude.targetApi.responses')), 1 /* TEXT */),
|
|
6019
|
+
_createElementVNode("option", { value: "chat_completions" }, _toDisplayString(_ctx.t('claude.targetApi.chatCompletions')), 1 /* TEXT */),
|
|
6020
|
+
_createElementVNode("option", { value: "ollama" }, _toDisplayString(_ctx.t('claude.targetApi.ollama')), 1 /* TEXT */)
|
|
6021
|
+
], 8 /* PROPS */, ["onUpdate:modelValue"]), [
|
|
6022
|
+
[_vModelSelect, _ctx.editingConfig.targetApi]
|
|
6023
|
+
]),
|
|
6024
|
+
_createElementVNode("div", { class: "form-hint" }, _toDisplayString(_ctx.t('claude.targetApi.hint')), 1 /* TEXT */)
|
|
6025
|
+
]),
|
|
5933
6026
|
_createElementVNode("div", { class: "btn-group" }, [
|
|
5934
6027
|
_createElementVNode("button", {
|
|
5935
6028
|
class: "btn btn-cancel",
|
|
@@ -5947,7 +6040,7 @@ return function render(_ctx, _cache) {
|
|
|
5947
6040
|
_createCommentVNode(" Codex bridge pool modal "),
|
|
5948
6041
|
(_ctx.showCodexBridgePoolModal)
|
|
5949
6042
|
? (_openBlock(), _createElementBlock("div", {
|
|
5950
|
-
key:
|
|
6043
|
+
key: 9,
|
|
5951
6044
|
class: "modal-overlay",
|
|
5952
6045
|
onClick: _withModifiers($event => (_ctx.showCodexBridgePoolModal = false), ["self"])
|
|
5953
6046
|
}, [
|
|
@@ -6040,7 +6133,7 @@ return function render(_ctx, _cache) {
|
|
|
6040
6133
|
: _createCommentVNode("v-if", true),
|
|
6041
6134
|
(_ctx.showClaudeBridgePoolModal)
|
|
6042
6135
|
? (_openBlock(), _createElementBlock("div", {
|
|
6043
|
-
key:
|
|
6136
|
+
key: 10,
|
|
6044
6137
|
class: "modal-overlay",
|
|
6045
6138
|
onClick: _withModifiers($event => (_ctx.showClaudeBridgePoolModal = false), ["self"])
|
|
6046
6139
|
}, [
|
|
@@ -6134,7 +6227,7 @@ return function render(_ctx, _cache) {
|
|
|
6134
6227
|
_createCommentVNode(" Webhook settings modal "),
|
|
6135
6228
|
(_ctx.showWebhookModal)
|
|
6136
6229
|
? (_openBlock(), _createElementBlock("div", {
|
|
6137
|
-
key:
|
|
6230
|
+
key: 11,
|
|
6138
6231
|
class: "modal-overlay",
|
|
6139
6232
|
onClick: _withModifiers(_ctx.closeWebhookModal, ["self"])
|
|
6140
6233
|
}, [
|
|
@@ -6207,7 +6300,7 @@ return function render(_ctx, _cache) {
|
|
|
6207
6300
|
: _createCommentVNode("v-if", true),
|
|
6208
6301
|
(_ctx.showOpenclawConfigModal)
|
|
6209
6302
|
? (_openBlock(), _createElementBlock("div", {
|
|
6210
|
-
key:
|
|
6303
|
+
key: 12,
|
|
6211
6304
|
class: "modal-overlay",
|
|
6212
6305
|
onClick: _withModifiers($event => (!(_ctx.openclawSaving || _ctx.openclawApplying) && _ctx.closeOpenclawConfigModal()), ["self"])
|
|
6213
6306
|
}, [
|
|
@@ -6919,7 +7012,7 @@ return function render(_ctx, _cache) {
|
|
|
6919
7012
|
: _createCommentVNode("v-if", true),
|
|
6920
7013
|
(_ctx.showConfigTemplateModal)
|
|
6921
7014
|
? (_openBlock(), _createElementBlock("div", {
|
|
6922
|
-
key:
|
|
7015
|
+
key: 13,
|
|
6923
7016
|
class: "modal-overlay",
|
|
6924
7017
|
onClick: _withModifiers($event => (!_ctx.configTemplateApplying && _ctx.closeConfigTemplateModal()), ["self"])
|
|
6925
7018
|
}, [
|
|
@@ -7064,7 +7157,7 @@ return function render(_ctx, _cache) {
|
|
|
7064
7157
|
: _createCommentVNode("v-if", true),
|
|
7065
7158
|
(_ctx.showAgentsModal)
|
|
7066
7159
|
? (_openBlock(), _createElementBlock("div", {
|
|
7067
|
-
key:
|
|
7160
|
+
key: 14,
|
|
7068
7161
|
class: "modal-overlay",
|
|
7069
7162
|
onClick: _withModifiers(_ctx.closeAgentsModal, ["self"])
|
|
7070
7163
|
}, [
|
|
@@ -7232,7 +7325,7 @@ return function render(_ctx, _cache) {
|
|
|
7232
7325
|
: _createCommentVNode("v-if", true),
|
|
7233
7326
|
(_ctx.showSkillsModal)
|
|
7234
7327
|
? (_openBlock(), _createElementBlock("div", {
|
|
7235
|
-
key:
|
|
7328
|
+
key: 15,
|
|
7236
7329
|
class: "modal-overlay",
|
|
7237
7330
|
onClick: _withModifiers(_ctx.closeSkillsModal, ["self"])
|
|
7238
7331
|
}, [
|
|
@@ -7530,7 +7623,7 @@ return function render(_ctx, _cache) {
|
|
|
7530
7623
|
}, null, 40 /* PROPS, NEED_HYDRATION */, ["onChange"]),
|
|
7531
7624
|
(_ctx.showHealthCheckModal)
|
|
7532
7625
|
? (_openBlock(), _createElementBlock("div", {
|
|
7533
|
-
key:
|
|
7626
|
+
key: 16,
|
|
7534
7627
|
class: "modal-overlay",
|
|
7535
7628
|
onClick: _withModifiers($event => (_ctx.showHealthCheckModal = false), ["self"])
|
|
7536
7629
|
}, [
|
|
@@ -7621,7 +7714,7 @@ return function render(_ctx, _cache) {
|
|
|
7621
7714
|
: _createCommentVNode("v-if", true),
|
|
7622
7715
|
(_ctx.showConfirmDialog)
|
|
7623
7716
|
? (_openBlock(), _createElementBlock("div", {
|
|
7624
|
-
key:
|
|
7717
|
+
key: 17,
|
|
7625
7718
|
class: "modal-overlay",
|
|
7626
7719
|
onClick: _withModifiers(_ctx.closeConfirmDialog, ["self"])
|
|
7627
7720
|
}, [
|
|
@@ -7659,7 +7752,7 @@ return function render(_ctx, _cache) {
|
|
|
7659
7752
|
_createCommentVNode(" Toast "),
|
|
7660
7753
|
(_ctx.message)
|
|
7661
7754
|
? (_openBlock(), _createElementBlock("div", {
|
|
7662
|
-
key:
|
|
7755
|
+
key: 18,
|
|
7663
7756
|
class: _normalizeClass(['toast', _ctx.messageType]),
|
|
7664
7757
|
role: "status",
|
|
7665
7758
|
"aria-live": "polite",
|
|
@@ -483,16 +483,16 @@
|
|
|
483
483
|
}
|
|
484
484
|
|
|
485
485
|
.tool-config-write-overlay {
|
|
486
|
-
position:
|
|
486
|
+
position: fixed;
|
|
487
487
|
inset: 0;
|
|
488
|
-
z-index:
|
|
488
|
+
z-index: 90;
|
|
489
489
|
display: flex;
|
|
490
490
|
align-items: center;
|
|
491
491
|
justify-content: center;
|
|
492
492
|
box-sizing: border-box;
|
|
493
|
-
min-height:
|
|
494
|
-
padding: 16px;
|
|
495
|
-
border-radius:
|
|
493
|
+
min-height: 100dvh;
|
|
494
|
+
padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
|
|
495
|
+
border-radius: 0;
|
|
496
496
|
background: rgba(247, 240, 233, 0.78);
|
|
497
497
|
background: color-mix(in srgb, var(--color-bg) 68%, transparent);
|
|
498
498
|
backdrop-filter: blur(2px);
|
|
@@ -507,6 +507,151 @@ body::after {
|
|
|
507
507
|
-webkit-text-fill-color: #8e8e93;
|
|
508
508
|
}
|
|
509
509
|
|
|
510
|
+
.mobile-brand-bar {
|
|
511
|
+
display: none;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
.mobile-brand-title {
|
|
515
|
+
min-width: 0;
|
|
516
|
+
font-size: 15px;
|
|
517
|
+
font-weight: 760;
|
|
518
|
+
letter-spacing: -0.02em;
|
|
519
|
+
color: var(--color-text-primary);
|
|
520
|
+
white-space: nowrap;
|
|
521
|
+
overflow: hidden;
|
|
522
|
+
text-overflow: ellipsis;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
.mobile-update-chip {
|
|
526
|
+
min-width: 0;
|
|
527
|
+
max-width: 58vw;
|
|
528
|
+
height: 30px;
|
|
529
|
+
padding: 0 9px;
|
|
530
|
+
border: 1px solid rgba(200, 121, 99, 0.16);
|
|
531
|
+
border-radius: 999px;
|
|
532
|
+
background: rgba(255, 255, 255, 0.58);
|
|
533
|
+
color: var(--color-text-secondary);
|
|
534
|
+
display: inline-flex;
|
|
535
|
+
align-items: center;
|
|
536
|
+
justify-content: center;
|
|
537
|
+
gap: 7px;
|
|
538
|
+
cursor: pointer;
|
|
539
|
+
white-space: nowrap;
|
|
540
|
+
box-shadow: none;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
.mobile-update-chip--current {
|
|
544
|
+
border-color: rgba(72, 138, 102, 0.14);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.mobile-update-chip--current .side-update-dot {
|
|
548
|
+
background: rgba(72, 138, 102, 0.70);
|
|
549
|
+
box-shadow: 0 0 0 4px rgba(72, 138, 102, 0.08);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.mobile-update-chip--loading .side-update-dot {
|
|
553
|
+
animation: side-update-pulse 1.2s ease-in-out infinite;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
.mobile-update-chip--error {
|
|
557
|
+
border-color: rgba(203, 75, 75, 0.18);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
.mobile-update-chip--error .side-update-dot {
|
|
561
|
+
background: rgba(203, 75, 75, 0.78);
|
|
562
|
+
box-shadow: 0 0 0 4px rgba(203, 75, 75, 0.08);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
.mobile-update-text {
|
|
566
|
+
min-width: 0;
|
|
567
|
+
overflow: hidden;
|
|
568
|
+
text-overflow: ellipsis;
|
|
569
|
+
font-size: 11px;
|
|
570
|
+
font-weight: 680;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.side-update-notice {
|
|
574
|
+
width: 100%;
|
|
575
|
+
margin-top: 12px;
|
|
576
|
+
padding: 8px 9px;
|
|
577
|
+
border: 1px solid rgba(200, 121, 99, 0.16);
|
|
578
|
+
border-radius: 12px;
|
|
579
|
+
background: rgba(255, 255, 255, 0.52);
|
|
580
|
+
color: var(--color-text-secondary);
|
|
581
|
+
display: flex;
|
|
582
|
+
align-items: center;
|
|
583
|
+
gap: 8px;
|
|
584
|
+
text-align: left;
|
|
585
|
+
cursor: pointer;
|
|
586
|
+
box-shadow: none;
|
|
587
|
+
transition: border-color 160ms ease, background 160ms ease, color 160ms ease;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
.side-update-notice:hover {
|
|
591
|
+
border-color: rgba(200, 121, 99, 0.30);
|
|
592
|
+
background: rgba(255, 255, 255, 0.74);
|
|
593
|
+
color: var(--color-text-primary);
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
.side-update-notice--current {
|
|
597
|
+
border-color: rgba(72, 138, 102, 0.14);
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.side-update-notice--current .side-update-dot {
|
|
601
|
+
background: rgba(72, 138, 102, 0.70);
|
|
602
|
+
box-shadow: 0 0 0 4px rgba(72, 138, 102, 0.08);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
.side-update-notice--loading .side-update-dot {
|
|
606
|
+
animation: side-update-pulse 1.2s ease-in-out infinite;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.side-update-notice--error {
|
|
610
|
+
border-color: rgba(203, 75, 75, 0.18);
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
.side-update-notice--error .side-update-dot {
|
|
614
|
+
background: rgba(203, 75, 75, 0.78);
|
|
615
|
+
box-shadow: 0 0 0 4px rgba(203, 75, 75, 0.08);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
@keyframes side-update-pulse {
|
|
619
|
+
0%, 100% { opacity: 0.48; transform: scale(0.94); }
|
|
620
|
+
50% { opacity: 1; transform: scale(1.08); }
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
.side-update-dot {
|
|
624
|
+
width: 7px;
|
|
625
|
+
height: 7px;
|
|
626
|
+
border-radius: 50%;
|
|
627
|
+
background: rgba(200, 121, 99, 0.72);
|
|
628
|
+
box-shadow: 0 0 0 4px rgba(200, 121, 99, 0.08);
|
|
629
|
+
flex-shrink: 0;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
.side-update-copy {
|
|
633
|
+
min-width: 0;
|
|
634
|
+
display: flex;
|
|
635
|
+
flex-direction: column;
|
|
636
|
+
gap: 1px;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
.side-update-title {
|
|
640
|
+
font-size: 11px;
|
|
641
|
+
line-height: 1.25;
|
|
642
|
+
font-weight: 650;
|
|
643
|
+
color: inherit;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.side-update-meta {
|
|
647
|
+
font-size: 10px;
|
|
648
|
+
line-height: 1.2;
|
|
649
|
+
color: var(--color-text-tertiary);
|
|
650
|
+
white-space: nowrap;
|
|
651
|
+
overflow: hidden;
|
|
652
|
+
text-overflow: ellipsis;
|
|
653
|
+
}
|
|
654
|
+
|
|
510
655
|
.brand-version-fade-enter-active,
|
|
511
656
|
.brand-version-fade-leave-active {
|
|
512
657
|
transition: opacity 0.2s var(--ease-smooth);
|
|
@@ -94,6 +94,18 @@ textarea:focus-visible {
|
|
|
94
94
|
overflow: hidden;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
.mobile-brand-bar {
|
|
98
|
+
display: flex;
|
|
99
|
+
flex: 0 0 auto;
|
|
100
|
+
align-items: center;
|
|
101
|
+
justify-content: space-between;
|
|
102
|
+
gap: 10px;
|
|
103
|
+
padding: 9px 12px 6px;
|
|
104
|
+
background: rgba(255, 248, 241, 0.96);
|
|
105
|
+
position: relative;
|
|
106
|
+
z-index: 32;
|
|
107
|
+
}
|
|
108
|
+
|
|
97
109
|
.app-shell {
|
|
98
110
|
grid-template-columns: 1fr;
|
|
99
111
|
flex: 1 1 auto;
|