feat(hermes): align dashboard APIs and add xintian engine

This commit is contained in:
晴天
2026-04-25 10:31:32 +08:00
parent b25808f7f0
commit 3ed59fcb2b
40 changed files with 15246 additions and 1105 deletions

View File

@@ -53,12 +53,24 @@ export async function render() {
</div>
`
if (getActiveEngineId() === 'hermes') {
const activeEngineId = getActiveEngineId()
if (activeEngineId === 'xintian') {
// 心甜Claw 是产品宣传入口,不展示 OpenClaw/Hermes 的版本、安装路径与社群信息
loadXintianData(page)
} else if (activeEngineId === 'hermes') {
loadHermesData(page)
} else {
loadData(page)
}
renderCommunity(page)
// 社群二维码是 OpenClaw 专属渠道,对 xintian 用户不相关
if (activeEngineId === 'xintian') {
page.querySelector('#community-section')?.closest('.config-section')?.remove()
} else {
renderCommunity(page)
}
renderProjects(page)
renderContribute(page)
renderLinks(page)
@@ -66,6 +78,40 @@ export async function render() {
return page
}
/**
* 心甜Claw 模式下的 about 页面:只展示 ClawPanel 自身版本 + 产品卡片,
* 不涉及 OpenClaw 的版本切换与安装路径。
*/
async function loadXintianData(page) {
const cards = page.querySelector('#version-cards')
const panelVersion = typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.1.0'
const panelUpdateHtml = `<span style="color:var(--text-tertiary)">${t('about.checkingUpdate')}</span>`
checkNewVersion(cards, panelVersion)
cards.innerHTML = `
<div class="stat-card">
<div class="stat-card-header"><span class="stat-card-label">ClawPanel</span></div>
<div class="stat-card-value">${panelVersion}</div>
<div class="stat-card-meta" id="panel-update-meta" style="display:flex;align-items:center;gap:8px">${panelUpdateHtml}</div>
</div>
<div class="stat-card">
<div class="stat-card-header"><span class="stat-card-label">心甜Claw</span></div>
<div class="stat-card-value" style="font-size:var(--font-size-md)">Windows</div>
<div class="stat-card-meta" style="display:flex;align-items:center;gap:8px;flex-wrap:wrap">
<a class="btn btn-primary btn-sm" href="https://xtclaw.xtnet.cc/download" target="_blank" rel="noopener" style="padding:2px 8px;font-size:var(--font-size-xs)">${t('engine.xtCtaDownloadWin')}</a>
<a class="btn btn-secondary btn-sm" href="https://xtclaw.xtnet.cc/" target="_blank" rel="noopener" style="padding:2px 8px;font-size:var(--font-size-xs)">${t('engine.xtCtaVisitSite')}</a>
</div>
</div>
<div class="stat-card">
<div class="stat-card-header"><span class="stat-card-label">${t('about.sectionLinks')}</span></div>
<div class="stat-card-value" style="font-size:var(--font-size-md)">xtclaw.xtnet.cc</div>
<div class="stat-card-meta">
<a href="https://xtclaw.xtnet.cc/articles" target="_blank" rel="noopener" style="color:var(--accent)">${t('engine.xtFootSupport')}</a>
</div>
</div>
`
}
async function loadHermesData(page) {
const cards = page.querySelector('#version-cards')
try {