fix(docs): align OSS docs presentation and SEO (#17809)
@@ -89,6 +89,11 @@ On the computer you want to use as the client:
|
||||
caption="On the client: name the server, paste its access link, and add it. The pairing code is redacted in this example."
|
||||
/>
|
||||
|
||||
<ImagePlaceholder
|
||||
src="/docs/remote-server-share-desktop.png"
|
||||
caption="Share an Orca desktop runtime with another client over a private network."
|
||||
/>
|
||||
|
||||
Adding a server saves it without forcing every new project onto it. Open **Advanced → Active Server** only when you want server-routed projects, terminals, provider checks, and browser or mobile handoff to use that server by default.
|
||||
|
||||
## Use the remote server
|
||||
|
||||
@@ -2,8 +2,12 @@
|
||||
title: Annotate AI Diff
|
||||
---
|
||||
|
||||
import { ImagePlaceholder } from '@/components/docs/prose';
|
||||
|
||||
Annotate AI Diff is Orca's inline review loop for agent-generated code. You leave comments on any line of any AI-generated hunk, then send them back to the agent as a single batch for revision — no copying line numbers, no context-switching.
|
||||
|
||||
<ImagePlaceholder src="/docs/annotate-ai-diff.gif" caption="Annotate a generated diff and send one batch of line-level notes back to the agent" />
|
||||
|
||||
## Leave a comment
|
||||
|
||||
1. Hover any line in the diff. A **+** appears in the gutter.
|
||||
|
||||
@@ -82,6 +82,11 @@ Providers people wire today include Vercel Sandbox, Fly, Modal, plain SSH hosts,
|
||||
caption="Settings → Experimental → Cloud VM — enable the skill, then have an agent set up a recipe for the repo."
|
||||
/>
|
||||
|
||||
<ImagePlaceholder
|
||||
src="/docs/ways-to-run-local-sidebar.png"
|
||||
caption="Choose a local or remote run target from the workspace sidebar."
|
||||
/>
|
||||
|
||||
**Good fit when:** you want clean isolation per task, disposable compute, or a standard environment every agent boots into.
|
||||
|
||||
**Setup sketch:**
|
||||
|
||||
|
After Width: | Height: | Size: 197 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 39 KiB |
@@ -0,0 +1,13 @@
|
||||
import type { MetadataRoute } from 'next'
|
||||
import { source } from '@/lib/source'
|
||||
|
||||
const siteUrl = 'https://www.onorca.dev'
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
return source.getPages().map((page) => ({
|
||||
url: `${siteUrl}${page.url}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly',
|
||||
priority: page.url === '/docs' ? 0.9 : 0.7
|
||||
}))
|
||||
}
|
||||
@@ -44,7 +44,9 @@ export default function RootLayout({
|
||||
return (
|
||||
<html lang="en" className="bg-background text-foreground" suppressHydrationWarning>
|
||||
<body className="font-sans antialiased" suppressHydrationWarning>
|
||||
<RootProvider search={{ enabled: false }}>{children}</RootProvider>
|
||||
<RootProvider search={{ enabled: false }} theme={{ defaultTheme: 'dark' }}>
|
||||
{children}
|
||||
</RootProvider>
|
||||
</body>
|
||||
</html>
|
||||
)
|
||||
|
||||
@@ -62,6 +62,16 @@ export function DocsFooter() {
|
||||
Discord
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://x.com/orca_build"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="rounded-md px-1 py-0.5 transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50"
|
||||
>
|
||||
X
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,9 +1,32 @@
|
||||
import Link from 'next/link'
|
||||
import Image from 'next/image'
|
||||
import { GitBranch, MessageCircle, X } from 'lucide-react'
|
||||
import { MessageCircle, Star } from 'lucide-react'
|
||||
import { ThemeSwitch } from 'fumadocs-ui/layouts/shared/slots/theme-switch'
|
||||
|
||||
export function DocsHeader() {
|
||||
async function getGithubStars(): Promise<number | undefined> {
|
||||
try {
|
||||
const response = await fetch('https://api.github.com/repos/stablyai/orca', {
|
||||
headers: { Accept: 'application/vnd.github+json' },
|
||||
next: { revalidate: 3600 }
|
||||
})
|
||||
if (!response.ok) {
|
||||
return undefined
|
||||
}
|
||||
const payload = (await response.json()) as { stargazers_count?: unknown }
|
||||
return typeof payload.stargazers_count === 'number' ? payload.stargazers_count : undefined
|
||||
} catch {
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
function formatStars(stars: number): string {
|
||||
return stars >= 1000 ? `${(stars / 1000).toFixed(1).replace(/\.0$/, '')}k` : String(stars)
|
||||
}
|
||||
|
||||
export async function DocsHeader() {
|
||||
const stars = await getGithubStars()
|
||||
const formattedStars = stars === undefined ? undefined : formatStars(stars)
|
||||
|
||||
return (
|
||||
<header className="fixed inset-x-0 top-0 z-30 border-b border-border bg-background/95 backdrop-blur-xl supports-[backdrop-filter]:bg-background/85">
|
||||
<div className="container mx-auto flex h-14 max-w-[1200px] items-center justify-between gap-4 px-4">
|
||||
@@ -61,7 +84,9 @@ export function DocsHeader() {
|
||||
className="hidden size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 sm:flex"
|
||||
aria-label="Follow Orca on X"
|
||||
>
|
||||
<X className="size-4" aria-hidden="true" />
|
||||
<span aria-hidden="true" className="text-[15px] font-semibold leading-none">
|
||||
𝕏
|
||||
</span>
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/stablyai/orca"
|
||||
@@ -69,8 +94,13 @@ export function DocsHeader() {
|
||||
rel="noopener noreferrer"
|
||||
className="inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-[13px] font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50"
|
||||
>
|
||||
<GitBranch className="size-4" aria-hidden="true" />
|
||||
GitHub
|
||||
<Star className="size-3.5 fill-current" aria-hidden="true" />
|
||||
<span>Star</span>
|
||||
{formattedStars && (
|
||||
<span className="rounded-full bg-accent px-1.5 py-0.5 text-[11px] font-semibold text-foreground">
|
||||
{formattedStars}
|
||||
</span>
|
||||
)}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||