diff --git a/cmd/ob/main.go b/cmd/ob/main.go index c5907747..f1e4a8cd 100644 --- a/cmd/ob/main.go +++ b/cmd/ob/main.go @@ -37,7 +37,7 @@ func newRootCmd() *cobra.Command { g := &globalFlags{} root := &cobra.Command{ Use: "ob", - Short: "onebox — one application, one host", + Short: "onebox — one application, one server", Long: "onebox (ob) — plan-before-apply production operations for one application on one server.\n\nYou describe what the application is in ob.yml (or ob.yaml); Onebox generates\nthe Compose runtime, the names, the routing and the supporting services.\nAgentless over SSH, health-gated, journaled and fenced.", Version: version, SilenceUsage: true, diff --git a/docs/product.md b/docs/product.md index d01e297a..61b79465 100644 --- a/docs/product.md +++ b/docs/product.md @@ -1,4 +1,4 @@ -# Onebox — production operations for one application on one box +# Onebox — production operations for one application on one server > Status: product direction > diff --git a/site/astro.config.mjs b/site/astro.config.mjs index 119dca39..5f923cb5 100644 --- a/site/astro.config.mjs +++ b/site/astro.config.mjs @@ -17,12 +17,21 @@ export default defineConfig({ integrations: [ starlight({ title: "Onebox", - // Without this the landing page, whose own title is also "Onebox", - // renders as "Onebox | Onebox". + // The separator between a page's title and the site's: "Install · Onebox". + // It was added for the landing page, which is titled "Onebox" like the + // site and so read as "Onebox | Onebox" — that it still read as + // "Onebox · Onebox" afterwards is the part the original note missed. The + // landing page now sets its own title outright and does not pass through + // here at all; every other page does, which is what this is for. titleDelimiter: "·", description: "Production operations for an application intentionally running on one server.", - tagline: "One application. One box. Evidence-backed operations.", + // The project tagline, in the same words as the GitHub description and the + // landing page's title. Starlight renders this only on a splash page that + // does not supply its own hero tagline; index.mdx supplies one, so today + // this has no output. It is kept in step anyway, because the day a second + // splash page exists is not the day to discover the tagline drifted. + tagline: "Plan-before-apply deploys. Zero downtime. One box.", social: [ { icon: "github", diff --git a/site/src/content/docs/index.mdx b/site/src/content/docs/index.mdx index 5584c86e..9f2643e4 100644 --- a/site/src/content/docs/index.mdx +++ b/site/src/content/docs/index.mdx @@ -3,6 +3,34 @@ title: Onebox description: Production operations for an application intentionally running on one server. summary: Landing page. What Onebox is, who it is for, and the fastest path into it. template: splash +# This page's own title is the site title, so Starlight's +# " " pattern rendered it as "Onebox · +# Onebox". titleDelimiter in astro.config.mjs chose the separator; it cannot +# know both halves are the same word. +# +# Overriding here is the mechanism that works. Emitting a from the Head +# component instead produces two of them, with Starlight's own — the wrong one — +# first; that was measured, not assumed. Starlight dedupes a frontmatter `title` +# tag against its default, so this one replaces it rather than joining it. +# +# og:title is set too. Starlight defaults it to the bare page title, so without +# this the link renders in Slack, X and LinkedIn as a card called "Onebox" — +# identified by its own name and nothing else, which is the problem this block +# exists to fix. +# +# The wording is the three beats the repository already uses on itself: the +# GitHub description reads "plan-before-apply, zero-downtime deploys for one +# box". As one sentence that is 61 characters and long enough to be cut short in +# search results, so it is split into clauses rather than trimmed — every idea +# survives. Search engines cut on rendered width rather than a character count, +# so 59 is shorter, not guaranteed safe. +head: + - tag: title + content: "Onebox · Plan-before-apply deploys. Zero downtime. One box." + - tag: meta + attrs: + property: og:title + content: "Onebox · Plan-before-apply deploys. Zero downtime. One box." hero: tagline: | Production operations for an application intentionally running on one server.