From 4fa2eef446296bd8c651a6ea34b0a1b3f9ef70ac Mon Sep 17 00:00:00 2001 From: Yaowei Zheng Date: Sun, 19 Jul 2026 15:05:47 +0800 Subject: [PATCH] Serve the site from the penguin.ooo apex domain Set the Pages workflow BASE_PATH to / (assets 404ed on the custom domain under the // subpath) and point all hardcoded site links at https://penguin.ooo. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_018ihk8iQuo3kv2aPjAYEPuR --- .github/workflows/pages.yml | 8 ++++---- README.md | 10 +++++----- README.zh.md | 10 +++++----- install.sh | 2 +- packages/cli/README.md | 8 ++++---- packages/core/README.md | 10 +++++----- packages/docs/README.md | 2 +- packages/docs/vite.config.ts | 7 ++++--- packages/landing/vite.config.ts | 4 ++-- packages/server/README.md | 2 +- packages/skills/README.md | 4 ++-- packages/web/README.md | 2 +- 12 files changed, 35 insertions(+), 34 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 357679b..cec5ab5 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -3,9 +3,9 @@ # tree — landing dist with the docs dist copied under docs/). # - Pull requests touching either package only BUILD (validation) — no Pages # configuration and no deploy, so PRs never fail on Pages availability. -# - Pushes to main (and manual dispatch) build + deploy. BASE_PATH is derived from the -# repository name so project-pages URLs (https://.github.io//) resolve; -# repos served from a custom domain / user pages can set it to "/" instead. +# - Pushes to main (and manual dispatch) build + deploy. The site is served from the +# custom apex domain https://penguin.ooo/ (Settings -> Pages -> Custom domain), so +# BASE_PATH is "/" — assets resolve from the domain root, not a // subpath. # First-time setup: repository Settings -> Pages -> Source = "GitHub Actions". name: Deploy Site @@ -54,7 +54,7 @@ jobs: - name: Build site (landing + docs, vite) env: - BASE_PATH: /${{ github.event.repository.name }}/ + BASE_PATH: / run: pnpm build:site # Only the deploying runs need the Pages artifact (PRs stop at the build check). diff --git a/README.md b/README.md index 9347464..29ff03f 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@

English | 简体中文 · - Website · - Docs · - Blog + Website · + Docs · + Blog

@@ -100,11 +100,11 @@ A pnpm monorepo (TypeScript, Node >= 24). One install ships four layers that sha | [`packages/landing`](packages/landing) | — | Product landing page (this repo's website) | | [`packages/docs`](packages/docs) | — | Documentation site (bilingual, deployed under `/docs/`) | -Responsibilities split by source of truth: the **SDK** owns protocol and execution (message parsing, the agent loop, tools), the **Server** owns the multi-user runtime (auth, SSE streaming, scheduled tasks), and the **file layer** under `~/.penguin/data` owns everything editable and recorded (prompts, Skills, secrets, Traces). The full design-by-design map is in [Architecture → Division of responsibilities](https://prism-shadow.github.io/penguin-harness/docs/architecture). +Responsibilities split by source of truth: the **SDK** owns protocol and execution (message parsing, the agent loop, tools), the **Server** owns the multi-user runtime (auth, SSE streaming, scheduled tasks), and the **file layer** under `~/.penguin/data` owns everything editable and recorded (prompts, Skills, secrets, Traces). The full design-by-design map is in [Architecture → Division of responsibilities](https://penguin.ooo/docs/architecture). ## Documentation -The docs site covers both usage and design: [Introduction](https://prism-shadow.github.io/penguin-harness/docs/) · [Quickstart](https://prism-shadow.github.io/penguin-harness/docs/quickstart) · [Architecture](https://prism-shadow.github.io/penguin-harness/docs/architecture) · [The OmniMessage Protocol](https://prism-shadow.github.io/penguin-harness/docs/omni-message) · [Core Interfaces](https://prism-shadow.github.io/penguin-harness/docs/interfaces) · [The Agent Loop](https://prism-shadow.github.io/penguin-harness/docs/agent-loop) · [CLI Reference](https://prism-shadow.github.io/penguin-harness/docs/cli) · [Server API](https://prism-shadow.github.io/penguin-harness/docs/server-api) · [Configuration](https://prism-shadow.github.io/penguin-harness/docs/configuration) +The docs site covers both usage and design: [Introduction](https://penguin.ooo/docs/) · [Quickstart](https://penguin.ooo/docs/quickstart) · [Architecture](https://penguin.ooo/docs/architecture) · [The OmniMessage Protocol](https://penguin.ooo/docs/omni-message) · [Core Interfaces](https://penguin.ooo/docs/interfaces) · [The Agent Loop](https://penguin.ooo/docs/agent-loop) · [CLI Reference](https://penguin.ooo/docs/cli) · [Server API](https://penguin.ooo/docs/server-api) · [Configuration](https://penguin.ooo/docs/configuration) Every doc page has a "Copy Markdown" button, so you can paste it straight into a model context. diff --git a/README.zh.md b/README.zh.md index 7305720..5a3bf2e 100644 --- a/README.zh.md +++ b/README.zh.md @@ -19,9 +19,9 @@

English | 简体中文 · - 官网 · - 文档 · - 博客 + 官网 · + 文档 · + 博客

@@ -99,11 +99,11 @@ pnpm monorepo(TypeScript,Node >= 24)。一次安装交付四层组件,共享同 | [`packages/landing`](packages/landing) | — | 产品落地页(本仓库官网) | | [`packages/docs`](packages/docs) | — | 文档站(双语,部署于 `/docs/` 路径) | -职责按事实来源划分:**SDK** 负责协议与执行(消息解析、运行循环、工具),**Server** 负责多用户运行时(认证、SSE 流式、定时任务),`~/.penguin/data` 下的**文件层**承载一切可编辑与被记录的状态(Prompt、Skill、密钥、Trace)。逐项对应表见[架构总览 → 职责划分](https://prism-shadow.github.io/penguin-harness/docs/architecture)。 +职责按事实来源划分:**SDK** 负责协议与执行(消息解析、运行循环、工具),**Server** 负责多用户运行时(认证、SSE 流式、定时任务),`~/.penguin/data` 下的**文件层**承载一切可编辑与被记录的状态(Prompt、Skill、密钥、Trace)。逐项对应表见[架构总览 → 职责划分](https://penguin.ooo/docs/architecture)。 ## 文档 -文档站覆盖使用与设计两个层面:[产品介绍](https://prism-shadow.github.io/penguin-harness/docs/) · [快速开始](https://prism-shadow.github.io/penguin-harness/docs/quickstart) · [架构总览](https://prism-shadow.github.io/penguin-harness/docs/architecture) · [OmniMessage 协议](https://prism-shadow.github.io/penguin-harness/docs/omni-message) · [接口契约](https://prism-shadow.github.io/penguin-harness/docs/interfaces) · [Agent 运行循环](https://prism-shadow.github.io/penguin-harness/docs/agent-loop) · [CLI 参考](https://prism-shadow.github.io/penguin-harness/docs/cli) · [Server API](https://prism-shadow.github.io/penguin-harness/docs/server-api) · [配置参考](https://prism-shadow.github.io/penguin-harness/docs/configuration) +文档站覆盖使用与设计两个层面:[产品介绍](https://penguin.ooo/docs/) · [快速开始](https://penguin.ooo/docs/quickstart) · [架构总览](https://penguin.ooo/docs/architecture) · [OmniMessage 协议](https://penguin.ooo/docs/omni-message) · [接口契约](https://penguin.ooo/docs/interfaces) · [Agent 运行循环](https://penguin.ooo/docs/agent-loop) · [CLI 参考](https://penguin.ooo/docs/cli) · [Server API](https://penguin.ooo/docs/server-api) · [配置参考](https://penguin.ooo/docs/configuration) 每页文档都带「复制 Markdown」按钮,可直接粘贴进模型上下文。 diff --git a/install.sh b/install.sh index db42e16..33400b8 100644 --- a/install.sh +++ b/install.sh @@ -10,7 +10,7 @@ # # The data dir (~/.penguin/data) sits under the install home but is never touched by reinstall/upgrade (which only replace bin/lib/web/node). # -# Docs: https://prism-shadow.github.io/penguin-harness/docs/installation +# Docs: https://penguin.ooo/docs/installation set -eu REPO="https://github.com/Prism-Shadow/penguin-harness" diff --git a/packages/cli/README.md b/packages/cli/README.md index de61d8b..3a63bb8 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -19,13 +19,13 @@ penguin chat --resume # resume the late Tool calls go through an approval gate — `--approve allow-all` (default) `| deny-all | read-only | always-ask`. Data lives under `~/.penguin/data` (`PENGUIN_HOME` or `--root` override); model credentials come from the Project config or provider env vars (e.g. `DEEPSEEK_API_KEY`). -Prefer a one-line install with a bundled Node runtime? See the [installation guide](https://prism-shadow.github.io/penguin-harness/docs/installation). +Prefer a one-line install with a bundled Node runtime? See the [installation guide](https://penguin.ooo/docs/installation). ## Documentation -- [Quickstart](https://prism-shadow.github.io/penguin-harness/docs/quickstart) -- [CLI Reference](https://prism-shadow.github.io/penguin-harness/docs/cli) -- [Configuration Reference](https://prism-shadow.github.io/penguin-harness/docs/configuration) +- [Quickstart](https://penguin.ooo/docs/quickstart) +- [CLI Reference](https://penguin.ooo/docs/cli) +- [Configuration Reference](https://penguin.ooo/docs/configuration) ## Development diff --git a/packages/core/README.md b/packages/core/README.md index f8b1dcf..5d18cc5 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -23,11 +23,11 @@ A single `run` drives a complete Task: streaming output, per-call approvals, con ## Documentation -- [Architecture](https://prism-shadow.github.io/penguin-harness/docs/architecture) -- [The OmniMessage Protocol](https://prism-shadow.github.io/penguin-harness/docs/omni-message) -- [Core Interfaces](https://prism-shadow.github.io/penguin-harness/docs/interfaces) -- [The Agent Loop](https://prism-shadow.github.io/penguin-harness/docs/agent-loop) -- [Sessions & Traces](https://prism-shadow.github.io/penguin-harness/docs/sessions-and-traces) +- [Architecture](https://penguin.ooo/docs/architecture) +- [The OmniMessage Protocol](https://penguin.ooo/docs/omni-message) +- [Core Interfaces](https://penguin.ooo/docs/interfaces) +- [The Agent Loop](https://penguin.ooo/docs/agent-loop) +- [Sessions & Traces](https://penguin.ooo/docs/sessions-and-traces) ## Development diff --git a/packages/docs/README.md b/packages/docs/README.md index 77ae47e..37f7635 100644 --- a/packages/docs/README.md +++ b/packages/docs/README.md @@ -2,7 +2,7 @@ The PenguinHarness documentation site (React + Vite + Tailwind CSS 4). Its own package, sharing the landing page's visual language: bilingual pages (zh/en), light/dark themes, a sidebar + per-page table of contents, and a "Copy Markdown" button on every page. -Live at . +Live at . ## Content model diff --git a/packages/docs/vite.config.ts b/packages/docs/vite.config.ts index b424e81..3203475 100644 --- a/packages/docs/vite.config.ts +++ b/packages/docs/vite.config.ts @@ -2,9 +2,10 @@ * Vite config: static docs site (React SPA + Tailwind CSS 4), a sibling of the * landing page but its own package so either site can evolve independently. * - * BASE_PATH is injected by the GitHub Pages workflow as "//docs/" — the docs - * build is copied into the landing dist under docs/ so both sites ship as one Pages - * artifact (see scripts/build-site.mjs at the repo root). Local dev defaults to "/". + * BASE_PATH is injected by the GitHub Pages workflow as "/docs/" (the site lives at the + * custom apex domain https://penguin.ooo/) — the docs build is copied into the landing + * dist under docs/ so both sites ship as one Pages artifact (see scripts/build-site.mjs + * at the repo root). Local dev defaults to "/". * Doc pages are local Markdown files imported at build time via import.meta.glob * (?raw), so the built site is fully static — no server or CMS involved. */ diff --git a/packages/landing/vite.config.ts b/packages/landing/vite.config.ts index 4ec2c57..e41c441 100644 --- a/packages/landing/vite.config.ts +++ b/packages/landing/vite.config.ts @@ -1,8 +1,8 @@ /** * Vite config: static landing page (React SPA + Tailwind CSS 4). * - * BASE_PATH is injected by the GitHub Pages workflow (e.g. "/penguin-harness/") so asset - * URLs resolve under the project-pages subpath; local dev and previews default to "/". + * BASE_PATH is injected by the GitHub Pages workflow ("/" — the site is served from the + * custom apex domain https://penguin.ooo/); local dev and previews also default to "/". * Blog posts are local Markdown files imported at build time via import.meta.glob (?raw), * so the built site is fully static — no server or CMS involved. */ diff --git a/packages/server/README.md b/packages/server/README.md index 5cb0cb6..b5e6252 100644 --- a/packages/server/README.md +++ b/packages/server/README.md @@ -10,7 +10,7 @@ The PenguinHarness Web backend — the Web implementation of the SDK's Human bou - **SSE**: per-channel monotonic event ids with a bounded replay buffer (1000 events / 2MB); reconnects replay from `Last-Event-ID` or receive `resync_required`; heartbeat comment every 20s. - **Usage**: `token_usage` events are persisted row by row; costs are computed at query time from current per-model pricing. -The full route tables and the SSE protocol are documented in the [Server API reference](https://prism-shadow.github.io/penguin-harness/docs/server-api). DTO types are exported for type-only import via `@prismshadow/penguin-server/api`. +The full route tables and the SSE protocol are documented in the [Server API reference](https://penguin.ooo/docs/server-api). DTO types are exported for type-only import via `@prismshadow/penguin-server/api`. ## Environment diff --git a/packages/skills/README.md b/packages/skills/README.md index c1e65ee..d422fc0 100644 --- a/packages/skills/README.md +++ b/packages/skills/README.md @@ -18,8 +18,8 @@ The first group powers the self-improvement loop: design a Benchmark, evaluate t ## Documentation -- [Skills](https://prism-shadow.github.io/penguin-harness/docs/skills) -- [Self-Improvement](https://prism-shadow.github.io/penguin-harness/docs/self-improvement) +- [Skills](https://penguin.ooo/docs/skills) +- [Self-Improvement](https://penguin.ooo/docs/self-improvement) ## Development diff --git a/packages/web/README.md b/packages/web/README.md index 9d0b092..1bf54ae 100644 --- a/packages/web/README.md +++ b/packages/web/README.md @@ -1,6 +1,6 @@ # @prismshadow/penguin-web -The PenguinHarness Web App — a React 19 + Vite + Tailwind CSS 4 SPA that renders the OmniMessage stream (same protocol and statistics as the CLI) and manages Agents, Skills, Models, usage and Traces. Feature tour: [Web App Guide](https://prism-shadow.github.io/penguin-harness/docs/web-app). +The PenguinHarness Web App — a React 19 + Vite + Tailwind CSS 4 SPA that renders the OmniMessage stream (same protocol and statistics as the CLI) and manages Agents, Skills, Models, usage and Traces. Feature tour: [Web App Guide](https://penguin.ooo/docs/web-app). ## Layout