Skip to content

Chatto 0.4.0

Release notes

0.4.0 replaces GraphQL with ConnectRPC and adds universal rooms, richer presence controls, custom statuses, SSO account linking, and broader interface localization.

0.4.0

ConnectRPC replaces GraphQL

The public API has moved from GraphQL to ConnectRPC. Custom clients, bots, and integrations need to move to the generated protobuf/ConnectRPC clients before upgrading production deployments.

Universal rooms

Important channels can now be available to the whole server without manual joins. Shared rooms feel like part of the server from the moment a member signs in.

Presence modes and custom statuses

Choose automatic presence, Away, Do Not Disturb, or Look offline, and add a custom status with text and emoji. Do Not Disturb quiets alerts, while Look offline stops presence reports for better privacy.

SSO account creation and linking

Support for SSO integrations has been significantly expanded, with clearer paths for creating new accounts and linking existing ones. Operators still control when providers may create accounts automatically.

A localized interface foundation

The first layer of localization has landed, with the frontend now available in English and German. More languages are coming soon.

Clearer room and call context

Rooms are easier to understand at a glance, with clearer descriptions, active-call context, and readable reaction names.

Local operator account administration

A new socket-backed chatto operator user ... CLI handles trusted local recovery and bootstrap account tasks. Root-grade account lifecycle operations no longer live on the public admin API.

Deployment-wide Prometheus metrics

The new chatto exporter command and [exporter] config expose Prometheus metrics, standalone or embedded in chatto run.

Storage-backed link previews

Link preview assets now use the configured storage backend, which makes preview media behave like other uploaded assets when S3-compatible storage is configured.

SMTP TLS controls

New SMTP TLS server-name and skip-verify settings support internal mail servers with self-signed or mismatched certificates.

Faster startup performance

Servers with more history should start and catch up faster after deploys, restarts, or maintenance windows.

  • GraphQL has been replaced by ConnectRPC. Update custom clients, bots, and integrations before upgrading production deployments that depend on the old GraphQL API.
  • If you tested against an earlier 0.4.0 beta, regenerate clients from the stable generated reference instead of carrying beta-era API assumptions forward.
  • Root-grade account lifecycle automation has moved to the local operator socket and chatto operator user ... commands. Enable [operator_api] for those workflows and update automation that used the earlier public admin lifecycle RPCs.
  • If you override SMTP security behavior, review the TLS verification configuration for your mail provider.
  • Docker Compose voice-call deployments should allow UDP 3478 and the documented LiveKit media ports so the embedded TURN relay can help clients that cannot connect directly.
  • Link preview media is now stored through the configured storage backend. Confirm your backup and object storage policies cover these assets.
  • Replies to deleted, hidden, or cross-room targets no longer submit or leave dangling timeline references.
  • Local message deletions now refresh the visible message list reliably.
  • Simple message edits can be submitted with Enter again.
  • Touch devices can insert composer line breaks with Return instead of accidentally sending the message.
  • Reply attribution previews are easier to read.
  • Stale direct-message member loads no longer appear after switching rooms.
  • Same-tab message links stay in the right context.
  • Thread follow controls no longer show stale bell state.
  • Unread separators wait until you return to a room instead of appearing too early.
  • New-message separators stay anchored to the right event through focus changes, tab resume, and late read-state updates.
  • Thread panes now use the same unread marker lifecycle as room timelines.
  • Dismissing notifications keeps unread badges in sync.
  • Unread channel rows have stronger contrast.
  • Push notification controls stay hidden for remote servers, where native Web Push cannot work from the app origin.
  • Service-worker updates cause less reload churn after deployments.
  • Read markers no longer move backwards during concurrent room or thread updates.
  • LiveKit call observation stays scoped to the active call.
  • Muted call participant icons and call control buttons are visually consistent.
  • Docker Compose LiveKit setups enable the embedded TURN/UDP relay and document the required firewall ports.
  • Extreme image thumbnails crop predictably instead of distorting the media layout.
  • Scrollbars follow the selected display theme.
  • Asset proxy token handling is more defensive.
  • Protected media loads no longer depend on the service-worker asset proxy.
  • Markdown rendering now uses the frontend Trusted Types policy.
  • Service inventory metrics now cover the full service set.

The generated GitHub release lists every PR and commit: github.com/chattocorp/chatto/releases/tag/v0.4.0