Skip to content

feat(work-browser): opt-in Slack API reads on nightly 3053 - #1

Draft
TheLoroXD wants to merge 12 commits into
base/nightly-20261013.3053from
feat/work-browser-api-reads-20261014
Draft

TheLoroXD wants to merge 12 commits into
base/nightly-20261013.3053from
feat/work-browser-api-reads-20261014

Conversation

@TheLoroXD

Copy link
Copy Markdown
Owner

Slack search and thread reads in the work browser go through the DOM. That is slow and breaks when the UI changes. The work browser had also stopped being served: the installed official nightly 0.0.46-nightly.20261013.3053 does not include it, so no work_browser_* tools were listed.

This branch ports the work-browser commits from feat/work-browser-mcp-nightly (5482f37480, the source of private build work-browser.9) onto v0.0.46-nightly.20261013.3053 (6524a8d). The base branch base/nightly-20261013.3053 points at that tag, so this diff contains only the work-browser changes. On top it adds:

  • readBackends per account and operation (dom | api). The default stays DOM. api is accepted only for verato Slack search and read, which passed capability validation. There is no automatic fallback.
  • A fixed page function (SlackPageApi.ts) that runs in the existing browser session through the server-owned tab. It verifies identity on every page, allowlists methods and origin, bounds time, size and pages, and returns closed error codes. Cursors and references are bound to the account, identity, backend and query.
  • Fixes found while reading a real thread over several pages:
    • Search permalinks of thread replies carry ?thread_ts=<root>.
    • conversations.replies repeats the root on every page and returns pages newest first.
    • Each read is now sorted ascending, and a continuation returns older replies. oldest is not used because it drops replies.

Checks, run through the DevBox heavy-check queue:

  • Focused tests: 9 files, 107 tests.
  • Focused types (TS7) passed.
  • Lint and format on the changed files passed.
  • build-exe passed.
  • Isolated start of the packaged runtime: HTTP 200, and MCP answers 401 without a credential.

Private package 0.0.46-nightly.20261013.3053-work-browser.10 is staged in the runtime versions directory. It is not active yet. Activation and the post-restart MCP verification (AC6) are tracked outside this PR.

🤖 Generated with Claude Code

Test and others added 12 commits October 14, 2026 06:45
Search returned thread replies with a `?thread_ts=<root>` permalink and no
thread_ts field, so every page containing a reply failed with
account_mismatch. conversations.replies also repeats the root beside `limit`
replies on every page and returns pages newest first, so threads longer than
one page failed as response_incompatible.

Accept the exact permalink or the permalink plus a single valid thread_ts,
derive the thread from it and keep it in sourceUrl. Allow the root beside
`limit` replies, drop it from continuation pages, sort each read ascending
and document that a continuation returns older replies. `oldest` is not used
because it skips replies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Oct 14, 2026
@github-actions

Copy link
Copy Markdown

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 32347a6.

This comment will update automatically after the next completed run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant