Skip to content

feat(blog): show the app in the command-line post (Ubuntu-framed, localized)#101

Merged
wavekat-eason merged 3 commits into
mainfrom
feat/cli-blog-screenshots
Jun 22, 2026
Merged

feat(blog): show the app in the command-line post (Ubuntu-framed, localized)#101
wavekat-eason merged 3 commits into
mainfrom
feat/cli-blog-screenshots

Conversation

@wavekat-eason

Copy link
Copy Markdown
Contributor

What

The "Let Your AI Assistant Place Real Phone Calls" post described screens no reader could see. This embeds three real, localized app screenshots — one for each section that genuinely needs one, not one per section:

Image Section it illustrates
in-call What it actually does — a placed call in progress, live transcript, you on the line
settings-automation There's nothing to install — the command-line-access toggle on + the Install-CLI button
settings-automation-agents Connect an AI assistant in one click — the one-click Connect rows (mirrors the assistant table right above it)

Decisions

  • Framed Ubuntu, used directly. These are wavekat-voice's screenshots/framed/ubuntu/… output — real GNOME window chrome, not a CSS frame. We're a Mac + Linux product.
  • Single light theme, per language. A blog post is one page read in one language, and a baked-in frame can't follow the page's dark/light toggle — so one consistent theme, but each localized post shows the app in its language (/blog/cli/<scene>/<code>.webp), all 9 locales.
  • Committed, not built. The private renderer isn't on Cloudflare Pages, so the chosen shots are committed under public/blog/cli/ as WebP (~1.1 MB). Refresh with make blog-screenshots; npm run check:blog-screenshots asserts completeness.

The two settings-automation* scenes are added to wavekat-voice in a companion PR (the agents one is the same page scrolled to the assistants section). This supersedes the earlier site-wide screenshot attempt in #100, which is being closed.

Verify

  • astro build clean (113 pages); the 27 WebPs land in dist/blog/cli/.
  • Visually QA'd the rendered post — both frames sit naturally in the prose.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

…alized)

The "place calls from the command line" post described screens no reader could
see. Embed three real, localized app screenshots — one per section that needs
one, not one per section:

- in-call → "What it actually does" (a placed call, live transcript, you on
  the line).
- settings-automation → "There's nothing to install" (the command-line-access
  toggle on, the Install-CLI button).
- settings-automation-agents → "Connect an AI assistant in one click" (the
  one-click Connect rows for Claude, Cursor, …) — the shot mirrors the
  assistant table right above it.

They use wavekat-voice's Ubuntu/GNOME-framed pipeline output directly (real
window chrome, not a CSS frame — we're a Mac + Linux product), one consistent
light theme, but per-language: each localized post shows the app in its own
language.

Assets live in a shared, reusable namespace — public/screenshots/<scene>/<code>.webp
(so in-call is one file any page can reference, not a per-post copy) — committed
(the private renderer isn't on Cloudflare Pages) and synced by
scripts/sync-screenshots.js (make screenshots / npm run sync:screenshots;
check:screenshots asserts completeness), ~1.1 MB of WebP. The
settings-automation* scenes are added to wavekat-voice in a companion PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@wavekat-eason
wavekat-eason force-pushed the feat/cli-blog-screenshots branch from a58fef3 to 99c6fea Compare June 22, 2026 09:36
@wavekat-eason

Copy link
Copy Markdown
Contributor Author

Companion PR (the Settings → Automation demo scenes): wavekat/wavekat-voice#232.

Eason and others added 2 commits June 22, 2026 21:49
The translated "place calls from the command line" posts left WaveKat
Voice's UI labels in English ("Settings → Automation", "Connect",
"Remove", "Install command-line tool") while the screenshot beside them
shows the app fully in that language — so the prose and the picture
disagreed.

Use each locale's real label, taken verbatim from the app's
translation.json, with the English original in parentheses on the first
mention of each label (localized-only after) so the docs link and
English-mode users still have an anchor. CJK uses full-width ().

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two classes of bad internal links in the blog posts:

- **Broken:** every locale of the command-line post linked to
  `/voice/automation/`, which doesn't exist. The automation reference is
  the synced voice doc at `/docs/voice/automation/` — point there (it's
  English-only, so the same URL for every locale).
- **Locale leak:** the translated posts linked to default-locale URLs
  (`/blog/hello-world`, `/voice/download/`), bouncing readers out of
  their language. Prefix those with the locale where a localized twin
  exists; the common-voice-explorer translations had the same leak to
  `/blog/hello-world`.

Add `scripts/check-links.js` (`npm run check:links`) to stop this
shipping again. Run against the built `dist/`, it fails on (1) any
broken internal link and (2) any localized page linking to a
default-locale URL whose localized twin exists. Both facts come from
`dist/` itself and locale slugs from `i18n.ts`, so there's no parallel
route list to drift; the switcher's intentional English self-link is
excluded. Wired into CI right after the build (docs synced), and
documented in CLAUDE.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@wavekat-eason
wavekat-eason merged commit 21ef963 into main Jun 22, 2026
2 checks passed
@wavekat-eason
wavekat-eason deleted the feat/cli-blog-screenshots branch June 22, 2026 10:04
wavekat-eason pushed a commit that referenced this pull request Jun 22, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.0.36](wavekat-com-v0.0.35...wavekat-com-v0.0.36)
(2026-06-22)


### Features

* **blog:** show the app in the command-line post (Ubuntu-framed,
localized) ([#101](#101))
([21ef963](21ef963))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant