Skip to content

chore(web): delete the legacy React app - #336

Merged
Makisuo merged 1 commit into
mainfrom
chore/remove-legacy-react-web
Oct 14, 2026
Merged

Makisuo merged 1 commit into
mainfrom
chore/remove-legacy-react-web

Conversation

@Makisuo

@Makisuo Makisuo commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Production (app.hazel.sh) and the desktop shell already ship apps/web-foldkit. This deletes the old React app (apps/web), about 76k lines.

Foldkit still reached into apps/web through the ~ alias, the stylesheet and public/, so this PR moves those pieces first:

  • Moved to apps/web-foldkit/src/core (git renames, contents unchanged): 119 framework-free modules Foldkit imports. These are collections and actions, theme, RPC/API clients, notifications, hotkey registry, *.styles.ts, and styles/. Their 9 tests moved with them. ~/ now resolves to src/core, so no Foldkit import lines changed. public/ moved to apps/web-foldkit/public.
  • React-only bits removed from the moved code: AvatarSize is inlined (the React avatar context is gone). The unread selectors.ts, a React hook that Foldkit didn't use, is removed. The slate-react/slate-history type augmentation is dropped, and the hotkey type now comes from @tanstack/hotkeys. Foldkit's package.json now declares the deps it used to pick up from apps/web.
  • Deleted: apps/web, libs/tanstack-db-atom (only the React app used it), and the icon/illustration generator scripts that rendered React components. The files they generated are kept and are now edited by hand.
  • Wiring: the web alchemy definition moved to apps/web-foldkit/alchemy.run.ts. It has the same web logical id, so it deploys to the same Worker. bun run setup now writes apps/web-foldkit/.env. Root Vitest runs apps/web-foldkit in place of apps/web. A lint override turns three Foldkit architecture rules off for src/core, because those modules are imperative code, not Foldkit programs.
  • ui-parity: the legacy-head target is gone. coverage reads the route tree from LEGACY_BASELINE_REF via git show. build legacy still works from the pinned worktree.
  • Docs: updated CLAUDE.md, the infra README, the sounds README and the migration doc's cutover step.

Verification

  • turbo typecheck (all packages) and alchemy:typecheck pass.
  • vitest --project web-foldkit: 157 files, 1473 passed.
  • vite build for web-foldkit succeeds.
  • oxlint error count for apps/web-foldkit and packages/ui-parity is the same as on main (9).

Follow-ups (not in this PR)

  • The Foldkit dev server is on port 3100, but FRONTEND_URL and HAZEL_WEB_URL still default to localhost:3000.
  • Renaming apps/web-foldkit to apps/web, and splitting src/core into a cleaner layout.

🤖 Generated with Claude Code


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

Production and the desktop shell already ship apps/web-foldkit, which still
reached into apps/web through the `~` alias, its stylesheet and public/.

- Move the framework-free modules Foldkit uses (collections, actions, theme,
  RPC/API clients, notifications, *.styles.ts, styles, public/) into
  apps/web-foldkit/src/core and apps/web-foldkit/public; `~/` now resolves
  there. Drop their React-only bits (avatar context, unread selectors,
  slate-react/react-hotkeys types).
- Delete apps/web and libs/tanstack-db-atom (only the React app used it), plus
  the icon/illustration generators that rendered React components.
- Move the web alchemy definition into apps/web-foldkit, point setup's env
  file there, run Foldkit's tests from the root Vitest projects.
- ui-parity: drop the legacy-head target; coverage reads routes from the
  pinned baseline ref.

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

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

Copy link
Copy Markdown

Maple review

🟢 Confidence 7/10 · likely safe to merge
The ~ alias, dependency and reference checks all come out consistent; the dropped sw.js retire worker is the one behavior risk and nothing tests the served assets.
quality 90/100 · 1 warning · tests partial · risk medium · 1 file not read

Deletes apps/web and the React-only libs/tanstack-db-atom, moving the 119 framework-free modules Foldkit still uses into apps/web-foldkit/src/core with ~/ repointed and the Worker build rewired. The move checks out, except it drops the retire service worker existing browsers need. The ten open apps/web/src/lib/registry.ts error issues come from the maple-ai and maple-chat bundles, not this app, and are not addressed here.

  • ~/ resolves to apps/web-foldkit/src/core, its dependencies declared in that package
  • The web Worker now builds and serves apps/web-foldkit including its own public/
  • parity loses the legacy-head target; coverage reads the route tree with git show
  • bun run setup writes apps/web-foldkit/.env

Before merge

  • Infra · Check every environment has what this config now expects · alchemy.run.ts
  • Infra · Check every environment has what this config now expects · apps/web-foldkit/alchemy.run.ts
  • Manual · Re-run bun run setup so apps/web-foldkit/.env is written where env-writer now reads and writes

Findings

🟠 Warning · F1 · The sw.js retire worker is dropped in the public/ move

correctness · apps/web-foldkit/vite.config.ts:30

apps/web/public/sw.js held the URL the Foldkit site served so browsers still running the React app's workbox worker could update into it and unregister; the move carried every other public asset across but left this one behind, and dropping publicDir means /sw.js now falls through to the SPA shell (apps/web-foldkit/alchemy.run.ts:21). A service worker whose update fetch returns text/html fails with an unsupported MIME type, so the workbox registration survives and keeps serving its precached HTML. Move sw.js into apps/web-foldkit/public/.

Move `apps/web/public/sw.js` to `apps/web-foldkit/public/sw.js`; it is the only public asset this move dropped.
🤖 Prompt to fix this finding with an AI agent
Findings from an automated review of commit f156a844213de4adaf1d4608282e73e9da183118. 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 · correctness · apps/web-foldkit/vite.config.ts:30
The `sw.js` retire worker is dropped in the `public/` move
`apps/web/public/sw.js` held the URL the Foldkit site served so browsers still running the React app's workbox worker could update into it and unregister; the move carried every other public asset across but left this one behind, and dropping `publicDir` means `/sw.js` now falls through to the SPA shell (`apps/web-foldkit/alchemy.run.ts:21`). A service worker whose update fetch returns `text/html` fails with an unsupported MIME type, so the workbox registration survives and keeps serving its precached HTML. Move `sw.js` into `apps/web-foldkit/public/`.
Suggested fix: Move `apps/web/public/sw.js` to `apps/web-foldkit/public/sw.js`; it is the only public asset this move dropped.

Production impact

Open errors in the changed files
Issue Service Occurrences File
@maple/api/vcs/VcsSourceRepositoryNotFoundError maple-ai 68 apps/web/src/lib/registry.ts
@maple/mcp/errors/McpQueryError maple-chat 45 apps/web/src/lib/registry.ts
@maple/mcp/errors/McpQueryError maple-chat 36 apps/web/src/lib/registry.ts
@maple/mcp/errors/McpQueryError maple-ai 18 apps/web/src/lib/registry.ts
@maple/http/errors/IntegrationsUpstreamError maple-chat 15 apps/web/src/lib/registry.ts
@maple/api/vcs/GithubAppError maple-chat 14 apps/web/src/lib/registry.ts
@maple/http/errors/IntegrationsUpstreamError maple-chat 11 apps/web/src/lib/registry.ts
@maple/mcp/errors/McpQueryError maple-ai 9 apps/web/src/lib/registry.ts
@maple/mcp/errors/McpQueryError maple-ai 9 apps/web/src/lib/registry.ts
@maple/mcp/errors/McpQueryError maple-chat 8 apps/web/src/lib/registry.ts

