← Galley
Changelog
Every Galley release, newest first, for both editions. Updates are free for every license; download them from your account or pull them from GitHub.
v1.1.0
Latest
The home page shows more of the product. Every other page is unchanged.
Astro
- Dashboard: the product screen is now large enough to read. The text sits above it in two columns, and the screen runs across the page and off its right edge, up to 1600px wide.
- Features: every cell of the bento has a drawing in the run colours (a workflow with a failed step, a day of schedules, a search, concurrency lanes, workers that connect out). The large cell's retry drawing now shows on phones and tablets too. The drawings are SVG files in
public/images/art/bento-*.svg. - Docs on the home page: a new section between the dashboard and the SDKs shows the docs (a picture of the quickstart page, light and dark) with links to the docs and the API reference. It is
docsinsrc/data/home.ts. - Figures: on the home page the figures band is ink, so the blue retry statement stays the page's one coloured band. Figures on other pages keep the colour band.
- Phones: the hero's code window shows the job itself at a larger size, and long lines wrap with a hanging indent instead of running off the edge (the copy button still copies the whole file). The heading is a step smaller under 360px. On tablets the run timeline sits in the text column, with a drawing of its own from 768px (
timeline-tablet.webp), instead of the phone drawing stretched across the band. - Tablets: the hero heading and the retry statement scale with the window between 640 and 1024px instead of jumping to their desktop size at 640px.
- Logos without motion (reduced motion): the still grid fits every width; a wide mark shrinks to its column instead of running into its neighbour or past the edge.
Next.js + Sanity
- Dashboard: the product screen is now large enough to read. The text sits above it in two columns, and the screen runs across the page and off its right edge, up to 1600px wide.
- Features: every cell of the bento has a drawing in the run colours (a workflow with a failed step, a day of schedules, a search, concurrency lanes, workers that connect out). The large cell's retry drawing now shows on phones and tablets too. The drawings are SVG files in
public/images/art/bento-*.svg, drawn by the home page's CSS. - Docs on the home page: a new section between the dashboard and the SDKs shows the docs (a picture of the quickstart page, light and dark) with links to the docs and the API reference. In the Studio it is a split block on the home page (seed:
seed/documents.json). - Figures: on the home page the figures band is ink, so the blue retry statement stays the page's one coloured band. Figures on other pages keep the colour band.
- Phones: the hero's code window shows the job itself at a larger size, and long lines wrap with a hanging indent instead of running off the edge (the copy button still copies the whole file). The heading is a step smaller under 360px. On tablets the run timeline sits in the text column, with a drawing of its own from 768px (
timeline-tablet.webp), instead of the phone drawing stretched across the band. - Tablets: the hero heading and the retry statement scale with the window between 640 and 1024px instead of jumping to their desktop size at 640px.
- Logos without motion (reduced motion): the still grid fits every width; a wide mark shrinks to its column instead of running into its neighbour or past the edge.
A faster first image on 1× screens hosted on Cloudflare. Nothing else changes.
Astro
- Images: the 1× files are now
-1x.webpinstead of@1x.webp(dashboard-1x.webp,timeline-1x.webp,cover-1x.webp). Cloudflare answers a path with@in it with a redirect, so on Cloudflare Workers each 1× image cost an extra round trip, the cover of a customer story included. If you added your own@1xfiles, rename them and update theirsrcset.
- Images: the 1× files are now
Sharp images on retina screens. Pages, content and layout are unchanged.
Astro
- Images: the product dashboard, the run timeline and the three customer-story covers now ship at twice the size they are shown (dashboard 3200×2000 and its dark version 3200×2400, timeline 2880×1032, covers 3200×2400). The light dashboard, the timeline and the covers each have a 1× file beside it (
dashboard@1x.webp,timeline@1x.webp,cover@1x.webp) and asrcset, so a retina screen gets the sharp file and a 1× screen the lighter one.pnpm draw-demowrites both sizes of the covers. - Customer stories: a story's
imagetakes an optionalsrcset(see "Adding a customer story" in the README). A single file without one still works. - Sections: updated to the latest section library. Every section image passes its
srcseton. State and effect tokens a preset leaves out get defaults, so hover and press colours never go blank. The effects stylesheet (the home hero's light field) is now its own file,src/sections/styles/effects.css, imported insrc/styles/global.css.
Next.js + Sanity
- Images: the product dashboard, its dark version and the run timeline ship at twice the size they are shown (3200×2000, 3200×2400 and 2880×1032), and the seed uploads the three customer-story covers at 3200×2400. Images from Sanity get a
srcsetfrom the CDN with widths up to each image's own size, so upload images at about twice the width they are shown. - Sections: updated to the latest section library. Every section image gets a
srcsetand asizesthat matches its slot. State and effect tokens a preset leaves out get defaults, so hover and press colours never go blank. The effects stylesheet (the home hero's light field) is now its own file,src/sections/styles/effects.css, imported insrc/styles/global.css.
- Images: the product dashboard, the run timeline and the three customer-story covers now ship at twice the size they are shown (dashboard 3200×2000 and its dark version 3200×2400, timeline 2880×1032, covers 3200×2400). The light dashboard, the timeline and the covers each have a 1× file beside it (
The first release.
Astro
- Pages: home (a hero with an install command and a code window, customer logos, features, the product, code tabs per SDK, figures, quotes, the latest releases), pricing (four plans with monthly and yearly prices, a comparison table, FAQ), customers (stories, logos, quotes), a page per customer story, about (story, figures, values, team, open roles), a changelog with pagination and a page per release, contact (form beside office hours and links, FAQ), privacy and terms shells, a thank-you page for forms, and a 404 page.
- Docs: a docs home (intro, search, cards to the sections, popular pages, help) and a page per Markdown file, in sidebar groups by folder. Each page has breadcrumbs, a Copy page button, "On this page" with the current heading, previous and next links and an Edit this page link; the sidebar folds into a disclosure on phones. API pages list their endpoints under the title from the front matter.
- Writing docs: callouts (
> **Note**,> **Tip**,> **Warning**), endpoint lines (a paragraph of only `POST /v1/runs), code highlighted at build time in the preset's colours, file names on code fences (title="file.ts"`), a copy button on every code block, and styled tables. - Search and AI tools: a JSON search index built at build time and searched in the browser (
/or Ctrl/⌘K), no search service needed; every docs page also as Markdown at/docs/<group>/<page>.md, which Copy page copies; and/llms.txtlisting them all. Every release and customer story is Markdown too (/changelog/<release>.md,/customers/<story>.md), and/llms-full.txtholds the whole long-form site in one file. - Changelog: one Markdown file per release with a typed front matter (title, date, version, tags new, improved, fixed or deprecated, summary), six to a page, the latest three on the home page, previous and next on each release, and an RSS feed.
- Customer stories: one MDX file per story with a typed front matter (customer, year, products used, cover, facts, link, outcomes, quote, order). Each page gets a case header, the story in a readable column, the outcomes in figures, the quote and the next two stories.
- Design: Runnel's run states as the theme's colours (done, failed, retried, running) in the hero's field of run marks, the retry diagram, code and a colour band on one or two sections a page; a run timeline drawn to scale (with a phone version); a footer that ends on a live status line and the wordmark at display size; one left axis on every page; a face (portrait or initials) for every quote.
- Motion and states: code that sets line by line, a run stream that drifts, a retry that resolves as it scrolls in, and every control with hover, focus, pressed, disabled, current and busy states. All of it stops with reduced motion, and nothing moves the layout.
- Presets: Galley (paper, ink and a printer's blue, light and dark with a switch in the header), Proof (warm proof paper with a proofreader's red and serif headings, light) and Terminal (near-black with a phosphor-green action, dark), switched with one import in
src/styles/global.css. Self-hosted fonts under the SIL Open Font License. - Content: collections for docs pages, releases, customer stories and site settings (navigation, footer, announcement bar, form endpoints); page copy and the docs sidebar groups in typed data files.
- SEO: titles, descriptions, canonical links, Open Graph images for every page, docs page, release and customer story, JSON-LD for the organisation, the website, docs pages, customer stories and FAQs, a sitemap and robots.txt, breadcrumbs on nested pages, and the plans as offers on the pricing page.
- Forms: contact and newsletter forms that post without JavaScript to an endpoint you choose, with a honeypot field against bots; an optional Cloudflare Worker handler that fails closed and never logs what visitors send.
- Deploying: ready for Cloudflare Workers (static assets), Netlify and Vercel.
- Demo images: the product dashboard (light and dark), the workflow diagram, customer-story covers, customer logos, team portraits and the favicon, all drawn by
pnpm draw-demo; no stock photos, real people or real brands.
Next.js + Sanity
- Pages: home (a hero with an install command and a code window, customer logos, features, the product, code tabs per SDK, figures, quotes, the latest releases), pricing (four plans with monthly and yearly prices, a comparison table, FAQ), customers (stories, logos, quotes), a page per customer story, about (story, figures, values, team, open roles), a changelog with pagination and a page per release, contact (form beside office hours and links, FAQ), privacy and terms shells, a thank-you page for forms, and a 404 page.
- Docs: a docs home from one Docs home document (intro, search, cards to the sections, popular pages, help) and a page per docs page document, in sidebar groups. Each page has breadcrumbs, a Copy page button, "On this page" with the current heading, previous and next links and an Edit this page link; the sidebar folds into a disclosure on phones. API pages list their endpoints under the title.
- Writing docs: callouts (a quote that starts with a bold Note, Tip or Warning), endpoint lines (a paragraph of only `
POST /v1/runs` in code), code highlighted on the server in the preset's colours, file names on code blocks, a copy button on every code block, and styled tables. - Search and AI tools: a JSON search index at
/docs/search.json, searched in the browser (/or Ctrl/⌘K), no search service needed; every docs page also as Markdown at/docs/<group>/<page>.md, which Copy page copies; and/llms.txtlisting them all. Every release and customer story is Markdown too (/changelog/<release>.md,/customers/<story>.md), and/llms-full.txtholds the whole long-form site in one file. - Changelog: one release document per release (title, date, version, tags new, improved, fixed or deprecated, summary, rich-text body), six to a page, the latest three on the home page, newer and older links on each release, and an RSS feed.
- Customer stories: one document per story (customer, year, products used, cover, facts, link, outcomes, quote, order) with a rich-text body. Each page gets a case header, the story in a readable column, the outcomes in figures, the quote and the next two stories.
- Sanity: a Studio (
studio/) with a page builder of 27 section types (hero with code, tabs, pricing and changelog among them), each with its layouts and tones and an optional anchor; docs pages by group and order; the Docs home; customer stories in their order; releases newest first; one Site document for the announcement bar, header, footer and organisation. The Presentation tool previews drafts on the site.pnpm seedimports the demo content and images into a new dataset. - Next.js: App Router and React Server Components; pages generated ahead of time and refreshed in the background (a minute at most, or at once with the publish webhook); the read token server-only; a Content-Security-Policy.
- Design: Runnel's run states as the theme's colours (done, failed, retried, running) in the hero's field of run marks, the retry diagram, code and a colour band on one or two sections a page; a run timeline drawn to scale (with a phone version); a footer that ends on a live status line and the wordmark at display size; one left axis on every page; a face (portrait or initials) for every quote.
- Motion and states: code that sets line by line, a run stream that drifts, a retry that resolves as it scrolls in, and every control with hover, focus, pressed, disabled, current and busy states. All of it stops with reduced motion, and nothing moves the layout.
- Presets: Galley (paper, ink and a printer's blue, light and dark with a switch in the header), Proof (warm proof paper with a proofreader's red and serif headings, light) and Terminal (near-black with a phosphor-green action, dark), switched with two lines. Self-hosted fonts under the SIL Open Font License, through next/font.
- SEO: titles, descriptions, canonical links, Open Graph images for every page, docs page, release and customer story, JSON-LD for the organisation, the website, docs pages, releases, customer stories and FAQs, a sitemap, robots.txt and an RSS feed, breadcrumbs on nested pages, and the plans as offers on the pricing page.
- Forms: contact and newsletter forms that post without JavaScript to the site's own handler, which forwards each submission to
FORWARD_URL, fails closed without it, drops honeypot hits and never logs what visitors send. - Deploying: Vercel, or Cloudflare Workers through OpenNext.
- Demo images: the product dashboard (light and dark), the workflow diagram, customer-story covers, customer logos, team portraits and the favicon, all drawn for the theme; no stock photos, real people or real brands.