Skip to content

feat(voice): add hold/transfer + HD to overview#120

Merged
wavekat-eason merged 9 commits into
mainfrom
feat/voice-overview-hold-transfer-hd
Jul 6, 2026
Merged

feat(voice): add hold/transfer + HD to overview#120
wavekat-eason merged 9 commits into
mainfrom
feat/voice-overview-hold-transfer-hd

Conversation

@wavekat-eason

Copy link
Copy Markdown
Contributor

Why

The Voice overview page hadn't caught up with the call-handling and audio work landing in wavekat-voice 0.0.42 (hold, call waiting, blind/attended transfer, Opus wideband). It also carried no product screenshot at all.

What changed

Voice overview page — all 9 locales (src/pages/**/voice/index.astro)

  • New "Hold, switch, and transfer" and "Calls in HD" (Opus wideband) feature cards.
  • Two new FAQ entries — hold/transfer (links to the existing blog post) and audio quality — which also feed the FAQPage schema.
  • Added a hero product screenshot (the in-call scene); the overview previously had no app imagery. Each locale shows its own-language shot.
  • Translations match each file's existing terminology; blog links are locale-prefixed.

Draft blog post (src/content/blog/our-own-sip-engine.md)

  • "Why WaveKat Voice Runs on Its Own SIP Engine" — the in-house wavekat-sip engine story.
  • Kept draft: true — hidden in production, to ship in a later release. Not part of this release.

Verification

  • npm run build — 168 pages, clean
  • npm run check:links — no broken/leaking internal links
  • npm run check:screenshots — all 90 present
  • DRAFTS=1 build — SIP draft compiles as a page (169 pages), links OK

🤖 Generated with Claude Code

Reflect the 0.0.42 call-handling and audio work on the Voice overview
page, in all nine locales:

- New "Hold, switch, and transfer" and "Calls in HD" (Opus wideband)
  feature cards.
- Two new FAQ entries (hold/transfer, audio quality) that also feed the
  FAQPage schema.
- Add a product screenshot (the in-call scene) to the overview, which
  previously had no app imagery; each locale shows its own-language shot.

Also lands an unpublished draft blog post on the in-house SIP engine
(wavekat-sip), kept as draft: true for a later release.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012LEA6oV82RMiGTNmmrQ9Ee
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

wavekat-eason and others added 8 commits July 6, 2026 19:24
Findings from a multi-agent SEO review of the recent changes:

- Rephrase the audio FAQ to match real queries ("Does WaveKat Voice
  support HD audio?"), lead with yes, and name the G.711 fallback —
  all nine locales.
- Mention the transcript pausing on hold in the feature card so it
  states the same fact as the FAQ — all nine locales.
- Add fetchpriority="high" to the hero screenshot (likely LCP).
- Draft safety: Post layout now takes a noindex prop and every blog
  route passes post.data.draft, so a draft page is noindex,nofollow
  even if DRAFTS=1 ever reached a production build.
- Blog draft: trim meta descriptions to length (EN 160, zh 90), and
  name the subject in two section-opening sentences so they stand
  alone when quoted (EN + zh).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012LEA6oV82RMiGTNmmrQ9Ee
Replace the single hero screenshot with a 3-image gallery, each
paired with an existing feature card: the live call, an attended
transfer, and connecting an AI assistant. Reuses screenshot scenes
and alt-text phrasing already vetted in the two companion blog posts
— no new screenshots needed. Applied to all 9 locales.

Only the first image keeps fetchpriority="high" (likely LCP); the
other two lazy-load.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012LEA6oV82RMiGTNmmrQ9Ee
Refresh all 81 wavekat-voice screenshots (9 scenes × 9 locales) from
the updated app, picking up the frame grey-bar fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YBBvWLdyeMNsC5j8syDpuw
Arrow buttons were too transparent to read against both light and dark
screenshots — bump default opacity (white/90, black/60) and add a
hairline border for definition instead of relying on hover alone.

Also drop the global .prose img border on blog post screenshots — the
Ubuntu/GNOME-framed screenshots already carry their own visual edge,
so the extra CSS border was a redundant double frame.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012LEA6oV82RMiGTNmmrQ9Ee
Add a `border` prop (default false) so pages can opt into the frame
border around the carousel image. Off by default — the shadow plus
the screenshot's own window chrome already separate it from the page.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012LEA6oV82RMiGTNmmrQ9Ee
Rename the carousel's `border` prop to `framed` and make it drive the
whole frame treatment as a unit: border, surface background, inset mat,
and shadow all turn on together (and off together, for a bare
screenshot). Default to framed.

Move the inset from an absolutely-positioned <img> (a replaced element,
which fell back to its intrinsic size and clipped bottom-right, giving
asymmetric padding) onto a real wrapper's padding, keeping the images at
inset-0 w-full h-full.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YBBvWLdyeMNsC5j8syDpuw
Ship the "own SIP engine" post (EN + zh-Hans), un-drafted, with SEO/GEO
fixes from a content + GEO review:

- Add a 5-question FAQ block to both posts, auto-wiring FAQPage JSON-LD
- Cite RFC 3264 / RFC 3515 in the in-call-control table row
- Split the long opening sentence for cleaner extraction; tighten meta desc
- Backlink from the hold/transfer post (its features are why SIP was rewritten)
- Name the author on every /about/ page (E-E-A-T) across all 9 locales

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013oRLgHKazJ3wCcj7aR8LbR
The "own SIP engine" post shipped only in en + zh-Hans; the site is fully
translated across 9 locales, so add the missing 7.

- Add de, es, fr, it, ja, ko, zh-Hant versions (full body, FAQ, table, RFCs),
  each with locale-prefixed internal links and FAQPage-schema Q&A headings
- Register /blog/our-own-sip-engine/ in fullSite so hreflang, the sitemap
  alternates, and the language switcher cover it in every locale
- Add the sibling backlink from each locale's hold/transfer post

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013oRLgHKazJ3wCcj7aR8LbR
@wavekat-eason wavekat-eason marked this pull request as ready for review July 6, 2026 08:40
@wavekat-eason wavekat-eason merged commit 176d536 into main Jul 6, 2026
2 checks passed
@wavekat-eason wavekat-eason deleted the feat/voice-overview-hold-transfer-hd branch July 6, 2026 08:41
wavekat-eason pushed a commit that referenced this pull request Jul 6, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.0.43](wavekat-com-v0.0.42...wavekat-com-v0.0.43)
(2026-07-06)


### Features

* **voice:** add hold/transfer + HD to overview
([#120](#120))
([176d536](176d536))

---
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