Skip to content

refactor(web): replace global aria state with app resources and Foldkit overlays - #338

Merged
Makisuo merged 65 commits into
mainfrom
chore/foldkit-audit-fixes
Oct 15, 2026
Merged

Makisuo merged 65 commits into
mainfrom
chore/foldkit-audit-fixes

Conversation

@Makisuo

@Makisuo Makisuo commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Move pending button announcements into an app Resource and remove the ui/aria module state exception.
  • Replace custom overlay behavior with Foldkit Anchor and Dom helpers; model modal changes explicitly and migrate Popover, Dialog, Tooltip, and Toast to @foldkit/ui.
  • Consolidate backend auth and failure handling, including typed errors, bounded retries, and logging server failures without exposing their causes.
  • Reshape frontend state across routing, settings, chat, composer, onboarding, and notifications, with added regression coverage.
  • Remove legacy Slate and UI parity code, unused scripts, and obsolete styling and components.

Testing

  • Added and updated backend and frontend unit, integration, and story tests for auth, routing, chat sync, composer, notifications, and overlays.
  • Not run as part of this change request.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

Makisuo and others added 30 commits October 15, 2026 15:37
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The legacy React app is gone, so packages/ui-parity, the root parity script,
the /dev/gallery boot path (and every gallery entry), the S2 data benchmarks
that ran on parity fixtures and the normalized-store prototype they drove are
dead. Docs that describe the harness are marked historical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ListBox, Table, Tree, Toggle, ToggleGroup, InputOTP, Text, SectionFooter,
FormErrorSummary, FieldValidationState and aria/scroll were only reachable
from the gallery. Calendar loses its Range mode (Single only), its
formatters are built once, and unused exports, style keys and nine unused
icons go too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p effect-atom

Define the frontend error convention (docs/foldkit-decisions/s6-errors.md):
Failed*({ reason }) built with Effect.catchTags, then catchCommon, the one
defect boundary, which collapses the remaining CommonError to a CommonReason.

- error-messages.ts: rewritten for Effect v4. An exhaustive Match over the
  CommonError union reads HttpClientError.reason._tag and RpcClientError's
  transport reason, so network drops are recognised again. Retry policy
  (isRetryableReason) is separate from copy, and copy never contains error
  or defect text. Message sends now retry on transport failures.
- data/actions.ts: catchCommon, errorToastOf, reasonToast. failureToast's
  handlers are typed by the failure's own tags (ErrorHandlers<E>).
- optimisticAction returns (variables) => Effect and keeps typed failures
  through TanStack's Promise. runAtomFn, both AtomRegistries, the AtomRpc and
  AtomHttpApi clients (one shared the HazelApiClient key), the ManagedRuntime,
  ApiClient and the empty telemetry layer are gone; callers use src/rpc.ts.
- Delete core/atoms: quiet hours and muting move to notification-sound.ts as
  pure functions of nowMs; emoji usage tracking (write-only) is removed.
- Delete the unread notification diagnostics store and the no-op in-app sink.
- Tauri key-value store loads lazily and fails per call instead of dying.
- XId.make instead of crypto.randomUUID() as XId; drop onRetryAttempt and
  the txid debug log; one electricCollection factory for the 24 shapes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hazel auth is the only sign-in now. Removed the Clerk JWT fallback in both auth
