You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* 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.
0 commit comments