Skip to content

feat(blog): hold, switch, and transfer post - #112

Merged
wavekat-eason merged 12 commits into
mainfrom
feat/blog-hold-switch-transfer
Jul 5, 2026
Merged

feat(blog): hold, switch, and transfer post#112
wavekat-eason merged 12 commits into
mainfrom
feat/blog-hold-switch-transfer

Conversation

@wavekat-eason

@wavekat-eason wavekat-eason commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

What

Adds a blog post covering the call-handling cluster that shipped in wavekat-voice 0.0.42 (2026-07-05):

  • Call hold — signaled hold; recording + transcript pause while held
  • Call waiting — answer a second call, auto-hold, switcher, one live call at a time
  • Blind + attended transfer — comparison table, back-out path, honest "Transferred to …" history

The post ships in all nine locales (en, zh-Hans, zh-Hant, ja, ko, de, es, fr, it), mirrored section-for-section, with locale-prefixed internal links and each locale's established softphone/telephony terminology. Content is sourced from wavekat-voice design docs 42, 43, 44 (hold, transfer, multi-call).

Each section carries a real product screenshot (Ubuntu light frame, localized per language, alt text translated), from three wavekat-voice demo scenes (wavekat-voice#252):

Scene Shows
in-call-hold The on-hold banner + Resume, transcription paused
in-call-waiting A live call with two callers parked in the switcher
in-call-transfer Attended transfer mid-consult, "Complete transfer" banner

The ### FAQ sections feed the markdown-derived FAQPage schema automatically in every locale.

Now published

The post was authored as a draft ahead of the release. With 0.0.42 out (2026-07-05), it's now live:

  • Version + date set — 0.0.42 (the version was correct as assumed) and date: 2026-07-05, the actual release date; the /voice/changelog/#0.0.42 links resolve once the changelog syncs at deploy.
  • draft: true removed from all nine files (and the pre-publish TODO comment dropped)

Verified: astro build (159 pages) + npm run check:links (no broken/leaking internal links) + npm run check:screenshots (72/72 present) all pass.

🤖 Generated with Claude Code

wavekat-eason and others added 2 commits July 4, 2026 10:12
Draft (unpublished) post covering call hold, call waiting, and blind +
attended transfer, ahead of the wavekat-voice release that ships them.
Kept as draft: true until the release version and date are known.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simplified Chinese translation of the draft post, mirroring it
section-for-section. Stays draft: true alongside the English one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

wavekat-eason and others added 8 commits July 4, 2026 10:22
Match the established post conventions: '### question' headings under
'Frequently asked questions' (headings are the extraction signal since
blog markdown emits no FAQPage schema), and a closing 'Try it' section
with the /voice/download/ CTA. Adds search-shaped questions (how to
transfer, blind vs attended, platforms) in both languages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Description now says 'blind or attended' and names the platforms;
intro binds the softphone category term and links the alternatives
hub; the call-waiting heading names the feature; FAQ answers cite the
SIP standards (RFC 3515 REFER, RFC 3264 re-INVITE). Mirrored in
zh-Hans.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three new scenes from the wavekat-voice screenshot pipeline (its PR #252),
one per section of the draft post, embedded in all nine locales with
localized alt text. Ubuntu light frames, synced as WebP via
sync-screenshots.js like the existing scenes.
Centralize blog draft/lang filtering in src/lib/blog.ts (blogFilter) so
every route (listings, per-post pages, RSS, all 9 locales) drops drafts
in one place. Drafts are hidden by default and shown only when DRAFTS=1;
add `make dev-draft` and `make build-draft` for local preview. The var is
read in Node at build time and unset in CI, so drafts never reach prod.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Riz2byk9HuBJpBeLtVBhcS
Apply seo-content + seo-geo review findings across all nine locales:
- name WaveKat Voice in the intro lede and second paragraph (was "the
  app") so cold-extracted passages identify the product
- lead the hold section with the recording/transcript-pause
  differentiator instead of burying it mid-sentence
- state the switch-away recording pause concretely, not metaphorically
- rewrite the on-hold FAQ answer to lead with the product and the
  positive fact
- add a "works with any SIP provider" FAQ (RFC 3264 / 3515)
- surface the recording-pause hook in the meta description

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
wavekat-voice 0.0.42 shipped (2026-07-05) with hold, call waiting, and
blind + attended transfer. Un-draft the post across all nine locales,
set the release date, and drop the pre-publish TODO. The version was
already 0.0.42 as assumed, so the changelog links need no change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PVcQwJ4XbY6RYDzHb2UYqg
@wavekat-eason
wavekat-eason marked this pull request as ready for review July 5, 2026 07:42
wavekat-eason and others added 2 commits July 5, 2026 19:43
The post ships in all nine locales, but its base path was missing from
`translatedRoutes` (fullSite). Without it the page emitted no hreflang,
was absent from the sitemap alternates, and — the visible symptom — the
language switcher on the post sent every language to that locale's home
instead of the translated post. Registering the base path lights up
hreflang, the sitemap alternates, and the switcher targets, matching the
other blog posts.

Audited the rest: providers (2talk) and alternatives (linphone) were
already registered; this post was the only drift.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PVcQwJ4XbY6RYDzHb2UYqg
@wavekat-eason
wavekat-eason merged commit 151390c into main Jul 5, 2026
2 checks passed
@wavekat-eason
wavekat-eason deleted the feat/blog-hold-switch-transfer branch July 5, 2026 07:55
wavekat-eason pushed a commit that referenced this pull request Jul 5, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.0.42](wavekat-com-v0.0.41...wavekat-com-v0.0.42)
(2026-07-05)


### Features

* **blog:** hold, switch, and transfer post
([#112](#112))
([151390c](151390c))

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