fix: clarify site positioning and keep downloads prominent
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Deploy website to GitHub Pages / Deploy static website (push) Canceled after 0s

Highlight domestic platform support and built-in coding agents, replace placeholder demos with task workflows, and add bilingual setup FAQs. Keep downloads directly after the hero and improve mobile demo layout.

Release note: Update the bilingual website with clearer product copy and demos, prominent downloads, and setup guidance. DeepSeek Harness and LoongArch retain their preview labels.
This commit is contained in:
mesalogo
2026-09-28 12:10:22 +08:00
parent 013e72f69e
commit 83a3ea261e
5 changed files with 436 additions and 142 deletions
+10 -5
View File
@@ -4,11 +4,16 @@
正式站点地址:<https://mesalogo.github.io/goodbuddy/> 正式站点地址:<https://mesalogo.github.io/goodbuddy/>
首页将 GoodBuddy 定位为免注册、支持信创软硬件的跨平台开源桌面 AI 助手,优先展示 中文首页定位为面向国产化与信创环境的桌面 AI 工作空间,突出内置集成 OpenCode、
三大桌面系统、正式 x64 / arm64 下载入口、独立编译的龙芯 loong64 预览版、Agent Runtime, Continue 与 DeepSeek Harness(预览)。中英文页面依次展示首屏编程示意、平台下载、
以及知识库、魔法笔记、智能心跳、桌面上下文和远程消息通道等桌面助手能力。 知识引用与笔记计划场景、产品亮点、桌面助手和常见问题。下载区是 `main` 中的第二个
下载区位于主要功能说明之前,并明确列出统信 UOS、银河麒麟、海光、兆芯、 `section`,紧接首屏、位于使用场景之前。导航和首屏保留直达下载的入口。
鲲鹏、飞腾和龙芯。页面不重复设置底部下载推广区。 下载区明确列出统信 UOS、银河麒麟、海光、兆芯、鲲鹏、飞腾和龙芯,区分正式
x64 / arm64 安装包与独立龙芯 loong64 预览版,并说明兼容性与认证的区别。
产品演示使用可维护的 HTML/CSS 与 SVG 图标,不使用真实截图。界面中直接呈现
任务、回答和处理结果,不附加“界面示意”“示例回答”等标签。更新时同时维护
中英文文本,演示内容须符合实际功能,不编造用户案例或性能指标。
FAQ 使用原生 details/summary,说明模型费用、数据流向、组件准备和远端使用条件。
英文页面位于 `en.html`,用平台与架构覆盖描述同一产品事实,不使用中文信创 英文页面位于 `en.html`,用平台与架构覆盖描述同一产品事实,不使用中文信创
政策语汇;页面会标明独立的 LoongArch 实验预览,但三个平台的下载按钮仍始终 政策语汇;页面会标明独立的 LoongArch 实验预览,但三个平台的下载按钮仍始终
前往 GitHub 最新正式 Release。 前往 GitHub 最新正式 Release。
+117 -53
View File
@@ -5,14 +5,14 @@
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta <meta
name="description" name="description"
content="GoodBuddy is an open-source desktop AI assistant for model chat, coding agents, knowledge, notes, and scheduled work. No GoodBuddy account is required." content="GoodBuddy is an open-source desktop AI workspace with built-in OpenCode, Continue, and DeepSeek Harness (preview) integrations for coding, knowledge, notes, and scheduled work."
/> />
<link rel="canonical" href="https://mesalogo.github.io/goodbuddy/en.html" /> <link rel="canonical" href="https://mesalogo.github.io/goodbuddy/en.html" />
<link rel="alternate" hreflang="zh-CN" href="https://mesalogo.github.io/goodbuddy/" /> <link rel="alternate" hreflang="zh-CN" href="https://mesalogo.github.io/goodbuddy/" />
<link rel="alternate" hreflang="en" href="https://mesalogo.github.io/goodbuddy/en.html" /> <link rel="alternate" hreflang="en" href="https://mesalogo.github.io/goodbuddy/en.html" />
<link rel="alternate" hreflang="x-default" href="https://mesalogo.github.io/goodbuddy/en.html" /> <link rel="alternate" hreflang="x-default" href="https://mesalogo.github.io/goodbuddy/en.html" />
<meta name="theme-color" content="#f6f8fb" /> <meta name="theme-color" content="#f6f8fb" />
<title>GoodBuddy | Open-source desktop AI assistant</title> <title>GoodBuddy | Open-source desktop AI workspace</title>
<link <link
rel="icon" rel="icon"
href="./assets/goodbuddy-light.png" href="./assets/goodbuddy-light.png"
@@ -72,8 +72,10 @@
<nav class="site-navigation" id="site-navigation" aria-label="Main navigation" data-navigation> <nav class="site-navigation" id="site-navigation" aria-label="Main navigation" data-navigation>
<a href="#download">Download</a> <a href="#download">Download</a>
<a href="#features">Highlights</a> <a href="#workflows">Workflows</a>
<a href="#assistant">Desktop assistant</a> <a href="#features">Features</a>
<a href="#assistant">Assistant</a>
<a href="#faq">FAQ</a>
</nav> </nav>
<div class="header-actions"> <div class="header-actions">
@@ -119,17 +121,17 @@
Windows · macOS · Linux Windows · macOS · Linux
</div> </div>
<h1 id="hero-title"> <h1 id="hero-title">
No account required.<br /> Your desktop<br />
Model chat and coding agents<br /> <span>AI workspace.</span>
<span>on your desktop.</span>
</h1> </h1>
<p class="hero-lead"> <p class="hero-lead">
GoodBuddy manages conversations, knowledge, notes, and tasks on the desktop. Code, consult your sources, keep notes, and schedule follow-ups in GoodBuddy.
Its Agent Runtime connects direct models, OpenCode, Continue, and DeepSeek Harness. Built-in integrations bring three coding agents to the desktop:
OpenCode, Continue, and DeepSeek Harness (preview), alongside direct model chat.
</p> </p>
<div class="hero-actions"> <div class="hero-actions">
<a class="button button--primary" href="#download">Download now</a> <a class="button button--primary" href="#download">Download now</a>
<a class="button button--secondary" href="#features">Explore Agent Runtime</a> <a class="button button--secondary" href="#workflows">Explore workflows</a>
</div> </div>
<ul class="hero-facts" aria-label="Product highlights"> <ul class="hero-facts" aria-label="Product highlights">
<li> <li>
@@ -138,7 +140,7 @@
</li> </li>
<li> <li>
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg>
Four Agent Runtime options Built-in coding agents, configurable models
</li> </li>
<li> <li>
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg>
@@ -150,7 +152,7 @@
<div <div
class="product-stage" class="product-stage"
role="img" role="img"
aria-label="GoodBuddy desktop app showing an AI coding task running through the unified Agent Runtime" aria-label="GoodBuddy coding workspace: Continue fixes a search issue with file changes and test results"
data-tilt-stage data-tilt-stage
> >
<div class="stage-glow stage-glow--one"></div> <div class="stage-glow stage-glow--one"></div>
@@ -159,7 +161,7 @@
<div class="window-bar"> <div class="window-bar">
<div class="window-dots" aria-hidden="true"><span></span><span></span><span></span></div> <div class="window-dots" aria-hidden="true"><span></span><span></span><span></span></div>
<div class="window-title">GoodBuddy</div> <div class="window-title">GoodBuddy</div>
<div class="window-status"><span></span> Runtime connected</div> <div class="window-status"><span></span> Agent connected</div>
</div> </div>
<div class="app-layout"> <div class="app-layout">
<aside class="app-sidebar" aria-hidden="true"> <aside class="app-sidebar" aria-hidden="true">
@@ -180,13 +182,13 @@
<div class="app-content"> <div class="app-content">
<div class="app-content-header"> <div class="app-content-header">
<div> <div>
<strong>Fix cross-platform build</strong> <strong>Fix empty search results</strong>
<span>Project: Desktop client</span> <span>Project: Knowledge search</span>
</div> </div>
<div class="mode-pill">Continue · Execute</div> <div class="mode-pill">Continue · Execute</div>
</div> </div>
<div class="message-area"> <div class="message-area">
<div class="message message--user">Fix the build and validate all three desktop platforms.</div> <div class="message message--user">Search returns nothing with extra spaces. Fix it and add tests.</div>
<div class="message message--assistant"> <div class="message message--assistant">
<div class="assistant-label"> <div class="assistant-label">
<span class="assistant-avatar" aria-hidden="true"> <span class="assistant-avatar" aria-hidden="true">
@@ -197,15 +199,15 @@
</span> </span>
<strong>GoodBuddy</strong> <strong>GoodBuddy</strong>
</div> </div>
<p>Agent Runtime loaded the project, Skills, and controlled tools.</p> <p>Trimmed the query. Searches with no matches still show the empty state.</p>
<div class="tool-card"> <div class="tool-card">
<div class="tool-icon"> <div class="tool-icon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6h16M4 12h10M4 18h7" /></svg> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6h16M4 12h10M4 18h7" /></svg>
</div> </div>
<div><strong>Preparing environment</strong><span>Continue · Project scope · Controlled tools</span></div> <div><strong>File changes</strong><span>search.ts · search.test.ts</span></div>
<span class="tool-state">Ready</span> <span class="tool-state">Updated</span>
</div> </div>
<div class="plan-lines" aria-hidden="true"><span></span><span></span><span></span></div> <div class="demo-result"><code>query.trim()</code><span>Tests passed: whitespace and no-match cases</span></div>
</div> </div>
</div> </div>
<div class="composer"> <div class="composer">
@@ -217,9 +219,9 @@
</div> </div>
<div class="floating-card floating-card--approval"> <div class="floating-card floating-card--approval">
<span class="floating-icon"> <span class="floating-icon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3 5 6v5c0 4.5 2.8 8.6 7 10 4.2-1.4 7-5.5 7-10V6l-7-3Z" /><path d="m9 12 2 2 4-4" /></svg> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="m8 7-5 5 5 5M16 7l5 5-5 5M14 4l-4 16" /></svg>
</span> </span>
<span><strong>Unified Agent Runtime</strong><small>Direct models · OpenCode · Continue · DSH</small></span> <span><strong>Built-in coding agents</strong><small>OpenCode · Continue · DeepSeek Harness (preview)</small></span>
</div> </div>
<div class="floating-card floating-card--scope"> <div class="floating-card floating-card--scope">
<span class="scope-dot"></span> <span class="scope-dot"></span>
@@ -229,15 +231,6 @@
</div> </div>
</section> </section>
<section class="proof-strip" aria-label="Platform and Runtime support">
<div class="section-inner proof-grid">
<div><strong>4 Runtimes</strong><span>Multiple AI coding paths</span></div>
<div><strong>3 platforms</strong><span>Windows / macOS / Linux</span></div>
<div><strong>2 architectures</strong><span>x64 / arm64</span></div>
<div><strong>1 workspace</strong><span>Select, configure, run, audit</span></div>
</div>
</section>
<section class="section download-section" id="download" aria-label="Cross-platform downloads"> <section class="section download-section" id="download" aria-label="Cross-platform downloads">
<div class="section-inner"> <div class="section-inner">
<div class="download-grid"> <div class="download-grid">
@@ -285,15 +278,53 @@
</div> </div>
</section> </section>
<section id="workflows" class="section workflows-section" aria-labelledby="workflows-title">
<div class="section-inner">
<div class="section-heading">
<div><p class="kicker">Everyday workflows</p><h2 id="workflows-title">From research to follow-up</h2></div>
<p>Search project material, save decisions, and set reminders for what comes next.</p>
</div>
<div class="workflow-grid">
<article class="workflow-card">
<div class="workflow-copy">
<p class="kicker">Knowledge and citations</p>
<h3>Find an answer and check its source</h3>
<p>Ask questions about local documents or your organization's knowledge base. Follow citations in the answer to the original material.</p>
</div>
<div class="workflow-demo">
<div class="demo-bar">Knowledge Q&amp;A</div>
<p class="demo-question">What should we check before a staging release?</p>
<p class="demo-answer">Check configuration, run regression tests, and confirm a rollback package is available. [1]</p>
<div class="demo-source">[1] Release handbook · Pre-release checks</div>
</div>
</article>
<article class="workflow-card">
<div class="workflow-copy">
<p class="kicker">Notes and schedules</p>
<h3>Keep notes and schedule the next step</h3>
<p>Save decisions in Magic Notes and schedule a reminder for work that needs a follow-up.</p>
</div>
<div class="workflow-demo">
<div class="demo-bar">Project follow-up</div>
<p class="demo-question">Save these notes and remind me to check release readiness next Monday.</p>
<p class="demo-answer">Saved: review the search fix and check regression results before release.</p>
<ul class="demo-checklist"><li>To-do: review the search fix</li><li>Schedule: next Monday, 09:00, release readiness check</li></ul>
<div class="demo-source">Magic Notes · Release preparation</div>
</div>
</article>
</div>
</div>
</section>
<section class="section features-section" id="features" aria-labelledby="features-title"> <section class="section features-section" id="features" aria-labelledby="features-title">
<div class="section-inner"> <div class="section-inner">
<div class="section-heading"> <div class="section-heading">
<div> <div>
<p class="kicker">Product highlights</p> <p class="kicker">Product highlights</p>
<h2 id="features-title">Agent Runtimes in one desktop interface</h2> <h2 id="features-title">Projects, knowledge, and agents on your desktop</h2>
</div> </div>
<p> <p>
Configure Runtime selection, model connections, Skills, MCP, and work modes on the desktop. Choose an agent for the task, connect project files and knowledge sources, and review tool calls and results.
</p> </p>
</div> </div>
@@ -306,10 +337,10 @@
</svg> </svg>
</div> </div>
<span class="feature-number">01</span> <span class="feature-number">01</span>
<h3>One entry point for multiple Agent Runtimes</h3> <h3>Built-in OpenCode, Continue, and DeepSeek Harness</h3>
<p>Choose direct models, OpenCode, Continue, or DeepSeek Harness for each task without learning a new entry point.</p> <p>Select a coding agent, configure its model, and start a task in your project from the desktop interface. DeepSeek Harness is in preview. Direct model chat is also available.</p>
<div class="provider-pills" aria-label="Supported Agent Runtimes"> <div class="provider-pills" aria-label="Supported Agent Runtimes">
<span>Direct models</span><span>OpenCode</span><span>Continue</span><span>DeepSeek Harness</span> <span>Direct models</span><span>OpenCode</span><span>Continue</span><span>DeepSeek Harness (preview)</span>
</div> </div>
</article> </article>
@@ -321,8 +352,8 @@
</svg> </svg>
</div> </div>
<span class="feature-number">02</span> <span class="feature-number">02</span>
<h3>Broad desktop architecture coverage</h3> <h3>Local and SSH projects</h3>
<p>Official Windows, macOS, and Linux releases cover x64 and arm64, with a separate experimental LoongArch preview.</p> <p>Work with local projects, or use OpenCode and Continue with remote projects over SSH. Remote projects require the companion gbagent on the remote host.</p>
</article> </article>
<article class="feature-card"> <article class="feature-card">
@@ -333,8 +364,8 @@
</svg> </svg>
</div> </div>
<span class="feature-number">03</span> <span class="feature-number">03</span>
<h3>Runtime setup in the desktop app</h3> <h3>Connect existing knowledge services</h3>
<p>Select the Runtime, model, work mode, and project in the desktop interface.</p> <p>Use a local knowledge base or configure Dify, FastGPT, and RAGFlow connections to retrieve material for your conversations.</p>
</article> </article>
<article class="feature-card"> <article class="feature-card">
@@ -345,11 +376,11 @@
</svg> </svg>
</div> </div>
<span class="feature-number">04</span> <span class="feature-number">04</span>
<h3>Runtime-specific capabilities and work modes</h3> <h3>Separate questions from execution</h3>
<p>Skills, MCP, and tools follow each Runtime. Ask stays read-only, while Execute remains approval-controlled and auditable.</p> <p>Ask stays read-only. Execute runs with the current account's permissions and records tool calls. Available tools depend on the selected Runtime and configuration.</p>
<div class="mode-row" aria-label="Two work modes"> <div class="mode-row" aria-label="Two work modes">
<span>Ask <small>Read-only</small></span> <span>Ask <small>Read-only</small></span>
<span class="is-accent">Execute <small>Controlled</small></span> <span class="is-accent">Execute <small>Account permissions</small></span>
</div> </div>
</article> </article>
@@ -361,8 +392,8 @@
</svg> </svg>
</div> </div>
<span class="feature-number">05</span> <span class="feature-number">05</span>
<h3>Project context in one place</h3> <h3>Skills and MCP tools</h3>
<p>Organize conversations, knowledge, tasks, and run history by project without losing context when switching Runtime.</p> <p>Import Skills and connect MCP services to give your chosen agent the tools you use at work.</p>
</article> </article>
<article class="feature-card feature-card--wide"> <article class="feature-card feature-card--wide">
@@ -392,8 +423,8 @@
<p class="kicker">Desktop assistant</p> <p class="kicker">Desktop assistant</p>
<h2 id="assistant-title">Conversations, knowledge, notes, and tasks on your desktop</h2> <h2 id="assistant-title">Conversations, knowledge, notes, and tasks on your desktop</h2>
<p> <p>
GoodBuddy keeps reference material, to-dos, and long-running work in one desktop workspace, Keep reference material, to-dos, and ongoing work in one desktop workspace.
so everyday assistance and AI coding share the same project context. Choose project files for each conversation. See the configuration guide for each agent's context and tool support.
</p> </p>
<a class="text-link" href="#download"> <a class="text-link" href="#download">
Choose your desktop release Choose your desktop release
@@ -404,11 +435,11 @@
<div class="assistant-list"> <div class="assistant-list">
<article> <article>
<span class="assistant-number">01</span> <span class="assistant-number">01</span>
<div><h3>Turn sources into searchable knowledge</h3><p>Import files, folders, and web pages, then search with full text, vectors, and a knowledge graph.</p></div> <div><h3>Search files and web pages</h3><p>Import files, folders, and web pages, then configure full-text and vector search. Enable the knowledge graph to explore relationships between sources.</p></div>
</article> </article>
<article> <article>
<span class="assistant-number">02</span> <span class="assistant-number">02</span>
<div><h3>Notes, to-dos, and long-term follow-up</h3><p>Magic Notes captures ideas and tasks, while Heartbeat reviews progress, builds memory, and proposes next steps.</p></div> <div><h3>Notes, to-dos, and follow-up</h3><p>Magic Notes captures ideas and tasks. Heartbeat reviews work at configured intervals; both Heartbeat and scheduled work require the desktop app to be running.</p></div>
</article> </article>
<article> <article>
<span class="assistant-number">03</span> <span class="assistant-number">03</span>
@@ -416,11 +447,42 @@
</article> </article>
<article> <article>
<span class="assistant-number">04</span> <span class="assistant-number">04</span>
<div><h3>Keep working away from your computer</h3><p>Connect messaging channels to separate conversations and hand tasks to GoodBuddy on your desktop.</p></div> <div><h3>Reach your desktop assistant through messages</h3><p>Configure messaging channels to send tasks in separate conversations. Message processing requires your desktop to be online and the channel connection to be available.</p></div>
</article> </article>
</div> </div>
</div> </div>
</section> </section>
<section id="faq" class="section faq-section" aria-labelledby="faq-title">
<div class="section-inner">
<div class="section-heading">
<div><p class="kicker">Before you start</p><h2 id="faq-title">Frequently asked questions</h2></div>
<p>See the <a class="text-link" href="https://github.com/mesalogo/goodbuddy/blob/main/README.md">README getting-started guide</a> for installation and connection steps.</p>
</div>
<div class="faq-list">
<details>
<summary>Do I need an account or a paid model subscription?</summary>
<p>No GoodBuddy account is required. External model services may need an account or API key and charge at their own rates. Local models need a suitable runtime on your machine.</p>
</details>
<details>
<summary>Where does my data go?</summary>
<p>Conversation history and notes are stored on your machine. Using models, knowledge services, MCP tools, or messaging channels sends relevant content to the services you configure. Model requests may include retrieved passages and attachments.</p>
</details>
<details>
<summary>How do I set up a coding agent?</summary>
<p>Select an agent, configure its model connection, and open a project. Prepare or download the runtime components required by your agent and operating system. DeepSeek Harness is in preview. See the getting-started guide for installation steps.</p>
</details>
<details>
<summary>Which platforms and Chinese domestic systems are supported?</summary>
<p>Windows, macOS, and Linux releases cover x64 and ARM64, including corresponding Chinese domestic hardware. LoongArch has a separate experimental preview. For systems such as UOS and Kylin, choose the matching architecture and package; compatibility information does not imply vendor or whole-system certification.</p>
</details>
<details>
<summary>What do SSH projects require on the remote host?</summary>
<p>Remote projects with OpenCode and Continue require a working SSH connection, a companion gbagent matching your desktop version, and the required runtime environment on the host. Operations use the remote login account's permissions. See the README for setup.</p>
</details>
</div>
</div>
</section>
</main> </main>
<footer class="site-footer"> <footer class="site-footer">
@@ -432,11 +494,13 @@
</span> </span>
<span>GoodBuddy</span> <span>GoodBuddy</span>
</a> </a>
<p>Open-source desktop AI assistant. No account required.</p> <p>Open-source desktop AI workspace. No GoodBuddy account required.</p>
<div class="footer-links"> <div class="footer-links">
<a href="#download">Download</a> <a href="#download">Download</a>
<a href="#features">Agent Runtime</a> <a href="#workflows">Workflows</a>
<a href="#assistant">Desktop assistant</a> <a href="#features">Features</a>
<a href="#faq">FAQ</a>
<a href="https://github.com/mesalogo/goodbuddy/blob/main/README.md">Getting started</a>
<a href="https://github.com/mesalogo/goodbuddy" target="_blank" rel="noreferrer"> <a href="https://github.com/mesalogo/goodbuddy" target="_blank" rel="noreferrer">
GitHub<span class="sr-only">(opens in a new window)</span> GitHub<span class="sr-only">(opens in a new window)</span>
</a> </a>
+120 -57
View File
@@ -5,14 +5,14 @@
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta <meta
name="description" name="description"
content="GoodBuddy 是免注册的开源桌面 AI 助手,支持 Windows、macOS、Linux、国产 x64/ARM64 和龙芯 LoongArch 实验预览版。" content="GoodBuddy 是面向国产化与信创环境的开源桌面 AI 工作空间,内置集成 OpenCode、Continue 与 DeepSeek Harness(预览),支持 AI 编程、知识引用、笔记和定时计划。"
/> />
<link rel="canonical" href="https://mesalogo.github.io/goodbuddy/" /> <link rel="canonical" href="https://mesalogo.github.io/goodbuddy/" />
<link rel="alternate" hreflang="zh-CN" href="https://mesalogo.github.io/goodbuddy/" /> <link rel="alternate" hreflang="zh-CN" href="https://mesalogo.github.io/goodbuddy/" />
<link rel="alternate" hreflang="en" href="https://mesalogo.github.io/goodbuddy/en.html" /> <link rel="alternate" hreflang="en" href="https://mesalogo.github.io/goodbuddy/en.html" />
<link rel="alternate" hreflang="x-default" href="https://mesalogo.github.io/goodbuddy/en.html" /> <link rel="alternate" hreflang="x-default" href="https://mesalogo.github.io/goodbuddy/en.html" />
<meta name="theme-color" content="#f6f8fb" /> <meta name="theme-color" content="#f6f8fb" />
<title>GoodBuddy|免注册的跨平台开源桌面 AI 助手</title> <title>GoodBuddy|面向国产化与信创环境的桌面 AI 工作空间</title>
<link <link
rel="icon" rel="icon"
href="./assets/goodbuddy-light.png" href="./assets/goodbuddy-light.png"
@@ -72,8 +72,10 @@
<nav class="site-navigation" id="site-navigation" aria-label="主导航" data-navigation> <nav class="site-navigation" id="site-navigation" aria-label="主导航" data-navigation>
<a href="#download">下载</a> <a href="#download">下载</a>
<a href="#features">产品亮点</a> <a href="#workflows">场景</a>
<a href="#assistant">桌面助手</a> <a href="#features">功能</a>
<a href="#assistant">助手</a>
<a href="#faq">FAQ</a>
</nav> </nav>
<div class="header-actions"> <div class="header-actions">
@@ -119,18 +121,18 @@
Windows · macOS · Linux · 龙芯预览版 Windows · macOS · Linux · 龙芯预览版
</div> </div>
<h1 id="hero-title"> <h1 id="hero-title">
免注册,<br /> 面向国产化<br />
支持信创软硬件的<br /> 与信创环境的<br />
<span>桌面 AI 助手。</span> <span>桌面 AI 工作空间。</span>
</h1> </h1>
<p class="hero-lead"> <p class="hero-lead">
GoodBuddy 提供模型对话、AI 编程、知识库、笔记和任务管理。 在 GoodBuddy 中写代码、查资料、记笔记,安排日常任务。
Agent Runtime 可连接直连模型、OpenCode、Continue 和 DeepSeek Harness; 内置集成 OpenCode、Continue 与 DeepSeek Harness(预览)三种编程 Agent,
选择项目和 Runtime 后即可开始。 也支持直连模型对话。
</p> </p>
<div class="hero-actions"> <div class="hero-actions">
<a class="button button--primary" href="#download">立即下载</a> <a class="button button--primary" href="#download">立即下载</a>
<a class="button button--secondary" href="#features">了解 Agent Runtime</a> <a class="button button--secondary" href="#workflows">查看使用场景</a>
</div> </div>
<ul class="hero-facts hero-facts--aligned" aria-label="产品特性概览"> <ul class="hero-facts hero-facts--aligned" aria-label="产品特性概览">
<li> <li>
@@ -143,7 +145,7 @@
</li> </li>
<li> <li>
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg>
4 类 Agent Runtime 统一接入 内置编程 Agent,按需配置模型
</li> </li>
<li> <li>
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg> <svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg>
@@ -155,7 +157,7 @@
<div <div
class="product-stage" class="product-stage"
role="img" role="img"
aria-label="GoodBuddy 桌面应用界面示意:在统一 Agent Runtime 中选择 AI 编程工具并受控执行" aria-label="GoodBuddy 编程工作区:使用 Continue 修复搜索问题,查看文件变更与测试结果"
data-tilt-stage data-tilt-stage
> >
<div class="stage-glow stage-glow--one"></div> <div class="stage-glow stage-glow--one"></div>
@@ -164,7 +166,7 @@
<div class="window-bar"> <div class="window-bar">
<div class="window-dots" aria-hidden="true"><span></span><span></span><span></span></div> <div class="window-dots" aria-hidden="true"><span></span><span></span><span></span></div>
<div class="window-title">GoodBuddy</div> <div class="window-title">GoodBuddy</div>
<div class="window-status"><span></span> Runtime 已连接</div> <div class="window-status"><span></span> Agent 已连接</div>
</div> </div>
<div class="app-layout"> <div class="app-layout">
<aside class="app-sidebar" aria-hidden="true"> <aside class="app-sidebar" aria-hidden="true">
@@ -185,13 +187,13 @@
<div class="app-content"> <div class="app-content">
<div class="app-content-header"> <div class="app-content-header">
<div> <div>
<strong>修复跨平台构建</strong> <strong>修复搜索空结果</strong>
<span>项目:桌面客户端</span> <span>项目:知识检索</span>
</div> </div>
<div class="mode-pill">Continue · 执行</div> <div class="mode-pill">Continue · 执行</div>
</div> </div>
<div class="message-area"> <div class="message-area">
<div class="message message--user">修复构建问题,并验证三个桌面系统。</div> <div class="message message--user">搜索词带空格时没有结果,请修复并补充测试。</div>
<div class="message message--assistant"> <div class="message message--assistant">
<div class="assistant-label"> <div class="assistant-label">
<span class="assistant-avatar" aria-hidden="true"> <span class="assistant-avatar" aria-hidden="true">
@@ -202,15 +204,15 @@
</span> </span>
<strong>GoodBuddy</strong> <strong>GoodBuddy</strong>
</div> </div>
<p>已通过 Agent Runtime 载入项目、Skills 和受控工具。</p> <p>已去除查询词首尾的空格,无匹配时仍显示空状态提示。</p>
<div class="tool-card"> <div class="tool-card">
<div class="tool-icon"> <div class="tool-icon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6h16M4 12h10M4 18h7" /></svg> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6h16M4 12h10M4 18h7" /></svg>
</div> </div>
<div><strong>准备编程环境</strong><span>Continue · 项目范围 · 受控工具</span></div> <div><strong>文件变更</strong><span>search.ts · search.test.ts</span></div>
<span class="tool-state">已就绪</span> <span class="tool-state">已修改</span>
</div> </div>
<div class="plan-lines" aria-hidden="true"><span></span><span></span><span></span></div> <div class="demo-result"><code>query.trim()</code><span>测试通过:空格输入、无匹配结果</span></div>
</div> </div>
</div> </div>
<div class="composer"> <div class="composer">
@@ -222,9 +224,9 @@
</div> </div>
<div class="floating-card floating-card--approval"> <div class="floating-card floating-card--approval">
<span class="floating-icon"> <span class="floating-icon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3 5 6v5c0 4.5 2.8 8.6 7 10 4.2-1.4 7-5.5 7-10V6l-7-3Z" /><path d="m9 12 2 2 4-4" /></svg> <svg viewBox="0 0 24 24" aria-hidden="true"><path d="m8 7-5 5 5 5M16 7l5 5-5 5M14 4l-4 16" /></svg>
</span> </span>
<span><strong>统一 Agent Runtime</strong><small>直连模型 · OpenCode · Continue · DSH</small></span> <span><strong>内置编程 Agent</strong><small>OpenCode · Continue · DeepSeek Harness(预览)</small></span>
</div> </div>
<div class="floating-card floating-card--scope"> <div class="floating-card floating-card--scope">
<span class="scope-dot"></span> <span class="scope-dot"></span>
@@ -234,15 +236,6 @@
</div> </div>
</section> </section>
<section class="proof-strip" aria-label="平台与 Runtime 支持概览">
<div class="section-inner proof-grid">
<div><strong>4 类 Runtime</strong><span>多种 AI 编程路径</span></div>
<div><strong>3 大系统</strong><span>Windows / macOS / Linux</span></div>
<div><strong>3 种架构</strong><span>x64 / arm64 / loong64 预览</span></div>
<div><strong>1 个入口</strong><span>选择、配置、运行、审计</span></div>
</div>
</section>
<section class="section download-section" id="download" aria-label="跨平台下载"> <section class="section download-section" id="download" aria-label="跨平台下载">
<div class="section-inner"> <div class="section-inner">
<div class="download-grid"> <div class="download-grid">
@@ -351,8 +344,7 @@
<h3 id="domestic-support-title">桌面版本覆盖国产 x64、ARM64 和龙芯 LoongArch</h3> <h3 id="domestic-support-title">桌面版本覆盖国产 x64、ARM64 和龙芯 LoongArch</h3>
<p> <p>
正式下载覆盖国产 x64 与 ARM64;龙芯 LoongArch 使用独立编译的 正式下载覆盖国产 x64 与 ARM64;龙芯 LoongArch 使用独立编译的
loong64 预览版。这里描述的是系统、指令集与安装包兼容性, loong64 预览版。请按系统与处理器架构选择安装包,具体兼容和认证范围见下方常见问题。
不代表已完成所有厂商和整机认证。
</p> </p>
</div> </div>
<div class="domestic-support__items"> <div class="domestic-support__items">
@@ -371,15 +363,53 @@
</div> </div>
</section> </section>
<section id="workflows" class="section workflows-section" aria-labelledby="workflows-title">
<div class="section-inner">
<div class="section-heading">
<div><p class="kicker">使用场景</p><h2 id="workflows-title">从查资料到跟进工作</h2></div>
<p>查询项目资料,保存讨论结论,为待办安排提醒。</p>
</div>
<div class="workflow-grid">
<article class="workflow-card">
<div class="workflow-copy">
<p class="kicker">知识检索</p>
<h3>答案附带资料出处</h3>
<p>向本地资料或组织知识库提问,在回答中查看引用,找到对应原文。</p>
</div>
<div class="workflow-demo">
<div class="demo-bar">知识问答</div>
<p class="demo-question">测试环境发布前需要检查什么?</p>
<p class="demo-answer">需要核对配置、执行回归测试,并确认回滚包可用。[1]</p>
<div class="demo-source">[1] 《发布手册》 · 发布前检查</div>
</div>
</article>
<article class="workflow-card">
<div class="workflow-copy">
<p class="kicker">笔记与定时计划</p>
<h3>记录待办,安排下一次跟进</h3>
<p>用魔法笔记保存讨论结论,把需要跟进的事项设为定时任务。</p>
</div>
<div class="workflow-demo">
<div class="demo-bar">项目跟进</div>
<p class="demo-question">记录本次讨论,下周一提醒我检查发布准备。</p>
<p class="demo-answer">已记录:搜索修复待复核,发布前检查回归结果。</p>
<ul class="demo-checklist"><li>待办:复核搜索修复</li><li>定时计划:下周一 09:00 检查发布准备</li></ul>
<div class="demo-source">魔法笔记 · 发布准备</div>
</div>
</article>
</div>
</div>
</section>
<section class="section features-section" id="features" aria-labelledby="features-title"> <section class="section features-section" id="features" aria-labelledby="features-title">
<div class="section-inner"> <div class="section-inner">
<div class="section-heading"> <div class="section-heading">
<div> <div>
<p class="kicker">产品亮点</p> <p class="kicker">产品亮点</p>
<h2 id="features-title">本地工作空间,统一 Runtime,也支持信创环境</h2> <h2 id="features-title">项目、知识与编程 Agent</h2>
</div> </div>
<p> <p>
从模型连接到执行记录,从桌面工作到国产软硬件适配,都由同一个应用承载。 选择适合任务的 Agent,连接项目与知识来源,并查看工具调用和运行结果。
</p> </p>
</div> </div>
@@ -392,10 +422,10 @@
</svg> </svg>
</div> </div>
<span class="feature-number">01</span> <span class="feature-number">01</span>
<h3>一个入口,连接多种 Agent Runtime</h3> <h3>内置 OpenCode、Continue 与 DeepSeek Harness</h3>
<p>按任务选择直连模型、OpenCode、Continue 或 DeepSeek Harness,不必为每种工具重新适应一套入口。</p> <p>在图形界面中选择编程 Agent、配置模型,直接向项目发起任务。DeepSeek Harness 为预览功能,也支持直连模型对话。</p>
<div class="provider-pills" aria-label="支持的 Agent Runtime"> <div class="provider-pills" aria-label="支持的 Agent Runtime">
<span>直连模型</span><span>OpenCode</span><span>Continue</span><span>DeepSeek Harness</span> <span>直连模型</span><span>OpenCode</span><span>Continue</span><span>DeepSeek Harness(预览)</span>
</div> </div>
</article> </article>
@@ -407,8 +437,8 @@
</svg> </svg>
</div> </div>
<span class="feature-number">02</span> <span class="feature-number">02</span>
<h3>覆盖主流桌面与信创环境</h3> <h3>本地项目与 SSH 远端项目</h3>
<p>Windows、macOS、Linux 正式提供 x64 与 arm64 版本,龙芯 LoongArch 另有独立实验预览。</p> <p>处理电脑上的代码,也可通过 OpenCode、Continue 连接 SSH 远端项目。远端运行配套的 GoodBuddy Agent。</p>
</article> </article>
<article class="feature-card"> <article class="feature-card">
@@ -419,8 +449,8 @@
</svg> </svg>
</div> </div>
<span class="feature-number">03</span> <span class="feature-number">03</span>
<h3>图形化 Runtime 配置</h3> <h3>接入已有知识服务</h3>
<p>在图形界面中选择 Runtime、模型、工作模式和项目,不用先记住复杂命令。</p> <p>使用本地知识库,或配置 Dify、FastGPT、RAGFlow 连接,将已有资料用于检索与问答。</p>
</article> </article>
<article class="feature-card"> <article class="feature-card">
@@ -431,11 +461,11 @@
</svg> </svg>
</div> </div>
<span class="feature-number">04</span> <span class="feature-number">04</span>
<h3>按 Runtime 分配能力与工作模式</h3> <h3>区分问答与执行</h3>
<p>Skills、MCP 和工具按 Runtime 分配;Ask 保持只读,Execute 继续经过审批和审计。</p> <p>Ask 保持只读;Execute 按当前账号权限执行操作,并记录工具调用。可用工具随所选 Runtime 和配置变化。</p>
<div class="mode-row" aria-label="两种工作模式"> <div class="mode-row" aria-label="两种工作模式">
<span>Ask <small>只读</small></span> <span>Ask <small>只读</small></span>
<span class="is-accent">Execute <small>受控执行</small></span> <span class="is-accent">Execute <small>按账号权限执行</small></span>
</div> </div>
</article> </article>
@@ -447,8 +477,8 @@
</svg> </svg>
</div> </div>
<span class="feature-number">05</span> <span class="feature-number">05</span>
<h3>项目上下文集中管理</h3> <h3>Skills 与 MCP 工具扩展</h3>
<p>对话、知识、任务和运行记录按项目组织,切换 Runtime 不必丢掉工作上下文。</p> <p>导入 Skills,连接 MCP 服务,为所选 Agent 配置工作中需要的工具。</p>
</article> </article>
<article class="feature-card feature-card--wide"> <article class="feature-card feature-card--wide">
@@ -476,10 +506,10 @@
</span> </span>
</div> </div>
<p class="kicker">桌面助手</p> <p class="kicker">桌面助手</p>
<h2 id="assistant-title">对话、知识、笔记与任务,都在桌面上</h2> <h2 id="assistant-title">桌面上的资料与日常工作</h2>
<p> <p>
GoodBuddy 把资料、待办和长期任务放进同一个桌面工作区, 资料、笔记和待办集中管理,对话时选择需要的项目与文件。
日常协作与 AI 编程共享项目上下文。 不同 Agent 支持的上下文和工具见配置说明。
</p> </p>
<a <a
class="text-link" class="text-link"
@@ -493,11 +523,11 @@
<div class="assistant-list"> <div class="assistant-list">
<article> <article>
<span class="assistant-number">01</span> <span class="assistant-number">01</span>
<div><h3>资料变成可问的知识</h3><p>导入文件、目录和网页,用全文、向量和知识图谱一起检索。</p></div> <div><h3>检索文件与网页</h3><p>导入文件、目录和网页,配置全文与向量检索。启用知识图谱后,还可查看资料之间的关系。</p></div>
</article> </article>
<article> <article>
<span class="assistant-number">02</span> <span class="assistant-number">02</span>
<div><h3>笔记、待办和长期跟进</h3><p>魔法笔记管理灵感与待办,智能心跳持续回顾、沉淀记忆并提出后续任务。</p></div> <div><h3>笔记与工作回顾</h3><p>魔法笔记记录灵感与待办,智能心跳按设定周期回顾工作。定时任务和心跳需要桌面应用保持运行。</p></div>
</article> </article>
<article> <article>
<span class="assistant-number">03</span> <span class="assistant-number">03</span>
@@ -505,11 +535,42 @@
</article> </article>
<article> <article>
<span class="assistant-number">04</span> <span class="assistant-number">04</span>
<div><h3>离开电脑也能继续</h3><p>通过微信、企业微信和钉钉连接独立会话,把任务交给桌面上的 GoodBuddy。</p></div> <div><h3>从微信或钉钉发送任务</h3><p>连接微信、企业微信或钉钉,用独立会话联系桌面助手。使用时保持电脑在线、消息渠道已连接。</p></div>
</article> </article>
</div> </div>
</div> </div>
</section> </section>
<section id="faq" class="section faq-section" aria-labelledby="faq-title">
<div class="section-inner">
<div class="section-heading">
<div><p class="kicker">开始之前</p><h2 id="faq-title">常见问题</h2></div>
<p>安装与连接步骤见 <a class="text-link" href="https://github.com/mesalogo/goodbuddy/blob/main/README.zh-CN.md">README 入门指南</a>。</p>
</div>
<div class="faq-list">
<details>
<summary>需要注册账号或支付模型费用吗?</summary>
<p>无需注册 GoodBuddy 账号。外部模型服务可能需要账号或 API 密钥,费用按服务商定价收取。使用本地模型时,需准备相应的运行环境。</p>
</details>
<details>
<summary>我的资料会发送到哪里?</summary>
<p>对话记录与笔记保存在本机。使用模型、知识服务、MCP 工具或消息渠道时,相关内容会发送到你配置的服务。模型请求可能包含检索到的资料片段和附件。</p>
</details>
<details>
<summary>第一次使用编程 Agent,需要配置什么?</summary>
<p>选择 Agent,配置模型连接并打开项目;根据所选 Agent 和系统准备或下载运行组件。DeepSeek Harness 为预览功能,安装步骤见入门指南。</p>
</details>
<details>
<summary>支持哪些平台和信创环境?</summary>
<p>Windows、macOS、Linux 提供 x64 与 ARM64 版本,国产环境覆盖相应架构;龙芯 LoongArch 提供独立实验预览版。统信 UOS、银河麒麟等环境需按系统、架构和安装包选择,兼容性说明不等同于整机或厂商认证。</p>
</details>
<details>
<summary>使用 SSH 远端项目需要准备什么?</summary>
<p>OpenCode、Continue 的远端项目需要可用的 SSH 连接,并在远端准备与桌面版本配套的 gbagent 及所需运行环境。操作使用远端登录账号权限;具体配置见 README 入门指南。</p>
</details>
</div>
</div>
</section>
</main> </main>
<footer class="site-footer"> <footer class="site-footer">
@@ -521,11 +582,13 @@
</span> </span>
<span>GoodBuddy</span> <span>GoodBuddy</span>
</a> </a>
<p>免注册的跨平台开源桌面 AI 助手</p> <p>面向国产化与信创环境的开源桌面 AI 工作空间</p>
<div class="footer-links"> <div class="footer-links">
<a href="#download">下载</a> <a href="#download">下载</a>
<a href="#features">Agent Runtime</a> <a href="#workflows">场景</a>
<a href="#assistant">桌面助手</a> <a href="#features">功能</a>
<a href="#faq">FAQ</a>
<a href="https://github.com/mesalogo/goodbuddy/blob/main/README.zh-CN.md">入门指南</a>
<a href="https://github.com/mesalogo/goodbuddy" target="_blank" rel="noreferrer"> <a href="https://github.com/mesalogo/goodbuddy" target="_blank" rel="noreferrer">
GitHub<span class="sr-only">(在新窗口打开)</span> GitHub<span class="sr-only">(在新窗口打开)</span>
</a> </a>
+22 -11
View File
@@ -248,10 +248,11 @@ for (const breakpoint of ["1199px", "959px", "719px"]) {
} }
const requiredCopy = [ const requiredCopy = [
"免注册", "无需注册 GoodBuddy 账号",
"支持信创软硬件的", "面向国产化",
"与信创环境的",
"产品亮点", "产品亮点",
"本地工作空间,统一 Runtime,也支持信创环境", "桌面 AI 工作空间",
"桌面版本覆盖国产 x64、ARM64 和龙芯 LoongArch", "桌面版本覆盖国产 x64、ARM64 和龙芯 LoongArch",
"龙芯 LoongArch 独立编译预览版", "龙芯 LoongArch 独立编译预览版",
"龙芯 LoongArch(实验预览)", "龙芯 LoongArch(实验预览)",
@@ -262,13 +263,12 @@ const requiredCopy = [
"银河麒麟", "银河麒麟",
"海光 · 兆芯(x64)", "海光 · 兆芯(x64)",
"鲲鹏 · 飞腾(ARM64)", "鲲鹏 · 飞腾(ARM64)",
"Agent Runtime 可连接", "内置集成 OpenCode、Continue",
"直连模型、OpenCode、Continue",
"DeepSeek Harness", "DeepSeek Harness",
"魔法笔记", "魔法笔记",
"智能心跳", "智能心跳",
"文件、截图、应用窗口、剪贴板和离线语音", "文件、截图、应用窗口、剪贴板和离线语音",
"微信、企业微信和钉钉", "微信、企业微信或钉钉",
]; ];
for (const copy of requiredCopy) { for (const copy of requiredCopy) {
@@ -276,13 +276,10 @@ for (const copy of requiredCopy) {
} }
const requiredEnglishCopy = [ const requiredEnglishCopy = [
"No account required.", "No GoodBuddy account required",
"Product highlights", "Product highlights",
"Model chat and coding agents",
"on your desktop.",
"Windows, macOS, and Linux", "Windows, macOS, and Linux",
"separate experimental LoongArch preview", "LoongArch has a separate experimental preview",
"Agent Runtimes in one desktop interface",
"Direct models", "Direct models",
"OpenCode", "OpenCode",
"Continue", "Continue",
@@ -294,6 +291,20 @@ for (const copy of requiredEnglishCopy) {
report(englishHtml.includes(copy), `英文页面缺少准确文案:${copy}`); report(englishHtml.includes(copy), `英文页面缺少准确文案:${copy}`);
} }
for (const [relativePath, content] of [["index.html", html], ["en.html", englishHtml]]) {
for (const id of ["workflows", "faq"]) {
report(content.includes(`id="${id}"`), `${relativePath} 缺少 ${id} 区域`);
}
const mainContent = content.match(/<main\b[^>]*>([\s\S]*?)<\/main>/)?.[1] ?? "";
const mainSections = [...mainContent.matchAll(/<section\b[^>]*>/g)];
report(/\sid="download"/.test(mainSections[1]?.[0] ?? ""),
`${relativePath} 下载区必须是 main 中的第二个 section`);
report((content.match(/<summary>/g) ?? []).length >= 4,
`${relativePath} 常见问题必须使用原生可展开控件`);
report(!/approval-controlled|受控执行|继续经过审批/.test(content),
`${relativePath} 不得保留过时的执行审批文案`);
}
for (const forbiddenCopy of ["信创", "国产", "统信 UOS", "银河麒麟", "海光", "兆芯", "鲲鹏", "飞腾"]) { for (const forbiddenCopy of ["信创", "国产", "统信 UOS", "银河麒麟", "海光", "兆芯", "鲲鹏", "飞腾"]) {
report(!englishHtml.includes(forbiddenCopy), `英文页面不得包含中文信创文案:${forbiddenCopy}`); report(!englishHtml.includes(forbiddenCopy), `英文页面不得包含中文信创文案:${forbiddenCopy}`);
} }
+167 -16
View File
@@ -957,24 +957,145 @@ p {
color: var(--success); color: var(--success);
} }
.plan-lines { .demo-result {
display: grid; display: grid;
gap: 6px; gap: 8px;
margin-top: var(--space-3); margin-top: var(--space-3);
color: var(--success);
} }
.plan-lines span { .demo-result code {
height: 5px; padding: 8px 10px;
border-radius: var(--radius-pill); border-left: 2px solid var(--success);
background: var(--surface-muted); background: var(--success-subtle);
} }
.plan-lines span:nth-child(2) { .workflow-grid {
width: 88%; display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--space-6);
} }
.plan-lines span:nth-child(3) { .feature-grid > .feature-card:last-child {
width: 62%; grid-column: 1 / -1;
min-height: 0;
}
.workflow-card {
display: flex;
min-width: 0;
flex-direction: column;
overflow: hidden;
border: 1px solid var(--border-default);
border-radius: var(--radius-large);
background: var(--surface-raised);
}
.workflow-copy {
padding: var(--space-8);
}
.workflow-copy h3 {
font-size: clamp(1.25rem, 2vw, 1.65rem);
line-height: 1.4;
}
.workflow-copy > p:last-child {
margin-bottom: 0;
color: var(--text-secondary);
}
.workflow-demo {
flex: 1;
padding: var(--space-6);
margin: 0 var(--space-6) var(--space-6);
border: 1px solid var(--border-default);
border-radius: var(--radius-card);
background: var(--surface-subtle);
overflow-wrap: anywhere;
}
.demo-bar {
padding-bottom: var(--space-4);
margin-bottom: var(--space-6);
border-bottom: 1px solid var(--border-default);
color: var(--text-muted);
font-size: 0.75rem;
}
.demo-question {
width: fit-content;
padding: var(--space-3) var(--space-4);
margin-left: auto;
border-radius: 12px 12px 2px 12px;
background: var(--accent-solid);
color: var(--text-on-accent);
}
.demo-answer {
margin-block: var(--space-6) var(--space-4);
}
.demo-source {
padding: var(--space-3) var(--space-4);
border-left: 2px solid var(--accent);
background: var(--surface-raised);
color: var(--text-secondary);
font-size: 0.75rem;
}
.demo-checklist {
padding-left: var(--space-6);
color: var(--text-secondary);
}
.demo-checklist li + li {
margin-top: var(--space-2);
}
.faq-list {
border-top: 1px solid var(--border-default);
}
.faq-list details {
padding: var(--space-6) 0;
border-bottom: 1px solid var(--border-default);
}
.faq-list summary {
cursor: pointer;
font-size: 1.0625rem;
font-weight: 650;
}
.faq-list summary::marker {
color: var(--accent);
}
.faq-list summary:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 6px;
}
.faq-list details p {
max-width: 900px;
margin: var(--space-4) 0 0;
color: var(--text-secondary);
}
@media (max-width: 719px) {
.workflow-grid {
grid-template-columns: minmax(0, 1fr);
}
.workflow-copy {
padding: var(--space-6);
}
.workflow-demo {
padding: var(--space-4);
margin: 0 var(--space-4) var(--space-4);
}
} }
.composer { .composer {
@@ -1849,16 +1970,46 @@ p {
} }
.product-stage { .product-stage {
min-height: 365px; min-height: 0;
margin-top: var(--space-4); margin-top: var(--space-4);
padding: 24px 0 72px;
} }
.app-window { .app-window {
--window-scale: 0.59; position: relative;
--window-translate-x: -50%; top: 0;
left: 50%; left: 0;
width: 680px; width: 100%;
transform-origin: top center; transform: none;
}
.app-layout {
grid-template-columns: minmax(0, 1fr);
}
.app-sidebar {
display: none;
}
.message-area {
padding: 20px 16px 88px;
}
.message {
max-width: 100%;
font-size: 11px;
}
.tool-card strong,
.tool-card span,
.app-content-header span,
.mode-pill {
font-size: 10px;
}
.composer {
right: 12px;
left: 12px;
} }
.floating-card--scope { .floating-card--scope {