After this merges, Maple checks whether they stop.

Production traffic of the changed files (last 7 days)
File Calls/day Busiest operations
apps/web-foldkit/src/core/lib/hotkeys/hotkey-registry.ts 244 navigation 244/day, 0.0% err
What was checked
  • Every ~/… specifier in the tree resolves under src/core (grep of both apps)
  • No references remain to libs/tanstack-db-atom or the three deleted generator scripts (git grep at the head)
  • LEGACY_BASELINE_REF exists as a commit, so coverage's git show and the legacy worktree build resolve
Files not reviewed (1)

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

  • apps/web/package.json

f156a84 · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.

@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 799 files, which is 649 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: d2de3f06-29a8-4dc1-aae9-6ef0b4b35355
📥 Commits

Reviewing files that changed from the base of the PR and between e5b0d87 and f156a84.

⛔ Files ignored due to path filters: 11
  • apps/web-foldkit/public/apple-touch-icon-180x180.png is excluded by !**/*.png
  • apps/web-foldkit/public/brands/openstatus.svg is excluded by !**/*.svg
  • apps/web-foldkit/public/favicon.ico is excluded by !**/*.ico
  • apps/web-foldkit/public/icon.svg is excluded by !**/*.svg
  • apps/web-foldkit/public/maskable-icon-512x512.png is excluded by !**/*.png
  • apps/web-foldkit/public/pwa-192x192.png is excluded by !**/*.png
  • apps/web-foldkit/public/pwa-512x512.png is excluded by !**/*.png
  • apps/web-foldkit/public/pwa-64x64.png is excluded by !**/*.png
  • apps/web-foldkit/public/sounds/notification01.mp3 is excluded by !**/*.mp3
  • apps/web-foldkit/public/sounds/notification03.mp3 is excluded by !**/*.mp3
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing: 799
  • .oxlintrc.json
  • CLAUDE.md
  • alchemy.run.ts
  • apps/web-foldkit/alchemy.run.ts
  • apps/web-foldkit/package.json
  • apps/web-foldkit/public/images/image-mask.webp
  • apps/web-foldkit/public/images/masks/circle.webp
  • apps/web-foldkit/public/images/masks/square.webp
  • apps/web-foldkit/public/images/onboarding/autumn-day.webp
  • apps/web-foldkit/public/images/onboarding/autumn-night.webp
  • apps/web-foldkit/public/images/onboarding/spring-day.webp
  • apps/web-foldkit/public/images/onboarding/spring-night.webp
  • apps/web-foldkit/public/images/onboarding/summer-day.webp
  • apps/web-foldkit/public/images/onboarding/summer-night.webp
  • apps/web-foldkit/public/images/onboarding/winter-day.webp
  • apps/web-foldkit/public/images/onboarding/winter-night.webp
  • apps/web-foldkit/public/images/squirrle_ocean.webp
  • apps/web-foldkit/public/images/squirrle_window.webp
  • apps/web-foldkit/public/manifest.json
  • apps/web-foldkit/public/robots.txt
  • apps/web-foldkit/public/sounds/README.md
  • apps/web-foldkit/public/sounds/keyboard/.gitkeep
  • apps/web-foldkit/public/sounds/keyboard/README.md
  • apps/web-foldkit/scripts/generate-appearance-illustrations.ts
  • apps/web-foldkit/scripts/generate-file-icons.ts
  • apps/web-foldkit/scripts/generate-icons.ts
  • apps/web-foldkit/src/chat/file-icons.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/detect-language.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/avatar/styles.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/auth-fetch.ts
  • apps/web-foldkit/src/core/lib/bot-avatar.ts
  • apps/web-foldkit/src/core/lib/bot-scopes.ts
  • apps/web-foldkit/src/core/lib/connect-shared-channels.test.ts
  • apps/web-foldkit/src/core/lib/connect-shared-channels.ts
  • apps/web-foldkit/src/core/lib/custom-emoji-utils.ts
  • apps/web-foldkit/src/core/lib/date-fns-shared.ts
  • apps/web-foldkit/src/core/lib/electric-fetch.ts
  • apps/web-foldkit/src/core/lib/emoji-shortcode-map.ts
  • apps/web-foldkit/src/core/lib/emoji-utils.ts
  • apps/web-foldkit/src/core/lib/error-messages.ts
  • apps/web-foldkit/src/core/lib/helper/generate-shades.ts
  • apps/web-foldkit/src/core/lib/hotkeys/hotkey-registry.test.ts
  • apps/web-foldkit/src/core/lib/hotkeys/hotkey-registry.ts
  • apps/web-foldkit/src/core/lib/integrations/__data.ts
  • apps/web-foldkit/src/core/lib/native-notifications.test.ts
  • apps/web-foldkit/src/core/lib/native-notifications.ts
  • apps/web-foldkit/src/core/lib/notification-sound-manager.test.ts
  • apps/web-foldkit/src/core/lib/notification-sound-manager.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/sinks/native.ts
  • apps/web-foldkit/src/core/lib/notifications/sinks/sound.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-key-value-store.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/search-filter-parser.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/lib/tauri-autostart.ts
  • apps/web-foldkit/src/core/lib/tauri.ts
  • apps/web-foldkit/src/core/lib/theme/apply.ts
  • apps/web-foldkit/src/core/lib/theme/presets.ts
  • apps/web-foldkit/src/core/lib/theme/remix.ts
  • apps/web-foldkit/src/core/lib/upload-to-storage.ts
  • apps/web-foldkit/src/core/lib/utils.ts
  • apps/web-foldkit/src/core/styles/code-syntax.css
  • apps/web-foldkit/src/core/styles/styles.css
  • apps/web-foldkit/src/core/styles/theme.css
  • apps/web-foldkit/src/core/utils/attachment-url.ts
  • apps/web-foldkit/src/core/utils/cx.ts
  • apps/web-foldkit/src/core/utils/file-utils.ts
  • apps/web-foldkit/src/core/utils/image-crop.ts
  • apps/web-foldkit/src/core/utils/presence.test.ts
  • apps/web-foldkit/src/core/utils/presence.ts
  • apps/web-foldkit/src/core/utils/status.ts
  • apps/web-foldkit/src/core/utils/timezone.ts
  • apps/web-foldkit/src/icons/index.ts
  • apps/web-foldkit/src/page/my-settings/appearance/illustrations.ts
  • apps/web-foldkit/src/styles.css
  • apps/web-foldkit/src/ui/appearance-previews.ts
  • apps/web-foldkit/tsconfig.json
  • apps/web-foldkit/vite.config.ts
  • apps/web/.cta.json
  • apps/web/.env.example
  • apps/web/.gitignore
  • apps/web/README.md
  • apps/web/TODO.md
  • apps/web/components.json
  • apps/web/index.html
  • apps/web/package.json
  • apps/web/src/atoms/bot-atoms.ts
  • apps/web/src/atoms/channel-atoms.ts
  • apps/web/src/atoms/channel-member-atoms.ts
  • apps/web/src/atoms/channel-webhook-atoms.ts
  • apps/web/src/atoms/chat-atoms.ts
  • apps/web/src/atoms/chat-query-atoms.ts
  • apps/web/src/atoms/command-palette-state.ts
  • apps/web/src/atoms/connect-share-atoms.ts
  • apps/web/src/atoms/custom-emoji-atoms.ts
  • apps/web/src/atoms/feature-discovery-atoms.ts
  • apps/web/src/atoms/github-subscription-atoms.ts
  • apps/web/src/atoms/hotkey-atoms.test.ts
  • apps/web/src/atoms/hotkey-atoms.ts
  • apps/web/src/atoms/loading-state-atoms.ts
  • apps/web/src/atoms/message-atoms.ts
  • apps/web/src/atoms/modal-atoms.ts
  • apps/web/src/atoms/onboarding-atoms.ts
  • apps/web/src/atoms/organization-atoms.ts
  • apps/web/src/atoms/panel-atoms.ts
  • apps/web/src/atoms/presence-atoms.ts
  • apps/web/src/atoms/react-scan-atoms.ts
  • apps/web/src/atoms/recent-channels-atom.ts
  • apps/web/src/atoms/rss-subscription-atoms.ts
  • apps/web/src/atoms/search-atoms.ts
  • apps/web/src/atoms/section-collapse-atoms.ts
  • apps/web/src/atoms/sidebar-atoms.ts
  • apps/web/src/atoms/tauri-update-atoms.test.ts
  • apps/web/src/atoms/tauri-update-atoms.ts
  • apps/web/src/atoms/typing-indicator-atom.ts
  • apps/web/src/atoms/user-atoms.ts
  • apps/web/src/components/app-nav.tsx
  • apps/web/src/components/bots/bot-avatar-upload.tsx
  • apps/web/src/components/bots/bot-avatar.tsx
  • apps/web/src/components/bots/bot-card.tsx
  • apps/web/src/components/bots/bot-token-display.tsx
  • apps/web/src/components/bots/marketplace-bot-card.tsx
  • apps/web/src/components/channel-icon.tsx
  • apps/web/src/components/channel-settings/add-github-repo-modal.tsx
  • apps/web/src/components/channel-settings/add-rss-feed-modal.tsx
  • apps/web/src/components/channel-settings/create-webhook-form.tsx
  • apps/web/src/components/channel-settings/github-integration-card.tsx
  • apps/web/src/components/channel-settings/github-subscription-card.tsx
  • apps/web/src/components/channel-settings/integration-card.tsx
  • apps/web/src/components/channel-settings/maple-section.tsx
  • apps/web/src/components/channel-settings/openstatus-section.tsx
  • apps/web/src/components/channel-settings/railway-section.tsx
  • apps/web/src/components/channel-settings/rss-integration-card.tsx
  • apps/web/src/components/channel-settings/token-display.tsx
  • apps/web/src/components/chat-sync/add-channel-link-modal.tsx
  • apps/web/src/components/chat-sync/add-connection-modal.tsx
  • apps/web/src/components/chat/agent-steps-view.tsx
  • apps/web/src/components/chat/author-identity.test.ts
  • apps/web/src/components/chat/author-identity.ts
  • apps/web/src/components/chat/channel-files/channel-files-documents-list.tsx
  • apps/web/src/components/chat/channel-files/channel-files-header.tsx
  • apps/web/src/components/chat/channel-files/channel-files-media-gallery-view.tsx
  • apps/web/src/components/chat/channel-files/channel-files-media-grid.tsx
  • apps/web/src/components/chat/channel-files/channel-files-view.tsx
  • apps/web/src/components/chat/channel-files/index.ts
  • apps/web/src/components/chat/channel-join-banner.tsx
  • apps/web/src/components/chat/chat-header.tsx
  • apps/web/src/components/chat/chat-tab-bar.tsx
  • apps/web/src/components/chat/composer/composer-actions.tsx
  • apps/web/src/components/chat/composer/composer-attachment-previews.tsx
  • apps/web/src/components/chat/composer/composer-context.tsx
  • apps/web/src/components/chat/composer/composer-drop-zone.tsx
  • apps/web/src/components/chat/composer/composer-edit-indicator.tsx
  • apps/web/src/components/chat/composer/composer-editor.tsx
  • apps/web/src/components/chat/composer/composer-frame.tsx
  • apps/web/src/components/chat/composer/composer-reply-indicator.tsx
  • apps/web/src/components/chat/composer/index.tsx
  • apps/web/src/components/chat/delete-message-modal.tsx
  • apps/web/src/components/chat/image-viewer-modal.tsx
  • apps/web/src/components/chat/index.ts
  • apps/web/src/components/chat/inline-thread-preview.tsx
  • apps/web/src/components/chat/message-attachments.tsx
  • apps/web/src/components/chat/message-composer-actions.tsx
  • apps/web/src/components/chat/message-content.tsx
  • apps/web/src/components/chat/message-context-menu.tsx
  • apps/web/src/components/chat/message-embeds.tsx
  • apps/web/src/components/chat/message-item.tsx
  • apps/web/src/components/chat/message-list.tsx
  • apps/web/src/components/chat/message-live-context.tsx
  • apps/web/src/components/chat/message-live-state.test.tsx
  • apps/web/src/components/chat/message-live-state.tsx
  • apps/web/src/components/chat/message-reply-section.tsx
  • apps/web/src/components/chat/message-toolbar.tsx
  • apps/web/src/components/chat/message.tsx
  • apps/web/src/components/chat/pinned-messages-modal.tsx
  • apps/web/src/components/chat/reaction-button.tsx
  • apps/web/src/components/chat/reply-indicator.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/autocomplete-listbox.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/command-input-panel.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/editor-autocomplete.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/hooks/use-bot-commands.ts
  • apps/web/src/components/chat/slate-editor/autocomplete/index.ts
  • apps/web/src/components/chat/slate-editor/autocomplete/slate-autocomplete-plugin.ts
  • apps/web/src/components/chat/slate-editor/autocomplete/triggers/bot-command-item.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/triggers/command-trigger.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/triggers/emoji-trigger.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/triggers/mention-trigger.tsx
  • apps/web/src/components/chat/slate-editor/autocomplete/types.ts
  • apps/web/src/components/chat/slate-editor/autocomplete/use-slate-combobox.tsx
  • apps/web/src/components/chat/slate-editor/code-block-element.tsx
  • apps/web/src/components/chat/slate-editor/custom-emoji-element.tsx
  • apps/web/src/components/chat/slate-editor/heading-element.tsx
  • apps/web/src/components/chat/slate-editor/link-leaf.tsx
  • apps/web/src/components/chat/slate-editor/mention-element.tsx
  • apps/web/src/components/chat/slate-editor/mention-leaf.tsx
  • apps/web/src/components/chat/slate-editor/slate-code-block-paste-plugin.ts
  • apps/web/src/components/chat/slate-editor/slate-file-paste-plugin.ts
  • apps/web/src/components/chat/slate-editor/slate-markdown-decorators.tsx
  • apps/web/src/components/chat/slate-editor/slate-mention-plugin.tsx
  • apps/web/src/components/chat/slate-editor/slate-message-composer.tsx
  • apps/web/src/components/chat/slate-editor/slate-message-editor.tsx
  • apps/web/src/components/chat/slate-editor/slate-message-viewer.tsx
  • apps/web/src/components/chat/slate-editor/table-element.tsx
  • apps/web/src/components/chat/streaming-markdown.tsx
  • apps/web/src/components/chat/thread-message-item.tsx
  • apps/web/src/components/chat/thread-message-list.tsx
  • apps/web/src/components/chat/thread-panel.tsx
  • apps/web/src/components/chat/typing-indicator.tsx
  • apps/web/src/components/chat/user-profile-popover.tsx
  • apps/web/src/components/chat/video-player.tsx
  • apps/web/src/components/city-card.tsx
  • apps/web/src/components/command-palette.tsx
  • apps/web/src/components/command-palette/command-palette-context.tsx
  • apps/web/src/components/command-palette/command-palette-root.tsx
  • apps/web/src/components/command-palette/markdown-text.tsx
  • apps/web/src/components/command-palette/pages/appearance-view.tsx
  • apps/web/src/components/command-palette/pages/create-channel-view.tsx
  • apps/web/src/components/command-palette/pages/home-view.tsx
  • apps/web/src/components/command-palette/pages/index.ts
  • apps/web/src/components/command-palette/pages/join-channel-view.tsx
  • apps/web/src/components/command-palette/pages/status-view.tsx
  • apps/web/src/components/command-palette/search-filter-chip.tsx
  • apps/web/src/components/command-palette/search-filter-decorator.tsx
  • apps/web/src/components/command-palette/search-result-item.tsx
  • apps/web/src/components/command-palette/search-slate-editor.tsx
  • apps/web/src/components/command-palette/search-view.tsx
  • apps/web/src/components/connect/share-channel-modal.test.tsx
  • apps/web/src/components/connect/share-channel-modal.tsx
  • apps/web/src/components/embeds/embed-author.tsx
  • apps/web/src/components/embeds/embed-body.tsx
  • apps/web/src/components/embeds/embed-connect-prompt.tsx
  • apps/web/src/components/embeds/embed-error.tsx
  • apps/web/src/components/embeds/embed-fields.tsx
  • apps/web/src/components/embeds/embed-footer.tsx
  • apps/web/src/components/embeds/embed-image.tsx
  • apps/web/src/components/embeds/embed-markdown.tsx
  • apps/web/src/components/embeds/embed-skeleton.tsx
  • apps/web/src/components/embeds/embed-thumbnail.tsx
  • apps/web/src/components/embeds/embed.tsx
  • apps/web/src/components/embeds/index.ts
  • apps/web/src/components/embeds/use-embed-theme.ts
  • apps/web/src/components/emoji-picker/custom-emoji-section.tsx
  • apps/web/src/components/emoji-picker/emoji-picker-content.tsx
  • apps/web/src/components/emoji-picker/emoji-picker-dialog.tsx
  • apps/web/src/components/emoji-picker/emoji-picker-footer.tsx
  • apps/web/src/components/emoji-picker/emoji-picker-search.tsx
  • apps/web/src/components/emoji-picker/emoji-picker.tsx
  • apps/web/src/components/emoji-picker/index.ts
  • apps/web/src/components/emoji-preview.tsx
  • apps/web/src/components/gif-embed.tsx
  • apps/web/src/components/gif-picker/gif-picker-attribution.tsx
  • apps/web/src/components/gif-picker/gif-picker-categories.tsx
  • apps/web/src/components/gif-picker/gif-picker-dialog.tsx
  • apps/web/src/components/gif-picker/gif-picker-grid.tsx
  • apps/web/src/components/gif-picker/gif-picker-search.tsx
  • apps/web/src/components/gif-picker/index.ts
  • apps/web/src/components/gif-picker/use-klipy.ts
  • apps/web/src/components/globe-visual.tsx
  • apps/web/src/components/icons/icon-arrow-left.tsx
  • apps/web/src/components/icons/icon-arrow-path.tsx
  • apps/web/src/components/icons/icon-bell-slash.tsx
  • apps/web/src/components/icons/icon-bell.tsx
  • apps/web/src/components/icons/icon-brain-sparkle.tsx
  • apps/web/src/components/icons/icon-branch.tsx
  • apps/web/src/components/icons/icon-changelog.tsx
  • apps/web/src/components/icons/icon-chart-bar.tsx
  • apps/web/src/components/icons/icon-chat-bubble.tsx
  • apps/web/src/components/icons/icon-check.tsx
  • apps/web/src/components/icons/icon-chevron-down.tsx
  • apps/web/src/components/icons/icon-chevron-left.tsx
  • apps/web/src/components/icons/icon-chevron-right.tsx
  • apps/web/src/components/icons/icon-chevron-up-down.tsx
  • apps/web/src/components/icons/icon-chevron-up.tsx
  • apps/web/src/components/icons/icon-circle-dotted-user.tsx
  • apps/web/src/components/icons/icon-circle-pause.tsx
  • apps/web/src/components/icons/icon-circle-plus.tsx
  • apps/web/src/components/icons/icon-clock.tsx
  • apps/web/src/components/icons/icon-close.tsx
  • apps/web/src/components/icons/icon-code.tsx
  • apps/web/src/components/icons/icon-company.tsx
  • apps/web/src/components/icons/icon-connect.tsx
  • apps/web/src/components/icons/icon-copy.tsx
  • apps/web/src/components/icons/icon-cube.tsx
  • apps/web/src/components/icons/icon-dashboard.tsx
  • apps/web/src/components/icons/icon-discord.tsx
  • apps/web/src/components/icons/icon-dots-vertical.tsx
  • apps/web/src/components/icons/icon-dots.tsx
  • apps/web/src/components/icons/icon-download.tsx
  • apps/web/src/components/icons/icon-edit.tsx
  • apps/web/src/components/icons/icon-emoji-1.tsx
  • apps/web/src/components/icons/icon-emoji-add.tsx
  • apps/web/src/components/icons/icon-envelope.tsx
  • apps/web/src/components/icons/icon-eye-slash.tsx
  • apps/web/src/components/icons/icon-eye.tsx
  • apps/web/src/components/icons/icon-folder-plus.tsx
  • apps/web/src/components/icons/icon-folder.tsx
  • apps/web/src/components/icons/icon-gear.tsx
  • apps/web/src/components/icons/icon-gif.tsx
  • apps/web/src/components/icons/icon-grid-circle-plus.tsx
  • apps/web/src/components/icons/icon-hashtag.tsx
  • apps/web/src/components/icons/icon-heart.tsx
  • apps/web/src/components/icons/icon-integratio-.tsx
  • apps/web/src/components/icons/icon-leave.tsx
  • apps/web/src/components/icons/icon-lightbulb.tsx
  • apps/web/src/components/icons/icon-link-external.tsx
  • apps/web/src/components/icons/icon-loader.tsx
  • apps/web/src/components/icons/icon-lock.tsx
  • apps/web/src/components/icons/icon-logout.tsx
  • apps/web/src/components/icons/icon-magic-wand-sparkle.tsx
  • apps/web/src/components/icons/icon-magnifier-3.tsx
  • apps/web/src/components/icons/icon-map-pin.tsx
  • apps/web/src/components/icons/icon-megaphone.tsx
  • apps/web/src/components/icons/icon-menu.tsx
  • apps/web/src/components/icons/icon-minus.tsx
  • apps/web/src/components/icons/icon-moon.tsx
  • apps/web/src/components/icons/icon-msg-clock.tsx
  • apps/web/src/components/icons/icon-msgs.tsx
  • apps/web/src/components/icons/icon-paintbrush.tsx
  • apps/web/src/components/icons/icon-paperclip2.tsx
  • apps/web/src/components/icons/icon-pen-sparkle.tsx
  • apps/web/src/components/icons/icon-persons-2.tsx
  • apps/web/src/components/icons/icon-phone.tsx
  • apps/web/src/components/icons/icon-pin.tsx
  • apps/web/src/components/icons/icon-play.tsx
  • apps/web/src/components/icons/icon-plus.tsx
  • apps/web/src/components/icons/icon-presentation-chart.tsx
  • apps/web/src/components/icons/icon-reply.tsx
  • apps/web/src/components/icons/icon-robot.tsx
  • apps/web/src/components/icons/icon-rocket.tsx
  • apps/web/src/components/icons/icon-servers.tsx
  • apps/web/src/components/icons/icon-share.tsx
  • apps/web/src/components/icons/icon-shop.tsx
  • apps/web/src/components/icons/icon-sparkles.tsx
  • apps/web/src/components/icons/icon-square-command.tsx
  • apps/web/src/components/icons/icon-square-terminal.tsx
  • apps/web/src/components/icons/icon-star.tsx
  • apps/web/src/components/icons/icon-sun.tsx
  • apps/web/src/components/icons/icon-support.tsx
  • apps/web/src/components/icons/icon-thread.tsx
  • apps/web/src/components/icons/icon-trash.tsx
  • apps/web/src/components/icons/icon-unpin.tsx
  • apps/web/src/components/icons/icon-user.tsx
  • apps/web/src/components/icons/icon-users-plus.tsx
  • apps/web/src/components/icons/icon-users.tsx
  • apps/web/src/components/icons/icon-volume-mute.tsx
  • apps/web/src/components/icons/icon-volume.tsx
  • apps/web/src/components/icons/icon-warning.tsx
  • apps/web/src/components/icons/icon-webhook.tsx
  • apps/web/src/components/icons/icon-xmark.tsx
  • apps/web/src/components/integrations/add-github-subscription-modal.tsx
  • apps/web/src/components/integrations/add-rss-subscription-modal.tsx
  • apps/web/src/components/integrations/configure-maple-modal.tsx
  • apps/web/src/components/integrations/configure-openstatus-modal.tsx
  • apps/web/src/components/integrations/configure-railway-modal.tsx
  • apps/web/src/components/integrations/edit-github-subscription-modal.tsx
  • apps/web/src/components/integrations/github-pr-embed.tsx
  • apps/web/src/components/integrations/github-subscriptions-section.tsx
  • apps/web/src/components/integrations/index.ts
  • apps/web/src/components/integrations/linear-issue-embed.tsx
  • apps/web/src/components/integrations/maple-integration-content.tsx
  • apps/web/src/components/integrations/openstatus-integration-content.tsx
  • apps/web/src/components/integrations/railway-integration-content.tsx
  • apps/web/src/components/integrations/rss-subscriptions-section.tsx
  • apps/web/src/components/link-preview.tsx
  • apps/web/src/components/loader.tsx
  • apps/web/src/components/logo.tsx
  • apps/web/src/components/mobile-nav.tsx
  • apps/web/src/components/modals/appearances.tsx
  • apps/web/src/components/modals/change-role-modal.tsx
  • apps/web/src/components/modals/create-bot-modal.tsx
  • apps/web/src/components/modals/create-channel-modal.tsx
  • apps/web/src/components/modals/create-dm-modal.tsx
  • apps/web/src/components/modals/create-organization-modal.tsx
  • apps/web/src/components/modals/create-section-modal.tsx
  • apps/web/src/components/modals/delete-channel-modal.tsx
  • apps/web/src/components/modals/delete-workspace-modal.tsx
  • apps/web/src/components/modals/edit-bot-modal.tsx
  • apps/web/src/components/modals/email-invite-modal.tsx
  • apps/web/src/components/modals/feedback-modal.tsx
  • apps/web/src/components/modals/join-channel-modal.tsx
  • apps/web/src/components/modals/rename-channel-modal.tsx
  • apps/web/src/components/modals/rename-thread-modal.tsx
  • apps/web/src/components/modals/request-integration-modal.tsx
  • apps/web/src/components/modals/set-status-modal.tsx
  • apps/web/src/components/notifications/notification-item.tsx
  • apps/web/src/components/notifications/notification-list.tsx
  • apps/web/src/components/onboarding/invite-team-step.tsx
  • apps/web/src/components/onboarding/onboarding-layout.tsx
  • apps/web/src/components/onboarding/onboarding-navigation.tsx
  • apps/web/src/components/onboarding/org-setup-step.tsx
  • apps/web/src/components/onboarding/profile-info-step.tsx
  • apps/web/src/components/onboarding/role-step.tsx
  • apps/web/src/components/onboarding/theme-selection-step.tsx
  • apps/web/src/components/onboarding/timezone-selection-step.tsx
  • apps/web/src/components/onboarding/use-case-step.tsx
  • apps/web/src/components/onboarding/welcome-step.tsx
  • apps/web/src/components/profile/avatar-crop-modal.tsx
  • apps/web/src/components/profile/crop-area.tsx
  • apps/web/src/components/profile/profile-picture-upload.tsx
  • apps/web/src/components/route-error.tsx
  • apps/web/src/components/route-not-found.tsx
  • apps/web/src/components/sidebar/app-sidebar.tsx
  • apps/web/src/components/sidebar/channel-item.tsx
  • apps/web/src/components/sidebar/channels-sidebar.tsx
  • apps/web/src/components/sidebar/discoverable-channels.tsx
  • apps/web/src/components/sidebar/dm-channel-item.tsx
  • apps/web/src/components/sidebar/favorite-section.tsx
  • apps/web/src/components/sidebar/my-settings-sidebar.tsx
  • apps/web/src/components/sidebar/nav-sidebar.tsx
  • apps/web/src/components/sidebar/notifications-sidebar.tsx
  • apps/web/src/components/sidebar/section-group.tsx
  • apps/web/src/components/sidebar/settings-sidebar.tsx
  • apps/web/src/components/sidebar/switch-server-menu.tsx
  • apps/web/src/components/sidebar/thread-item.tsx
  • apps/web/src/components/sidebar/user-menu.tsx
  • apps/web/src/components/status/user-status-badge.tsx
  • apps/web/src/components/tauri-menu-listener.tsx
  • apps/web/src/components/tauri-update-check.tsx
  • apps/web/src/components/theme-provider.tsx
  • apps/web/src/components/theme/GrayPaletteSelector.tsx
  • apps/web/src/components/theme/RadiusSelector.tsx
  • apps/web/src/components/theme/ThemePresetCard.tsx
  • apps/web/src/components/theme/ThemeRemixSection.tsx
  • apps/web/src/components/theme/index.ts
  • apps/web/src/components/time-ribbon.tsx
  • apps/web/src/components/tweet-embed.tsx
  • apps/web/src/components/ui/avatar/avatar-badge.tsx
  • apps/web/src/components/ui/avatar/avatar-context.tsx
  • apps/web/src/components/ui/avatar/avatar-fallback.tsx
  • apps/web/src/components/ui/avatar/avatar-image.tsx
  • apps/web/src/components/ui/avatar/avatar-root.tsx
  • apps/web/src/components/ui/avatar/avatar-status-indicator.tsx
  • apps/web/src/components/ui/avatar/avatar-verified-badge.tsx
  • apps/web/src/components/ui/avatar/avatar.tsx
  • apps/web/src/components/ui/avatar/base-components/avatar-online-indicator.tsx
  • apps/web/src/components/ui/avatar/base-components/index.tsx
  • apps/web/src/components/ui/avatar/base-components/verified-tick.tsx
  • apps/web/src/components/ui/avatar/index.ts
  • apps/web/src/components/ui/avatar/utils.ts
  • apps/web/src/components/ui/badge.tsx
  • apps/web/src/components/ui/button.tsx
  • apps/web/src/components/ui/calendar.tsx
  • apps/web/src/components/ui/card.tsx
  • apps/web/src/components/ui/carousel.tsx
  • apps/web/src/components/ui/checkbox.tsx
  • apps/web/src/components/ui/choice-box.tsx
  • apps/web/src/components/ui/combo-box.tsx
  • apps/web/src/components/ui/command-menu-form.tsx
  • apps/web/src/components/ui/command-menu.tsx
  • apps/web/src/components/ui/context-menu.tsx
  • apps/web/src/components/ui/date-field.tsx
  • apps/web/src/components/ui/date-picker.tsx
  • apps/web/src/components/ui/dialog.tsx
  • apps/web/src/components/ui/dropdown.tsx
  • apps/web/src/components/ui/empty-state.tsx
  • apps/web/src/components/ui/field-validation-state.tsx
  • apps/web/src/components/ui/field.tsx
  • apps/web/src/components/ui/form-error-summary.tsx
  • apps/web/src/components/ui/input-otp.tsx
  • apps/web/src/components/ui/input.tsx
  • apps/web/src/components/ui/keyboard.tsx
  • apps/web/src/components/ui/link.tsx
  • apps/web/src/components/ui/list-box.tsx
  • apps/web/src/components/ui/loader.tsx
  • apps/web/src/components/ui/menu.tsx
  • apps/web/src/components/ui/modal.tsx
  • apps/web/src/components/ui/popover.tsx
  • apps/web/src/components/ui/progress-bar.tsx
  • apps/web/src/components/ui/radio.tsx
  • apps/web/src/components/ui/range-calendar.tsx
  • apps/web/src/components/ui/search-field.tsx
  • apps/web/src/components/ui/section-footer.tsx
  • apps/web/src/components/ui/section-header.tsx
  • apps/web/src/components/ui/section-label.tsx
  • apps/web/src/components/ui/select.tsx
  • apps/web/src/components/ui/separator.tsx
  • apps/web/src/components/ui/sheet.tsx
  • apps/web/src/components/ui/shiny-text.tsx
  • apps/web/src/components/ui/sidebar.tsx
  • apps/web/src/components/ui/slider.tsx
  • apps/web/src/components/ui/split-panel/index.ts
  • apps/web/src/components/ui/split-panel/split-panel-handle.tsx
  • apps/web/src/components/ui/split-panel/split-panel.tsx
  • apps/web/src/components/ui/split-panel/use-panel-resize.ts
  • apps/web/src/components/ui/switch.tsx
  • apps/web/src/components/ui/table.tsx
  • apps/web/src/components/ui/tabs.tsx
  • apps/web/src/components/ui/text-field.tsx
  • apps/web/src/components/ui/text.tsx
  • apps/web/src/components/ui/textarea.tsx
  • apps/web/src/components/ui/time-field.tsx
  • apps/web/src/components/ui/timezone-select.tsx
  • apps/web/src/components/ui/toast.tsx
  • apps/web/src/components/ui/toggle-group.tsx
  • apps/web/src/components/ui/toggle.tsx
  • apps/web/src/components/ui/toolbar.tsx
  • apps/web/src/components/ui/tooltip.tsx
  • apps/web/src/components/ui/tree.tsx
  • apps/web/src/components/version-check.tsx
  • apps/web/src/components/youtube-embed.tsx
  • apps/web/src/db/helper.ts
  • apps/web/src/db/hooks.ts
  • apps/web/src/db/index.ts
  • apps/web/src/db/materialized-collections.ts
  • apps/web/src/dev-gallery/entries/button.tsx
  • apps/web/src/dev-gallery/entries/calendar.tsx
  • apps/web/src/dev-gallery/entries/checkbox.tsx
  • apps/web/src/dev-gallery/entries/choice-box.tsx
  • apps/web/src/dev-gallery/entries/combo-box.tsx
  • apps/web/src/dev-gallery/entries/command-menu-form.tsx
  • apps/web/src/dev-gallery/entries/command-menu.tsx
  • apps/web/src/dev-gallery/entries/composer.tsx
  • apps/web/src/dev-gallery/entries/context-menu.tsx
  • apps/web/src/dev-gallery/entries/date-field.tsx
  • apps/web/src/dev-gallery/entries/date-picker.tsx
  • apps/web/src/dev-gallery/entries/dialog.tsx
  • apps/web/src/dev-gallery/entries/dropdown.tsx
  • apps/web/src/dev-gallery/entries/empty-state.tsx
  • apps/web/src/dev-gallery/entries/field-validation-state.tsx
  • apps/web/src/dev-gallery/entries/field.tsx
  • apps/web/src/dev-gallery/entries/form-error-summary.tsx
  • apps/web/src/dev-gallery/entries/input-otp.tsx
  • apps/web/src/dev-gallery/entries/input.tsx
  • apps/web/src/dev-gallery/entries/link.tsx
  • apps/web/src/dev-gallery/entries/list-box.tsx
  • apps/web/src/dev-gallery/entries/loader.tsx
  • apps/web/src/dev-gallery/entries/menu.tsx
  • apps/web/src/dev-gallery/entries/modal.tsx
  • apps/web/src/dev-gallery/entries/popover.tsx
  • apps/web/src/dev-gallery/entries/progress-bar.tsx
  • apps/web/src/dev-gallery/entries/radio.tsx
  • apps/web/src/dev-gallery/entries/range-calendar.tsx
  • apps/web/src/dev-gallery/entries/search-field.tsx
  • apps/web/src/dev-gallery/entries/section-header.tsx
  • apps/web/src/dev-gallery/entries/select.tsx
  • apps/web/src/dev-gallery/entries/separator.tsx
  • apps/web/src/dev-gallery/entries/sheet.tsx
  • apps/web/src/dev-gallery/entries/slider.tsx
  • apps/web/src/dev-gallery/entries/switch.tsx
  • apps/web/src/dev-gallery/entries/table-selection.tsx
  • apps/web/src/dev-gallery/entries/table.tsx
  • apps/web/src/dev-gallery/entries/tabs.tsx
  • apps/web/src/dev-gallery/entries/text-field.tsx
  • apps/web/src/dev-gallery/entries/text.tsx
  • apps/web/src/dev-gallery/entries/textarea.tsx
  • apps/web/src/dev-gallery/entries/time-field.tsx
  • apps/web/src/dev-gallery/entries/timezone-select.tsx
  • apps/web/src/dev-gallery/entries/toast.tsx
  • apps/web/src/dev-gallery/entries/toggle-group.tsx
  • apps/web/src/dev-gallery/entries/toggle.tsx
  • apps/web/src/dev-gallery/entries/toolbar.tsx
  • apps/web/src/dev-gallery/entries/tooltip.tsx
  • apps/web/src/dev-gallery/entries/tree.tsx
  • apps/web/src/dev-gallery/frame.tsx
  • apps/web/src/hooks/message-actor-types.ts
  • apps/web/src/hooks/use-app-form.ts
  • apps/web/src/hooks/use-app-hotkey.ts
  • apps/web/src/hooks/use-bot-avatar-upload.tsx
  • apps/web/src/hooks/use-breakpoint.ts
  • apps/web/src/hooks/use-channel-member-actions.ts
  • apps/web/src/hooks/use-chat.ts
  • apps/web/src/hooks/use-collection-error.ts
  • apps/web/src/hooks/use-command-palette.ts
  • apps/web/src/hooks/use-crop-interaction.ts
  • apps/web/src/hooks/use-debounced-intersection.ts
  • apps/web/src/hooks/use-drag-detection.ts
  • apps/web/src/hooks/use-embla-carousel-sync.ts
  • apps/web/src/hooks/use-emoji-stats.tsx
  • apps/web/src/hooks/use-file-upload-handler.tsx
  • apps/web/src/hooks/use-file-upload.tsx
  • apps/web/src/hooks/use-global-keyboard-focus.ts
  • apps/web/src/hooks/use-grouped-notifications.ts
  • apps/web/src/hooks/use-intersection-observer.ts
  • apps/web/src/hooks/use-loading-state.ts
  • apps/web/src/hooks/use-media-query.ts
  • apps/web/src/hooks/use-message-actions.ts
  • apps/web/src/hooks/use-message-actor.test.ts
  • apps/web/src/hooks/use-message-actor.ts
  • apps/web/src/hooks/use-message-toolbar-overlay.test.ts
  • apps/web/src/hooks/use-message-toolbar-overlay.ts
  • apps/web/src/hooks/use-mobile.ts
  • apps/web/src/hooks/use-modal-state.ts
  • apps/web/src/hooks/use-mount-effect.ts
  • apps/web/src/hooks/use-mounted.ts
  • apps/web/src/hooks/use-notification-settings.ts
  • apps/web/src/hooks/use-notification-sound.tsx
  • apps/web/src/hooks/use-notifications.ts
  • apps/web/src/hooks/use-onboarding.ts
  • apps/web/src/hooks/use-organization-avatar-upload.tsx
  • apps/web/src/hooks/use-organization.ts
  • apps/web/src/hooks/use-permission.ts
  • apps/web/src/hooks/use-posthog-identify.ts
  • apps/web/src/hooks/use-presence.ts
  • apps/web/src/hooks/use-profile-picture-upload.tsx
  • apps/web/src/hooks/use-resize-observer.ts
  • apps/web/src/hooks/use-scroll-into-view-on-active.ts
  • apps/web/src/hooks/use-scroll-restoration.ts
  • apps/web/src/hooks/use-search-query.ts
  • apps/web/src/hooks/use-shared-channels.ts
  • apps/web/src/hooks/use-theme-settings.ts
  • apps/web/src/hooks/use-typing-indicators.ts
  • apps/web/src/hooks/use-typing.test.tsx
  • apps/web/src/hooks/use-typing.ts
  • apps/web/src/hooks/use-upload.ts
  • apps/web/src/hooks/use-visible-message-notification-cleaner.ts
  • apps/web/src/lib/auth.tsx
  • apps/web/src/lib/channels.ts
  • apps/web/src/lib/helper/get-onboarding-image.ts
  • apps/web/src/lib/message-retry.ts
  • apps/web/src/lib/notifications/selectors.test.ts
  • apps/web/src/lib/notifications/selectors.ts
  • apps/web/src/lib/primitive.ts
  • apps/web/src/lib/registry.ts
  • apps/web/src/lib/services/common/link-preview-client.ts
  • apps/web/src/lib/services/common/network-mode.ts
  • apps/web/src/lib/toast-exit.tsx
  • apps/web/src/lib/typing-diagnostics/diagnostics-store.ts
  • apps/web/src/lib/typing-diagnostics/index.ts
  • apps/web/src/lib/typing-diagnostics/types.ts
  • apps/web/src/lib/version.ts
  • apps/web/src/lib/web-callback-single-flight.test.ts
  • apps/web/src/lib/web-callback-single-flight.ts
  • apps/web/src/main.tsx
  • apps/web/src/providers/chat-provider.tsx
  • apps/web/src/providers/message-hover-provider.tsx
  • apps/web/src/providers/notification-sound-provider.tsx
  • apps/web/src/providers/presence-provider.tsx
  • apps/web/src/reportWebVitals.ts
  • apps/web/src/routeTree.gen.ts
  • apps/web/src/routes/__root.tsx
  • apps/web/src/routes/_app/$orgSlug/channels/$channelId/settings/connect.tsx
  • apps/web/src/routes/_app/$orgSlug/channels/$channelId/settings/index.tsx
  • apps/web/src/routes/_app/$orgSlug/channels/$channelId/settings/integrations.tsx
  • apps/web/src/routes/_app/$orgSlug/channels/$channelId/settings/layout.tsx
  • apps/web/src/routes/_app/$orgSlug/channels/$channelId/settings/overview.tsx
  • apps/web/src/routes/_app/$orgSlug/chat/$id.tsx
  • apps/web/src/routes/_app/$orgSlug/chat/$id/files/index.tsx
  • apps/web/src/routes/_app/$orgSlug/chat/$id/files/media.tsx
  • apps/web/src/routes/_app/$orgSlug/chat/$id/index.tsx
  • apps/web/src/routes/_app/$orgSlug/chat/index.tsx
  • apps/web/src/routes/_app/$orgSlug/index.tsx
  • apps/web/src/routes/_app/$orgSlug/layout.tsx
  • apps/web/src/routes/_app/$orgSlug/my-settings/desktop.tsx
  • apps/web/src/routes/_app/$orgSlug/my-settings/index.tsx
  • apps/web/src/routes/_app/$orgSlug/my-settings/layout.tsx
  • apps/web/src/routes/_app/$orgSlug/my-settings/linked-accounts.tsx
  • apps/web/src/routes/_app/$orgSlug/my-settings/notifications.tsx
  • apps/web/src/routes/_app/$orgSlug/my-settings/profile.tsx
  • apps/web/src/routes/_app/$orgSlug/notifications/dms.tsx
  • apps/web/src/routes/_app/$orgSlug/notifications/general.tsx
  • apps/web/src/routes/_app/$orgSlug/notifications/index.tsx
  • apps/web/src/routes/_app/$orgSlug/notifications/layout.tsx
  • apps/web/src/routes/_app/$orgSlug/notifications/threads.tsx
  • apps/web/src/routes/_app/$orgSlug/profile/$userId.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/chat-sync/$connectionId.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/chat-sync/index.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/chat-sync/layout.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/connect-invites.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/custom-emojis.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/debug.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/index.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/integrations/$integrationId.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/integrations/index.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/integrations/installed.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/integrations/layout.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/integrations/marketplace.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/integrations/your-apps.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/invitations.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/layout.tsx
  • apps/web/src/routes/_app/$orgSlug/settings/team.tsx
  • apps/web/src/routes/_app/index.tsx
  • apps/web/src/routes/_app/layout.tsx
  • apps/web/src/routes/_app/onboarding/index.tsx
  • apps/web/src/routes/_app/onboarding/setup-organization.tsx
  • apps/web/src/routes/_app/select-organization/index.tsx
  • apps/web/src/routes/_dev/layout.tsx
  • apps/web/src/routes/_dev/ui/agent-steps.tsx
  • apps/web/src/routes/_dev/ui/layout.tsx
  • apps/web/src/routes/dev/embeds/demo.tsx
  • apps/web/src/routes/dev/embeds/github.tsx
  • apps/web/src/routes/dev/embeds/index.tsx
  • apps/web/src/routes/dev/embeds/openstatus.tsx
  • apps/web/src/routes/dev/embeds/railway.tsx
  • apps/web/src/routes/dev/gallery/$component.tsx
  • apps/web/src/routes/join/$slug.tsx
  • apps/web/src/routes/sign-in/$.tsx
  • apps/web/src/routes/sign-up/$.tsx
  • apps/web/src/utils/organization-navigation.ts
  • apps/web/src/vite-env.d.ts
  • apps/web/tsconfig.json
  • apps/web/vite.config.ts
  • apps/web/vitest.config.ts
  • docs/foldkit-migration.md
  • infra/README.md
  • libs/tanstack-db-atom/README.md
  • libs/tanstack-db-atom/package.json
  • libs/tanstack-db-atom/src/AtomTanStackDB.result.test.ts
  • libs/tanstack-db-atom/src/AtomTanStackDB.subscription.test.ts
  • libs/tanstack-db-atom/src/AtomTanStackDB.test.ts
  • libs/tanstack-db-atom/src/AtomTanStackDB.timing.test.ts
  • libs/tanstack-db-atom/src/AtomTanStackDB.ts
  • libs/tanstack-db-atom/src/index.ts
  • libs/tanstack-db-atom/src/types.ts
  • libs/tanstack-db-atom/tsconfig.json
  • package.json
  • packages/setup/src/commands/env.ts
  • packages/setup/src/commands/setup.ts
  • packages/setup/src/services/env-writer.ts
  • packages/ui-parity/README.md
  • packages/ui-parity/src/bench/render-trace.ts
  • packages/ui-parity/src/bench/style-bisect.ts
  • packages/ui-parity/src/config.ts
  • packages/ui-parity/src/coverage.ts
  • vitest.config.ts

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.

