Files
goodbuddy/sites/en.html
T
mesalogo f44a0dc907 feat: improve desktop reliability and customization
Address reliability and consistency gaps across Agent Runtimes, persistence, settings, Knowledge, Magic Notes, Smart Heartbeat, and the download site. Runtime processes now have bounded lifecycle cleanup and atomic configuration rollback, while model packages and persisted mutations recover safely.

Add a configurable global shortcut, protect unsaved work, improve modal and keyboard behavior, localize the built-in project without rewriting stored data, and lazy-load heavy renderer routes under enforced bundle budgets. Align project forms and disabled controls with shared typography and interaction states, and strengthen website release metadata validation and navigation accessibility.

Release note: 修复 Runtime、设置、知识库、魔法笔记与智能心跳中的可靠性和交互一致性问题;新增可配置全局快捷键,改进无障碍与加载性能,并强化官网下载校验。
2026-08-20 10:11:06 +08:00

452 lines
21 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta
name="description"
content="GoodBuddy is an all-in-one desktop AI assistant that requires no GoodBuddy account, with a unified Agent Runtime for direct models, OpenCode, Continue, and DeepSeek Harness."
/>
<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="en" 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" />
<title>GoodBuddy | All-in-one AI assistant, no account required</title>
<link
rel="icon"
href="./assets/goodbuddy-light.png"
type="image/png"
media="(prefers-color-scheme: light)"
/>
<link
rel="icon"
href="./assets/goodbuddy-dark.png"
type="image/png"
media="(prefers-color-scheme: dark)"
/>
<link rel="stylesheet" href="./styles.css" />
<script src="./language.js"></script>
<script>
(() => {
try {
const savedTheme = localStorage.getItem("goodbuddy-site-theme");
const systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
document.documentElement.dataset.theme =
savedTheme === "light" || savedTheme === "dark"
? savedTheme
: systemDark
? "dark"
: "light";
} catch {
document.documentElement.dataset.theme = "light";
}
})();
</script>
</head>
<body>
<a class="skip-link" href="#main-content">Skip to main content</a>
<header class="site-header" data-site-header>
<div class="header-inner">
<a class="brand" href="#home" aria-label="GoodBuddy home">
<span class="brand-icon" aria-hidden="true">
<img class="brand-icon__image brand-icon__image--light" src="./assets/goodbuddy-light.png" alt="" />
<img class="brand-icon__image brand-icon__image--dark" src="./assets/goodbuddy-dark.png" alt="" />
</span>
<span>GoodBuddy</span>
</a>
<button
class="icon-button menu-toggle"
type="button"
aria-label="Open navigation"
aria-expanded="false"
aria-controls="site-navigation"
data-menu-toggle
>
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 7h16M4 12h16M4 17h16" />
</svg>
</button>
<nav class="site-navigation" id="site-navigation" aria-label="Main navigation" data-navigation>
<a href="#download">Download</a>
<a href="#features">Agent Runtime</a>
<a href="#assistant">Desktop assistant</a>
</nav>
<div class="header-actions">
<a
class="language-link"
href="./index.html?lang=zh"
lang="zh-CN"
hreflang="zh-CN"
aria-label="切换到中文"
data-language-link
>
</a>
<button class="icon-button" type="button" aria-label="Switch to dark theme" data-theme-toggle>
<svg class="theme-icon theme-icon--sun" viewBox="0 0 24 24" aria-hidden="true">
<circle cx="12" cy="12" r="4" />
<path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4" />
</svg>
<svg class="theme-icon theme-icon--moon" viewBox="0 0 24 24" aria-hidden="true">
<path d="M20.4 14.6A8.5 8.5 0 0 1 9.4 3.6a8.5 8.5 0 1 0 11 11Z" />
</svg>
</button>
<a
class="button button--quiet header-github"
href="https://github.com/mesalogo/goodbuddy"
target="_blank"
rel="noreferrer"
>
GitHub
<span class="sr-only">(opens in a new window)</span>
</a>
</div>
</div>
</header>
<div class="menu-backdrop" aria-hidden="true" data-menu-backdrop></div>
<main id="main-content">
<section class="hero section" id="home" aria-labelledby="hero-title">
<div class="section-inner hero-grid">
<div class="hero-copy">
<div class="eyebrow">
<span class="status-dot" aria-hidden="true"></span>
Windows · macOS · Linux
</div>
<h1 id="hero-title">
No account required.<br />
Your all-in-one<br />
<span>AI assistant.</span>
</h1>
<p class="hero-lead">
GoodBuddy brings conversations, knowledge, notes, and tasks together in a desktop
assistant and AI coding workspace. Its unified Agent Runtime connects direct models,
OpenCode, Continue, and DeepSeek Harness without repeated command-line setup.
</p>
<div class="hero-actions">
<a class="button button--primary" href="#download">Download now</a>
<a class="button button--secondary" href="#features">Explore Agent Runtime</a>
</div>
<ul class="hero-facts" aria-label="Product highlights">
<li>
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg>
Three desktop platforms, x64 and arm64
</li>
<li>
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg>
Four Agent Runtime options
</li>
<li>
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m5 10 3 3 7-7" /></svg>
No GoodBuddy account required
</li>
</ul>
</div>
<div
class="product-stage"
role="img"
aria-label="GoodBuddy desktop app showing an AI coding task running through the unified Agent Runtime"
data-tilt-stage
>
<div class="stage-glow stage-glow--one"></div>
<div class="stage-glow stage-glow--two"></div>
<div class="app-window" data-tilt-card>
<div class="window-bar">
<div class="window-dots" aria-hidden="true"><span></span><span></span><span></span></div>
<div class="window-title">GoodBuddy</div>
<div class="window-status"><span></span> Runtime connected</div>
</div>
<div class="app-layout">
<aside class="app-sidebar" aria-hidden="true">
<div class="mini-brand">
<span class="brand-icon" aria-hidden="true">
<img class="brand-icon__image brand-icon__image--light" src="./assets/goodbuddy-light.png" alt="" />
<img class="brand-icon__image brand-icon__image--dark" src="./assets/goodbuddy-dark.png" alt="" />
</span>
</div>
<div class="side-item is-active"><span></span>Chat</div>
<div class="side-item"><span></span>Knowledge</div>
<div class="side-item"><span></span>Notes</div>
<div class="side-item"><span></span>Heartbeat</div>
<div class="side-item"><span></span>Run history</div>
<div class="sidebar-spacer"></div>
<div class="side-item"><span></span>Settings</div>
</aside>
<div class="app-content">
<div class="app-content-header">
<div>
<strong>Fix cross-platform build</strong>
<span>Project: Desktop client</span>
</div>
<div class="mode-pill">Continue · Execute</div>
</div>
<div class="message-area">
<div class="message message--user">Fix the build and validate all three desktop platforms.</div>
<div class="message message--assistant">
<div class="assistant-label">
<span class="assistant-avatar" aria-hidden="true">
<span class="brand-icon">
<img class="brand-icon__image brand-icon__image--light" src="./assets/goodbuddy-light.png" alt="" />
<img class="brand-icon__image brand-icon__image--dark" src="./assets/goodbuddy-dark.png" alt="" />
</span>
</span>
<strong>GoodBuddy</strong>
</div>
<p>Agent Runtime loaded the project, Skills, and controlled tools.</p>
<div class="tool-card">
<div class="tool-icon">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6h16M4 12h10M4 18h7" /></svg>
</div>
<div><strong>Preparing environment</strong><span>Continue · Project scope · Controlled tools</span></div>
<span class="tool-state">Ready</span>
</div>
<div class="plan-lines" aria-hidden="true"><span></span><span></span><span></span></div>
</div>
</div>
<div class="composer">
<span>Describe your coding task…</span>
<div class="composer-actions"><span>Execute</span><b></b></div>
</div>
</div>
</div>
</div>
<div class="floating-card floating-card--approval">
<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>
</span>
<span><strong>Unified Agent Runtime</strong><small>Direct models · OpenCode · Continue · DSH</small></span>
</div>
<div class="floating-card floating-card--scope">
<span class="scope-dot"></span>
<span><strong>Cross-platform</strong><small>Windows · macOS · Linux</small></span>
</div>
</div>
</div>
</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">
<div class="section-inner">
<div class="download-grid">
<article class="download-card">
<div class="platform-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="m3 5 8-1v8H3V5Zm10-1.3L21 3v9h-8V3.7ZM3 14h8v8l-8-1v-7Zm10 0h8v9l-8-1v-8Z" />
</svg>
</div>
<div><h3>Windows</h3><p>x64 / arm64 · Installer / portable ZIP</p></div>
<a
class="button button--download"
href="https://github.com/mesalogo/goodbuddy/releases/latest"
target="_blank"
rel="noreferrer"
>Download from GitHub →<span class="sr-only">(opens in a new window)</span></a>
</article>
<article class="download-card">
<div class="platform-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M16.8 12.7c0-2.7 2.2-4 2.3-4.1A5 5 0 0 0 15.2 6c-1.7-.2-3.2 1-4.1 1-.9 0-2.2-1-3.6-1-1.8 0-3.5 1.1-4.5 2.7-2 3.5-.5 8.7 1.4 11.5.9 1.4 2 2.8 3.5 2.7 1.4 0 1.9-.9 3.7-.9 1.7 0 2.2.9 3.7.9s2.5-1.4 3.4-2.7a10 10 0 0 0 1.6-3.3 4.6 4.6 0 0 1-3.5-4.2ZM14.1 4.3A4.7 4.7 0 0 0 15.2 1a4.8 4.8 0 0 0-3.1 1.6A4.4 4.4 0 0 0 11 5.8c1.2.1 2.3-.5 3.1-1.5Z" />
</svg>
</div>
<div><h3>macOS</h3><p>Apple silicon / Intel · DMG / ZIP</p></div>
<a
class="button button--download"
href="https://github.com/mesalogo/goodbuddy/releases/latest"
target="_blank"
rel="noreferrer"
>Download from GitHub →<span class="sr-only">(opens in a new window)</span></a>
</article>
<article class="download-card">
<div class="platform-icon">
<img src="./assets/linux-plain.svg" alt="" />
</div>
<div><h3>Linux</h3><p>x64 / arm64 · AppImage / DEB</p></div>
<a
class="button button--download"
href="https://github.com/mesalogo/goodbuddy/releases/latest"
target="_blank"
rel="noreferrer"
>Download from GitHub →<span class="sr-only">(opens in a new window)</span></a>
</article>
</div>
</div>
</section>
<section class="section features-section" id="features" aria-labelledby="features-title">
<div class="section-inner">
<div class="section-heading">
<div>
<p class="kicker">Unified Agent Runtime</p>
<h2 id="features-title">Different tools, one workflow</h2>
</div>
<p>
Bring Runtime selection, model connections, Skills, MCP, and permissions into one desktop interface.
</p>
</div>
<div class="feature-grid">
<article class="feature-card feature-card--wide feature-card--accent">
<div class="feature-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<circle cx="12" cy="12" r="3" />
<path d="M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M18.4 5.6l-2.1 2.1M7.7 16.3l-2.1 2.1" />
</svg>
</div>
<span class="feature-number">01</span>
<h3>One entry point for multiple Agent Runtimes</h3>
<p>Choose direct models, OpenCode, Continue, or DeepSeek Harness for each task without learning a new entry point.</p>
<div class="provider-pills" aria-label="Supported Agent Runtimes">
<span>Direct models</span><span>OpenCode</span><span>Continue</span><span>DeepSeek Harness</span>
</div>
</article>
<article class="feature-card">
<div class="feature-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 5h16v14H4zM8 22h8M12 19v3" />
<path d="M7 9h2M11 9h2M15 9h2M7 13h10" />
</svg>
</div>
<span class="feature-number">02</span>
<h3>Built for desktop platforms</h3>
<p>Windows, macOS, and Linux releases are available for both x64 and arm64.</p>
</article>
<article class="feature-card">
<div class="feature-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M5 4h14v16H5zM8 8h8M8 12h5" />
<path d="m14 16 2 2 3-4" />
</svg>
</div>
<span class="feature-number">03</span>
<h3>Lower setup overhead</h3>
<p>Select the Runtime, model, work mode, and project in a graphical interface instead of memorizing commands.</p>
</article>
<article class="feature-card">
<div class="feature-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 12h6M12 9v6" />
</svg>
</div>
<span class="feature-number">04</span>
<h3>Shared capabilities, preserved boundaries</h3>
<p>Skills, MCP, and tools follow each Runtime. Ask stays read-only, while Execute remains approval-controlled and auditable.</p>
<div class="mode-row" aria-label="Two work modes">
<span>Ask <small>Read-only</small></span>
<span class="is-accent">Execute <small>Controlled</small></span>
</div>
</article>
<article class="feature-card">
<div class="feature-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 6.5C4 5.1 5.1 4 6.5 4H10l2 2h5.5C18.9 6 20 7.1 20 8.5v9c0 1.4-1.1 2.5-2.5 2.5h-11A2.5 2.5 0 0 1 4 17.5v-11Z" />
<path d="M8 11h8M8 15h5" />
</svg>
</div>
<span class="feature-number">05</span>
<h3>Project context in one place</h3>
<p>Organize conversations, knowledge, tasks, and run history by project without losing context when switching Runtime.</p>
</article>
<article class="feature-card feature-card--wide">
<div class="feature-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M4 13h3l2-6 4 12 2-6h5" />
<path d="M4 4h16v16H4z" />
</svg>
</div>
<span class="feature-number">06</span>
<h3>Trace every run from action to result</h3>
<p>Review tool calls, cancellation, timeouts, token usage, and run history in one place.</p>
</article>
</div>
</div>
</section>
<section class="section assistant-section" id="assistant" aria-labelledby="assistant-title">
<div class="section-inner assistant-grid">
<div class="assistant-intro">
<div class="assistant-mark" aria-hidden="true">
<span class="brand-icon">
<img class="brand-icon__image brand-icon__image--light" src="./assets/goodbuddy-light.png" alt="" />
<img class="brand-icon__image brand-icon__image--dark" src="./assets/goodbuddy-dark.png" alt="" />
</span>
</div>
<p class="kicker">Desktop assistant</p>
<h2 id="assistant-title">Conversations, knowledge, notes, and tasks on your desktop</h2>
<p>
GoodBuddy keeps reference material, to-dos, and long-running work in one desktop workspace,
so everyday assistance and AI coding share the same project context.
</p>
<a class="text-link" href="#download">
Choose your desktop release
<span aria-hidden="true"></span>
</a>
</div>
<div class="assistant-list">
<article>
<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>
</article>
<article>
<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>
</article>
<article>
<span class="assistant-number">03</span>
<div><h3>Understand what is on your desktop</h3><p>Add files, screenshots, app windows, clipboard content, and offline voice input when needed.</p></div>
</article>
<article>
<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>
</article>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="section-inner footer-inner">
<a class="brand brand--footer" href="#home" aria-label="Back to GoodBuddy home">
<span class="brand-icon" aria-hidden="true">
<img class="brand-icon__image brand-icon__image--light" src="./assets/goodbuddy-light.png" alt="" />
<img class="brand-icon__image brand-icon__image--dark" src="./assets/goodbuddy-dark.png" alt="" />
</span>
<span>GoodBuddy</span>
</a>
<p>No account required. One AI assistant for everything.</p>
<div class="footer-links">
<a href="#download">Download</a>
<a href="#features">Agent Runtime</a>
<a href="#assistant">Desktop assistant</a>
<a href="https://github.com/mesalogo/goodbuddy" target="_blank" rel="noreferrer">
GitHub<span class="sr-only">(opens in a new window)</span>
</a>
</div>
<small>© <span data-current-year></span> GoodBuddy. This site uses no third-party analytics.</small>
</div>
</footer>
<script src="./app.js"></script>
</body>
</html>