Commit27895b5unknown_key
Merge branch 'main' into claude/design-2026
5 files changed+3440−59527895b5f720abab0c7fa5b2e73974e8a3b8aacce
5 changed files+3440−595
Modifiedsrc/app.tsx+42−12View fileUnifiedSplit
@@ -31,6 +31,7 @@ import healthRoutes from "./routes/health-probe";
3131import healthDashboardRoutes from "./routes/health";
3232import statusRoutes from "./routes/status";
3333import helpRoutes from "./routes/help";
34import marketingRoutes from "./routes/marketing";
3435import seoRoutes from "./routes/seo";
3536import { platformStatus } from "./routes/platform-status";
3637import insightRoutes from "./routes/insights";
@@ -238,6 +239,9 @@ app.route("/", statusRoutes);
238239// /help — quickstart + API cheatsheet
239240app.route("/", helpRoutes);
240241
242// /pricing, /features, /about — marketing surface
243app.route("/", marketingRoutes);
244
241245// SEO: robots.txt + sitemap.xml
242246app.route("/", seoRoutes);
243247
@@ -321,12 +325,23 @@ app.route("/", webRoutes);
321325app.notFound((c) => {
322326 return c.html(
323327 <Layout title="Not Found">
324 <div class="empty-state">
325 <h2>404</h2>
326 <p>Page not found.</p>
327 <a href="/" style="margin-top: 12px; display: inline-block">
328 Go home
329 </a>
328 <div class="error-page">
329 <div class="error-page-code">404</div>
330 <div class="eyebrow">Not found</div>
331 <h1 class="display error-page-title">
332 That page <span class="gradient-text">isn't here.</span>
333 </h1>
334 <p class="error-page-sub">
335 The URL might be wrong, the resource might have moved, or you
336 might not have permission to see it.
337 </p>
338 <div class="error-page-actions">
339 <a href="/" class="btn btn-primary btn-lg">Go home</a>
340 <a href="/explore" class="btn btn-ghost btn-lg">Explore repos</a>
341 </div>
342 <div class="error-page-meta">
343 <span class="meta-mono">{c.req.method} {c.req.path}</span>
344 </div>
330345 </div>
331346 </Layout>,
332347 404
@@ -340,15 +355,30 @@ app.onError((err, c) => {
340355 path: c.req.path,
341356 method: c.req.method,
342357 });
358 const requestId = c.get("requestId" as never) as string | undefined;
343359 return c.html(
344360 <Layout title="Error">
345 <div class="empty-state">
346 <h2>Something went wrong</h2>
347 <p>An unexpected error occurred.</p>
361 <div class="error-page">
362 <div class="error-page-code error-page-code-err">500</div>
363 <div class="eyebrow" style="color:var(--red)">Server error</div>
364 <h1 class="display error-page-title">
365 Something <span class="gradient-text">went wrong.</span>
366 </h1>
367 <p class="error-page-sub">
368 The error has been reported. Try again — if it persists, file
369 an issue with the request ID below.
370 </p>
371 <div class="error-page-actions">
372 <a href={c.req.path} class="btn btn-primary btn-lg">Retry</a>
373 <a href="/" class="btn btn-ghost btn-lg">Go home</a>
374 </div>
375 {requestId && (
376 <div class="error-page-meta">
377 <span class="meta-mono">request-id: {requestId}</span>
378 </div>
379 )}
348380 {process.env.NODE_ENV !== "production" && (
349 <pre style="margin-top: 16px; text-align: left; font-size: 12px; color: var(--red)">
350 {err.message}
351 </pre>
381 <pre class="error-page-trace">{err.message}</pre>
352382 )}
353383 </div>
354384 </Layout>,
Addedsrc/routes/marketing.tsx+1164−0View fileUnifiedSplit
Large file (1,164 lines). Load full file
Modifiedsrc/views/components.tsx+9−11View fileUnifiedSplit
@@ -26,7 +26,7 @@ export const RepoHeader: FC<{
2626}) => (
2727 <div class="repo-header">
2828 <div>
29 <div style="display: flex; align-items: center; gap: 8px; font-size: 20px">
29 <div class="repo-header-title">
3030 <a href={`/${owner}`} class="owner">
3131 {owner}
3232 </a>
@@ -36,8 +36,7 @@ export const RepoHeader: FC<{
3636 </a>
3737 {archived && (
3838 <span
39 class="badge"
40 style="background:var(--bg-secondary);color:var(--text-muted);font-size:11px;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:0.5px"
39 class="repo-header-pill repo-header-pill-archived"
4140 title="Read-only: pushes and new issues/PRs disabled"
4241 >
4342 Archived
@@ -45,8 +44,7 @@ export const RepoHeader: FC<{
4544 )}
4645 {isTemplate && (
4746 <span
48 class="badge"
49 style="background:var(--bg-secondary);color:var(--accent);font-size:11px;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:0.5px"
47 class="repo-header-pill repo-header-pill-template"
5048 title="This repository can be used as a template"
5149 >
5250 Template
@@ -54,7 +52,7 @@ export const RepoHeader: FC<{
5452 )}
5553 </div>
5654 {forkedFrom && (
57 <div style="font-size: 12px; color: var(--text-muted); margin-top: 2px">
55 <div class="repo-header-fork">
5856 forked from <a href={`/${forkedFrom}`}>{forkedFrom}</a>
5957 </div>
6058 )}
@@ -166,24 +164,24 @@ export const RepoNav: FC<{
166164 </a>
167165 <a
168166 href={`/${owner}/${repo}/explain`}
169 class={active === "explain" ? "active" : ""}
170 style="margin-left: auto; color: #bc8cff"
167 class={`repo-nav-ai${active === "explain" ? " active" : ""}`}
168 style="margin-left: auto"
171169 >
172170 {"\u2728"} Explain
173171 </a>
174 <a href={`/${owner}/${repo}/ask`} style="color: #bc8cff">
172 <a href={`/${owner}/${repo}/ask`} class="repo-nav-ai">
175173 {"\u2728"} Ask AI
176174 </a>
177175 <a
178176 href={`/${owner}/${repo}/spec`}
179 style="color: #bc8cff"
177 class="repo-nav-ai"
180178 title="Spec to PR — paste a feature spec, AI opens a draft PR"
181179 >
182180 {"\u2728"} Spec
183181 </a>
184182 <a
185183 href={`/${owner}/${repo}/ai/tests`}
186 style="color: #bc8cff"
184 class="repo-nav-ai"
187185 title="AI Tests \u2014 generate failing test stubs from a source file"
188186 >
189187 {"\u2728"} Tests
Modifiedsrc/views/landing.tsx+925−246View fileUnifiedSplit
Large file (1,301 lines). Load full file
Modifiedsrc/views/layout.tsx+1300−326View fileUnifiedSplit
Large file (1,935 lines). Load full file