diff --git a/.changeset/ground-voice-in-fast.md b/.changeset/ground-voice-in-fast.md
deleted file mode 100644
index 982fe40eda..0000000000
--- a/.changeset/ground-voice-in-fast.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@roomote/web": patch
----
-
-Route every voice utterance through Fast so product answers use the Session's tools, context, and safeguards instead of unverified direct voice output.
diff --git a/.changeset/guide-select-focus-handoffs.md b/.changeset/guide-select-focus-handoffs.md
deleted file mode 100644
index 08af8ca039..0000000000
--- a/.changeset/guide-select-focus-handoffs.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@roomote/web": patch
----
-
-Move focus into required follow-up fields and dependent selectors after committed choices in guided setup flows.
diff --git a/.changeset/quiet-drafts-stay-put.md b/.changeset/quiet-drafts-stay-put.md
deleted file mode 100644
index 9713777be7..0000000000
--- a/.changeset/quiet-drafts-stay-put.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@roomote/web": patch
----
-
-Keep pull request metadata refreshes state-neutral and distinguish later opt-in clean-review promotion from the refresh itself.
diff --git a/.changeset/unify-skills-settings.md b/.changeset/unify-skills-settings.md
deleted file mode 100644
index 577f59b404..0000000000
--- a/.changeset/unify-skills-settings.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"@roomote/web": patch
----
-
-Unify shared and environment-specific skills in one searchable Settings catalog with availability filters and a marketplace dialog.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ed2b670aa2..cdf7f22009 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,59 @@
This file tracks product releases for Roomote (single monorepo version). Automated release entries are prepended by `pnpm run version`.
+## 1.7.0 (2026-09-11)
+
+Roomote 1.7 adds natural voice and email conversations, smarter follow-through for delegated work, richer automation controls, and clearer usage insights.
+
+### Highlights
+
+- Talk with Fast Sessions through configurable GPT-Live voices and previews, or continue Roomote work and private automation reports over email with AgentMail.
+- Let Fast quietly follow delegated coding tasks, surface meaningful developments, and correct work that drifts from the request.
+- Add natural-language routing rules to built-in automations and manage existing pull requests across supported providers.
+- Track token usage alongside spend in Cost Analytics, including historical totals when tasks are deleted.
+
+### Minor changes
+
+- Use Email through AgentMail as a replyable Roomote channel for task requests and outcome-first custom automation reports, with inbox-scoped setup, durable threads, signed answers, verified-account safeguards, and verification status and resend controls in Linked Accounts.
+- Built-in automations can use natural-language Additional rules for repository scope, per-repository routing, and report guidance.
+- Track token usage alongside spend in Cost Analytics with a total-token trend line, provider and model totals and averages, and token-aware drilldowns.
+- DeepSeek V4.1 Flash replaces the dated Flash recommendation across OpenRouter, Vercel AI Gateway, and OpenCode Go.
+- Fast Sessions quietly follow launched coding tasks, report meaningful developments, apply evidence-backed corrections until work settles, and distinguish task-history checks from incoming task reports.
+- Agents can close, reopen, retarget, and edit existing pull requests across supported source-control providers without creating replacements.
+- Weekly Manager Stats includes a daily created-versus-merged pull request chart and starts enabled on new deployments once a destination is configured.
+- Unify shared and environment-specific skills in one searchable Settings catalog with availability filters and a marketplace dialog.
+- Talk naturally with Roomote from Fast Sessions, with deployment-wide voice selection and previews while GPT-Live handles audio and Fast handles every utterance with the Session's model, tools, and context.
+
+### Patch changes
+
+- Custom automation task models can be changed only by the automation owner or an administrator.
+- Built-in automation switches clearly show whether each automation is enabled or off.
+- Saved automation cards show cadence in the deployment scheduling timezone used for execution.
+- Fast Sessions can manage reminders and automations directly again without a scheduling-discovery step.
+- Fast Sessions can use deployment-wide custom remote MCP integrations without exposing upstream credentials.
+- Fast Sessions honor saved Routing Rules when selecting an environment or delegated coding-task model.
+- Source-control and Linear webhook redeliveries no longer risk repeating actions when the original audit outcome was not finalized.
+- Route every voice utterance through Fast so product answers use the Session's tools, context, and safeguards instead of unverified direct voice output.
+- Move focus into required follow-up fields and dependent selectors after committed choices in guided setup flows.
+- Blank slate tasks no longer expose internal repository sentinels in task headers and filters.
+- Independent Slack suggested tasks reliably start in separate execution threads and Sessions instead of sharing task context; rejected launches clean up misleading start messages and remain available to retry.
+- Communication replies use compact live footers that keep running-task counts, pull request links, and Session links current as work starts and finishes.
+- Preview Markdown artifacts directly in task and Session galleries before opening them.
+- Coding tasks recover from exhausted transient OpenCode connection resets instead of stopping without a useful Session handoff.
+- Stopping a coding task from a Session preserves its task, sandbox, and artifacts for later resumption instead of terminally cancelling it.
+- Preview status and failure pages provide consistent responsive branding, explanations, and recovery actions across desktop and mobile.
+- Keep pull request metadata refreshes state-neutral and distinguish later opt-in clean-review promotion from the refresh itself.
+- Custom automation cards refresh persisted results after Run now without requiring a page reload.
+- Slack requests no longer receive a redundant eyes reaction while Roomote is working.
+- Cost Analytics keeps historical spend and token totals when tasks are deleted while hiding deleted-task details.
+- Connected Sentry integrations expose the full admin-approved tool catalog instead of a stale static allowlist.
+- Open a user's Sessions directly from their avatar in Session viewers and task messages.
+- Session timer activity uses user-facing labels instead of exposing internal wakeup tool names.
+- Automatic task follow-through timers stay out of the Session reminder list while user-created timer receipts clearly describe each action and reused schedule.
+- Automations and Skills page controls stay visible on desktop while long settings lists scroll independently.
+- The Automations list combines built-in and custom entries with consistent search, columns, responsive text, and alphabetical ordering.
+- Voice transcripts no longer show pending spoken acknowledgements after a call ends when the associated request was never sent.
+
## 1.6.0 (2026-09-09)
Roomote 1.6 adds flexible sandbox and public-repository work, native conversation charts, leaner scheduling discovery, and more reliable Sessions and skill management.
diff --git a/apps/docs/communications.mdx b/apps/docs/communications.mdx
index 973a062df4..2682a74039 100644
--- a/apps/docs/communications.mdx
+++ b/apps/docs/communications.mdx
@@ -23,7 +23,7 @@ attention.
| | Teams that use Microsoft 365, Teams channels, and Microsoft Entra accounts | Microsoft can also be used for sign-in and account linking. |
| | Lightweight personal, group, or forum-topic chat access | Telegram is a messaging provider, not a sign-in provider. |
| | Communities and teams that organize work in channels, threads, and forums | Discord is a messaging provider, not a sign-in provider. |
-| | Low-frequency task requests and results over email | Email conversations are replyable in both directions; not a sign-in provider. |
+| | Low-frequency task requests and results over email | Email conversations are replyable in both directions; not a sign-in provider. |
Configure communications providers from **Settings > Communications**.
diff --git a/apps/docs/cost-analytics.mdx b/apps/docs/cost-analytics.mdx
index 8e89a03eb8..35a0672a66 100644
--- a/apps/docs/cost-analytics.mdx
+++ b/apps/docs/cost-analytics.mdx
@@ -5,9 +5,9 @@ description: Review Roomote inference spend by type, source, environment, provid
---
Cost Analytics helps deployment teams understand how Roomote uses inference
-across tasks, Fast sessions, and automations. It reports the cost of
-recorded model usage in US dollars, so you can spot the environments, models,
-and work types that drive spend.
+across tasks, Fast sessions, and automations. It reports cost in US dollars and
+token usage, so you can spot the environments, models, and work types that drive
+spend or high-volume inference.
Any signed-in deployment user can open **Analytics** from the dashboard. The
page opens to **Costs** by default.
@@ -23,6 +23,7 @@ recorded inference usage. Use it to answer questions such as:
- whether a particular environment or model is driving costs
- how usage differs between people and automations
- how a provider's cost changes over time
+- how token volume changes even when a request has no recorded price
The view starts grouped by **Type**. It distinguishes manual and automated
tasks, **Session** orchestration, **Memories** synthesis, and other **Non-task
@@ -34,6 +35,11 @@ model and provider. The source also appears in the detail drilldown. Choose a
time range before comparing periods so the chart and breakdown use the same
window.
+The chart overlays a **Total tokens** trend line on the cost bars. Its tooltip
+shows token and cost totals for the same day and grouping. The breakdown table
+includes **Total tokens** and **Avg tokens / task** alongside cost. Selecting a
+chart segment opens the matching token-aware detail rows.
+
Analytics date presets and daily chart buckets use the web server's timezone,
including daylight-saving transitions. Costs, Tasks, and PR analytics use the
same calendar-day boundaries; these are not based on each viewer's browser
@@ -52,9 +58,11 @@ providers. It is separate from [Anonymous Analytics](/anonymous-analytics):
cost data stays inside your deployment for your team to review, while anonymous
analytics is optional product telemetry sent to the Roomote team.
-If a provider does not report pricing or usage for a request, that request
-cannot contribute a cost to the view. Use provider and model filters to narrow
-an investigation when totals do not match an external provider invoice.
+If a provider reports tokens but no price for a request, that activity appears
+in token totals even though it contributes no cost. A request with neither
+pricing nor token usage cannot contribute to those metrics. Use provider and
+model filters to narrow an investigation when totals do not match an external
+provider invoice.
Deleting a task does not remove its recorded inference usage from Cost
Analytics. The historical usage still contributes to totals, task counts, and
diff --git a/apps/docs/environments/definition.mdx b/apps/docs/environments/definition.mdx
index a8b40594c4..255daef38f 100644
--- a/apps/docs/environments/definition.mdx
+++ b/apps/docs/environments/definition.mdx
@@ -381,11 +381,14 @@ repository has a known trap, state it plainly.
Admins can configure natural-language routing rules from **Settings →
Environments**. Each rule maps a description, such as “Messages sent in the
hospital-bugs Slack channel,” to an environment or the broad **All repositories**
-workspace.
+workspace. A rule can also recommend a coding model for work that Fast delegates.
Rules are guidance rather than exact string matchers. An environment explicitly
named in a request takes precedence, and a specific rule takes precedence over a
-catch-all default.
+catch-all default. Fast evaluates the saved rules when it chooses an environment
+or model for a delegated task; they do not override a model or environment the
+user explicitly requested. Rules that point to a deleted environment are ignored
+until an admin updates or removes them.
## MCP servers
diff --git a/apps/docs/fast-sessions.mdx b/apps/docs/fast-sessions.mdx
index c709965369..46fc917286 100644
--- a/apps/docs/fast-sessions.mdx
+++ b/apps/docs/fast-sessions.mdx
@@ -141,6 +141,12 @@ reply in the transcript. Delegated tasks also report their completion, blockers,
and relevant results back into the parent Session; open the task workspace when
you need its full logs or diff.
+Fast quietly follows the coding tasks it launches after the conversation becomes
+idle. It reports meaningful progress, blockers, and questions that need input,
+and can send an evidence-backed correction when a task is drifting from the
+request. Routine status stays quiet. Follow-through stops when the Session's
+coding work settles instead of leaving a recurring monitor behind.
+
**Session info** shows the total inference cost for the conversation and its
attached tasks. Open the cost breakdown to separate direct Session orchestration
from each task's usage.
diff --git a/apps/docs/integrations/custom-mcp-servers.mdx b/apps/docs/integrations/custom-mcp-servers.mdx
index 204ad10c5c..c3daee5a61 100644
--- a/apps/docs/integrations/custom-mcp-servers.mdx
+++ b/apps/docs/integrations/custom-mcp-servers.mdx
@@ -5,8 +5,9 @@ description: 'Connect MCP servers that are not in the built-in catalog'
Custom MCP servers let agents use services that Roomote does not ship a
built-in integration for. Deployment admins configure them under
-**Settings → Integrations → Custom MCP Servers**, and they become available to
-agents in every task.
+**Settings → Integrations → Custom MCP Servers**. Remote servers become
+available to both Fast Sessions and sandbox tasks. Local stdio servers need a
+task sandbox because Roomote launches their process inside that workspace.
Most MCP servers publish a JSON snippet in their docs. The add dialog's
**Import from JSON** button accepts a pasted `mcpServers` snippet (or a bare
@@ -27,7 +28,7 @@ Three kinds of servers are supported:
## How remote servers are reached
Remote custom servers are never handed to the task sandbox directly. The
-sandbox sees an authenticated Roomote proxy URL, and the proxy injects the
+sandbox and Fast use an authenticated Roomote proxy, and the proxy injects the
real credentials per request. This means:
- Header values and OAuth tokens never appear in sandbox-readable
diff --git a/apps/docs/integrations/index.mdx b/apps/docs/integrations/index.mdx
index c4694e85e0..7e0446cf19 100644
--- a/apps/docs/integrations/index.mdx
+++ b/apps/docs/integrations/index.mdx
@@ -72,7 +72,7 @@ from [Personal Settings](/personal-settings).
| | Read-only database access in Supabase | Enable first, then teammates link accounts |
| | Shared memory across tasks and Fast sessions | Admin connection once |
| | Deployments, logs, and domain availability | Admin connection once |
-| | Voice calls with Roomote on Fast Sessions | Admin connection once |
+| | Voice calls with Roomote on Fast Sessions | Admin connection once |
| | Public X posts, users, trends, and news | Admin connection once |
| | Paid external capabilities via Zero | Admin connection once |
diff --git a/apps/docs/integrations/voice.mdx b/apps/docs/integrations/voice.mdx
index a3ee19fcb2..22338b50a3 100644
--- a/apps/docs/integrations/voice.mdx
+++ b/apps/docs/integrations/voice.mdx
@@ -1,7 +1,7 @@
---
title: Voice
description: Let your team talk to Roomote on a voice call.
-icon: 'audio-lines'
+icon: 'openai'
---
Connect Voice when you want people to [talk to Roomote](/voice) on a call from
@@ -29,4 +29,5 @@ its WebRTC connection offer to Roomote and receives only the negotiated answer.
Self-hosted operators can instead set `R_VOICE_OPENAI_API_KEY`. When both are
present the environment variable is used. Roomote's general `OPENAI_API_KEY`
is never used for voice, so enabling OpenAI for task inference does not turn
-voice on.
+voice on. An environment-managed connection is read-only in Settings and uses
+Marin because it has no stored voice selection.
diff --git a/apps/docs/logo/integrations/agentmail.svg b/apps/docs/logo/integrations/agentmail.svg
index 5a462aa4a6..29cba51e61 100644
--- a/apps/docs/logo/integrations/agentmail.svg
+++ b/apps/docs/logo/integrations/agentmail.svg
@@ -1,14 +1,6 @@
-