feat(voice): add hold/transfer + HD to overview#120
Merged
Conversation
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
Contributor
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
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>
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.
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)FAQPageschema.in-callscene); the overview previously had no app imagery. Each locale shows its own-language shot.Draft blog post (
src/content/blog/our-own-sip-engine.md)wavekat-sipengine story.draft: true— hidden in production, to ship in a later release. Not part of this release.Verification
npm run build— 168 pages, cleannpm run check:links— no broken/leaking internal linksnpm run check:screenshots— all 90 presentDRAFTS=1build — SIP draft compiles as a page (169 pages), links OK🤖 Generated with Claude Code