Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,39 @@ Fern-powered documentation site. Two sources of truth: MDX pages under `fern/pro

A SWML-only `.tsp` edit still moves `fern/apis/signalwire-rest/openapi.yaml`, because the REST tree imports the SWML models. Run `yarn build:specs` before committing even a SWML-only change, and expect a large REST diff in a SWML PR.

## Changelog

`fern/products/platform/changelog/` is a **product** changelog for customers, authored by
Product, Marketing, and PMs as well as docs. One file per date, `YYYY-MM-DD.mdx`, dated when
the change reached customers — not when it was written. Several changes on one date share a
file, one `##` heading each, most important first. `overview.mdx` is the index page.

- **Documentation work gets no entry.** A new guide, a new reference page, or writing up
something that already shipped is not a change, however important the feature. The only
exception is a capability customers had no way to discover, where publishing it is
effectively the release. When in doubt, leave it out.
- **Titles say what was added, changed, removed, or deprecated** — in words, since no tag
carries the kind. Sentence case, no end punctuation. A reader skimming the index shouldn't
have to open the entry: "Default TTS engine changed from Google to ElevenLabs", not "TTS
update"; "E911 self-service added to the REST API", not "E911". Not "One AI agent, many
languages" (marketing), not "Webhook payloads documented" (documentation is not a change).
- **Lead with the capability in the first clause** — that line is the whole entry for anyone
skimming. An imperative usually beats a formula ("Pick Groq or Mistral as your TTS
engine"); "You can now …" is one option, not a house opening. One to three sentences,
second person, present tense. No marketing adjectives, no emoji, no exclamation marks.
- **Tag product areas only, alphabetical** — `voice`, `messaging`, `ai`, `video`, `fabric`,
`sdks`, `swml`, `apis`, `tts`, `e911`, `compliance`, `security`. Chips render on the index
and feed the tag filter, so keep the list short; a tag matching one entry filters nothing.
The kind of change goes in the title, never in a tag.
- **Open every `##` section with a text paragraph**, never a component — Fern previews an
entry by its opening content and a callout there renders badly. A breaking change says so
in the title and puts a titled `<Warning>` after that paragraph; an untitled callout
flattens to plain prose in the Markdown export.
- **Links inline in prose, never a trailing "Updated pages:" list.** Copy every URL from the
target page's own `slug:` frontmatter, prefixed `/docs/<product-slug>/`. Never guess one.

Entries are customer-facing, so everything under "Everything here is customer-facing" applies.

## Everything here is customer-facing

Assume no prior knowledge, and never expose internal implementation detail — backend endpoints, transports, engine-side params. Every fact traces to source, a spec, the dashboard, or a ticket; if you can't verify one, write `[NEEDS SOURCE: what's missing]` instead of guessing.
Expand Down
3 changes: 3 additions & 0 deletions fern/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,9 @@ navbar-links:
- type: minimal
text: llms.txt
href: https://signalwire.com/docs/llms.txt
- type: minimal
text: Changelog
href: /docs/platform/changelog
- type: minimal
text: Log in
href: https://signalwire.com/signin
Expand Down
31 changes: 31 additions & 0 deletions fern/products/platform/changelog/2026-08-05.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
tags: ["tts", "voice"]
---

## Six new text-to-speech engines

You can now use the [Groq](/docs/platform/voice/tts/groq-tts),
[Mistral](/docs/platform/voice/tts/mistral),
[Grok](/docs/platform/voice/tts/grok),
[Smallest.ai](/docs/platform/voice/tts/smallest),
[Fish Audio](/docs/platform/voice/tts/fish), and
[Speechify](/docs/platform/voice/tts/speechify)
TTS engines on the SignalWire platform.

## `playai-turbo` is now `groq-tts`

Groq retired PlayAI in December 2025.
The engine is renamed `groq-tts` and repointed at Canopy Labs' Orpheus, defaulting to `canopylabs/orpheus-v1-english`.

Arabic voices are available by selecting the `canopylabs/orpheus-arabic-saudi` model, or its shorthand `arabic`.
See [Groq](/docs/platform/voice/tts/groq-tts) for the voice list.

## Rime's `arcana` model is deprecated, falls back to `coda`

Rime retired its `arcana` model.
Applications that invoke it will fall back to `coda`, which shares voice names.

Additionally, the `coda` model now uses the same sampling parameters as other Rime models:
`repetition_penalty`, `temperature`, `top_p`, and `max_tokens`.

See [Rime](/docs/platform/voice/tts/rime).
13 changes: 13 additions & 0 deletions fern/products/platform/changelog/2026-08-06.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
tags: ["e911", "voice"]
---

## E911 self-service added to the REST API

Registering an emergency address and enabling E911 on a US phone number is now self-service,
and no longer requires a support ticket.

Create a carrier-validated address, assign it to the number, then poll until `e911_status` reads `active`.

To get started, read the [E911 guide](/docs/platform/e911)
and review the [API reference](/docs/apis/rest/e-911-addresses/assign-e-911-address).
12 changes: 12 additions & 0 deletions fern/products/platform/changelog/2026-08-13.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
tags: ["ai", "tts", "voice"]
---

## Default TTS engine changed from Google to ElevenLabs

[Voice id strings](/docs/platform/voice/tts#use-voice-identifier-strings)
that don't specify an engine now resolves against `elevenlabs` instead of `gcloud`.

<Warning title="Always declare your engine">
Default engines can change. Ensure your agent continues using its configured voice by always declaring the engine explicitly.
</Warning>
13 changes: 13 additions & 0 deletions fern/products/platform/changelog/2026-08-17.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
tags: ["ai", "apis"]
---

## AI agent text chat added

You can now chat by text with AI agents that were previously reachable only by voice.
In the REST API, AI Chat is a single, unified JSON-RPC-style
[Send AI chat methods](/docs/apis/rest/ai-chat/chat-methods) endpoint with six methods.

The Python Server SDK wraps the endpoint in [`AIChatClient`](/docs/server-sdks/reference/python/agents/ai-chat-client)
and [`ChatGateway`](/docs/server-sdks/reference/python/agents/chat-gateway).
JSON-RPC errors are listed with the rest of the [error codes](/docs/apis/error-codes).
13 changes: 13 additions & 0 deletions fern/products/platform/changelog/2026-08-19.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
tags: ["ai", "swml"]
---

## Multilingual agents that switch languages and voices in real time

The new `multilingual` AI parameter accepts an array of language-voice pairs.
The AI agent continuously detects the other party's language,
and switches to the configured TTS voice (and language) whenever it changes.

The `multilingual` and `languages` objects within the AI method are mutually exclusive.

See [`ai.multilingual`](/docs/swml/reference/calling/ai/multilingual).
9 changes: 9 additions & 0 deletions fern/products/platform/changelog/overview.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: "Changelog"
description: New capabilities, changed defaults, and deprecations across the SignalWire platform, newest first.
max-toc-depth: 3
---

What's new and what changed across the SignalWire platform.

To follow along in a feed reader, append `.rss` to this page's URL.
6 changes: 0 additions & 6 deletions fern/products/platform/pages/calling/voice/TTS/groq-tts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ See [Groq's text-to-speech documentation](https://console.groq.com/docs/text-to-
| `canopylabs/orpheus-v1-english` | **Default.** English voices |
| `canopylabs/orpheus-arabic-saudi` | Arabic (Saudi dialect) voices. The shorthand `arabic` also selects this model |

<Warning>
The Arabic model requires accepting Canopy Labs' model terms in the
[Groq console](https://console.groq.com/) for the account making the requests.
Requests fail until the terms are accepted.
</Warning>

## Voices

<llms-ignore>
Expand Down
8 changes: 8 additions & 0 deletions fern/products/platform/platform.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
tabs:
platform:
display-name: Platform
# The changelog's URL segment comes from this nav entry, not page frontmatter,
# and a nav-entry `slug` replaces only its own segment — so without this the
# changelog lands at /platform/platform/changelog. Every other page under this
# tab sets its own frontmatter slug, which already bypasses the tab segment.
skip-slug: true
icon: fa-regular fa-planet-ringed
calling:
display-name: Calling
Expand All @@ -21,6 +26,9 @@ navigation:
- page: Get started
path: ./pages/getting-started.mdx
icon: fa-regular fa-home
- changelog: ./changelog
title: Changelog
icon: fa-regular fa-clock
- folder: ./pages/platform/setup
title: Setup
title-source: frontmatter
Expand Down
Loading