feat(docs): everforest refresh, ask-the-codebase search, and seo - #453
Merged
Conversation
Rework flowexec.io so it reads as a sibling of the other Dockery Labs sites, and give it a way to answer questions the guides do not cover. Design - Replace the 57-line custom.css with a real token layer: Everforest ramps for both modes (there was no .dark block at all before, so dark mode was VitePress's default greys under an aqua accent), hairline rules instead of shadows, a 12px radius, and a looser vertical rhythm. Light-mode accents are darkened from the published palette, which lands near 2.8:1 on cream. - Rebuild the home page: eyebrow, numbered sections, an install strip carrying the latest release tag, and a card grid in place of the emoji feature list. - Add an ambient canvas backdrop on the home page; it pauses on hidden tabs and holds a static frame under prefers-reduced-motion. - Point Shiki at its bundled everforest themes so code blocks match the site. Ask the codebase - Add an Ask panel that queries DeepWiki's public MCP endpoint straight from the browser, plus a bridge row inside the existing search modal that hands the current query across. Local search is untouched and still instant. - The bridge feature-detects every VitePress-internal selector it relies on, so an upgrade costs the bridge rather than the button. Reference docs - Rewrite Cobra's output in docsgen: flag listings become tables (the fixed-width columns overflowed the content column and clipped their own descriptions), fences get a language, and each page gains a real h1. - Fix the Required column on config reference pages, which read $prop.Required inside a range instead of the page's own required list and so was always empty. Replace the cross glyph, which read as "not required". SEO - Add Open Graph, Twitter card, canonical, JSON-LD, and a social image; none of these existed, so links previewed as a bare URL. - Turn on cleanUrls: the sitemap advertised .html URLs that Cloudflare Pages redirects, against internal links that were already extensionless. - Emit per-page descriptions from the generators for all reference pages. Split the integrations guide into containers and github-actions, and drop an orphaned 3 MB gif from public/. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012mnVfKRbSbYV43gdjcdxdX
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Cobra's UnquoteUsage treats a backticked span in a flag's usage string as an
explicit value-name override — the documented way to write `--port `number``.
Three flags used backticks meaning inline code, so Cobra took the quoted text
as the placeholder and `flow --help` advertised types that do not exist:
--cmd flow logs
--spec flow logs
-t, --template flow set template
Dropping the backticks restores the type-derived placeholder (stringArray,
string, string). No test asserts on these strings.
The template flag named a second problem: there is no `flow set template`
command. Templates are registered with `flow template add`, so the sentence
pointed at something that has never existed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012mnVfKRbSbYV43gdjcdxdX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reworks flowexec.io: a real design system instead of a 57-line override file, a way to ask
questions the guides don't answer, and the SEO/social tags the site never had.
Almost entirely docs and
tools/docsgen. The one runtime change is a second commit fixing threeflag usage strings that made
flow --helpprint types that do not exist — see the last section.Design
The site was stock VitePress with a
custom.cssthat was mostly!importanthero sizing and adrop-shadow(5px 5px 100px #D699B6). There was no.dark {}block at all — dark mode wasVitePress's default greys with an aqua accent painted on top.
styles/tokens.cssmaps Everforest onto VitePress's variable contract for both modes. Light-modeaccents are darkened from the published palette, which lands near 2.8:1 on cream — under the
4.5:1 link text needs. Every value is checked against its own background.
styles/rhythm.css/styles/overrides.css: hairline rules instead of shadows, a 12px radius,a looser vertical rhythm, cards that change border colour and never scale.
everforest-light/everforest-darkreplace GitHub's blues in code blocks.(fetched at build time, with a fallback so a rate-limited CI build still succeeds), and a card
grid in place of the emoji feature list.
prefers-reduced-motion, reads its colours from the theme variables.Ask the codebase
⌘Klocal search is untouched and still instant. Alongside it, an Ask AI button (⌘I) opens apanel that queries DeepWiki's public MCP endpoint directly from the browser — no proxy, no new
deploy surface, no secrets. The existing search modal also grows a bridge row that hands the current
query across.
Worth knowing when reviewing:
Access-Control-Allow-Origin: *. It is alsoundocumented and unversioned, so the UI fails to a plain "ask on DeepWiki" link rather than a
broken modal. Direct-from-browser also means no caching — every ask costs the full ~15s.
markdown-itwithhtml: false. That is the sanitisationboundary; nothing reaches the DOM as markup.
.VPLocalSearchBox,.shell,#localsearch-input). All three are feature-detected — if an upgrade renames any of them thebridge disappears and the standalone button carries on.
guides/ai-tools.mdsays plainly that answersare model-generated and can lag
main.Reference docs (
tools/docsgen)Cobra's markdown is a flat dump, and the flag listings were the worst of it — fixed-width
columns that overflowed the content column and clipped their own descriptions off the right edge.
A new post-processing pass rewrites them into tables, gives fences a language, and turns the
command name into a real page title instead of an h2 with a section rule.
The parser is deliberately conservative: anything it cannot parse falls back to a verbatim code
block rather than a mangled table. It handles Cobra's backtick-derived placeholders that contain
spaces and wrapped description lines.
Two bugs fixed on the config reference:
{{IsRequired .Required $key}}inside arange, where.is the property — so it consultedthe property's own required list rather than the page's.
templateis required and reportednothing.
✘meant required, which reads as the exact opposite. NowYes.SEO
There were no Open Graph tags, no Twitter card, no canonical, and no social image, so a link to
flowexec.io previewed as a bare URL.
canonical,og:*andtwitter:*viatransformPageData; site-wide image, card type,theme-color,apple-touch-icon, and aSoftwareApplicationJSON-LD block.cleanUrls: true. The sitemap advertised.htmlURLs that Cloudflare Pages 308-redirects,while internal links were already extensionless — so every sitemap entry pointed at a redirect and
both forms were reachable. Sitemap, links, and canonicals now agree.
schema descriptions), so they stay correct as commands change. The 23 authored pages are written
by hand.
Guides
integrations.mdsplit into Containers (theexec.containerfield with its full option table,plus running the CLI from the image) and GitHub Actions (inputs and outputs read from
action.yaml). Both sit under a new Integrations group alongside AI Tools. All inbound links andllms.txtrepointed.Containers covers the Python support from #439–#443 that landed while this was in flight: the
interpreter-dependent
entrypointdefault, and the host Python env vars that are dropped at thecontainer boundary regardless of
inheritEnv.Also: nav collapsed from five items to three (the two reference sections became one menu), a
Dockery Labs footer, and
docs/public/demo.gifdeleted — 3 MB, orphaned, nothing referenced it.Testing
flow validatepasses: lint 0 issues, unit + e2e green, 10 flow files valid.npm run buildclean; VitePress dead-link checking is on, so the guide restructure is verified.stream parses, markdown renders. Two bugs found that way and fixed: DeepWiki separates frames
with
\r\n\r\nrather than\n\n, and the modal isv-if-mounted so awatchon the open flagregistered too late to ever autofocus the input.
Not verified: Chrome would not give me a viewport above ~960px for part of the session, so the
desktop tier of the hero mark sizing was confirmed by reading the compiled CSS rather than by eye.
Worth a glance on a wide screen.
Second commit: a flag-rendering bug this surfaced
Cobra's
UnquoteUsagetreats a backticked span in a flag's usage string as an explicitvalue-name override — the documented way to write
--port `number`. Three flags usedbackticks meaning inline code, so Cobra took the quoted text as the placeholder and
flow --helpadvertised types that do not exist:Dropping the backticks restores the type-derived placeholder —
stringArray,string,string.Verified against a built binary before and after; no test asserts on these strings.
The template flag carried a second, independent problem: there is no
flow set templatecommand. Templates are registered with
flow template add, so that sentence pointed atsomething that has never existed. Corrected in the same change.
This is a CLI behaviour change rather than a docs one, but it belongs here: the new reference
tables put the value placeholder under a column headed Type, which makes
flow logsread as atype far more loudly than the old code block did. Shipping the docs overhaul without it would mean
knowingly publishing the wrong output.
🤖 Generated with Claude Code
https://claude.ai/code/session_012mnVfKRbSbYV43gdjcdxdX