Skip to content

v0.8.33: kb fixes, chat ui cleanup, connectors instructions improvements - #7762

Merged
waleedlatif1 merged 25 commits into
mainfrom
staging
Sep 11, 2026
Merged

v0.8.33: kb fixes, chat ui cleanup, connectors instructions improvements#7762
waleedlatif1 merged 25 commits into
mainfrom
staging

Conversation

@waleedlatif1

@waleedlatif1 waleedlatif1 commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

icecrasher321 and others added 23 commits September 10, 2026 13:54
…fference? (#7736)

* feat(library): AI Coding Agents vs. AI Workflow Agents: What's the Difference?

* Pi Babysit: address PR #7736 feedback

---------

Co-authored-by: Sim Pi Agent <pi@sim.ai>
* fix(knowledge): skip verified empty Slack threads

* chore(knowledge): format Slack sync integration fixture
…rive files and macro-only Confluence pages (#7739)

* fix(knowledge): stop connector sync failures on download-restricted Drive files and macro-only Confluence pages

* fix(knowledge): drop raw error message from hydration failure logs
)

* improvement(voice): add dictation to organization chat and search

* fix(voice): preserve manual edits during dictation
* fix(search): streamline Atlassian source setup

* fix(search): validate Atlassian keys beyond discovery limits

* fix(search): preserve partial Confluence lookup failures

* fix(search): remove redundant source account banner

* feat(search): unify source setup and organization usage
* improvement(chat): simplify inline tool activity

* fix(chat): replace activity across message segments

* fix(chat): retain answered browser handoffs
…round tab (#7745)

* feat(desktop): browser pages as resource tabs, agent works in the background

Each live desktop browser page is now its own resource tab in the Chat
panel, derived from the desktop app's tab list instead of a persisted
singleton "Browser" resource with a second tab strip inside it. The inner
browser tab strip, tab pinning, duplicate, reorder, the native tab context
menu, and the auto-replacement of a closed last tab are removed.

The agent drives its own tab (the desktop's automation cursor) without
moving the user's visible page: the renderer no longer force-activates the
browser on every tool call nor auto-switches the panel to the agent's tab.
The agent's tab is announced as resource activity, so the existing view
policy shows it or badges it depending on whether the user has taken over
selection. Mentions and attachments point at exact tabs; the chat row never
stores browser resources, and legacy rows are dropped on read.

* fix(desktop): settle browser tab sync edge cases and ease the tab width cap

Review and in-app verification of the resource-tab browser model found
five problems, all fixed here with tests:

- The strip's switch and follow effects could trade `switch-tab` calls
  forever after a native switch; the switch effect is now keyed on the
  selection alone and ignores the switch it requested itself.
- Migrating a pending chat onto its durable id briefly removed and re-added
  every browser tab; a missing store bucket is no longer read as closed.
- Chat hydration could replace the resource list underneath a fresh add,
  dropping restored tabs on return; a tab stays projected until its
  resource is seen. Hydration also falls back to the last server-held
  resource instead of whichever tab happened to land first.
- Strip-driven `switch-tab` no longer claims the page for the user
  (`claim: false`), so the agent can still close or adopt it; a user
  closing the agent's tab leaves the agent cursor unset rather than
  announcing the neighbour as agent activity.
- The driver marked every restored scope as material, refusing pending
  chat migration after an empty restore; only a restore that yields pages
  does now, matching the session layer. The bridge snapshot is regenerated
  with the documented `'new-tab'` fallback.

Resource tab titles ellipsize at 200px for one or two tabs, 180px for
three, and 160px from four on, one small step at a time.

* fix(desktop): mirror strip order into native tabs and drag live tab titles

Reordering a browser tab in the resource strip now reorders the desktop's
native tab list too, so restore and the agent's tab list keep the strip's
order (`reorderTab` returns as an optional bridge method). Dragging a tab
into the chat carries the strip's live title rather than the title captured
when the tab was added. The fork route test follows the new policy that
stored browser rows are dropped.

* fix(emcn): drive the loader spin period from a CSS variable instead of an inline style
* improvement(chat): show browser agent site favicons

* fix(chat): load favicons from the visited site

* fix(chat): limit favicon loads to the local agent browser
* improvement(chat): remove legacy workspace mode selector

* fix(chat): preserve request options when editing queued messages
* feat(search): add shared Slack app installation and commands

* fix(slack): clean up unsuccessful shared app grants

* improvement(slack): rename commands to query and connect

* fix(slack): scope personal revocation to affected searches

* fix(slack): reject stale uninstall before revoking member grants

* fix(slack): process member revocations independently of bot events
* improvement(desktop): make each terminal its own resource tab

* fix(desktop): close hidden terminal tabs from the strip and keep the activity icon on terminal tabs

* fix(desktop): keep terminal close ownership with the window showing the panel
* improvement(chat): unify expandable inline tool activity

* fix(chat): share activity disclosure and status lifecycle

* improvement(chat): keep activity summaries concise
* feat(gitlab): support non-admin tokens with CSV permissions

* fix(gitlab): address setup review and test expectations
* feat(library): Top AI Assistants in 2026

* Pi Babysit: address PR #7741 feedback

---------

Co-authored-by: Sim Pi Agent <pi@sim.ai>
* improvement(chat): refine tool activity summaries and icons

* chore(chat): enforce activity icon catalog coverage
…on cleanup on account deletion (#7755)

* fix(mothership): derive block chat ids from the conversation id

The Sim block passed its Conversation ID input straight through as the copilot
chat id. Builders use stable strings such as `customer-456` there, but every
chat column in Sim is a uuid, so each read keyed by the id failed, and the
copilot service keys conversations by id alone, so two workspaces choosing the
same string shared one thread.

Every conversation id is now mapped to a UUID v5 of `workspaceId:id` under a
fixed namespace. The same value keeps the same thread, workspaces never
collide, a block can only reach a chat it derived, and the literal value never
leaves the executor. An omitted id mints a token that the block exposes so a
chained block continues the thread. The fork feature's UUID v5 helper moves
to a shared module.

* fix(knowledge): keep a held deletion pass a completed sync

Since #7477 `completeSuccessfulSync` folded `checkpoint.unsafe` into the same
predicate as an unfinished listing and a failed source read, so every
connector whose provider cannot promise a stable listing (Fireflies and Notion
always, Gmail and Slack at their caps) was recorded as `partial` with a frozen
`last_sync_at` even when every document listed. `unsafe` only ever meant "do
not infer deletions from this listing", and the deletion hold in
`reconcileCompletedListing` still honors it.

One `isContentPassIncomplete` predicate now drives the sync-log status, the
watermark advance, and the task outcome, and it excludes `unsafe`, restoring
the pre-#7477 behavior at all four sites.

* fix(auth): end the session on account deletion and refuse a deleted owner

Deleting an account removes the user and session rows, but the signed cookie
cache keeps authenticating that browser for up to five minutes. The settings
page then clears the query cache concurrently with signing out, every mounted
query refetches, and the workspace list finds nothing and tries to create a
default workspace for a user who no longer exists. The insert fails on the
`workspace` -> `user` foreign key and surfaces as an unhandled 500 on roughly
half of all deletions.

The deletion response now clears the session cookies itself, so no later
request from that browser carries them. The route builder keeps each cleared
cookie on its own header line. Workspace creation classifies a user foreign
key violation as `WorkspaceOwnerMissingError`, which both workspace routes
answer with 401 instead of a logged fault.
* feat(cli): add explicit self-update command and update notices

* fix(cli): reject update downgrades and explain installation errors

* fix(cli): preserve update failures during lock cleanup
* fix(slack): skip completed shared app verification setup

* fix(slack): preserve outdated member access repair
…ch (#7759)

#7730 switched the knowledge base lists to a KnowledgeAccessProvider, which
turned the single joined count into a per-400-base loop of count plus
candidate-discovery queries. The staging integ workspace holds 21k archived
bases, so GET /api/knowledge?scope=archived went from ~4s to ~100s and the
archive-kb integ check timed out at 30s.

The stored-ACL count moves back into the list's own join. Only documents a
live source (GitHub, Confluence) authorizes beyond that are counted
afterwards, once for the whole list, bounded by the list filter (unpaged) or
the page's ids. The provider now reports whether the reader holds any
live-source credential, and the shared batch generator skips candidate
discovery entirely when it does not, since the discovered predicate would be
provably empty.


Claude-Session: https://claude.ai/code/session_01Lm5mdDU9bi1vb4oAvPtbjn

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
* chore(repo): remove devcontainer, renovate config, and drained cache-cleanup workflow

- Delete .devcontainer/ and its CONTRIBUTING section; the Dev Containers
  setup was undocumented elsewhere and no longer maintained
- Delete renovate.json: Renovate has never opened a PR or dashboard issue
  on this repo; Dependabot security updates are what actually run
- Delete ci-cache-cleanup.yml: it drained legacy Next.js build-cache sticky
  disks left by PRs open before #6080 (2026-07-30); Blacksmith evicts sticky
  disks after 7 days idle, so the backlog is gone and the job is a no-op
- Move vitest.scripts.config.ts to scripts/vitest.config.ts with a pinned
  root so the repo root holds no test config; update test:scripts and
  check:script-tests
- Drop the duplicate husky `prepare` in apps/sim; the root prepare installs
  the hooks

* chore(agents): generate Cursor rules from .claude/rules and symlink AGENTS.md

- .claude/rules/<name>.md is now the single source for editor rules; the
  sync script projects .cursor/rules/<name>.mdc from it (description +
  globs, or alwaysApply when a rule has no paths). The Cursor copies had
  drifted since July and five newer rules never reached Cursor
- Move the Cursor-only testing rule to .claude/rules/sim-testing.md and add
  a description to every canonical rule
- Pre-commit regenerates on staged rule edits; check:skills verifies
- AGENTS.md becomes a symlink to CLAUDE.md; it was a stale subset

* fix(agents): reject YAML-unsafe rule descriptions and quote the Cursor projection

* fix(agents): reject implicitly typed YAML rule descriptions
#7761)

* improvement(search): simplify integration connections and sync actions

* improvement(integrations): align setup controls and refresh search guides

* fix(search): expose incomplete connection checks and update setup tests
@waleedlatif1
waleedlatif1 requested a review from a team as a code owner September 11, 2026 03:32
@greptile-apps

greptile-apps Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review (557 files, 100 file limit).

@vercel

vercel Bot commented Sep 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
docs Ready Ready Preview Sep 11, 2026 5:46am UTC

Request Review

@github-actions github-actions Bot added the requires-mothership-merge Has a companion PR on the mothership/copilot side — merge in lockstep label Sep 11, 2026
@github-actions

Copy link
Copy Markdown

⚠️ Cross-repo companion check

One or more companion PRs aren't merged into main yet (aggregated across the feature PRs in this release). Merging this without them will leave copilot and sim out of sync — merge them in lockstep.

  • ⚠️ simstudioai/mothership#493 — merged into staging (this PR targets main) — fix(search): replace integration inventory tool with prompt context

Comment thread apps/sim/lib/core/utils/uuid-v5.ts Dismissed
* fix(github): simplify repository setup and indexing outcomes

* fix(github): complete repository setup through one approval flow

* fix(github): align shared setup test fixtures
…ge telemetry (#7763)

* feat(analytics): attribute requests by client surface and add CLI usage telemetry

* fix(analytics): tolerate get-only header readers, gate CLI notice on stderr, re-read telemetry state before send
@waleedlatif1
waleedlatif1 merged commit 0171adf into main Sep 11, 2026
195 of 201 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

requires-mothership-merge Has a companion PR on the mothership/copilot side — merge in lockstep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants