codexmate 0.0.28 → 0.0.29
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 +421 -421
- package/README.zh.md +354 -354
- package/cli/agents-files.js +224 -224
- package/cli/archive-helpers.js +446 -446
- package/cli/auth-profiles.js +375 -375
- package/cli/builtin-proxy.js +1725 -1620
- package/cli/claude-proxy.js +1022 -1022
- package/cli/config-bootstrap.js +384 -384
- package/cli/config-health.js +338 -338
- package/cli/doctor-core.js +903 -903
- package/cli/import-skills-url.js +356 -356
- package/cli/openai-bridge.js +1576 -1489
- package/cli/openclaw-config.js +629 -629
- package/cli/session-convert-args.js +65 -65
- package/cli/session-convert-io.js +82 -82
- package/cli/session-convert.js +43 -43
- package/cli/session-usage.concurrent.js +28 -28
- package/cli/session-usage.js +118 -118
- package/cli/session-usage.models.js +176 -176
- package/cli/skills.js +1141 -1141
- package/cli/zip-commands.js +510 -510
- package/cli.js +15340 -15264
- package/lib/automation.js +404 -404
- package/lib/cli-file-utils.js +151 -151
- package/lib/cli-models-utils.js +440 -440
- package/lib/cli-network-utils.js +190 -190
- package/lib/cli-path-utils.js +85 -85
- package/lib/cli-session-utils.js +121 -121
- package/lib/cli-sessions.js +417 -417
- package/lib/cli-utils.js +155 -155
- package/lib/cli-webhook.js +126 -0
- package/lib/download-artifacts.js +92 -92
- package/lib/mcp-stdio.js +453 -453
- package/lib/task-orchestrator.js +869 -869
- package/lib/text-diff.js +303 -303
- package/lib/workflow-engine.js +340 -340
- package/package.json +76 -76
- package/plugins/README.md +20 -20
- package/plugins/README.zh-CN.md +20 -20
- package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
- package/plugins/prompt-templates/computed.mjs +253 -253
- package/plugins/prompt-templates/index.mjs +8 -8
- package/plugins/prompt-templates/manifest.mjs +15 -15
- package/plugins/prompt-templates/methods.mjs +553 -553
- package/plugins/prompt-templates/overview.mjs +91 -91
- package/plugins/prompt-templates/ownership.mjs +19 -19
- package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
- package/plugins/prompt-templates/storage.mjs +64 -64
- package/plugins/registry.mjs +16 -16
- package/web-ui/app.js +639 -625
- package/web-ui/index.html +36 -35
- package/web-ui/logic.agents-diff.mjs +386 -386
- package/web-ui/logic.claude.mjs +168 -168
- package/web-ui/logic.codex.mjs +69 -56
- package/web-ui/logic.mjs +5 -5
- package/web-ui/logic.runtime.mjs +128 -128
- package/web-ui/logic.session-convert.mjs +70 -70
- package/web-ui/logic.sessions.mjs +765 -765
- package/web-ui/modules/api.mjs +90 -90
- package/web-ui/modules/app.computed.dashboard.mjs +225 -225
- package/web-ui/modules/app.computed.index.mjs +17 -17
- package/web-ui/modules/app.computed.main-tabs.mjs +205 -205
- package/web-ui/modules/app.computed.session.mjs +999 -994
- package/web-ui/modules/app.constants.mjs +15 -15
- package/web-ui/modules/app.methods.agents.mjs +632 -632
- package/web-ui/modules/app.methods.claude-config.mjs +200 -190
- package/web-ui/modules/app.methods.codex-config.mjs +892 -892
- package/web-ui/modules/app.methods.index.mjs +94 -92
- package/web-ui/modules/app.methods.install.mjs +205 -205
- package/web-ui/modules/app.methods.navigation.mjs +761 -743
- package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
- package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
- package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
- package/web-ui/modules/app.methods.providers.mjs +493 -412
- package/web-ui/modules/app.methods.runtime.mjs +345 -345
- package/web-ui/modules/app.methods.session-actions.mjs +593 -593
- package/web-ui/modules/app.methods.session-browser.mjs +984 -984
- package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
- package/web-ui/modules/app.methods.session-trash.mjs +438 -439
- package/web-ui/modules/app.methods.startup-claude.mjs +533 -533
- package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
- package/web-ui/modules/app.methods.webhook.mjs +79 -0
- package/web-ui/modules/config-mode.computed.mjs +124 -124
- package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
- package/web-ui/modules/i18n.dict.mjs +3131 -2109
- package/web-ui/modules/i18n.mjs +62 -56
- package/web-ui/modules/plugins.computed.mjs +3 -3
- package/web-ui/modules/plugins.methods.mjs +3 -3
- package/web-ui/modules/plugins.storage.mjs +11 -11
- package/web-ui/modules/provider-url-display.mjs +17 -17
- package/web-ui/modules/sessions-filters-url.mjs +85 -85
- package/web-ui/modules/skills.computed.mjs +107 -107
- package/web-ui/modules/skills.methods.mjs +481 -481
- package/web-ui/partials/index/layout-footer.html +13 -13
- package/web-ui/partials/index/layout-header.html +500 -475
- package/web-ui/partials/index/modal-config-template-agents.html +174 -174
- package/web-ui/partials/index/modal-confirm-toast.html +32 -32
- package/web-ui/partials/index/modal-health-check.html +45 -45
- package/web-ui/partials/index/modal-openclaw-config.html +280 -280
- package/web-ui/partials/index/modal-skills.html +200 -200
- package/web-ui/partials/index/modals-basic.html +162 -165
- package/web-ui/partials/index/panel-config-claude.html +194 -188
- package/web-ui/partials/index/panel-config-codex.html +323 -312
- package/web-ui/partials/index/panel-config-openclaw.html +83 -83
- package/web-ui/partials/index/panel-dashboard.html +186 -186
- package/web-ui/partials/index/panel-docs.html +147 -147
- package/web-ui/partials/index/panel-market.html +177 -177
- package/web-ui/partials/index/panel-orchestration.html +391 -391
- package/web-ui/partials/index/panel-plugins.html +253 -253
- package/web-ui/partials/index/panel-sessions.html +316 -316
- package/web-ui/partials/index/panel-settings.html +190 -253
- package/web-ui/partials/index/panel-trash.html +88 -0
- package/web-ui/partials/index/panel-usage.html +371 -371
- package/web-ui/res/json5.min.js +1 -1
- package/web-ui/res/vue.global.prod.js +13 -13
- package/web-ui/session-helpers.mjs +576 -576
- package/web-ui/source-bundle.cjs +233 -233
- package/web-ui/styles/base-theme.css +281 -281
- package/web-ui/styles/controls-forms.css +422 -422
- package/web-ui/styles/dashboard.css +274 -274
- package/web-ui/styles/docs-panel.css +271 -247
- package/web-ui/styles/feedback.css +108 -108
- package/web-ui/styles/health-check-dialog.css +144 -144
- package/web-ui/styles/layout-shell.css +626 -606
- package/web-ui/styles/modals-core.css +466 -466
- package/web-ui/styles/navigation-panels.css +391 -391
- package/web-ui/styles/openclaw-structured.css +266 -266
- package/web-ui/styles/plugins-panel.css +523 -523
- package/web-ui/styles/responsive.css +454 -454
- package/web-ui/styles/sessions-list.css +419 -419
- package/web-ui/styles/sessions-preview.css +411 -411
- package/web-ui/styles/sessions-toolbar-trash.css +330 -330
- package/web-ui/styles/sessions-usage.css +1040 -1040
- package/web-ui/styles/settings-panel.css +349 -185
- package/web-ui/styles/skills-list.css +303 -303
- package/web-ui/styles/skills-market.css +406 -406
- package/web-ui/styles/task-orchestration.css +822 -822
- package/web-ui/styles/titles-cards.css +472 -472
- package/web-ui/styles/trash-panel.css +90 -0
- package/web-ui/styles/webhook.css +81 -0
- package/web-ui/styles.css +23 -21
- package/web-ui.html +17 -17
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
<div
|
|
2
|
-
v-show="mainTab === 'docs'"
|
|
3
|
-
class="mode-content docs-mode-content"
|
|
4
|
-
id="panel-docs"
|
|
5
|
-
role="tabpanel"
|
|
6
|
-
aria-labelledby="tab-docs">
|
|
7
|
-
<div class="selector-section docs-overview-section">
|
|
8
|
-
<div class="selector-header docs-overview-header">
|
|
9
|
-
<div>
|
|
10
|
-
<span class="selector-title">{{ t('docs.title') }}</span>
|
|
11
|
-
<div class="skills-panel-note docs-section-note">{{ t('docs.subtitle') }}</div>
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
<div class="docs-toolbar-grid">
|
|
16
|
-
<div class="docs-toolbar-card">
|
|
17
|
-
<label class="form-label" for="docs-install-package-manager">{{ t('common.packageManager') }}</label>
|
|
18
|
-
<select id="docs-install-package-manager" class="form-input" v-model="installPackageManager">
|
|
19
|
-
<option value="npm">npm</option>
|
|
20
|
-
<option value="pnpm">pnpm</option>
|
|
21
|
-
<option value="bun">bun</option>
|
|
22
|
-
</select>
|
|
23
|
-
</div>
|
|
24
|
-
|
|
25
|
-
<div class="docs-toolbar-card docs-toolbar-card-wide">
|
|
26
|
-
<label class="form-label">{{ t('common.mirror') }}</label>
|
|
27
|
-
<div class="install-action-tabs">
|
|
28
|
-
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'default' }" @click="setInstallRegistryPreset('default')">{{ t('common.official') }}</button>
|
|
29
|
-
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'npmmirror' }" @click="setInstallRegistryPreset('npmmirror')">npmmirror</button>
|
|
30
|
-
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'tencent' }" @click="setInstallRegistryPreset('tencent')">{{ t('docs.registry.tencent') }}</button>
|
|
31
|
-
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'custom' }" @click="setInstallRegistryPreset('custom')">{{ t('common.custom') }}</button>
|
|
32
|
-
</div>
|
|
33
|
-
<input
|
|
34
|
-
v-if="installRegistryPreset === 'custom'"
|
|
35
|
-
v-model="installRegistryCustom"
|
|
36
|
-
class="form-input install-registry-input"
|
|
37
|
-
placeholder="https://registry.example.com">
|
|
38
|
-
<div class="form-hint install-registry-hint" v-if="installRegistryPreview">
|
|
39
|
-
{{ t('docs.registryHintPrefix') }} --registry={{ installRegistryPreview }}
|
|
40
|
-
</div>
|
|
41
|
-
<div class="form-hint install-registry-hint" v-else-if="installRegistryPreset === 'custom'">
|
|
42
|
-
{{ t('docs.registryHintCustom') }}
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<div class="docs-toolbar-card docs-toolbar-card-wide">
|
|
47
|
-
<label class="form-label">{{ t('common.action') }}</label>
|
|
48
|
-
<div class="install-action-tabs">
|
|
49
|
-
<button type="button" class="btn-mini" :class="{ active: installCommandAction === 'install' }" @click="setInstallCommandAction('install')">{{ t('common.install') }}</button>
|
|
50
|
-
<button type="button" class="btn-mini" :class="{ active: installCommandAction === 'update' }" @click="setInstallCommandAction('update')">{{ t('common.update') }}</button>
|
|
51
|
-
<button type="button" class="btn-mini" :class="{ active: installCommandAction === 'uninstall' }" @click="setInstallCommandAction('uninstall')">{{ t('common.uninstall') }}</button>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
|
|
56
|
-
<div class="docs-summary-strip">
|
|
57
|
-
<div class="docs-summary-item">
|
|
58
|
-
<span class="docs-summary-label">{{ t('common.targets') }}</span>
|
|
59
|
-
<strong class="docs-summary-value">{{ installTargetCards.length }}</strong>
|
|
60
|
-
</div>
|
|
61
|
-
<div class="docs-summary-item">
|
|
62
|
-
<span class="docs-summary-label">{{ t('common.currentPm') }}</span>
|
|
63
|
-
<strong class="docs-summary-value">{{ String(installPackageManager || 'npm').toUpperCase() }}</strong>
|
|
64
|
-
</div>
|
|
65
|
-
<div class="docs-summary-item">
|
|
66
|
-
<span class="docs-summary-label">{{ t('common.currentAction') }}</span>
|
|
67
|
-
<strong class="docs-summary-value">{{ installCommandAction === 'update' ? t('common.update') : (installCommandAction === 'uninstall' ? t('common.uninstall') : t('common.install')) }}</strong>
|
|
68
|
-
</div>
|
|
69
|
-
<div class="docs-summary-item docs-summary-item-wide">
|
|
70
|
-
<span class="docs-summary-label">{{ t('common.mirrorActive') }}</span>
|
|
71
|
-
<strong class="docs-summary-value">{{ installRegistryPreview || t('common.defaultOfficial') }}</strong>
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
|
|
76
|
-
<div class="selector-section docs-command-section">
|
|
77
|
-
<div class="selector-header docs-section-header">
|
|
78
|
-
<div>
|
|
79
|
-
<span class="selector-title">{{ t('docs.section.commands') }}</span>
|
|
80
|
-
<div class="skills-panel-note docs-section-note">{{ t('docs.section.commandsNote') }}</div>
|
|
81
|
-
</div>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<div class="install-list docs-install-list">
|
|
85
|
-
<div
|
|
86
|
-
class="install-row docs-install-row"
|
|
87
|
-
v-for="target in installTargetCards"
|
|
88
|
-
:key="'docs-install-command-' + target.id + '-' + installCommandAction">
|
|
89
|
-
<div class="install-row-main">
|
|
90
|
-
<div class="docs-command-head">
|
|
91
|
-
<div class="install-row-title">{{ target.name }}</div>
|
|
92
|
-
<div class="docs-command-meta">
|
|
93
|
-
<span class="docs-meta-pill">{{ target.packageName }}</span>
|
|
94
|
-
<span class="docs-meta-pill">bin: {{ target.bin }}</span>
|
|
95
|
-
</div>
|
|
96
|
-
</div>
|
|
97
|
-
<div class="docs-command-row">
|
|
98
|
-
<div class="docs-command-box" role="group" :aria-label="t('docs.command.aria', { name: target.name })">
|
|
99
|
-
<code class="install-command">{{ target.command }}</code>
|
|
100
|
-
<button
|
|
101
|
-
type="button"
|
|
102
|
-
class="btn-mini docs-copy-btn"
|
|
103
|
-
:disabled="!target.command"
|
|
104
|
-
@click="copyInstallCommand(target.command)">{{ t('common.copy') }}</button>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
<div
|
|
108
|
-
v-if="target.id === 'codex' && target.termuxCommand && target.termuxCommand !== target.command"
|
|
109
|
-
class="docs-command-row docs-command-row-secondary">
|
|
110
|
-
<div class="docs-command-box" role="group" :aria-label="t('docs.termuxAria')">
|
|
111
|
-
<code class="install-command"><span class="docs-command-prefix">{{ t('docs.termuxLabel') }}</span>{{ target.termuxCommand }}</code>
|
|
112
|
-
<button
|
|
113
|
-
type="button"
|
|
114
|
-
class="btn-mini docs-copy-btn"
|
|
115
|
-
@click="copyInstallCommand(target.termuxCommand)">{{ t('common.copy') }}</button>
|
|
116
|
-
</div>
|
|
117
|
-
</div>
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
|
|
123
|
-
<div class="selector-section docs-help-section">
|
|
124
|
-
<div class="selector-header docs-section-header">
|
|
125
|
-
<div>
|
|
126
|
-
<span class="selector-title">{{ t('docs.section.faq') }}</span>
|
|
127
|
-
<div class="skills-panel-note docs-section-note">{{ t('docs.section.faqNote') }}</div>
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
<div class="docs-help-grid">
|
|
132
|
-
<div class="docs-note-card">
|
|
133
|
-
<div class="docs-note-title">{{ t('common.troubleshooting') }}</div>
|
|
134
|
-
<ul class="install-help-list docs-help-list">
|
|
135
|
-
<li v-for="tip in installTroubleshootingTips" :key="tip">{{ tip }}</li>
|
|
136
|
-
</ul>
|
|
137
|
-
</div>
|
|
138
|
-
<div class="docs-note-card">
|
|
139
|
-
<div class="docs-note-title">{{ t('common.rules') }}</div>
|
|
140
|
-
<ul class="docs-static-list">
|
|
141
|
-
<li>{{ t('docs.rule.1') }}</li>
|
|
142
|
-
<li>{{ t('docs.rule.2') }}</li>
|
|
143
|
-
</ul>
|
|
144
|
-
</div>
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
147
|
-
</div>
|
|
1
|
+
<div
|
|
2
|
+
v-show="mainTab === 'docs'"
|
|
3
|
+
class="mode-content docs-mode-content"
|
|
4
|
+
id="panel-docs"
|
|
5
|
+
role="tabpanel"
|
|
6
|
+
aria-labelledby="tab-docs">
|
|
7
|
+
<div class="selector-section docs-overview-section">
|
|
8
|
+
<div class="selector-header docs-overview-header">
|
|
9
|
+
<div>
|
|
10
|
+
<span class="selector-title">{{ t('docs.title') }}</span>
|
|
11
|
+
<div class="skills-panel-note docs-section-note">{{ t('docs.subtitle') }}</div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class="docs-toolbar-grid">
|
|
16
|
+
<div class="docs-toolbar-card">
|
|
17
|
+
<label class="form-label" for="docs-install-package-manager">{{ t('common.packageManager') }}</label>
|
|
18
|
+
<select id="docs-install-package-manager" class="form-input" v-model="installPackageManager">
|
|
19
|
+
<option value="npm">npm</option>
|
|
20
|
+
<option value="pnpm">pnpm</option>
|
|
21
|
+
<option value="bun">bun</option>
|
|
22
|
+
</select>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="docs-toolbar-card docs-toolbar-card-wide">
|
|
26
|
+
<label class="form-label">{{ t('common.mirror') }}</label>
|
|
27
|
+
<div class="install-action-tabs">
|
|
28
|
+
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'default' }" @click="setInstallRegistryPreset('default')">{{ t('common.official') }}</button>
|
|
29
|
+
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'npmmirror' }" @click="setInstallRegistryPreset('npmmirror')">npmmirror</button>
|
|
30
|
+
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'tencent' }" @click="setInstallRegistryPreset('tencent')">{{ t('docs.registry.tencent') }}</button>
|
|
31
|
+
<button type="button" class="btn-mini" :class="{ active: installRegistryPreset === 'custom' }" @click="setInstallRegistryPreset('custom')">{{ t('common.custom') }}</button>
|
|
32
|
+
</div>
|
|
33
|
+
<input
|
|
34
|
+
v-if="installRegistryPreset === 'custom'"
|
|
35
|
+
v-model="installRegistryCustom"
|
|
36
|
+
class="form-input install-registry-input"
|
|
37
|
+
placeholder="https://registry.example.com">
|
|
38
|
+
<div class="form-hint install-registry-hint" v-if="installRegistryPreview">
|
|
39
|
+
{{ t('docs.registryHintPrefix') }} --registry={{ installRegistryPreview }}
|
|
40
|
+
</div>
|
|
41
|
+
<div class="form-hint install-registry-hint" v-else-if="installRegistryPreset === 'custom'">
|
|
42
|
+
{{ t('docs.registryHintCustom') }}
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div class="docs-toolbar-card docs-toolbar-card-wide">
|
|
47
|
+
<label class="form-label">{{ t('common.action') }}</label>
|
|
48
|
+
<div class="install-action-tabs">
|
|
49
|
+
<button type="button" class="btn-mini" :class="{ active: installCommandAction === 'install' }" @click="setInstallCommandAction('install')">{{ t('common.install') }}</button>
|
|
50
|
+
<button type="button" class="btn-mini" :class="{ active: installCommandAction === 'update' }" @click="setInstallCommandAction('update')">{{ t('common.update') }}</button>
|
|
51
|
+
<button type="button" class="btn-mini" :class="{ active: installCommandAction === 'uninstall' }" @click="setInstallCommandAction('uninstall')">{{ t('common.uninstall') }}</button>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<div class="docs-summary-strip">
|
|
57
|
+
<div class="docs-summary-item">
|
|
58
|
+
<span class="docs-summary-label">{{ t('common.targets') }}</span>
|
|
59
|
+
<strong class="docs-summary-value">{{ installTargetCards.length }}</strong>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="docs-summary-item">
|
|
62
|
+
<span class="docs-summary-label">{{ t('common.currentPm') }}</span>
|
|
63
|
+
<strong class="docs-summary-value">{{ String(installPackageManager || 'npm').toUpperCase() }}</strong>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="docs-summary-item">
|
|
66
|
+
<span class="docs-summary-label">{{ t('common.currentAction') }}</span>
|
|
67
|
+
<strong class="docs-summary-value">{{ installCommandAction === 'update' ? t('common.update') : (installCommandAction === 'uninstall' ? t('common.uninstall') : t('common.install')) }}</strong>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="docs-summary-item docs-summary-item-wide">
|
|
70
|
+
<span class="docs-summary-label">{{ t('common.mirrorActive') }}</span>
|
|
71
|
+
<strong class="docs-summary-value">{{ installRegistryPreview || t('common.defaultOfficial') }}</strong>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<div class="selector-section docs-command-section">
|
|
77
|
+
<div class="selector-header docs-section-header">
|
|
78
|
+
<div>
|
|
79
|
+
<span class="selector-title">{{ t('docs.section.commands') }}</span>
|
|
80
|
+
<div class="skills-panel-note docs-section-note">{{ t('docs.section.commandsNote') }}</div>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div class="install-list docs-install-list">
|
|
85
|
+
<div
|
|
86
|
+
class="install-row docs-install-row"
|
|
87
|
+
v-for="target in installTargetCards"
|
|
88
|
+
:key="'docs-install-command-' + target.id + '-' + installCommandAction">
|
|
89
|
+
<div class="install-row-main">
|
|
90
|
+
<div class="docs-command-head">
|
|
91
|
+
<div class="install-row-title">{{ target.name }}</div>
|
|
92
|
+
<div class="docs-command-meta">
|
|
93
|
+
<span class="docs-meta-pill">{{ target.packageName }}</span>
|
|
94
|
+
<span class="docs-meta-pill">bin: {{ target.bin }}</span>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="docs-command-row">
|
|
98
|
+
<div class="docs-command-box" role="group" :aria-label="t('docs.command.aria', { name: target.name })">
|
|
99
|
+
<code class="install-command">{{ target.command }}</code>
|
|
100
|
+
<button
|
|
101
|
+
type="button"
|
|
102
|
+
class="btn-mini docs-copy-btn"
|
|
103
|
+
:disabled="!target.command"
|
|
104
|
+
@click="copyInstallCommand(target.command)">{{ t('common.copy') }}</button>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
<div
|
|
108
|
+
v-if="target.id === 'codex' && target.termuxCommand && target.termuxCommand !== target.command"
|
|
109
|
+
class="docs-command-row docs-command-row-secondary">
|
|
110
|
+
<div class="docs-command-box" role="group" :aria-label="t('docs.termuxAria')">
|
|
111
|
+
<code class="install-command"><span class="docs-command-prefix">{{ t('docs.termuxLabel') }}</span>{{ target.termuxCommand }}</code>
|
|
112
|
+
<button
|
|
113
|
+
type="button"
|
|
114
|
+
class="btn-mini docs-copy-btn"
|
|
115
|
+
@click="copyInstallCommand(target.termuxCommand)">{{ t('common.copy') }}</button>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
<div class="selector-section docs-help-section">
|
|
124
|
+
<div class="selector-header docs-section-header">
|
|
125
|
+
<div>
|
|
126
|
+
<span class="selector-title">{{ t('docs.section.faq') }}</span>
|
|
127
|
+
<div class="skills-panel-note docs-section-note">{{ t('docs.section.faqNote') }}</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
<div class="docs-help-grid">
|
|
132
|
+
<div class="docs-note-card">
|
|
133
|
+
<div class="docs-note-title">{{ t('common.troubleshooting') }}</div>
|
|
134
|
+
<ul class="install-help-list docs-help-list">
|
|
135
|
+
<li v-for="tip in installTroubleshootingTips" :key="tip">{{ tip }}</li>
|
|
136
|
+
</ul>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="docs-note-card">
|
|
139
|
+
<div class="docs-note-title">{{ t('common.rules') }}</div>
|
|
140
|
+
<ul class="docs-static-list">
|
|
141
|
+
<li>{{ t('docs.rule.1') }}</li>
|
|
142
|
+
<li>{{ t('docs.rule.2') }}</li>
|
|
143
|
+
</ul>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|