From e45b3a881e85773f94ae140cd12d46e47a11c367 Mon Sep 17 00:00:00 2001 From: ekko <152005280+EKKOLearnAI@users.noreply.github.com> Date: Sat, 30 May 2026 21:35:38 +0800 Subject: [PATCH] add website downloads and deploy workflow (#1165) --- .github/workflows/website-deploy.yml | 83 +++++++++++++ README.md | 21 +++- README_zh.md | 20 ++- packages/desktop/README.md | 9 ++ .../src/components/landing/HeroSection.vue | 2 +- .../src/components/landing/InstallSection.vue | 117 +++++++++++++++++- .../components/landing/ScreenshotsSection.vue | 28 +++-- .../components/landing/StarHistorySection.vue | 8 +- .../src/components/layout/SiteFooter.vue | 4 +- .../src/components/layout/SiteHeader.vue | 14 +-- packages/website/src/i18n/en.ts | 72 ++++++++++- packages/website/src/i18n/zh.ts | 72 ++++++++++- packages/website/src/views/DocsView.vue | 2 +- packages/website/src/views/LandingView.vue | 14 ++- 14 files changed, 425 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/website-deploy.yml diff --git a/.github/workflows/website-deploy.yml b/.github/workflows/website-deploy.yml new file mode 100644 index 0000000..46b78f3 --- /dev/null +++ b/.github/workflows/website-deploy.yml @@ -0,0 +1,83 @@ +name: Website + +on: + pull_request: + branches: + - main + - base + paths: + - packages/website/** + - packages/client/src/styles/variables.scss + - package.json + - package-lock.json + - tsconfig.website.json + - vite.config.website.ts + - .github/workflows/website-deploy.yml + release: + types: + - published + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: website-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +jobs: + build: + name: Build website + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + cache: npm + cache-dependency-path: package-lock.json + + - name: Install dependencies + run: npm ci --ignore-scripts + + - name: Type-check website + run: npx vue-tsc -p tsconfig.website.json --noEmit + + - name: Build website + run: npm run build:website + + - name: Prepare SSH + if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' + env: + WEBSITE_SSH_KEY: ${{ secrets.WEBSITE_SSH_KEY }} + WEBSITE_SSH_KNOWN_HOSTS: ${{ secrets.WEBSITE_SSH_KNOWN_HOSTS }} + run: | + test -n "$WEBSITE_SSH_KEY" + mkdir -p ~/.ssh + chmod 700 ~/.ssh + printf '%s\n' "$WEBSITE_SSH_KEY" > ~/.ssh/website_deploy_key + chmod 600 ~/.ssh/website_deploy_key + if [ -n "$WEBSITE_SSH_KNOWN_HOSTS" ]; then + printf '%s\n' "$WEBSITE_SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts + fi + + - name: Deploy website + if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' + env: + WEBSITE_SSH_USER: ${{ secrets.WEBSITE_SSH_USER }} + WEBSITE_SSH_PORT: ${{ secrets.WEBSITE_SSH_PORT }} + run: | + SSH_USER="${WEBSITE_SSH_USER:-root}" + SSH_PORT="${WEBSITE_SSH_PORT:-22}" + command -v rsync >/dev/null || { + sudo apt-get update + sudo apt-get install -y rsync + } + rsync -az --delete \ + -e "ssh -i ~/.ssh/website_deploy_key -p ${SSH_PORT} -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new" \ + dist/website/ \ + "$SSH_USER@154.3.33.232:/var/www/ekkolearnai.com/current/" diff --git a/README.md b/README.md index 747da51..85aa20c 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,14 @@

- A full-featured web dashboard for Hermes Agent.
+ A full-featured desktop app and web dashboard for Hermes Agent.
Manage AI chat sessions, monitor usage & costs, configure platform channels,
schedule cron jobs, browse skills — all from a clean, responsive web interface.

+ Download Hermes Studio Desktop + · npm install -g hermes-web-ui && hermes-web-ui start

@@ -171,7 +173,22 @@ hermes-web-ui reset-default-login ## Quick Start -### npm (Recommended) +### Desktop App (Recommended) + +Download the latest **Hermes Studio** desktop installer from +[GitHub Releases](https://github.com/EKKOLearnAI/hermes-web-ui/releases/latest). + +Desktop builds are published for macOS, Windows, and Linux, with separate +architecture assets where applicable. The desktop app bundles the Web UI +runtime and stores Hermes Agent data in the native Hermes location: + +- Windows: `%LOCALAPPDATA%\hermes` (falls back to `%APPDATA%\hermes`) +- macOS/Linux: `~/.hermes` + +The desktop wrapper stores its own Web UI state separately in +`~/.hermes-web-ui` unless `HERMES_WEB_UI_HOME` is set. + +### npm ```bash npm install -g hermes-web-ui diff --git a/README_zh.md b/README_zh.md index ae68abb..59e1ac0 100644 --- a/README_zh.md +++ b/README_zh.md @@ -4,12 +4,14 @@

- Hermes Agent 的全功能 Web 管理面板。
+ Hermes Agent 的全功能桌面应用和 Web 管理面板。
管理 AI 聊天会话、监控用量与成本、配置平台渠道、
管理定时任务、浏览技能 —— 全部在一个简洁响应式的 Web 界面中完成。

+ 下载 Hermes Studio 桌面版 + · npm install -g hermes-web-ui && hermes-web-ui start

@@ -179,7 +181,21 @@ hermes-web-ui reset-default-login ## 快速开始 -### npm 安装(推荐) +### 桌面应用(推荐) + +从 [GitHub Releases](https://github.com/EKKOLearnAI/hermes-web-ui/releases/latest) +下载最新的 **Hermes Studio** 桌面安装包。 + +桌面版会发布 macOS、Windows 和 Linux 构建;适用时会区分不同 CPU 架构。 +桌面应用内置 Web UI 运行时,Hermes Agent 数据会保存到原生 Hermes 目录: + +- Windows:`%LOCALAPPDATA%\hermes`(找不到时回退到 `%APPDATA%\hermes`) +- macOS/Linux:`~/.hermes` + +桌面壳自身的 Web UI 状态会单独保存到 `~/.hermes-web-ui`,除非设置了 +`HERMES_WEB_UI_HOME`。 + +### npm 安装 ```bash npm install -g hermes-web-ui diff --git a/packages/desktop/README.md b/packages/desktop/README.md index 3490b05..1ed2028 100644 --- a/packages/desktop/README.md +++ b/packages/desktop/README.md @@ -2,6 +2,15 @@ Electron desktop distribution for Hermes Studio. +## Install + +Download the latest macOS, Windows, or Linux installer for your CPU +architecture from the project +[GitHub Releases](https://github.com/EKKOLearnAI/hermes-web-ui/releases/latest). + +The desktop app bundles the Web UI runtime and launches it locally from the +native shell app. + ## Data directories Hermes Agent data is stored in the same platform-specific location as native diff --git a/packages/website/src/components/landing/HeroSection.vue b/packages/website/src/components/landing/HeroSection.vue index 09ccf00..7e053c2 100644 --- a/packages/website/src/components/landing/HeroSection.vue +++ b/packages/website/src/components/landing/HeroSection.vue @@ -150,7 +150,7 @@ onMounted(() => {
{{ installCmd }}
diff --git a/packages/website/src/components/landing/InstallSection.vue b/packages/website/src/components/landing/InstallSection.vue index d91dcc7..b2f5a09 100644 --- a/packages/website/src/components/landing/InstallSection.vue +++ b/packages/website/src/components/landing/InstallSection.vue @@ -1,11 +1,29 @@