@Makisuo
Makisuo merged commit dcee16c into main Oct 14, 2026
7 checks passed
@Makisuo
Makisuo deleted the chore/remove-legacy-react-web branch October 14, 2026 09:58
@github-actions

Copy link
Copy Markdown

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 57.84% 14592 / 25225
🔵 Statements 57.74% 16642 / 28821
🔵 Functions 49.4% 5771 / 11680
🔵 Branches 47.43% 7721 / 16277
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
apps/web-foldkit/src/chat/file-icons.ts 27.58% 0% 0% 33.33% 1469-1476, 1481-1485, 1491-1498, 1505-1506
apps/web-foldkit/src/icons/index.ts 84.97% 68.59% 69.79% 100% 29-62, 101-151, 200-235, 238-259, 262-303, 366-392, 543-568, 745-778, 781-818, 1146-1166, 1562-1603, 1606-1639, 1867-1893, 1955-2002, 2251-2284, 2287-2342, 2559-2587, 2590-2623, 2768-2821, 2824-2850, 2889-2926, 3323-3375, 3378-3405, 3408-3433, 3565-3624, 3730-3779, 3925-3959, 3962-3989, 4127-4160
apps/web-foldkit/src/page/my-settings/appearance/illustrations.ts 100% 100% 100% 100%
apps/web-foldkit/src/ui/appearance-previews.ts 100% 100% 100% 100%
Generated in workflow #1824 for commit f156a84 by the Vitest Coverage Report Action

@maple-review-bot

Copy link
Copy Markdown

Merged with 3 steps from "Before merge" still open. If they are done, tick them on the review comment; if not, now is the time.

  • Infra · Check every environment has what this config now expects
  • Infra · Check every environment has what this config now expects
  • Manual · Re-run bun run setup so apps/web-foldkit/.env is written where env-writer now reads and writes

@maple-review-bot maple-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 inline note from Maple's review. The score and summary are in the review comment above.

sourcemap: !!process.env.TAURI_ENV_DEBUG,
},
publicDir: resolve(__dirname, "../web/public"),
plugins: [tailwindcss(), foldkit({ devToolsMcpPort: false })],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

The sw.js retire worker is dropped in the public/ move

F1 · Warning · correctness

apps/web/public/sw.js held the URL the Foldkit site served so browsers still running the React app's workbox worker could update into it and unregister; the move carried every other public asset across but left this one behind, and dropping publicDir means /sw.js now falls through to the SPA shell (apps/web-foldkit/alchemy.run.ts:21). A service worker whose update fetch returns text/html fails with an unsupported MIME type, so the workbox registration survives and keeps serving its precached HTML. Move sw.js into apps/web-foldkit/public/.

Move `apps/web/public/sw.js` to `apps/web-foldkit/public/sw.js`; it is the only public asset this move dropped.
🤖 Prompt to fix with an AI agent
In `apps/web-foldkit/vite.config.ts:30`: The `sw.js` retire worker is dropped in the `public/` move.