middlewares, SessionManager and its per-request Clerk org sync, BackendAuth,
ClerkClient/AuthConfig, the ClerkSync service and /webhooks/clerk route (whose
failures returned 200 so Svix never redelivered), ClerkUserFetchError from the
auth unions, the Clerk-only repo methods, the migrate-to-clerk scripts and the
Clerk steps of the setup CLI. CLERK_SECRET_KEY is now optional and read only by
OAuthBearerAuth (Maple's Clerk-issued OAuth tokens), marked as the last Clerk
consumer.

Database failures while resolving a session, a bot token or an OAuth user now
fail with SessionLoadError (503) instead of a 401, so a DB blip no longer signs
the user out; driver text is logged, not sent. GitHub webhook payloads are
schema-decoded (InvalidGitHubWebhookPayload, 400) and a cluster outage answers
503 (WorkflowServiceUnavailableError) so GitHub can redeliver.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rs becoming 401s

InternalServerError, WorkflowInitializationError and WorkflowServiceUnavailableError
no longer have a serialized `cause`: the constructor keeps it as the native,
non-enumerable Error.cause, so it reaches logs and traces but never RPC/HTTP
clients. withRemapDbErrors passes the DatabaseError/SchemaError as that cause
(generics renamed to A, E, R).

refailUnauthorized turned every policy failure, database errors included, into
UnauthorizedError. Infrastructure failures now become InternalServerError.
OrgResolver no longer orDie's its repository lookups, so the DatabaseError stays
typed instead of becoming an untyped defect.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns, drop Slate

The message viewer walked the Slate deserializer's output and Slate's
decorators while the composer used the ProseMirror ports in editor/. The
viewer now renders editor/markdown.ts blocks with editor/decorations.ts
leaves (emoji ranges and the viewer's hidden markers move there) and a new
editor/code-highlight.ts. detect-language moves to editor/.

Prism's lazy language loader was never called, so only five languages ever
highlighted. Every language it listed is now registered up front (plus
markup-templating, which php needs), keeping the view a pure function.

Deletes core/components/chat/slate-editor (and its duplicate serializer
suite) and the slate dependency; drops unused @tanstack/react-db and
@tanstack/store from the collection lib.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ext to clients

About 60 handlers put `String(err)` (SQL and driver messages) into the `detail`
or `cause` of InternalServerError / Workflow*Error, which went to RPC and HTTP
clients verbatim; `String()` on a tagged error also dropped its message from
the logs. They now pass the failure itself as the non-serialized `cause`.

A ServerFailureReporter, registered on the route graph, receives every failed
RPC and HttpApi request (both servers report to CurrentErrorReporters) and logs
5xx failures and defects with their full Cause. UploadError gets the same
server-side cause instead of interpolating the S3 error message.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ants

Removes data-rac and the tailwindcss-react-aria-components plugin. Hover,
focus and focus-visible are now native CSS; state the browser cannot see
uses Tailwind data variants (data-selected:, data-pressed:, data-disabled:,
data-[placement=...]:, ...). Fixes missing keyboard focus rings and hover on
switches, checkboxes and radios without interaction wiring (now
group-hover/group-has-focus-visible on the label, wiring removed), and the
dead hover on the stateless tab strip, which the chat tab bar now reuses.
Tabs get a visible focus-visible ring; disabled and pending buttons no
longer show hover. React Aria default class names are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ad helpers

- session-bearer: sessionAuthorizationEffect wraps the desktop provider in
  tryPromise with a SessionBearerError; the RPC auth middleware maps it to
  SessionLoadError instead of dying through Effect.promise.
- access-token: the exchange is an Effect: Schema-decoded token body, a
  TokenExchangeError (Unreachable | ServerError | BadResponse) and
  Effect.retry with the same 500ms/1s backoff. The Promise exports stay
  for the fetch wrappers. A malformed body now counts as unanswered.
- image-crop: cropImage and loadImage are Effects failing with CropError.
- Command palette: the recent-channels write uses Effect.try + ignore, so a
  full localStorage is a typed, ignored failure rather than a defect.
- Delete Rivet's unused actor helpers (one threw), the date-fns re-export
  shim and bot-avatar's dead Brandfetch tables.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… tags

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y the parent

The kit Slider and Tabs are now @foldkit/ui 0.167 Submodels with a styled
toView (ui/slider.ts layout, ui/tabs.ts layout). The notifications page
passes Shared.soundSettings.volume as the Slider's value and stores
ChangedValue, so syncVolume and sharedChanged are gone; the chat index keeps
its selected tab in its own Model and folds Tabs' Selected OutMessage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every message/reaction outbox handler caught its failures and logged them, so
the outbox's retry with backoff never saw a transient Discord, cluster or
database outage and the sync was dropped for good. Two DB lookups also fell back
to defaults: a failed integration-bot lookup could echo a bot's message back to
Discord.

- Hazel -> provider deliveries claim their receipt before calling the provider,
  so a retry was always deduped. On a retryable failure (DB, provider transport,
  408/429/5xx) the claim is now released and *ToAllConnections fails with
  ChatSyncDeliveryRetryableError; 4xx and missing links stay logged-and-skipped.
- MessageSideEffectService propagates DB errors and an unreachable cluster.
  Notifications still go out when Discord fails (the Discord failure is raised
  last); workflow failures stored under their idempotency key are logged, since
  a retry would get the same result.
- The processor decodes payloads with decodeUnknownEffect instead of throwing a
  defect that killed the batch. Dispatcher errors are a tagged OutboxLockError;
  leader-loop / drain / gateway crashes log the Cause instead of String(cause)
  and let interruption through.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-found errors

Validation and not-found cases came back as InternalServerError (500), so
clients could not tell them from outages:

- channel.createDm / createThread / generateName: InvalidChannelRequestError
  (400) for the participant count, org mismatch, non-thread channels and a
  thread without its original message (which used to fake a MessageNotFoundError
  from the channel id, and turned a DB error into "not found").
- Incoming webhooks: InvalidWebhookPayloadError (400) for no content, too many
  embeds and a payload that fails the message schema.
- connectShare.*: ChannelNotFoundError and a new ConnectConversationNotFoundError;
  the two `throw`s inside Option.getOrElse (untyped defects) are typed failures.
- invitation.create propagates OrganizationNotFoundError instead of rewrapping it.

The RPC and HttpApi error unions are widened accordingly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…registering

linkByVerifiedEmail caught every cause (defects and interruption included) and
continued to registration. `users.email` is not unique, so a transient database
error during the lookup or the link created a second account for an existing
user. SqlError and PlatformError now fail the intent with OAuthUnavailable (the
user retries sign-in) after logging the cause. Covered by a Postgres test that
breaks the users lookup mid sign-in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Menu Model now holds only the popup, selection mode and selected keys.
Parents pass entries in ViewInputs; the view attaches them to the Messages
that navigate (PressedTriggerKey, PressedMenuKey, HoveredItem, ClickedItem),
so reflectEntries and the copied entries are gone. The shell keeps its
menus' entries in its own Model so the memoized sidebars see stable
references. Overlays.update loses its now-unused facts argument.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Select Model keeps only the selection and the popup; parents pass items
in ViewInputs and the view attaches them to the navigating Messages. The
set-status expiration labels and the calendar's month/year options are now
derived in the view instead of copied into the child Model.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The ComboBox Model keeps only the selection, the typed text and the popup.
update takes the items as an argument and the view reads them from
ViewInputs; TimezoneSelect owns the timezone list and its update.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… instead of looping

/onboarding sends an onboarded user (anyone on the picker) back to /, so the button
never reached a form. It now opens /onboarding/setup-organization; a test enters the
target route with an onboarded session and asserts no redirect. The organizations
slice is a Loading | Redirected | Loaded union and rows are keyed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e auth pages

auth/flows.ts classifies every @yielded/auth and passkey-browser error with an
exhaustive Match into AuthFlowError{reason} (no tag-suffix sniffing: a browser
input rejection no longer reads as an expired sign-in) and matches the result's
non-Authenticated variants exhaustively. The desktop handoff does the same with
HandoffError{reason} and offers Try again on transient failures.

Sign-in, register, continue and desktop pages hold one Submission/step union
instead of pending/error/isSubmitting flags; the desktop page carries attemptId in
its steps and opens the callback with load. isSessionLoading lives on contract.ts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed formatters

Segments.init takes the locale (default en-US, like the calendar) and stores
it, so update and view never read navigator.language. Intl formatters and
field names are built once per locale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…embed

Style files no longer claim to be shared with the React app, comments stop
pointing at apps/web, the date-fns re-export shim is gone, and the two
hand-copied embedInteraction helpers call Interaction.embed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sync decode throws

- bot.create/install/uninstall/installById: Effect.die("User must belong to an
  organization") is now ActiveOrganizationRequiredError (400), added to the unions.
- generateTransactionId keeps the typed DatabaseError/SchemaError instead of dying
  with a stringified cause; handlers remap it with withRemapDbErrors.
- Hand-written DatabaseError/SchemaError -> InternalServerError catches in the
  chat-sync RPC and HTTP handlers, integrations, organization members and the
  organization slug handler now use withRemapDbErrors.
- Craft rate limits, 5xx and transport failures are IntegrationUnavailableError
  (503) instead of InternalServerError.
- parseOAuthStateParam and the OAuth session cookie decode with
  decodeUnknownOption instead of try/catch around decodeUnknownSync and JSON.parse;
  the same for the outbound-identity settings in the chat-sync core worker.
- Discord webhook fallbacks catch DiscordApiError only (a DB failure no longer
  silently falls back to the bot API); integration-bot best-effort adds catch
  DatabaseError/SchemaError and log the Cause.
- connect-shares helpers drop `any`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The backend lives in apps/backend (not backendv2) and signs users in with Hazel
auth; Clerk only verifies Maple's OAuth tokens. Adds the backend test commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The onboarding theme step and the appearance settings each rebuilt the same
three illustrations (about 3,600 lines of h.* calls) on every render. They
are now public/images/appearance/{system,light,dark}.svg behind <img>.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd create-workspace

Join and invite lookups are Loading | Found/Loaded | NotFound | Failed{reason}: a
network error no longer renders as an invalid link, and Failed offers Try again.
Accept/join/create build their reasons with catchTags + catchCommon (no hand-read
cause.reasons or _tag strings); copy comes from failureMessage. Invite and
create-workspace hold a Submission union instead of isSubmitting/error flags.
Join reuses the auth frame and shared initials helper, and its Go to Home is a
button-styled link instead of a button inside an anchor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…union

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Profile, home (members and DM rows), chat index and the notifications inbox hold
Loading | Loaded (profile: Loading | Found | NotFound) instead of null-means-loading,
so the profile no longer flashes "User not found" on every visit. Mark-read and
create-DM failures are catchTags + catchCommon reasons; a failed mark-read now says
so (a deleted notification stays quiet) instead of being dropped as String(error).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…labelled

Nucleo icons drop the legacy <title> (32 of them read "badge 13") and render
aria-hidden; passing title gives role=img and a <title>. Every icon-only
button the audit found now has an aria-label (sidebar row and section
menus, image viewer toolbar, attachment remove, member Message, row menus,
copy buttons, channel icon controls, command form Back).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Makisuo and others added 23 commits October 15, 2026 16:29
… finalization

The page is Starting{membership, timezone} | Leaving | Running{flow, step, data}, and
each step's form lives in its StepState variant (Profile, Timezone, UseCases, Role,
Invite, Finalizing{failure}, Completed), replacing step + form + isInitialized +
hasRedirected + error. A failed finalize stops the spinner and offers Try again
(ClickedRetryFinalize). One validation module feeds update and the views (a
whitespace name now disables Continue). Invite rows are {id, email, error} keyed by
id with MAX_INVITES enforced in update. All four failures carry typed reasons
built with catchTags + catchCommon; NoOrganization is decided in update. Back is
ignored while a request is in flight, and late successes need a pending submit.
Dead Data.emails is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…at stream

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… root stream

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keeps both: chat-index's Channels loading union with kit's ChatIndexTab/ChatIndexTabs,
and home's Members/DmChannels unions with menuEntries as a view input. CreateDm now
also classifies the backend's new InvalidChannelRequestError.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ToggleReaction, PinMessage and UnpinMessage settle into Succeeded*/Failed*({ reason })
built with catchTags + catchCommon; write.ts maps reasons to copy. The unused
DeleteMessage Command (the root's modal deletes) and action-effects.ts are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oad problems, name rules

Drop the two local embedInteraction copies for Interaction.embed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…syncData and field validation

Invitations, connect invites and chat-sync lists render a Failure branch with retry instead of
empty/not-found; custom emoji and logo uploads keep their specific errors; delete confirmations
use ConfirmAction; integration detail validates token and base URL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ilures, OAuth error copy

Profile uses fieldValidation with real messages, derived dirtiness, DropZone and Update.foldChild;
linked accounts maps OAuth error codes; desktop reports a failed autostart change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ows failures

Overview and webhook names use the shared name rules with visible errors, integration lists are
AsyncData, ProviderCard actions are a union, row deletes use ConfirmAction; the document stub
moves to the test setup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… tests for the boot, org-switch and presence P0s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep the kit's Menu/ComboBox/Slider APIs and data-rac removal alongside the settings rework;
the two embedInteraction wrappers stay deleted (call sites use Interaction.embed). The backend's
new RPC errors get feature reasons: ChannelNotFound and ConnectConversationNotFound for connect
invites, NoActiveOrganization for bot install/uninstall, IntegrationUnavailable as Unavailable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…routes in their navigation, desktop update view matches its union

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… navigation carries routes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The toaster binds the kit Toast (lifecycle, timers, hover pause, swipe)
to the app's ToastRequest. The import-time sonner stylesheet injection,
the hand-rolled timers and stacking, and the sonner dependency are gone.
Enter/exit animate on the kit's data-closed/enter/leave attributes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ality

Trigger handlers live in the view, so Scene tests can hover and focus a
tooltip. Anchor (floating-ui) positions the panel; the arrow reads
--arrow-x/--arrow-y. The module-level input modality had no other
consumer and is gone. toAnchorPlacement maps the app's placements.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The native dialog isolates the page, locks scroll, traps focus and
returns it; the hand-rolled portal/inert/scroll-lock/focus-scope wiring
is gone. Modal re-exports the Dialog Model, Message and OutMessage
(Opened/Closed), so folds add foldOutMessage. opened/closed are gone:
open/close return Commands, initOpen builds the open Model of a modal
without a stored Model. The dialog renders only while open, so its Mount
takes and releases the resources whether or not the parent keeps the
Model. Panels and backdrops animate in from @starting-style.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Floating UI places the panel; a press on the backdrop, Escape and the
close buttons close it and focus returns to the trigger. The panel
renders beside its trigger instead of inside the button, and focus goes
to the content (contentFocus) so controls inside keep it open. The
popover host's module-level closed-Model cache is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The dialog renders only while open and its Mount shows it and releases
it (focus return included) on removal, so ShowDialog/CloseDialog were
redundant Commands. open/close/update now only flip isOpen and emit
Opened/Closed; scene tests resolve the dialog's AcquireResources Mount.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Menus, selects, combo boxes, the date picker, the command menu and the
picker popovers position with Anchor (floating-ui), portal with
portalToContainingRoot (dialog-aware), and lock scroll / inert the page
through Foldkit's Dom. The overlay stack, inert counts and scroll-lock
closure in ui/aria/overlay.ts are gone; the topmost overlay is read from
the DOM. The vendored React Aria calculatePosition (position.ts) is
deleted. The message toolbar anchors with Anchor, and its tooltip and
emoji picker render beside each button instead of inside it. The
command menu animates in from @starting-style.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…a module state

pending-announcement no longer installs a document observer at import
time or writes react-aria-button-N ids: it is a scoped Layer in the
app's resources that announces the button's label. The live announcer
finds its node in the DOM instead of a module variable. With no module
state left in ui/aria, the oxlint override for it is removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@maple-review-bot

maple-review-bot Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Maple review

🟡 Confidence 5/10 · needs attention
879 files: backend auth/outbox and most web hunks were read only through child reviewers, two of which stopped before answering, and 227 files went unread.
quality 90/100 · 1 warning · tests partial · risk high · 0/1 new units observable · 227 files not read

Refactors web state, overlays and backend auth/failure handling across 879 files; one real observability gap in the new session-failure path. 227 files, notably chat-sync-core-worker.ts and the backend route and test files, were not read. The open HttpClientError issues all point at services/common/atom-client.ts, which this diff deletes, so those stacks go away on deploy rather than being fixed.

  • verify and loadUser in hazel-session.ts map failures to SessionLoadError and log them
  • ServerFailureReporterLive logs RPC/HttpApi 5xx tags with their `Cause
  • Outbox handlers propagate retryable failures instead of logging them
  • Web overlays move to @foldkit/ui Dialog/Popover/Tooltip/Toast; Atom dropped

Before merge

  • Manual · Land this as a reviewable series; 879 files is past every reviewer and CI limit

Findings

🟠 Warning · F1 · verify drops the cause of a session-store failure and the reporter excludes its tag

observability · STAT-01 · apps/backend/src/services/hazel-session.ts:80-86

When auth.verifySession fails for any reason other than SessionInvalid, the new mapping keeps only error._tag in detail and produces a SessionLoadError with no cause, and apps/backend/src/lib/error-reporter.ts:6 deliberately skips every SessionLoadError on the premise that the raise sites log it. The DatabaseError site at line 35 does log; this one does not, so a broken session store answers every browser and native request with a 503 and leaves no log or trace of why. Log the failure here too (Effect.tapError((error) => Effect.logError("Session verification failed", Cause.fail(error))) before the mapError) or carry it as the error's cause.

🤖 Prompt to fix this finding with an AI agent
Findings from an automated review of commit d620f82f9d7d666ec00ed55503e706246cdef769. Verify each one against the current code before changing anything, fix only those that still apply, and keep each fix to the lines it names.

---

F1 · Warning · observability · STAT-01 · apps/backend/src/services/hazel-session.ts:80-86
`verify` drops the cause of a session-store failure and the reporter excludes its tag
When `auth.verifySession` fails for any reason other than `SessionInvalid`, the new mapping keeps only `error._tag` in `detail` and produces a `SessionLoadError` with no `cause`, and `apps/backend/src/lib/error-reporter.ts:6` deliberately skips every `SessionLoadError` on the premise that the raise sites log it. The `DatabaseError` site at line 35 does log; this one does not, so a broken session store answers every browser and native request with a 503 and leaves no log or trace of why. Log the failure here too (`Effect.tapError((error) => Effect.logError("Session verification failed", Cause.fail(error)))` before the `mapError`) or carry it as the error's `cause`.

Production impact

Open errors in the changed files
Issue Service Occurrences File
HttpClientError maple-web 27 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 12 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 9 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 9 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 8 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 8 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 4 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 4 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 4 apps/web-foldkit/src/core/lib/services/common/atom-client.ts
HttpClientError maple-web 3 apps/web-foldkit/src/core/lib/services/common/atom-client.ts

After this merges, Maple checks whether they stop.

Production traffic of the changed files (last 7 days)
File Calls/day Busiest operations
apps/backend/src/routes/webhooks.http.ts 974 POST 830/day, 4.0% err
POST 144/day, 0.5% err
apps/web-foldkit/src/core/lib/access-token.ts 974 POST 830/day, 4.0% err
POST 144/day, 0.5% err
apps/web-foldkit/src/composer/upload.ts 7 PUT 7/day, 0.0% err
Telemetry this change adds and removes (1)
  • ➕ span name MessageSideEffectService.nameThreadIfDue · apps/backend/src/services/message-side-effect-service.ts:110
What was checked
  • access-token.ts exchange keeps its attempt bound (Effect.retry times 2) and generation guard
  • Token retry only re-sends the idempotent POST /auth/token exchange
  • Backend RPC handlers group (bots, channels, connect-shares, organizations): no dropped auth or org check found
Observability coverage: 0 of 1 changes observable
Change Kind Observable Evidence
POST /auth/token token exchange wrapper in access-token.ts outbound-http no Runs via Effect.runPromise from fetch wrappers outside any runtime; no Client span, MAP-01
Files not reviewed (227)

The review ended before it read these diffs, so nothing above vouches for them.

  • .oxlintrc.json
  • apps/backend/.artifacts/chat-sync/chat-sync-diagnostics.jsonl
  • apps/backend/src/lib/error-reporter.test.ts
  • apps/backend/src/lib/policy-utils.test.ts
  • apps/backend/src/routes/api-v1/integrations.http.ts
  • apps/backend/src/routes/api-v1/messages.http.ts
  • apps/backend/src/routes/bot-commands.http.ts
  • apps/backend/src/routes/integration-commands.http.ts
  • apps/backend/src/routes/integration-resources.http.ts
  • apps/backend/src/rpc/middleware/auth-class.ts
  • apps/backend/src/rpc/middleware/auth.test.ts
  • apps/backend/src/services/chat-sync/chat-sync-core-worker.integration.test.ts
  • apps/backend/src/services/chat-sync/chat-sync-core-worker.ts
  • apps/backend/src/services/chat-sync/discord-gateway-service.ts
  • apps/backend/src/services/chat-sync/discord-sync-worker.test.ts
  • apps/backend/src/services/hazel-auth.test.ts
  • apps/backend/src/services/invitations.test.ts
  • apps/backend/src/services/message-side-effect-service.test.ts
  • apps/backend/src/services/org-resolver.test.ts
  • apps/backend/src/services/session-manager.ts
  • apps/electric-proxy/resources.ts
  • apps/web-foldkit/package.json
  • apps/web-foldkit/public/images/appearance/dark.svg
  • apps/web-foldkit/public/images/appearance/light.svg
  • apps/web-foldkit/public/images/appearance/system.svg
  • apps/web-foldkit/src/app/desktop.test.ts
  • apps/web-foldkit/src/auth/flows.test.ts
  • apps/web-foldkit/src/chat/embeds/url-embeds.ts
  • apps/web-foldkit/src/chat/image-viewer.ts
  • apps/web-foldkit/src/chat/markdown/leaves.test.ts
  • and 197 more

d620f82 · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one. Check ids refer to Maple's instrumentation audit.

@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 875 files, which is 725 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d15056db-55ae-4a0c-9c1a-8a1eaab9c267
📥 Commits

Reviewing files that changed from the base of the PR and between e5b0477 and d620f82.

⛔ Files ignored due to path filters: 4
  • apps/web-foldkit/public/images/appearance/dark.svg is excluded by !**/*.svg
  • apps/web-foldkit/public/images/appearance/light.svg is excluded by !**/*.svg
  • apps/web-foldkit/public/images/appearance/system.svg is excluded by !**/*.svg
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing: 875
  • .oxlintrc.json
  • CLAUDE.md
  • apps/backend/.artifacts/chat-sync/chat-sync-diagnostics.jsonl
  • apps/backend/.env.example
  • apps/backend/README.md
  • apps/backend/src/app.ts
  • apps/backend/src/lib/create-transactionId.ts
  • apps/backend/src/lib/error-reporter.test.ts
  • apps/backend/src/lib/error-reporter.ts
  • apps/backend/src/lib/policy-utils.test.ts
  • apps/backend/src/routes/api-v1/integrations.http.ts
  • apps/backend/src/routes/api-v1/messages.http.ts
  • apps/backend/src/routes/bot-commands.http.ts
  • apps/backend/src/routes/chat-sync.http.ts
  • apps/backend/src/routes/incoming-webhooks.http.ts
  • apps/backend/src/routes/integration-commands.http.ts
  • apps/backend/src/routes/integration-resources.http.ts
  • apps/backend/src/routes/integrations.http.test.ts
  • apps/backend/src/routes/integrations.http.ts
  • apps/backend/src/routes/uploads.http.ts
  • apps/backend/src/routes/webhooks.http.ts
  • apps/backend/src/rpc/handlers/bots.ts
  • apps/backend/src/rpc/handlers/channels.ts
  • apps/backend/src/rpc/handlers/chat-sync.ts
  • apps/backend/src/rpc/handlers/connect-shares.ts
  • apps/backend/src/rpc/handlers/notifications.ts
  • apps/backend/src/rpc/handlers/organization-members.ts
  • apps/backend/src/rpc/handlers/organizations.ts
  • apps/backend/src/rpc/middleware/auth-class.ts
  • apps/backend/src/rpc/middleware/auth.test.ts
  • apps/backend/src/rpc/middleware/auth.ts
  • apps/backend/src/scripts/migrate-to-clerk/backfill-external-ids.ts
  • apps/backend/src/scripts/migrate-to-clerk/diagnose-org-duplicates.ts
  • apps/backend/src/scripts/migrate-to-clerk/merge-org-duplicates.ts
  • apps/backend/src/services/auth.ts
  • apps/backend/src/services/chat-sync/chat-sync-core-worker.integration.test.ts
  • apps/backend/src/services/chat-sync/chat-sync-core-worker.ts
  • apps/backend/src/services/chat-sync/discord-gateway-service.ts
  • apps/backend/src/services/chat-sync/discord-sync-worker.test.ts
  • apps/backend/src/services/connect-conversation-service.ts
  • apps/backend/src/services/hazel-auth.test.ts
  • apps/backend/src/services/hazel-auth.ts
  • apps/backend/src/services/hazel-session.ts
  • apps/backend/src/services/invitations.test.ts
  • apps/backend/src/services/invitations.ts
  • apps/backend/src/services/message-outbox-dispatcher.ts
  • apps/backend/src/services/message-outbox-processor.ts
  • apps/backend/src/services/message-side-effect-service.test.ts
  • apps/backend/src/services/message-side-effect-service.ts
  • apps/backend/src/services/oauth-bearer-auth.ts
  • apps/backend/src/services/org-resolver.test.ts
  • apps/backend/src/services/org-resolver.ts
  • apps/backend/src/services/session-manager.ts
  • apps/backend/src/worker/env.ts
  • apps/backend/src/worker/outbox-dispatcher-object.ts
  • apps/electric-proxy/resources.ts
  • apps/web-foldkit/package.json
  • apps/web-foldkit/scripts/bench-s2-data.ts
  • apps/web-foldkit/scripts/bench-s2/collections.ts
  • apps/web-foldkit/scripts/bench-s2/option-a.ts
  • apps/web-foldkit/scripts/bench-s2/option-b.ts
  • apps/web-foldkit/scripts/bench-s2/shared.ts
  • apps/web-foldkit/src/app/auth.ts
  • apps/web-foldkit/src/app/command.ts
  • apps/web-foldkit/src/app/desktop.test.ts
  • apps/web-foldkit/src/app/loading.test.ts
  • apps/web-foldkit/src/app/message.ts
  • apps/web-foldkit/src/app/modal-host.scene.test.ts
  • apps/web-foldkit/src/app/model.ts
  • apps/web-foldkit/src/app/notification-sinks.ts
  • apps/web-foldkit/src/app/out-messages.story.test.ts
  • apps/web-foldkit/src/app/routing.story.test.ts
  • apps/web-foldkit/src/app/session.scene.test.ts
  • apps/web-foldkit/src/app/shell.scene.test.ts
  • apps/web-foldkit/src/app/subscription.ts
  • apps/web-foldkit/src/app/view.ts
  • apps/web-foldkit/src/auth/desktop-handoff.ts
  • apps/web-foldkit/src/auth/flows.test.ts
  • apps/web-foldkit/src/auth/flows.ts
  • apps/web-foldkit/src/auth/return-to.ts
  • apps/web-foldkit/src/chat/embeds/url-embeds.ts
  • apps/web-foldkit/src/chat/image-viewer.ts
  • apps/web-foldkit/src/chat/markdown/leaves.test.ts
  • apps/web-foldkit/src/chat/markdown/leaves.ts
  • apps/web-foldkit/src/chat/markdown/markdown-view.ts
  • apps/web-foldkit/src/chat/message/content.ts
  • apps/web-foldkit/src/chat/message/parts.ts
  • apps/web-foldkit/src/chat/message/row.ts
  • apps/web-foldkit/src/chat/message/toolbar.ts
  • apps/web-foldkit/src/chat/message/tooltips.ts
  • apps/web-foldkit/src/chat/popover-host.ts
  • apps/web-foldkit/src/chat/prism-modules.d.ts
  • apps/web-foldkit/src/chat/profile-popover.ts
  • apps/web-foldkit/src/chat/tooltip-host.ts
  • apps/web-foldkit/src/chat/unfurl.ts
  • apps/web-foldkit/src/composer/autocomplete-view.ts
  • apps/web-foldkit/src/composer/composer.story.test.ts
  • apps/web-foldkit/src/composer/composer.ts
  • apps/web-foldkit/src/composer/data.ts
  • apps/web-foldkit/src/composer/draft-update.ts
  • apps/web-foldkit/src/composer/draft-view.ts
  • apps/web-foldkit/src/composer/draft.story.test.ts
  • apps/web-foldkit/src/composer/draft.ts
  • apps/web-foldkit/src/composer/drop.ts
  • apps/web-foldkit/src/composer/editor-commands.ts
  • apps/web-foldkit/src/composer/trigger-views.ts
  • apps/web-foldkit/src/composer/update.ts
  • apps/web-foldkit/src/composer/upload.test.ts
  • apps/web-foldkit/src/composer/upload.ts
  • apps/web-foldkit/src/composer/view.scene.test.ts
  • apps/web-foldkit/src/composer/view.ts
  • apps/web-foldkit/src/composer/window-events.ts
  • apps/web-foldkit/src/core/atoms/emoji-atoms.ts
  • apps/web-foldkit/src/core/atoms/notification-sound-atoms.test.ts
  • apps/web-foldkit/src/core/atoms/notification-sound-atoms.ts
  • apps/web-foldkit/src/core/components/chat/slate-editor/slate-code-decorator.ts
  • apps/web-foldkit/src/core/components/chat/slate-editor/slate-emoji-decorator.ts
  • apps/web-foldkit/src/core/components/chat/slate-editor/slate-markdown-decorations.ts
  • apps/web-foldkit/src/core/components/chat/slate-editor/slate-markdown-serializer.test.ts
  • apps/web-foldkit/src/core/components/chat/slate-editor/slate-markdown-serializer.ts
  • apps/web-foldkit/src/core/components/chat/slate-editor/slate-message-viewer-model.ts
  • apps/web-foldkit/src/core/components/chat/slate-editor/types.ts
  • apps/web-foldkit/src/core/components/embeds/embed-markdown.parser.ts
  • apps/web-foldkit/src/core/components/embeds/embed-markdown.styles.ts
  • apps/web-foldkit/src/core/components/embeds/embed.styles.ts
  • apps/web-foldkit/src/core/components/link-preview.utils.ts
  • apps/web-foldkit/src/core/components/ui/badge.styles.ts
  • apps/web-foldkit/src/core/components/ui/button.styles.ts
  • apps/web-foldkit/src/core/components/ui/calendar.styles.ts
  • apps/web-foldkit/src/core/components/ui/card.styles.ts
  • apps/web-foldkit/src/core/components/ui/checkbox.styles.ts
  • apps/web-foldkit/src/core/components/ui/choice-box.styles.ts
  • apps/web-foldkit/src/core/components/ui/combo-box.styles.ts
  • apps/web-foldkit/src/core/components/ui/command-menu-form.styles.ts
  • apps/web-foldkit/src/core/components/ui/command-menu.styles.ts
  • apps/web-foldkit/src/core/components/ui/context-menu.styles.ts
  • apps/web-foldkit/src/core/components/ui/date-field.styles.ts
  • apps/web-foldkit/src/core/components/ui/date-picker.styles.ts
  • apps/web-foldkit/src/core/components/ui/dialog.styles.ts
  • apps/web-foldkit/src/core/components/ui/dropdown.styles.ts
  • apps/web-foldkit/src/core/components/ui/empty-state.styles.ts
  • apps/web-foldkit/src/core/components/ui/field-validation-state.styles.ts
  • apps/web-foldkit/src/core/components/ui/field.styles.ts
  • apps/web-foldkit/src/core/components/ui/form-error-summary.styles.ts
  • apps/web-foldkit/src/core/components/ui/input-otp.styles.ts
  • apps/web-foldkit/src/core/components/ui/input.styles.ts
  • apps/web-foldkit/src/core/components/ui/keyboard.styles.ts
  • apps/web-foldkit/src/core/components/ui/link.styles.ts
  • apps/web-foldkit/src/core/components/ui/list-box.styles.ts
  • apps/web-foldkit/src/core/components/ui/loader.styles.ts
  • apps/web-foldkit/src/core/components/ui/menu.styles.ts
  • apps/web-foldkit/src/core/components/ui/modal.styles.ts
  • apps/web-foldkit/src/core/components/ui/popover.styles.ts
  • apps/web-foldkit/src/core/components/ui/progress-bar.styles.ts
  • apps/web-foldkit/src/core/components/ui/radio.styles.ts
  • apps/web-foldkit/src/core/components/ui/search-field.styles.ts
  • apps/web-foldkit/src/core/components/ui/section-footer.styles.ts
  • apps/web-foldkit/src/core/components/ui/section-header.styles.ts
  • apps/web-foldkit/src/core/components/ui/section-label.styles.ts
  • apps/web-foldkit/src/core/components/ui/select.styles.ts
  • apps/web-foldkit/src/core/components/ui/separator.styles.ts
  • apps/web-foldkit/src/core/components/ui/sheet.styles.ts
  • apps/web-foldkit/src/core/components/ui/slider.styles.ts
  • apps/web-foldkit/src/core/components/ui/sonner.styles.ts
  • apps/web-foldkit/src/core/components/ui/split-panel/split-panel.styles.ts
  • apps/web-foldkit/src/core/components/ui/switch.styles.ts
  • apps/web-foldkit/src/core/components/ui/table.styles.ts
  • apps/web-foldkit/src/core/components/ui/tabs.styles.ts
  • apps/web-foldkit/src/core/components/ui/text.styles.ts
  • apps/web-foldkit/src/core/components/ui/textarea.styles.ts
  • apps/web-foldkit/src/core/components/ui/toast.styles.ts
  • apps/web-foldkit/src/core/components/ui/toggle-group.styles.ts
  • apps/web-foldkit/src/core/components/ui/toggle.styles.ts
  • apps/web-foldkit/src/core/components/ui/toolbar.styles.ts
  • apps/web-foldkit/src/core/components/ui/tooltip.styles.ts
  • apps/web-foldkit/src/core/components/ui/tree.styles.ts
  • apps/web-foldkit/src/core/db/actions.ts
  • apps/web-foldkit/src/core/db/collections.ts
  • apps/web-foldkit/src/core/dev-gallery/gallery.styles.ts
  • apps/web-foldkit/src/core/lib/access-token.test.ts
  • apps/web-foldkit/src/core/lib/access-token.ts
  • apps/web-foldkit/src/core/lib/bot-avatar.ts
  • apps/web-foldkit/src/core/lib/date-fns-shared.ts
  • apps/web-foldkit/src/core/lib/error-messages.ts
  • apps/web-foldkit/src/core/lib/notifications/README.md
  • apps/web-foldkit/src/core/lib/notifications/diagnostics-store.ts
  • apps/web-foldkit/src/core/lib/notifications/index.ts
  • apps/web-foldkit/src/core/lib/notifications/orchestrator.test.ts
  • apps/web-foldkit/src/core/lib/notifications/orchestrator.ts
  • apps/web-foldkit/src/core/lib/notifications/sinks/in-app.ts
  • apps/web-foldkit/src/core/lib/notifications/types.ts
  • apps/web-foldkit/src/core/lib/platform-storage/index.ts
  • apps/web-foldkit/src/core/lib/platform-storage/platform-runtime.ts
  • apps/web-foldkit/src/core/lib/platform-storage/tauri-key-value-store.ts
  • apps/web-foldkit/src/core/lib/rivet-client.ts
  • apps/web-foldkit/src/core/lib/rpc-auth-middleware.ts
  • apps/web-foldkit/src/core/lib/services/common/api-client.ts
  • apps/web-foldkit/src/core/lib/services/common/atom-client.ts
  • apps/web-foldkit/src/core/lib/services/common/rpc-atom-client.ts
  • apps/web-foldkit/src/core/lib/services/common/runtime.ts
  • apps/web-foldkit/src/core/lib/services/common/telemetry.ts
  • apps/web-foldkit/src/core/lib/session-bearer.ts
  • apps/web-foldkit/src/core/styles/styles.css
  • apps/web-foldkit/src/core/utils/image-crop.ts
  • apps/web-foldkit/src/data/actions.test.ts
  • apps/web-foldkit/src/data/actions.ts
  • apps/web-foldkit/src/data/live-query-changes.ts
  • apps/web-foldkit/src/data/normalized-store.ts
  • apps/web-foldkit/src/data/storage.ts
  • apps/web-foldkit/src/editor/behavior.ts
  • apps/web-foldkit/src/editor/code-highlight.ts
  • apps/web-foldkit/src/editor/decorations.ts
  • apps/web-foldkit/src/editor/detect-language.ts
  • apps/web-foldkit/src/editor/editor-view.ts
  • apps/web-foldkit/src/editor/file-types.ts
  • apps/web-foldkit/src/editor/markdown.test.ts
  • apps/web-foldkit/src/editor/operations.ts
  • apps/web-foldkit/src/editor/plugins.ts
  • apps/web-foldkit/src/editor/registry.ts
  • apps/web-foldkit/src/emoji-picker/data.ts
  • apps/web-foldkit/src/emoji-picker/dialog.ts
  • apps/web-foldkit/src/emoji-picker/picker.ts
  • apps/web-foldkit/src/emoji-picker/story.test.ts
  • apps/web-foldkit/src/emoji-picker/usage.ts
  • apps/web-foldkit/src/emoji-picker/view.ts
  • apps/web-foldkit/src/entry.ts
  • apps/web-foldkit/src/gallery/boot.ts
  • apps/web-foldkit/src/gallery/define.ts
  • apps/web-foldkit/src/gallery/entries/button.ts
  • apps/web-foldkit/src/gallery/entries/calendar.ts
  • apps/web-foldkit/src/gallery/entries/checkbox.ts
  • apps/web-foldkit/src/gallery/entries/choice-box.ts
  • apps/web-foldkit/src/gallery/entries/combo-box.ts
  • apps/web-foldkit/src/gallery/entries/command-menu-form.ts
  • apps/web-foldkit/src/gallery/entries/command-menu.ts
  • apps/web-foldkit/src/gallery/entries/composer.ts
  • apps/web-foldkit/src/gallery/entries/context-menu.ts
  • apps/web-foldkit/src/gallery/entries/date-field.ts
  • apps/web-foldkit/src/gallery/entries/date-picker.ts
  • apps/web-foldkit/src/gallery/entries/dialog.ts
  • apps/web-foldkit/src/gallery/entries/dropdown.ts
  • apps/web-foldkit/src/gallery/entries/empty-state.ts
  • apps/web-foldkit/src/gallery/entries/field-validation-state.ts
  • apps/web-foldkit/src/gallery/entries/field.ts
  • apps/web-foldkit/src/gallery/entries/form-error-summary.ts
  • apps/web-foldkit/src/gallery/entries/input-otp.ts
  • apps/web-foldkit/src/gallery/entries/input.ts
  • apps/web-foldkit/src/gallery/entries/link.ts
  • apps/web-foldkit/src/gallery/entries/list-box.ts
  • apps/web-foldkit/src/gallery/entries/loader.ts
  • apps/web-foldkit/src/gallery/entries/menu.ts
  • apps/web-foldkit/src/gallery/entries/modal.ts
  • apps/web-foldkit/src/gallery/entries/popover.ts
  • apps/web-foldkit/src/gallery/entries/progress-bar.ts
  • apps/web-foldkit/src/gallery/entries/radio.ts
  • apps/web-foldkit/src/gallery/entries/range-calendar.ts
  • apps/web-foldkit/src/gallery/entries/search-field.ts
  • apps/web-foldkit/src/gallery/entries/section-header.ts
  • apps/web-foldkit/src/gallery/entries/select.ts
  • apps/web-foldkit/src/gallery/entries/separator.ts
  • apps/web-foldkit/src/gallery/entries/sheet.ts
  • apps/web-foldkit/src/gallery/entries/slider.ts
  • apps/web-foldkit/src/gallery/entries/switch.ts
  • apps/web-foldkit/src/gallery/entries/table-selection.ts
  • apps/web-foldkit/src/gallery/entries/table.ts
  • apps/web-foldkit/src/gallery/entries/tabs.ts
  • apps/web-foldkit/src/gallery/entries/text-field.ts
  • apps/web-foldkit/src/gallery/entries/text.ts
  • apps/web-foldkit/src/gallery/entries/textarea.ts
  • apps/web-foldkit/src/gallery/entries/time-field.ts
  • apps/web-foldkit/src/gallery/entries/timezone-select.ts
  • apps/web-foldkit/src/gallery/entries/toast.ts
  • apps/web-foldkit/src/gallery/entries/toggle-group.ts
  • apps/web-foldkit/src/gallery/entries/toggle.ts
  • apps/web-foldkit/src/gallery/entries/toolbar.ts
  • apps/web-foldkit/src/gallery/entries/tooltip.ts
  • apps/web-foldkit/src/gallery/entries/tree.ts
  • apps/web-foldkit/src/gallery/frame.ts
  • apps/web-foldkit/src/gallery/interaction.ts
  • apps/web-foldkit/src/gif-picker/picker.ts
  • apps/web-foldkit/src/gif-picker/story.test.ts
  • apps/web-foldkit/src/gif-picker/view.ts
  • apps/web-foldkit/src/icons/index.ts
  • apps/web-foldkit/src/main.ts
  • apps/web-foldkit/src/mount/message-list.ts
  • apps/web-foldkit/src/notification-sound.test.ts
  • apps/web-foldkit/src/notification-sound.ts
  • apps/web-foldkit/src/overlay/command-palette/commands.ts
  • apps/web-foldkit/src/overlay/command-palette/message.ts
  • apps/web-foldkit/src/overlay/command-palette/palette.story.test.ts
  • apps/web-foldkit/src/overlay/command-palette/search-editor.ts
  • apps/web-foldkit/src/overlay/command-palette/search-mount.ts
  • apps/web-foldkit/src/overlay/command-palette/search-update.ts
  • apps/web-foldkit/src/overlay/command-palette/update.ts
  • apps/web-foldkit/src/overlay/modal.story.test.ts
  • apps/web-foldkit/src/overlay/modal.ts
  • apps/web-foldkit/src/overlay/modal/bot-avatar-upload.ts
  • apps/web-foldkit/src/overlay/modal/change-role.ts
  • apps/web-foldkit/src/overlay/modal/contract.ts
  • apps/web-foldkit/src/overlay/modal/create-bot.ts
  • apps/web-foldkit/src/overlay/modal/create-dm.ts
  • apps/web-foldkit/src/overlay/modal/create-organization.ts
  • apps/web-foldkit/src/overlay/modal/create-section.ts
  • apps/web-foldkit/src/overlay/modal/delete-bot.ts
  • apps/web-foldkit/src/overlay/modal/delete-channel.ts
  • apps/web-foldkit/src/overlay/modal/delete-message.ts
  • apps/web-foldkit/src/overlay/modal/delete-workspace.ts
  • apps/web-foldkit/src/overlay/modal/edit-bot.ts
  • apps/web-foldkit/src/overlay/modal/email-invite.ts
  • apps/web-foldkit/src/overlay/modal/feedback.ts
  • apps/web-foldkit/src/overlay/modal/frame.ts
  • apps/web-foldkit/src/overlay/modal/install-bot-by-id.ts
  • apps/web-foldkit/src/overlay/modal/join-channel.ts
  • apps/web-foldkit/src/overlay/modal/new-channel.ts
  • apps/web-foldkit/src/overlay/modal/regenerate-bot-token.ts
  • apps/web-foldkit/src/overlay/modal/rename-channel.ts
  • apps/web-foldkit/src/overlay/modal/rename-thread.ts
  • apps/web-foldkit/src/overlay/modal/request-integration.ts
  • apps/web-foldkit/src/overlay/modal/set-status-model.ts
  • apps/web-foldkit/src/overlay/modal/set-status-view.ts
  • apps/web-foldkit/src/overlay/modal/set-status.ts
  • apps/web-foldkit/src/overlay/out-message.ts
  • apps/web-foldkit/src/overlay/toaster.test.ts
  • apps/web-foldkit/src/overlay/toaster.ts
  • apps/web-foldkit/src/page/README.md
  • apps/web-foldkit/src/page/auth/continue/index.ts
  • apps/web-foldkit/src/page/auth/continue/message.ts
  • apps/web-foldkit/src/page/auth/continue/model.ts
  • apps/web-foldkit/src/page/auth/desktop/index.ts
  • apps/web-foldkit/src/page/auth/desktop/scene.test.ts
  • apps/web-foldkit/src/page/auth/layout.ts
  • apps/web-foldkit/src/page/auth/register/command.ts
  • apps/web-foldkit/src/page/auth/register/message.ts
  • apps/web-foldkit/src/page/auth/register/model.ts
  • apps/web-foldkit/src/page/auth/register/update.ts
  • apps/web-foldkit/src/page/auth/register/view.ts
  • apps/web-foldkit/src/page/auth/scene.test.ts
  • apps/web-foldkit/src/page/auth/sign-in/command.ts
  • apps/web-foldkit/src/page/auth/sign-in/message.ts
  • apps/web-foldkit/src/page/auth/sign-in/model.ts
  • apps/web-foldkit/src/page/auth/sign-in/update.ts
  • apps/web-foldkit/src/page/auth/sign-in/view.ts
  • apps/web-foldkit/src/page/channel-settings/connect/command.ts
  • apps/web-foldkit/src/page/channel-settings/connect/model.ts
  • apps/web-foldkit/src/page/channel-settings/connect/scene.test.ts
  • apps/web-foldkit/src/page/channel-settings/connect/share-modal-view.ts
  • apps/web-foldkit/src/page/channel-settings/connect/share-modal.ts
  • apps/web-foldkit/src/page/channel-settings/connect/story.test.ts
  • apps/web-foldkit/src/page/channel-settings/connect/update.ts
  • apps/web-foldkit/src/page/channel-settings/connect/view.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/cards.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/command.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/message.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/model.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/provider-card.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/row-menu.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/rows.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/rss-card.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/scene.test.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/story.test.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/token-display.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/update-cards.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/update.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/view.ts
  • apps/web-foldkit/src/page/channel-settings/integrations/webhooks.ts
  • apps/web-foldkit/src/page/channel-settings/name-rules.ts
  • apps/web-foldkit/src/page/channel-settings/overview/message.ts
  • apps/web-foldkit/src/page/channel-settings/overview/model.ts
  • apps/web-foldkit/src/page/channel-settings/overview/scene.test.ts
  • apps/web-foldkit/src/page/channel-settings/overview/story.test.ts
  • apps/web-foldkit/src/page/channel-settings/overview/subscription.ts
  • apps/web-foldkit/src/page/channel-settings/overview/update.ts
  • apps/web-foldkit/src/page/channel-settings/overview/view.ts
  • apps/web-foldkit/src/page/channel-settings/redirect/index.ts
  • apps/web-foldkit/src/page/chat-index/model.ts
  • apps/web-foldkit/src/page/chat-index/page.test.ts
  • apps/web-foldkit/src/page/chat-index/scene.test.ts
  • apps/web-foldkit/src/page/chat-index/subscription.ts
  • apps/web-foldkit/src/page/chat-index/update.ts
  • apps/web-foldkit/src/page/chat-index/view.ts
  • apps/web-foldkit/src/page/chat/action-effects.ts
  • apps/web-foldkit/src/page/chat/banners.ts
  • apps/web-foldkit/src/page/chat/channel/actions.story.test.ts
  • apps/web-foldkit/src/page/chat/channel/clear-notifications.test.ts
  • apps/web-foldkit/src/page/chat/channel/clear-notifications.ts
  • apps/web-foldkit/src/page/chat/channel/fixtures.test-support.ts
  • apps/web-foldkit/src/page/chat/channel/index.ts
  • apps/web-foldkit/src/page/chat/channel/messages.scene.test.ts
  • apps/web-foldkit/src/page/chat/channel/model.ts
  • apps/web-foldkit/src/page/chat/channel/page.test.ts
  • apps/web-foldkit/src/page/chat/channel/page.ts
  • apps/web-foldkit/src/page/chat/channel/read.story.test.ts
  • apps/web-foldkit/src/page/chat/channel/send.story.test.ts
  • apps/web-foldkit/src/page/chat/channel/subscription.test.ts
  • apps/web-foldkit/src/page/chat/channel/subscription.ts
  • apps/web-foldkit/src/page/chat/channel/view.ts
  • apps/web-foldkit/src/page/chat/channel/window.ts
  • apps/web-foldkit/src/page/chat/channel/write.ts
  • apps/web-foldkit/src/page/chat/composer-view.ts
  • apps/web-foldkit/src/page/chat/data.ts
  • apps/web-foldkit/src/page/chat/derive.ts
  • apps/web-foldkit/src/page/chat/files/data.ts
  • apps/web-foldkit/src/page/chat/files/media-view.ts
  • apps/web-foldkit/src/page/chat/files/page.test.ts
  • apps/web-foldkit/src/page/chat/files/page.ts
  • apps/web-foldkit/src/page/chat/files/subscriptions.ts
  • apps/web-foldkit/src/page/chat/files/view.ts
  • apps/web-foldkit/src/page/chat/header.ts
  • apps/web-foldkit/src/page/chat/message-actions.ts
  • apps/web-foldkit/src/page/chat/overlay-views.ts
  • apps/web-foldkit/src/page/chat/overlays.ts
  • apps/web-foldkit/src/page/chat/pinned.ts
  • apps/web-foldkit/src/page/chat/row-context.ts
  • apps/web-foldkit/src/page/chat/rows.ts
  • apps/web-foldkit/src/page/chat/tab-bar.ts
  • apps/web-foldkit/src/page/chat/thread-panel.ts
  • apps/web-foldkit/src/page/contract.ts
  • apps/web-foldkit/src/page/create-workspace.ts
  • apps/web-foldkit/src/page/home/commands.ts
  • apps/web-foldkit/src/page/home/message.ts
  • apps/web-foldkit/src/page/home/model.ts
  • apps/web-foldkit/src/page/home/scene.test.ts
  • apps/web-foldkit/src/page/home/story.test.ts
  • apps/web-foldkit/src/page/home/update.ts
  • apps/web-foldkit/src/page/home/view.ts
  • apps/web-foldkit/src/page/initials.ts
  • apps/web-foldkit/src/page/invite/command.ts
  • apps/web-foldkit/src/page/invite/message.ts
  • apps/web-foldkit/src/page/invite/model.ts
  • apps/web-foldkit/src/page/invite/scene.test.ts
  • apps/web-foldkit/src/page/invite/update.ts
  • apps/web-foldkit/src/page/invite/view.ts
  • apps/web-foldkit/src/page/join/command.ts
  • apps/web-foldkit/src/page/join/message.ts
  • apps/web-foldkit/src/page/join/model.ts
  • apps/web-foldkit/src/page/join/scene.test.ts
  • apps/web-foldkit/src/page/join/story.test.ts
  • apps/web-foldkit/src/page/join/update.ts
  • apps/web-foldkit/src/page/join/view.ts
  • apps/web-foldkit/src/page/my-settings/appearance/illustrations.ts
  • apps/web-foldkit/src/page/my-settings/appearance/update.ts
  • apps/web-foldkit/src/page/my-settings/appearance/view.ts
  • apps/web-foldkit/src/page/my-settings/desktop/message.ts
  • apps/web-foldkit/src/page/my-settings/desktop/scene.test.ts
  • apps/web-foldkit/src/page/my-settings/desktop/update.ts
  • apps/web-foldkit/src/page/my-settings/desktop/view.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/command.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/linked-accounts.test.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/message.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/model.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/scene.test.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/story.test.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/subscription.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/update.ts
  • apps/web-foldkit/src/page/my-settings/linked-accounts/view.ts
  • apps/web-foldkit/src/page/my-settings/notifications/command.ts
  • apps/web-foldkit/src/page/my-settings/notifications/index.ts
  • apps/web-foldkit/src/page/my-settings/notifications/message.ts
  • apps/web-foldkit/src/page/my-settings/notifications/model.ts
  • apps/web-foldkit/src/page/my-settings/notifications/scene.test.ts
  • apps/web-foldkit/src/page/my-settings/notifications/story.test.ts
  • apps/web-foldkit/src/page/my-settings/notifications/update.ts
  • apps/web-foldkit/src/page/my-settings/notifications/view.ts
  • apps/web-foldkit/src/page/my-settings/profile/avatar-view.ts
  • apps/web-foldkit/src/page/my-settings/profile/command.ts
  • apps/web-foldkit/src/page/my-settings/profile/crop.ts
  • apps/web-foldkit/src/page/my-settings/profile/form.ts
  • apps/web-foldkit/src/page/my-settings/profile/message.ts
  • apps/web-foldkit/src/page/my-settings/profile/model.ts
  • apps/web-foldkit/src/page/my-settings/profile/profile.scene.test.ts
  • apps/web-foldkit/src/page/my-settings/profile/profile.story.test.ts
  • apps/web-foldkit/src/page/my-settings/profile/subscription.ts
  • apps/web-foldkit/src/page/my-settings/profile/update.ts
  • apps/web-foldkit/src/page/my-settings/profile/view.ts
  • apps/web-foldkit/src/page/my-settings/shared.ts
  • apps/web-foldkit/src/page/my-settings/user.ts
  • apps/web-foldkit/src/page/notifications/inbox/message.ts
  • apps/web-foldkit/src/page/notifications/inbox/model.ts
  • apps/web-foldkit/src/page/notifications/inbox/page.test.ts
  • apps/web-foldkit/src/page/notifications/inbox/story.test.ts
  • apps/web-foldkit/src/page/notifications/inbox/update.ts
  • apps/web-foldkit/src/page/notifications/inbox/view.ts
  • apps/web-foldkit/src/page/onboarding/command.ts
  • apps/web-foldkit/src/page/onboarding/message.ts
  • apps/web-foldkit/src/page/onboarding/model.ts
  • apps/web-foldkit/src/page/onboarding/scene.test.ts
  • apps/web-foldkit/src/page/onboarding/setup-organization/scene.test.ts
  • apps/web-foldkit/src/page/onboarding/steps/invite.ts
  • apps/web-foldkit/src/page/onboarding/steps/profile.ts
  • apps/web-foldkit/src/page/onboarding/steps/theme.ts
  • apps/web-foldkit/src/page/onboarding/story.test.ts
  • apps/web-foldkit/src/page/onboarding/timezone/view.ts
  • apps/web-foldkit/src/page/onboarding/transition.ts
  • apps/web-foldkit/src/page/onboarding/update.ts
  • apps/web-foldkit/src/page/onboarding/validation.ts
  • apps/web-foldkit/src/page/onboarding/view.ts
  • apps/web-foldkit/src/page/out-message.ts
  • apps/web-foldkit/src/page/profile/model.ts
  • apps/web-foldkit/src/page/profile/scene.test.ts
  • apps/web-foldkit/src/page/profile/update.ts
  • apps/web-foldkit/src/page/profile/view.ts
  • apps/web-foldkit/src/page/root/index.ts
  • apps/web-foldkit/src/page/root/model.ts
  • apps/web-foldkit/src/page/root/story.test.ts
  • apps/web-foldkit/src/page/select-organization/model.ts
  • apps/web-foldkit/src/page/select-organization/scene.test.ts
  • apps/web-foldkit/src/page/select-organization/story.test.ts
  • apps/web-foldkit/src/page/select-organization/update.ts
  • apps/web-foldkit/src/page/select-organization/view.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/add-link-view.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/command.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/model.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/parts.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/scene.test.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/story.test.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/subscription.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/update.ts
  • apps/web-foldkit/src/page/settings/chat-sync-connection/view.ts
  • apps/web-foldkit/src/page/settings/chat-sync/add-connection-view.ts
  • apps/web-foldkit/src/page/settings/chat-sync/add-connection.ts
  • apps/web-foldkit/src/page/settings/chat-sync/confirm-dialog.ts
  • apps/web-foldkit/src/page/settings/chat-sync/discord.ts
  • apps/web-foldkit/src/page/settings/chat-sync/model.ts
  • apps/web-foldkit/src/page/settings/chat-sync/scene.test.ts
  • apps/web-foldkit/src/page/settings/chat-sync/story.test.ts
  • apps/web-foldkit/src/page/settings/chat-sync/update.ts
  • apps/web-foldkit/src/page/settings/chat-sync/view.ts
  • apps/web-foldkit/src/page/settings/connect-invites/message.ts
  • apps/web-foldkit/src/page/settings/connect-invites/model.ts
  • apps/web-foldkit/src/page/settings/connect-invites/scene.test.ts
  • apps/web-foldkit/src/page/settings/connect-invites/story.test.ts
  • apps/web-foldkit/src/page/settings/connect-invites/subscription.ts
  • apps/web-foldkit/src/page/settings/connect-invites/update.ts
  • apps/web-foldkit/src/page/settings/connect-invites/view.ts
  • apps/web-foldkit/src/page/settings/custom-emojis/message.ts
  • apps/web-foldkit/src/page/settings/custom-emojis/modals.ts
  • apps/web-foldkit/src/page/settings/custom-emojis/model.ts
  • apps/web-foldkit/src/page/settings/custom-emojis/scene.test.ts
  • apps/web-foldkit/src/page/settings/custom-emojis/story.test.ts
  • apps/web-foldkit/src/page/settings/custom-emojis/update.ts
  • apps/web-foldkit/src/page/settings/custom-emojis/view.ts
  • apps/web-foldkit/src/page/settings/debug/index.ts
  • apps/web-foldkit/src/page/settings/general/delete-workspace.ts
  • apps/web-foldkit/src/page/settings/general/general.scene.test.ts
  • apps/web-foldkit/src/page/settings/general/message.ts
  • apps/web-foldkit/src/page/settings/general/model.ts
  • apps/web-foldkit/src/page/settings/general/story.test.ts
  • apps/web-foldkit/src/page/settings/general/update.ts
  • apps/web-foldkit/src/page/settings/general/view.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/command.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/message.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/model.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/scene.test.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/story.test.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/update.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/view-connection.ts
  • apps/web-foldkit/src/page/settings/integrations/detail/view.ts
  • apps/web-foldkit/src/page/settings/integrations/index/message.ts
  • apps/web-foldkit/src/page/settings/integrations/index/scene.test.ts
  • apps/web-foldkit/src/page/settings/integrations/index/story.test.ts
  • apps/web-foldkit/src/page/settings/integrations/index/update.ts
  • apps/web-foldkit/src/page/settings/integrations/index/view.ts
  • apps/web-foldkit/src/page/settings/integrations/installed/message.ts
  • apps/web-foldkit/src/page/settings/integrations/installed/scene.test.ts
  • apps/web-foldkit/src/page/settings/integrations/installed/story.test.ts
  • apps/web-foldkit/src/page/settings/integrations/installed/update.ts
  • apps/web-foldkit/src/page/settings/integrations/marketplace/message.ts
  • apps/web-foldkit/src/page/settings/integrations/marketplace/scene.test.ts
  • apps/web-foldkit/src/page/settings/integrations/marketplace/story.test.ts
  • apps/web-foldkit/src/page/settings/integrations/marketplace/update.ts
  • apps/web-foldkit/src/page/settings/integrations/shared/bot-card.ts
  • apps/web-foldkit/src/page/settings/integrations/shared/interaction.ts
  • apps/web-foldkit/src/page/settings/integrations/your-apps/story.test.ts
  • apps/web-foldkit/src/page/settings/integrations/your-apps/update.ts
  • apps/web-foldkit/src/page/settings/integrations/your-apps/view.ts
  • apps/web-foldkit/src/page/settings/invitations/message.ts
  • apps/web-foldkit/src/page/settings/invitations/model.ts
  • apps/web-foldkit/src/page/settings/invitations/page.test.ts
  • apps/web-foldkit/src/page/settings/invitations/scene.test.ts
  • apps/web-foldkit/src/page/settings/invitations/story.test.ts
  • apps/web-foldkit/src/page/settings/invitations/update.ts
  • apps/web-foldkit/src/page/settings/invitations/view.ts
  • apps/web-foldkit/src/page/settings/team/view.ts
  • apps/web-foldkit/src/page/settings/upload.ts
  • apps/web-foldkit/src/page/shared/confirm-action.ts
  • apps/web-foldkit/src/page/shared/drop-zone.ts
  • apps/web-foldkit/src/page/shared/shared.test.ts
  • apps/web-foldkit/src/page/test-shared.ts
  • apps/web-foldkit/src/picker-popover/popover.ts
  • apps/web-foldkit/src/platform/desktop-auth.ts
  • apps/web-foldkit/src/platform/desktop-menu.ts
  • apps/web-foldkit/src/platform/index.ts
  • apps/web-foldkit/src/platform/presence/message.ts
  • apps/web-foldkit/src/platform/presence/model.ts
  • apps/web-foldkit/src/platform/presence/presence.story.test.ts
  • apps/web-foldkit/src/platform/presence/update.ts
  • apps/web-foldkit/src/platform/rivet.ts
  • apps/web-foldkit/src/platform/updates.test.ts
  • apps/web-foldkit/src/platform/updates.ts
  • apps/web-foldkit/src/redirect.ts
  • apps/web-foldkit/src/route.test.ts
  • apps/web-foldkit/src/route.ts
  • apps/web-foldkit/src/rpc.ts
  • apps/web-foldkit/src/shell/app-shell.ts
  • apps/web-foldkit/src/shell/channels-sidebar.ts
  • apps/web-foldkit/src/shell/channels-sidebar/actions.ts
  • apps/web-foldkit/src/shell/channels-sidebar/create-channel-hint.ts
  • apps/web-foldkit/src/shell/channels-sidebar/hints.ts
  • apps/web-foldkit/src/shell/channels-sidebar/items.ts
  • apps/web-foldkit/src/shell/channels-sidebar/menu-update.ts
  • apps/web-foldkit/src/shell/channels-sidebar/menus.ts
  • apps/web-foldkit/src/shell/channels-sidebar/model.ts
  • apps/web-foldkit/src/shell/channels-sidebar/sidebar.story.test.ts
  • apps/web-foldkit/src/shell/channels-sidebar/subscriptions.ts
  • apps/web-foldkit/src/shell/channels-sidebar/tree.ts
  • apps/web-foldkit/src/shell/channels-sidebar/view.ts
  • apps/web-foldkit/src/shell/context.ts
  • apps/web-foldkit/src/shell/layouts.ts
  • apps/web-foldkit/src/shell/menus.ts
  • apps/web-foldkit/src/shell/mobile.ts
  • apps/web-foldkit/src/shell/model.ts
  • apps/web-foldkit/src/shell/notifications.test.ts
  • apps/web-foldkit/src/shell/notifications.ts
  • apps/web-foldkit/src/shell/shell.story.test.ts
  • apps/web-foldkit/src/shell/sidebars.ts
  • apps/web-foldkit/src/shell/subscription.ts
  • apps/web-foldkit/src/shell/update.ts
  • apps/web-foldkit/src/test/chat-fixtures.ts
  • apps/web-foldkit/src/test/document-stub.ts
  • apps/web-foldkit/src/test/kit-collections-fixtures.ts
  • apps/web-foldkit/src/test/pages-entry-fixtures.ts
  • apps/web-foldkit/src/test/pages-fixtures.ts
  • apps/web-foldkit/src/test/root-fixtures.ts
  • apps/web-foldkit/src/test/toast-fixtures.ts
  • apps/web-foldkit/src/theme.test.ts
  • apps/web-foldkit/src/ui/appearance-previews.ts
  • apps/web-foldkit/src/ui/aria-radio.ts
  • apps/web-foldkit/src/ui/aria/announcer.ts
  • apps/web-foldkit/src/ui/aria/collection.ts
  • apps/web-foldkit/src/ui/aria/interaction.ts
  • apps/web-foldkit/src/ui/aria/overlay.ts
  • apps/web-foldkit/src/ui/aria/pending-announcement.ts
  • apps/web-foldkit/src/ui/aria/placement.ts
  • apps/web-foldkit/src/ui/aria/position.ts
  • apps/web-foldkit/src/ui/aria/scroll.ts
  • apps/web-foldkit/src/ui/button.ts
  • apps/web-foldkit/src/ui/calendar-date.ts
  • apps/web-foldkit/src/ui/calendar-view.ts
  • apps/web-foldkit/src/ui/calendar.scene.test.ts
  • apps/web-foldkit/src/ui/calendar.story.test.ts
  • apps/web-foldkit/src/ui/calendar.ts
  • apps/web-foldkit/src/ui/checkbox.scene.test.ts
  • apps/web-foldkit/src/ui/checkbox.ts
  • apps/web-foldkit/src/ui/choice-box.ts
  • apps/web-foldkit/src/ui/combo-box-view.ts
  • apps/web-foldkit/src/ui/combo-box.scene.test.ts
  • apps/web-foldkit/src/ui/combo-box.story.test.ts
  • apps/web-foldkit/src/ui/combo-box.ts
  • apps/web-foldkit/src/ui/command-menu-form.ts
  • apps/web-foldkit/src/ui/command-menu-view.ts
  • apps/web-foldkit/src/ui/date-field.ts
  • apps/web-foldkit/src/ui/date-picker-view.ts
  • apps/web-foldkit/src/ui/date-picker.ts
  • apps/web-foldkit/src/ui/date-segments.test.ts
  • apps/web-foldkit/src/ui/date-segments.ts
  • apps/web-foldkit/src/ui/dialog.ts
  • apps/web-foldkit/src/ui/field-validation-state.ts
  • apps/web-foldkit/src/ui/field.ts
  • apps/web-foldkit/src/ui/form-error-summary.ts
  • apps/web-foldkit/src/ui/input-otp.scene.test.ts
  • apps/web-foldkit/src/ui/input-otp.story.test.ts
  • apps/web-foldkit/src/ui/input-otp.ts
  • apps/web-foldkit/src/ui/input.ts
  • apps/web-foldkit/src/ui/link.ts
  • apps/web-foldkit/src/ui/list-box-view.ts
  • apps/web-foldkit/src/ui/list-box.scene.test.ts
  • apps/web-foldkit/src/ui/list-box.story.test.ts
  • apps/web-foldkit/src/ui/list-box.ts
  • apps/web-foldkit/src/ui/loader.ts
  • apps/web-foldkit/src/ui/menu-view.ts
  • apps/web-foldkit/src/ui/menu.scene.test.ts
  • apps/web-foldkit/src/ui/menu.story.test.ts
  • apps/web-foldkit/src/ui/menu.ts
  • apps/web-foldkit/src/ui/modal.scene.test.ts
  • apps/web-foldkit/src/ui/modal.story.test.ts
  • apps/web-foldkit/src/ui/modal.ts
  • apps/web-foldkit/src/ui/popover.scene.test.ts
  • apps/web-foldkit/src/ui/popover.story.test.ts
  • apps/web-foldkit/src/ui/popover.ts
  • apps/web-foldkit/src/ui/progress-bar.ts
  • apps/web-foldkit/src/ui/radio.scene.test.ts
  • apps/web-foldkit/src/ui/radio.ts
  • apps/web-foldkit/src/ui/search-field.ts
  • apps/web-foldkit/src/ui/section-footer.ts
  • apps/web-foldkit/src/ui/section-label.ts
  • apps/web-foldkit/src/ui/select-view.ts
  • apps/web-foldkit/src/ui/select.scene.test.ts
  • apps/web-foldkit/src/ui/select.story.test.ts
  • apps/web-foldkit/src/ui/select.ts
  • apps/web-foldkit/src/ui/sheet.scene.test.ts
  • apps/web-foldkit/src/ui/sheet.ts
  • apps/web-foldkit/src/ui/sidebar.ts
  • apps/web-foldkit/src/ui/slider.scene.test.ts
  • apps/web-foldkit/src/ui/slider.story.test.ts
  • apps/web-foldkit/src/ui/slider.ts
  • apps/web-foldkit/src/ui/switch.scene.test.ts
  • apps/web-foldkit/src/ui/switch.ts
  • apps/web-foldkit/src/ui/tab-strip.ts
  • apps/web-foldkit/src/ui/table-view.ts
  • apps/web-foldkit/src/ui/table.scene.test.ts
  • apps/web-foldkit/src/ui/table.story.test.ts
  • apps/web-foldkit/src/ui/table.ts
  • apps/web-foldkit/src/ui/tabs.scene.test.ts
  • apps/web-foldkit/src/ui/tabs.story.test.ts
  • apps/web-foldkit/src/ui/tabs.ts
  • apps/web-foldkit/src/ui/text-field.ts
  • apps/web-foldkit/src/ui/text.ts
  • apps/web-foldkit/src/ui/textarea.ts
  • apps/web-foldkit/src/ui/timezone-select.ts
  • apps/web-foldkit/src/ui/toast-view.ts
  • apps/web-foldkit/src/ui/toast.scene.test.ts
  • apps/web-foldkit/src/ui/toast.story.test.ts
  • apps/web-foldkit/src/ui/toast.ts
  • apps/web-foldkit/src/ui/toggle-group.scene.test.ts
  • apps/web-foldkit/src/ui/toggle-group.story.test.ts
  • apps/web-foldkit/src/ui/toggle-group.ts
  • apps/web-foldkit/src/ui/toggle.scene.test.ts
  • apps/web-foldkit/src/ui/toggle.ts
  • apps/web-foldkit/src/ui/toolbar.ts
  • apps/web-foldkit/src/ui/tooltip.scene.test.ts
  • apps/web-foldkit/src/ui/tooltip.story.test.ts
  • apps/web-foldkit/src/ui/tooltip.ts
  • apps/web-foldkit/src/ui/tree-view.ts
  • apps/web-foldkit/src/ui/tree.scene.test.ts
  • apps/web-foldkit/src/ui/tree.story.test.ts
  • apps/web-foldkit/src/ui/tree.ts
  • docs/foldkit-decisions/s1-skeleton.md
  • docs/foldkit-decisions/s2-data.md
  • docs/foldkit-decisions/s3-editor.md
  • docs/foldkit-decisions/s4-chat-list.md
  • docs/foldkit-decisions/s4b-virtual-list.md
  • docs/foldkit-decisions/s5-primitives.md
  • docs/foldkit-decisions/s6-errors.md
  • docs/foldkit-migration.md
  • docs/foldkit-orchestrator-prompt.md
  • docs/foldkit-review/2026-10-full-audit.md
  • docs/foldkit-review/icons.md
  • libs/effect-electric-db-collection/package.json
  • libs/effect-electric-db-collection/src/collection.ts
  • libs/effect-electric-db-collection/src/optimistic-action.ts
  • package.json
  • packages/auth/package.json
  • packages/auth/src/cache/index.ts
  • packages/auth/src/cache/user-lookup-cache.ts
  • packages/auth/src/cache/user-lookup-request.ts
  • packages/auth/src/config.ts
  • packages/auth/src/consumers/backend-auth.ts
  • packages/auth/src/errors.ts
  • packages/auth/src/index.ts
  • packages/auth/src/metrics.ts
  • packages/auth/src/session/clerk-client.ts
  • packages/auth/src/session/index.ts
  • packages/auth/src/session/jwt-decoder.ts
  • packages/auth/src/types.ts
  • packages/auth/src/yielded/hazel-auth.test.ts
  • packages/auth/src/yielded/storage.ts
  • packages/backend-core/package.json
  • packages/backend-core/src/index.ts
  • packages/backend-core/src/repositories/chat-sync-event-receipt-repo.ts
  • packages/backend-core/src/repositories/organization-member-repo.ts
  • packages/backend-core/src/repositories/organization-repo.ts
  • packages/backend-core/src/repositories/user-repo.ts
  • packages/backend-core/src/services/clerk-sync.ts
  • packages/backend-core/src/services/index.ts
  • packages/domain/src/current-user.ts
  • packages/domain/src/error-utils.ts
  • packages/domain/src/errors.ts
  • packages/domain/src/http/api-v1/integrations.ts
  • packages/domain/src/http/incoming-webhooks.ts
  • packages/domain/src/http/integrations.ts
  • packages/domain/src/http/uploads.ts
  • packages/domain/src/http/webhooks.ts
  • packages/domain/src/index.ts
  • packages/domain/src/rpc/bots.ts
  • packages/domain/src/rpc/channels.ts
  • packages/domain/src/rpc/connect-shares.ts
  • packages/domain/src/rpc/invitations.ts
  • packages/domain/src/rpc/middleware.ts
  • packages/domain/src/scopes/required-scopes.ts
  • packages/domain/src/session-errors.ts
  • packages/domain/src/session.ts
  • packages/schema/src/clerk.ts
  • packages/setup/package.json
  • packages/setup/src/commands/env.ts
  • packages/setup/src/commands/setup.ts
  • packages/setup/src/services/validators.ts
  • packages/setup/src/templates.ts
  • packages/ui-parity/.gitignore
  • packages/ui-parity/README.md
  • packages/ui-parity/package.json
  • packages/ui-parity/src/backend/assets.ts
  • packages/ui-parity/src/backend/call-log.ts
  • packages/ui-parity/src/backend/electric.ts
  • packages/ui-parity/src/backend/live-events.ts
  • packages/ui-parity/src/backend/network.ts
  • packages/ui-parity/src/backend/rivet.ts
  • packages/ui-parity/src/backend/rpc.ts
  • packages/ui-parity/src/backend/server.ts
  • packages/ui-parity/src/behavior.ts
  • packages/ui-parity/src/bench/chat-list-probes.ts
  • packages/ui-parity/src/bench/chat-list.ts
  • packages/ui-parity/src/bench/perf-probes.ts
  • packages/ui-parity/src/bench/perf-trace.ts
  • packages/ui-parity/src/bench/perf.ts
  • packages/ui-parity/src/bench/render-trace.ts
  • packages/ui-parity/src/bench/sidebar-diag.ts
  • packages/ui-parity/src/bench/style-bisect.ts
  • packages/ui-parity/src/bench/switch-trace.ts
  • packages/ui-parity/src/build.ts
  • packages/ui-parity/src/capture.ts
  • packages/ui-parity/src/cli.ts
  • packages/ui-parity/src/codegen.ts
  • packages/ui-parity/src/compare.ts
  • packages/ui-parity/src/config.ts
  • packages/ui-parity/src/coverage.ts
  • packages/ui-parity/src/fixtures/dataset.ts
  • packages/ui-parity/src/fixtures/datasets/chat-sync-discord.ts
  • packages/ui-parity/src/fixtures/datasets/default.ts
  • packages/ui-parity/src/fixtures/datasets/embeds.ts
  • packages/ui-parity/src/fixtures/datasets/empty.ts
  • packages/ui-parity/src/fixtures/datasets/entry.ts
  • packages/ui-parity/src/fixtures/datasets/errors.ts
  • packages/ui-parity/src/fixtures/datasets/heavy-content.ts
  • packages/ui-parity/src/fixtures/datasets/heavy.ts
  • packages/ui-parity/src/fixtures/datasets/inbox.ts
  • packages/ui-parity/src/fixtures/datasets/integrations-rpc.ts
  • packages/ui-parity/src/fixtures/datasets/integrations.ts
  • packages/ui-parity/src/fixtures/datasets/member.ts
  • packages/ui-parity/src/fixtures/datasets/onboarding.ts
  • packages/ui-parity/src/fixtures/datasets/personal.ts
  • packages/ui-parity/src/fixtures/datasets/rich.ts
  • packages/ui-parity/src/fixtures/datasets/rich/base.ts
  • packages/ui-parity/src/fixtures/datasets/rich/conversation.ts
  • packages/ui-parity/src/fixtures/datasets/rich/emoji.ts
  • packages/ui-parity/src/fixtures/datasets/rich/integrations.ts
  • packages/ui-parity/src/fixtures/datasets/rich/media.ts
  • packages/ui-parity/src/fixtures/datasets/status-emoji.ts
  • packages/ui-parity/src/fixtures/datasets/status-set.ts
  • packages/ui-parity/src/fixtures/identity.ts
  • packages/ui-parity/src/fixtures/ids.ts
  • packages/ui-parity/src/report.ts
  • packages/ui-parity/src/runtime/clerk-stub.ts
  • packages/ui-parity/src/runtime/snapshot.ts
  • packages/ui-parity/src/runtime/stabilize.ts
  • packages/ui-parity/src/scenarios.ts
  • packages/ui-parity/src/scenarios/chat-embeds.ts
  • packages/ui-parity/src/scenarios/chat-list.ts
  • packages/ui-parity/src/scenarios/chat-overlays.ts
  • packages/ui-parity/src/scenarios/chat.ts
  • packages/ui-parity/src/scenarios/composer.ts
  • packages/ui-parity/src/scenarios/entry.ts
  • packages/ui-parity/src/scenarios/gallery-data.ts
  • packages/ui-parity/src/scenarios/gallery-kit.ts
  • packages/ui-parity/src/scenarios/gallery-overlays.ts
  • packages/ui-parity/src/scenarios/gallery.ts
  • packages/ui-parity/src/scenarios/home.ts
  • packages/ui-parity/src/scenarios/integrations.ts
  • packages/ui-parity/src/scenarios/my-settings.ts
  • packages/ui-parity/src/scenarios/navigation.ts
  • packages/ui-parity/src/scenarios/notifications.ts
  • packages/ui-parity/src/scenarios/settings.ts
  • packages/ui-parity/src/scenarios/types.ts
  • packages/ui-parity/src/serve.ts
  • packages/ui-parity/tsconfig.json
  • turbo.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

⚠️ Coverage report too large to inline, see the workflow summary.

@Makisuo
Makisuo merged commit 4fb8080 into main Oct 15, 2026
7 checks passed
@Makisuo
Makisuo deleted the chore/foldkit-audit-fixes branch October 15, 2026 22:31
@maple-review-bot

Copy link
Copy Markdown

Merged with 1 step from "Before merge" still open. If it is done, tick it on the review comment; if not, now is the time.

  • Manual · Land this as a reviewable series; 879 files is past every reviewer and CI limit

@maple-review-bot

Copy link
Copy Markdown

Maple: after this shipped

⚠️ Something changed after this shipped. Details below.

Deployed to maple-web (production) at 2026-10-15 22:54 UTC as 160fdbd, the first version after the merge (the merge commit itself never reported). Compared the 60 minutes before and after.

Errors in the changed files:

  • 🔁 HttpClientError: 1/h → 4/h, still occurring
  • 🔁 HttpClientError: 2/h → 2/h, still occurring
  • 🔁 HttpClientError: 2/h → 2/h, still occurring
  • ➖ HttpClientError: 0/h → 0/h
  • ➖ HttpClientError: 0/h → 0/h
  • ➖ HttpClientError: 0/h → 0/h
  • ➖ HttpClientError: 0/h → 0/h
  • ➖ HttpClientError: 0/h → 0/h
  • ➖ HttpClientError: 0/h → 0/h
  • ➖ HttpClientError: 0/h → 0/h
Operation Calls/h Errors p95
⚠️ POST 90 → 123 0.0% → 0.0% 382 → 1296 ms
POST 4 → 3 0.0% → 0.0% 409 → 679 ms
PUT 0 → 0 0.0% → 0.0% 0 → 0 ms

Maple looks once, an hour after the first deploy that carries the merge.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant