diff --git a/.changeset/chat-fast-provider-parity.md b/.changeset/chat-fast-provider-parity.md deleted file mode 100644 index 107f8a8e8..000000000 --- a/.changeset/chat-fast-provider-parity.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@roomote/api": patch -"@roomote/db": patch -"@roomote/sdk": patch ---- - -Start linked Microsoft Teams and Telegram chat requests in Fast and continue Fast replies from both providers. diff --git a/.changeset/fast-quiet-provider-recovery.md b/.changeset/fast-quiet-provider-recovery.md deleted file mode 100644 index 2527b2516..000000000 --- a/.changeset/fast-quiet-provider-recovery.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@roomote/cloud-agents": patch ---- - -Keep Fast sessions quiet through short transient provider recoveries: retries stay silent unless the wait grows past 30 seconds, all retryable provider errors share a six-retry budget with bounded jittered backoff, and warm-session progress refreshes the recovery budget the way completed coding-task turns do. diff --git a/.changeset/fast-reply-reactions.md b/.changeset/fast-reply-reactions.md deleted file mode 100644 index e9be22025..000000000 --- a/.changeset/fast-reply-reactions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@roomote/api": patch ---- - -Let linked Fast session owners respond to Roomote replies with emoji reactions across Slack, Discord, Microsoft Teams, and Telegram. diff --git a/.changeset/fast-settings-skill-inventory.md b/.changeset/fast-settings-skill-inventory.md deleted file mode 100644 index 3d3b3396b..000000000 --- a/.changeset/fast-settings-skill-inventory.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@roomote/cloud-agents": patch ---- - -Include authorized Settings skills in Fast mode's unscoped skill inventory. diff --git a/.changeset/fast-settings-skills.md b/.changeset/fast-settings-skills.md deleted file mode 100644 index 8408b6f5c..000000000 --- a/.changeset/fast-settings-skills.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@roomote/cloud-agents": patch ---- - -Let Fast mode discover, load, and explicitly invoke environment-scoped Settings skills while preserving built-in skill precedence and bounded access. diff --git a/.changeset/queue-fast-parent-events.md b/.changeset/queue-fast-parent-events.md deleted file mode 100644 index 77d12e124..000000000 --- a/.changeset/queue-fast-parent-events.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@roomote/sdk": patch -"@roomote/bullmq": patch -"@roomote/db": patch ---- - -Queue delegated-task updates durably for their Fast parent so busy conversations process child progress and completion in order instead of rejecting or killing the parent event after 30 seconds. diff --git a/CHANGELOG.md b/CHANGELOG.md index 04f2289e7..8cf0a38e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,63 @@ This file tracks product releases for Roomote (single monorepo version). Automated release entries are prepended by `pnpm run version`. +## 1.0.0 (2026-08-30) + +Roomote 1.0 makes Fast the default entry point for conversations, enables Memory by default on new hosted deployments, and completes the Session-centered automation, analytics, and artifact experience. + +### Highlights + +- Start unpinned requests in Fast by default, while choosing an environment or repository still starts coding work immediately. +- Enable Memory by default for new hosted deployments and recall public Discord discussions, visible Linear issues, and richer Notion database properties. +- Follow conversations, delegated executions, artifacts, reviews, and costs in a searchable Session workspace across desktop and mobile. +- Continue Fast across supported chat providers, delegate parallel work with attachments, preview generated HTML safely, and announce default-branch changes. + +### Major changes + +- Make Fast the default entry point for unpinned Roomote requests across the web dashboard and supported chat providers, and enable Memory by default for new hosted deployments. Select an environment or repository when work should start directly in a coding task; existing deployments keep their current Memory setting. + +### Minor changes + +- Start and continue linked Fast conversations directly from Microsoft Teams and Telegram, matching the existing Slack and Discord experience. +- React to Roomote Fast replies across Slack, Discord, Microsoft Teams, and Telegram to provide context for a follow-up or let the conversation stay quiet. +- Announce default-branch pushes across supported source-control providers with concise, pull-request-aware summaries, direct change links, and durable Slack, Discord, Microsoft Teams, or Telegram destinations. +- Open Analytics on Costs by default and break out Session orchestration and Memory synthesis so teams can understand where inference spend comes from. +- Let Fast launch multiple independent coding tasks from one turn, forward image and supported file context into delegated work, and show nested startup progress without losing retries or results. +- Let Fast inspect GitHub Actions runs, jobs, and logs to explain CI failures while keeping the diagnostic path read-only. +- Open generated HTML artifacts as safely sandboxed previews with a source-code toggle, while keeping presentational widgets available in web transcripts and linked chat previews. +- Add public Discord discussions and visible Linear issues to Memory, preserve richer Linear planning metadata, and render readable Notion database properties for more complete recall. +- Let administrators enable Memory without a dedicated synthesis-provider key, enable it by default for new hosted deployments, and surface newly ingested pages within minutes instead of waiting for a later maintenance pass. +- Finish setup in one Roomote Session that launches and tracks selected starter tasks, with clearer guidance about the value and limits of hosted trial inference. +- Make Sessions the primary workspace for Roomote work, with dashboard launch and search, recent-session navigation, delegated execution details, artifacts, reviews, costs, stable titles, and responsive mobile layouts in one continuous conversation. +- Browse current and previous Roomote releases directly in the update dialog, with the latest release expanded and newer remotely detected updates kept visible even when their notes are not yet available in the running image. +- Open current and previous Roomote release notes directly from About Roomote in the existing in-app release-history dialog. +- Follow delegated work more clearly in Sessions with live nested-task activity, a conversation-wide artifact gallery, cleaner task details and navigation, and modernized search, filter, board, and list controls. +- Include one safely validated, representative pull-request screenshot in Slack Merge Announcer reports when the pull request provides a suitable image. +- Show richer task context throughout Sessions with accumulated pull requests, actor and source details, clearer status indicators, direct access to a sole running task, and full task workspaces for Session deep links. +- Make Roomote MCP Session-first so ordinary start, search, summary, message, and follow-up operations use Sessions by default while explicit task IDs continue to target individual coding tasks. +- Have Fast acknowledge substantive human requests before starting model-invoked work, using a brief reply or eligible Slack reaction without duplicating immediate answers, clarifications, or delegated-task kickoffs. + +### Patch changes + +- Keep Fast sessions quiet through short transient provider recoveries: retries stay silent unless the wait grows past 30 seconds, all retryable provider errors share a six-retry budget with bounded jittered backoff, and warm-session progress refreshes the recovery budget the way completed coding-task turns do. +- Queue delegated-task updates durably for their Fast parent so busy conversations process child progress and completion in order instead of rejecting or killing the parent event after 30 seconds. +- Keep pull-request review follow-through reliable by showing actionable feedback in Fast and standard web tasks, clearing resolved Roomote findings, preserving the correct destination branch and attribution, and avoiding duplicate review requests. +- Disable anonymous usage reporting in the bundled Infinity service so self-hosted local Memory embeddings stay quiet by default. +- Keep Fast Sessions stable through cold starts and refreshes by preserving conversation context, model and reasoning choices, generated titles, pull-request status, and recovery state without duplicate or stale transcript notices. +- Keep Slack Fast thread titles synchronized with generated and manually edited Session titles instead of leaving conversations labeled `Thread`. +- Show platform issue alerts sent directly to Slack deployment admins with the same actionable automation card used for configured alert destinations. +- Keep expanded tool-call details readable in Task and Fast transcripts by wrapping long YAML values within the transcript instead of clipping or overflowing them. +- Keep Session context accurate by including attached task inference spend in total costs, opening inline task links in their owning Session, and hiding running or artifact states when they no longer apply. +- Keep Slack-backed Sessions and automations reliable by deferring silent custom-automation delivery, suppressing no-op placeholders, validating Fast titles without retry loops, restoring clear Configure actions, and using the correct Merge Announcer icon. +- Restore required runtime dependencies in standalone deployment images while continuing to bundle in-app release history. +- Show the shared progress spinner while tool calls are active, then restore each tool or integration icon when the call settles. +- Let Fast mode discover, load, and explicitly invoke environment-scoped Settings skills while preserving built-in skill precedence and bounded access. +- Complete large Notion historical discovery scans in the fast continuation loop instead of spreading database-row traversal across weeks of scheduled passes. +- Keep tasks moving when visual proof takes too long by applying one five-minute deadline across capture, retries, and recovery before returning a graceful proof blocker. +- Include authorized Settings skills in Fast mode's unscoped skill inventory. +- Keep running nested-task activity visible when a Session is loaded directly or reconnects, while still hiding it during genuine new parent responses. +- Restore authorized deployment MCP tools in Fast advisor and judge consultations while keeping Fast-native orchestration and custom automation tools confined to the parent Session. + ## 0.45.1 (2026-08-29) This patch restores complete Notion database discovery across Memory and the built-in Notion MCP. diff --git a/apps/docs/automations.mdx b/apps/docs/automations.mdx index 0d85d0904..38a2a7d35 100644 --- a/apps/docs/automations.mdx +++ b/apps/docs/automations.mdx @@ -96,6 +96,9 @@ and commit authors. Feature-branch pushes and branch deletions are ignored. GitHub, GitLab, Azure DevOps, Bitbucket, and Gitea are supported. For GitHub merge commits that Roomote can match to a pull request, the summary uses that pull request's context and **View changes** opens the pull request. +When the pull request body contains a suitable image, the Slack announcement +can also show one representative screenshot after Roomote validates its URL and +image type. Announcements continue without an image when validation fails. Other announcements link to the provider's compare view. ## Custom automations @@ -142,11 +145,9 @@ when repository or workspace execution is required. Fast runs deliver to every custom-automation report destination: Slack, Discord, Microsoft Teams, or Telegram, as either a channel/chat or a direct message to the automation owner. Each run keeps a distinct Fast session, and -the report links back to that session in the web app. Slack, Discord, and -Microsoft Teams replies continue the Fast session directly in chat. Teams only -resumes after verifying the active tenant installation, conversation, and -linked user. Telegram can deliver the same reports and continue them from the -web app, but inbound Telegram replies still use its normal task-routing flow. +the report links back to that session in the web app. Replies on all four +providers continue the Fast session directly in chat. Roomote verifies the +active provider installation, conversation, and linked user before resuming. Runs with no report destination remain stored Fast sessions and do not post to chat. diff --git a/apps/docs/communications.mdx b/apps/docs/communications.mdx index 106be5fb5..8c1e481a2 100644 --- a/apps/docs/communications.mdx +++ b/apps/docs/communications.mdx @@ -58,13 +58,18 @@ also needs an environment that can run the suggestion's target repository. Configured **Call Roomote via emoji** automations are separate from these suggestion reactions. +When the suggestion is not pinned to an execution target, Fast-capable chat +surfaces start it in Fast so Roomote can answer or delegate as needed. A pinned +environment, repository-only surface, or provider without Fast support starts +the coding task directly. + ## React to Roomote replies When you react to a Roomote reply in an active Fast conversation, Roomote can -use that reaction as context. The linked user who owns the Fast conversation -must add the reaction. Roomote posts a text reply when the reaction warrants a -response and otherwise stays silent; it does not react to the reaction event -itself. +use that reaction as context, including as an answer to a question it asked. +The linked user who owns the Fast conversation must add the reaction. Roomote +posts a text reply when the reaction warrants a response and otherwise stays +silent; it does not react to the reaction event itself. | Provider | Fast reply reactions | Provider limits | | --- | --- | --- | diff --git a/apps/docs/fast-sessions.mdx b/apps/docs/fast-sessions.mdx index d0929ecdd..00efb0e8b 100644 --- a/apps/docs/fast-sessions.mdx +++ b/apps/docs/fast-sessions.mdx @@ -20,6 +20,11 @@ when the request needs a repository workspace. Selecting an environment or repository starts the execution directly, but Roomote still creates the owning Session and opens it with that execution selected. +Fast is the default for **Auto** and other unpinned requests across the web +dashboard and supported chat providers. Choose an environment or repository +explicitly when the request should skip conversation-first routing and start a +coding task immediately. + Select **New Session** in the navigation to open the same launcher from any dashboard page. @@ -33,19 +38,41 @@ Execution cards show their status, workspace, pull requests, artifacts, latest error, and cost. Select a card to open the lightweight details panel, or choose **Open full workspace** for terminal, logs, diff, and preview tools. -The Sessions page supports list and board views, filters, pins, recent Sessions, -and unread indicators. Search matches Session and task titles, repositories, -and conversation text. Queries of at least three characters include transcript -matches and show a highlighted excerpt. **Ready** is not a terminal state: you -can reply or start another execution in the same Session later. +When delegated tasks keep working after the conversation becomes idle, the +timeline shows the live task count. Select that activity to open the **Tasks** +panel. The **Artifacts** panel combines the latest uploaded outputs from every +task in the Session, labels which task produced each item, and opens previews +without leaving the Session. Individual task details continue to show their own +artifacts. + +**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. + +The Sessions page supports list and board views, pins, recent Sessions, and +unread indicators. Common scope, status, and time filters stay visible; turn on +advanced filters for user, environment, pull request, model, and source. Active +advanced filters remain visible until you clear them, and Roomote remembers the +selected list or board view. Search matches Session and task titles, +repositories, and conversation text. Queries of at least three characters +include transcript matches and show a highlighted excerpt. **Ready** is not a +terminal state: you can reply or start another execution in the same Session +later. + +Session rows show who or which automation started the work, its source and +cost, and links to accumulated active pull requests. In the Session workspace, +those pull requests remain available across delegated tasks. Selecting the live +task count opens the only running task directly or shows the task list when +several are active. A Session link with a selected task opens that task's full +workspace while keeping the Session conversation alongside it on desktop. The transcript renders prompts, replies, and tool activity in real time with a generated title that updates as the Session evolves. Fast sessions can also render presentational widgets such as status cards, tables, and plans directly in the transcript. Widget HTML is sanitized and -sandboxed in the web view; chat surfaces receive only the widget's text -fallback. +sandboxed in the web view. Chat surfaces receive a concise text preview and a +link to open the rendered widget when both are available. ## Reply to a session @@ -55,12 +82,20 @@ that live on another surface, Roomote posts the answer back into the originating thread with a quoted copy of your web message, so the conversation stays in one place for everyone following it there. +For substantive requests, Fast sends a brief acknowledgement before it starts +model-invoked work. An eligible Slack message may receive an acknowledgement +reaction instead. Immediate answers and clarifying questions remain single +responses, and delegated tasks keep their existing kickoff message rather than +posting a duplicate acknowledgement. + Fast replies across Slack, Discord, Microsoft Teams, and Telegram link back to -the Session view. Slack and Discord can also resume Fast directly from chat. -Microsoft Teams replies continue the same Session after Roomote verifies the -tenant, installation, conversation, and linked user. Telegram currently uses -the Session view for Fast follow-ups because its inbound webhook route does not -yet carry Fast Session identity. +the Session view and can resume the same Session directly from chat. Roomote +verifies the provider installation, conversation, and linked user before it +accepts the follow-up. + +In shared Slack and Discord conversations, Fast can stay silent when linked +participants are talking to each other. A direct reply to Roomote, a mention, +an explicit Fast command, or a direct message still requires a response. ## Execution access diff --git a/apps/docs/integrations/roomote-mcp.mdx b/apps/docs/integrations/roomote-mcp.mdx index 619081039..24dd6205a 100644 --- a/apps/docs/integrations/roomote-mcp.mdx +++ b/apps/docs/integrations/roomote-mcp.mdx @@ -1,42 +1,40 @@ --- title: Roomote MCP icon: '/favicon.svg' -description: Run and manage Roomote agent tasks from your MCP client. +description: Start, inspect, and continue Roomote Sessions and tasks from your MCP client. --- Roomote MCP brings your Roomote workspace into the coding tools you already -use. From any OAuth-capable MCP client, you can kick off a new Roomote task, -check on its progress, and follow up without switching back and forth between -tools. +use. From any OAuth-capable MCP client, you can start a Session, inspect its +conversation and delegated tasks, and follow up without switching back and +forth between tools. ## What you can do -### Kick off a new task +### Start a Session -Ask your MCP client to start a Roomote task with a clear prompt. Roomote MCP -finds the available launch environments and uses the right one for the work. -For example, you can delegate an investigation or implementation, keep working -locally, and come back for the result when the task finishes. You can also push -work in progress to a remote branch and hand that branch to a Roomote agent to -continue. +Ask your MCP client to start Roomote with a clear message. The ordinary start +action creates a Session, where Fast can answer directly or delegate repository +work to tasks. You can keep working locally and return to the same Session for +the result. When work must start directly in a known compute environment, your +client can still use the explicit environment-targeted task launch action. ### Check on and steer existing work -Search active or completed tasks by keyword, status, or pull request. Once you -find a task, you can read its summary, conversation, and compute logs to -understand what happened and where the work stands. - -Roomote MCP can also read and continue a Fast Session when you provide its -Session ID. Summaries, compute logs, and cancellation remain task-only -operations and require a task ID. +Search finds Sessions by default. Once you find one, provide its Session ID to +read the summary or newest conversation messages and to send a follow-up. When +you need one concrete coding task instead, use task search and pass its task ID; +the task ID takes precedence if both identifiers are supplied. Compute logs, +cancellation, environment-targeted launch, and task model controls remain +task-specific operations. This is useful when you want to: -- catch up on a task that is already running +- catch up on a Session that is already active - find an earlier investigation or implementation -- understand why a task failed +- inspect a delegated task when you need its execution details - pull the result of a Roomote task into your current conversation -- send follow-up instructions or cancel work that is no longer needed +- send follow-up instructions or cancel task work that is no longer needed Follow-up instructions normally wait behind the task's current turn. When the new instruction must take effect immediately, ask your MCP client to steer the @@ -57,8 +55,9 @@ only returns conversations your signed-in user is allowed to read. - “Push what I’m working on to a remote branch, then start a Roomote task from that branch to take over.” -- “Start a Roomote task in the web app environment to investigate this bug.” -- “Find my active tasks related to OAuth and summarize their progress.” +- “Start a Roomote Session to investigate this bug.” +- “Find my active Sessions related to OAuth and summarize their progress.” +- “Find the coding task for this pull request and show its compute logs.” - “Show me the messages and compute logs from the task that failed this morning.” - “Tell the running task to add a regression test before it opens the PR.” diff --git a/apps/docs/memory.mdx b/apps/docs/memory.mdx index 8584929a3..1bdaebf04 100644 --- a/apps/docs/memory.mdx +++ b/apps/docs/memory.mdx @@ -125,6 +125,8 @@ R_BRAIN_EMBEDDING_DIMENSIONS=1024 ``` The bundled CPU service uses multilingual models so recall can cross languages. +Its anonymous usage reporting is disabled by default in the Roomote Compose +bundle. This is separate from Roomote's own optional anonymous analytics. For a smaller CPU host, `Alibaba-NLP/gte-multilingual-base` with `768` dimensions is a lighter embedding alternative. Choose the embedding model and dimensions before Memory's first boot; changing that pair later requires diff --git a/apps/docs/models.mdx b/apps/docs/models.mdx index 5722d1f23..1394e4045 100644 --- a/apps/docs/models.mdx +++ b/apps/docs/models.mdx @@ -298,6 +298,11 @@ You can also just ask the agent — for example "switch to Fable 5 with max reasoning for the rest of this task". The agent applies the same change through its task-management tool, subject to the same allowed-models list. +Conversational Sessions expose the same model and reasoning choices in their +composer. A selection is saved before the next message can be sent, persists +across page refreshes, and applies to later Fast turns without changing a turn +that is already running. + ## Fast delegation and consultation Fast mode sees the exact coding models enabled for delegated tasks. When it diff --git a/apps/docs/providers/source-control/github.mdx b/apps/docs/providers/source-control/github.mdx index 38f668e17..93c0c45ee 100644 --- a/apps/docs/providers/source-control/github.mdx +++ b/apps/docs/providers/source-control/github.mdx @@ -160,6 +160,11 @@ R_GITHUB_ADDITIONAL_APP_SLUGS=roomote-community,roomote-reviewer Roomote treats only the primary slug and this comma-separated allowlist as managed bot identities. Do not add unrelated GitHub Apps. +Fast can use the GitHub App's Actions access to inspect workflow runs, jobs, and +logs when it explains a CI failure. That diagnostic path is read-only even +though the app keeps broader Actions and Workflows permissions for normal task +and automation workflows. + Generate a private key from the app's **Private keys** section. GitHub downloads a `.pem` file. Convert it to an escaped single-line value before saving it in an env var: @@ -219,11 +224,11 @@ Once the app is installed and an environment maps the repository: Issue mentions use the environment mapped to the repository. Map the repository to an environment before mentioning Roomote on issues. -When a task delegated from a Fast session in Slack or Discord opens a pull -request, actionable review feedback returns to that same session. Use -**Resolve these issues** to address the current feedback, **Auto-resolve on this -PR** to handle later actionable feedback automatically, or **Dismiss** to take -no action. +When a Roomote task opens a pull request, actionable review feedback returns to +the owning Session and appears in both Fast and standard web task transcripts. +Use **Resolve these issues** to address the current feedback, **Auto-resolve on +this PR** to handle later actionable feedback automatically, or **Dismiss** to +take no action. Failed GitHub checks also return to every Roomote task linked to the pull request and to the conversation that started the work. Roomote consolidates a diff --git a/apps/docs/self-hosting.mdx b/apps/docs/self-hosting.mdx index fdde221bb..23aac299e 100644 --- a/apps/docs/self-hosting.mdx +++ b/apps/docs/self-hosting.mdx @@ -150,14 +150,17 @@ one. Check the running application version and applied schema migration at any time under **Settings → Deployment → Diagnostics**; both are also recorded in every backup bundle's manifest. -After you upgrade, Roomote can surface the new release in the web app: +Roomote surfaces release history and available updates in the web app: - **Admins** on self-hosted deployments see an update notice in the sidenav when - a newer GitHub release is available, with release notes and a link back to - GitHub. Use `roomote upgrade` (or your image roll-forward process) to install - it. -- **Everyone** sees a short "what's new" notice once after the app is upgraded - to a new version, pulled from the same GitHub release notes as the changelog. + a newer GitHub release is available. The update dialog keeps that target and + its GitHub link visible even when the running image does not yet contain the + newer release's notes. Use `roomote upgrade` (or your image roll-forward + process) to install it. +- **Everyone** can open **About Roomote** and select **See all Roomote releases** + to browse the current and previous release notes bundled in the running + image, with the latest release expanded. After an upgrade, Roomote also shows + the latest "what's new" notice once. ## Deployment modes diff --git a/apps/docs/tasks.mdx b/apps/docs/tasks.mdx index 6ae7279d5..9ed349c42 100644 --- a/apps/docs/tasks.mdx +++ b/apps/docs/tasks.mdx @@ -71,6 +71,10 @@ For a Markdown plan artifact, **Build this** starts a new task from the plan. After the task starts, use **View task** in the confirmation message to follow its status and review its transcript. +Generated HTML artifacts open in a sandboxed **Preview** by default. Switch to +**Code** to inspect the saved HTML source without executing it in the page that +runs the Roomote dashboard. + ### Native widget styling Roomote widgets inherit the task view's selected light or dark theme. Agents can diff --git a/package.json b/package.json index 66c0d4076..7d24dc0dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "roomote", - "version": "0.45.1", + "version": "1.0.0", "license": "FCL-1.0-ALv2", "packageManager": "pnpm@10.29.3", "engines": {