`apps/web/public/sw.js` held the URL the Foldkit site served so browsers still running the React app's workbox worker could update into it and unregister; the move carried every other public asset across but left this one behind, and dropping `publicDir` means `/sw.js` now falls through to the SPA shell (`apps/web-foldkit/alchemy.run.ts:21`). A service worker whose update fetch returns `text/html` fails with an unsupported MIME type, so the workbox registration survives and keeps serving its precached HTML. Move `sw.js` into `apps/web-foldkit/public/`.

Suggested fix: Move `apps/web/public/sw.js` to `apps/web-foldkit/public/sw.js`; it is the only public asset this move dropped.

Verify the problem exists at that location before changing it, and keep the fix to those lines.

@maple-review-bot

Copy link
Copy Markdown

Maple: after this shipped

✅ Shipped clean. Nothing this change touches got worse in the hour after it deployed.

Deployed to maple-chat (production) at 2026-10-14 10:59 UTC as ed8a412, the first version after the merge (the merge commit itself never reported). Compared the 60 minutes before and after.

Errors in the changed files:

  • ➖ @maple/api/vcs/VcsSourceRepositoryNotFoundError: 0/h → 0/h
  • ➖ @maple/mcp/errors/McpQueryError: 0/h → 0/h
  • ➖ @maple/mcp/errors/McpQueryError: 0/h → 0/h
  • ➖ @maple/mcp/errors/McpQueryError: 0/h → 0/h
  • ➖ @maple/http/errors/IntegrationsUpstreamError: 0/h → 0/h
  • ➖ @maple/api/vcs/GithubAppError: 0/h → 0/h
  • ➖ @maple/http/errors/IntegrationsUpstreamError: 0/h → 0/h
  • ➖ @maple/mcp/errors/McpQueryError: 0/h → 0/h
  • ➖ @maple/mcp/errors/McpQueryError: 0/h → 0/h
  • ➖ @maple/mcp/errors/McpQueryError: 0/h → 0/h
Operation Calls/h Errors p95
navigation 1 → 72 0.0% → 0.0% 375 → 323 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