Skip to content

v0.6.14: performance improvements, connectors UX, collapsed sidebar actions - #3809

Merged
waleedlatif1 merged 8 commits into
mainfrom
staging
Mar 27, 2026
Merged

v0.6.14: performance improvements, connectors UX, collapsed sidebar actions#3809
waleedlatif1 merged 8 commits into
mainfrom
staging

Conversation

@waleedlatif1

@waleedlatif1waleedlatif1 commented Mar 27, 2026

Copy link
Copy Markdown
Collaborator

adithyaakrishnaand others added 5 commits March 27, 2026 09:39
* feat: update sidebar and knowledge
* chore: fix rernders on knowledge
* chore: fix review changes
* chore: fix review changes
* chore: fix antialiasing
* chore: remove antialiasing
* chore: fix rerenders on files
* chore: fix review changes
* fix(knowledge): show spinner on connector chip while syncing
* fix(knowledge): scope sync spinner to mutation lifetime, not cooldown
…stency, and UI polish (#3807)
* improvement(sidebar): collapsed sidebar UX, quick-create, hover consistency, and UI polish
Made-with: Cursor
* fix(sidebar): use stable handlers for root workflow items instead of inline lambdas
Made-with: Cursor
* fix(sidebar): reset actionsOpen state before triggering rename in collapsed dropdown
Made-with: Cursor
@vercel

vercelBot commented Mar 27, 2026

Copy link
Copy Markdown

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

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
docsSkippedSkippedMar 30, 2026 5:33am

Request Review

@cursor

cursorBot commented Mar 27, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Moderate risk: broad UI refactors add memoization, refs, and debounced state across files/knowledge/sidebar flows, which could introduce stale-state or event-handling regressions despite being mostly behavior-preserving.

Overview
Improves perceived performance across resource screens by aggressively memoizing components (Resource, table rows/cells, headers/options bars, file previews/modals/menus) and stabilizing callbacks/props; the files and knowledge list pages also switch to debounced search and ref-based state access to reduce dependency churn and rerenders.

Enhances UX for knowledge connectors by showing a per-connector syncing spinner while a sync is pending, and updates the collapsed/expanded sidebar interactions with consistent --surface-hover vs --surface-active styling plus new collapsed-workflow actions (open-in-new-tab/rename via submenus) and more reliable “more” button visibility.

Polishes destructive confirmation copy across multiple modals to emphasize permanence (error-colored warning text), introduces --surface-hover theme tokens, and removes global body antialiasing.

Written by Cursor Bugbot for commit 34df333. Configure here.

Comment threadapps/sim/app/workspace/[workspaceId]/knowledge/knowledge.tsx Outdated
Comment threadapps/sim/app/workspace/[workspaceId]/files/files.tsx
@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This release bundles five commits that collectively improve rendering performance across the resource/table layer, refine sidebar UX in both expanded and collapsed states, and surface a sync-pending spinner on knowledge-base connectors. The changes are well-structured and follow the codebase's architecture conventions.\n\nKey changes:\n- Performance (resource.tsx, files.tsx, knowledge.tsx)Resource, DataRow, CellContent, CreateRow, ResourceColGroup, DataTableSkeleton, Pagination, and SearchSection are all wrapped in memo(); stable JSX constants replace inline element creation; manual debounce timer refs replace the useDebounce hook to avoid unnecessary re-renders in search inputs.\n- Sidebar UX — Hover and active item states are now semantically separated via a new --surface-hover / --surface-active CSS token split; collapsed-sidebar workflow actions migrated from an external context-menu to an inline DropdownMenuSub; active-state highlight persists on items while their context menu is open.\n- Collapsed sidebar quick-create / upgrade — Free-plan users now see an "Upgrade" button in the workspace header (gated behind isBillingEnabled); the subscription fetch is similarly guarded.\n- Knowledge connectors UXsyncingConnectorId state drives an immediate spinner on the connector chip as soon as sync is triggered, before the server reflects the syncing status.\n- Font antialiasing removed@apply antialiased removed from body in globals.css.\n- EMCN input focus stylesfocus-visible:border-[var(--text-muted)] removed from Input, Textarea, Combobox, DatePicker, and TimePicker base variants; worth verifying whether an alternative focus indicator is provided.

Confidence Score: 5/5

Safe to merge; all remaining findings are P2 style/accessibility suggestions with no runtime or data-integrity risk.

The logic changes (connector sync spinner, isCollapsedRef pattern, SearchSection render-time sync, collapsed workflow DropdownMenuSub) are all correct. The two flagged items are P2: the globals.css edit (justified for CSS-variable addition, debatable for the antialiasing line) and the removed focus-visible border on EMCN inputs (accessibility polish, not a breakage). No data-loss, crash, or security risk identified.

EMCN input components (input.tsx, textarea.tsx, combobox.tsx, date-picker.tsx, time-picker.tsx) — verify that an alternative keyboard focus indicator exists before these land in production.

Important Files Changed

FilenameOverview
apps/sim/app/_styles/globals.cssAdds --surface-hover CSS variable for distinct hover vs active states; removes @apply antialiased from body. Editing globals.css violates the custom rule for this project.
apps/sim/components/emcn/components/input/input.tsxRemoves focus-visible:border-[var(--text-muted)] from the base CVA variant; combined with the existing outline-none, keyboard-focused inputs now have no visible focus ring.
apps/sim/components/emcn/components/combobox/combobox.tsxStrips hover-on-dark styles from the root CVA variant and the inner input; switches option-highlight colour from --border-1 to --surface-active for consistency with the new surface token rename.
apps/sim/app/workspace/[workspaceId]/components/resource/resource.tsxMajor perf refactor: wraps Resource, Pagination, CellContent, DataRow, CreateRow, ResourceColGroup, DataTableSkeleton in memo(); extracts stable JSX constants; adds useCallback for checkbox handlers to prevent child re-renders.
apps/sim/app/workspace/[workspaceId]/components/resource/components/resource-options-bar/resource-options-bar.tsxExtracts search UI into a memoised SearchSection with local debounce state using the render-time sync pattern; extracts SortDropdown into memo().
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsxRemoves collapsed-workflow context-menu plumbing (replaced by inline DropdownMenuSub); adds isCollapsedRef to break stale-closure dependency on isCollapsed in nav callbacks; adds menuOpenTaskId state to keep active item highlighted while menu is open.
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/collapsed-sidebar-menu/collapsed-sidebar-menu.tsxReplaces the external context-menu pattern for collapsed workflow items with an inline DropdownMenuSub; adds isMenuOpen prop to CollapsedTaskFlyoutItem so the active background persists while the menu is open.
apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/connectors-section/connectors-section.tsxAdds syncingConnectorId state to show a spinner on the connector chip immediately after triggering a sync, before the server reflects the syncing status.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User types in SearchSection] --> B[setLocalValue - immediate]
B --> C[search.onChange called]
C --> D[Parent debounces / filters data]
E[Parent clears search externally] --> F{search.value !== lastReportedRef?}
F -- yes --> G[render-time setLocalValue sync]
G --> H[Re-render with synced value]
I[User triggers connector Sync] --> J[setSyncingConnectorId]
J --> K[Spinner shown immediately on chip]
K --> L{triggerSync}
L -- onSuccess --> M[setSyncingConnectorId null]
L -- onError --> M
N[User opens context menu on workflow item] --> O[setMenuOpenTaskId / actionsOpen]
O --> P[Item stays bg-surface-active while menu is open]
P --> Q{Menu closes}
Q --> R[menuOpenTaskId cleared / actionsOpen false]
Loading

Reviews (1): Last reviewed commit: "improvement(sidebar): collapsed sidebar ..." | Re-trigger Greptile

Comment threadapps/sim/app/_styles/globals.css
Comment threadapps/sim/components/emcn/components/input/input.tsx
@waleedlatif1

Copy link
Copy Markdown
CollaboratorAuthor

@cursor review

@cursorcursorBot 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.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

…3812)
* fix(knowledge): scope sync/update state per-connector to prevent race conditions
* feat(knowledge): add connectors column to knowledge base list
* refactor(knowledge): extract set helpers, handleTogglePause, and filter-before-map
* refactor(knowledge): use onSettled for syncingIds cleanup, consistent with updatingIds
@waleedlatif1
waleedlatif1 merged commit 14089f7 into mainMar 27, 2026
25 of 26 checks passed
Sign up for freeto 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.

2 participants

@waleedlatif1@adithyaakrishna