v0.6.9: general ux improvements for tables, mothership#3747
v0.6.9: general ux improvements for tables, mothership#3747icecrasher321 merged 11 commits intomainfrom
Conversation
* fix(home): voice input text persistence bugs * fix(home): gate setIsListening on startRecognition success * fix(home): handle startRecognition failure in restartRecognition * fix(home): reset speech prefix on submit while mic is active
* feat(table): column drag-and-drop reorder * fix(table): remove duplicate onDragEnd call from handleDrop * fix(table): persist columnOrder on rename/delete and defer delete to onSuccess * fix(table): prevent stale refs during column drag operations Fix two bugs in column drag-and-drop: 1. Stale columnWidths ref during rename - compute updated widths inline before passing to updateMetadata 2. Escape-cancelled drag still reorders - update dropTargetColumnNameRef directly in handleColumnDragLeave to prevent handleColumnDragEnd from reading stale ref value Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(table): insert column at correct side when anchor is unordered When the anchor column isn't in columnOrder, add it first then insert the new column relative to it, so 'right' insertions appear after the anchor as expected. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore: fix conflicts * chore: fix review changes * chore: fix review changes * chore: fix review changes
* feat: add product tour * chore: updated modals * chore: fix the tour * chore: Tour Updates * chore: fix review changes * chore: fix review changes * chore: fix review changes * chore: fix review changes * chore: fix review changes * minor improvements * chore(tour): address PR review comments - Extract shared TourState, TourStateContext, mapPlacement, and TourTooltipAdapter into tour-shared.tsx, eliminating ~100 lines of duplication between product-tour.tsx and workflow-tour.tsx - Fix stale closure in handleStartTour — add isOnWorkflowPage to useCallback deps so Take a tour dispatches the correct event after navigation * chore(tour): address remaining PR review comments - Remove unused logger import and instance in product-tour.tsx - Remove unused tour-tooltip-fade animation from tailwind config - Remove unnecessary overflow-hidden wrapper around WorkflowTour - Add border stroke to arrow SVG in tour-tooltip for visual consistency Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(tour): address second round of PR review comments - Remove unnecessary 'use client' from workflow layout (children are already client components) - Fix ref guard timing issue in TourTooltipAdapter that could prevent Joyride from tracking tooltip on subsequent steps Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(tour): extract shared Joyride config, fix popover arrow overflow - Extract duplicated Joyride floaterProps/styles into getSharedJoyrideProps() in tour-shared.tsx, parameterized by spotlightBorderRadius - Fix showArrow disabling content scrolling in PopoverContent by wrapping children in a scrollable div when arrow is visible Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * lint * fix(tour): stop running tour when disabled becomes true Prevents nav and workflow tours from overlapping. When a user navigates to a workflow page while the nav tour is running, the disabled flag now stops the nav tour instead of just suppressing auto-start. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(tour): move auto-start flag into timer, fix truncate selector conflict - Move hasAutoStarted flag inside setTimeout callback so it's only set when the timer fires, allowing retry if disabled changes during delay - Add data-popover-scroll attribute to showArrow scroll wrapper and exclude it from the flex-1 truncate selector to prevent overflow conflict Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(tour): remove duplicate overlay on center-placed tour steps Joyride's spotlight already renders a full-screen overlay via boxShadow. The centered TourTooltip was adding its own bg-black/55 overlay on top, causing double-darkened backgrounds. Removed the redundant overlay div. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: move docs link from settings to help dropdown The Docs link (https://docs.sim.ai) was buried in settings navigation. Moved it to the Help dropdown in the sidebar for better discoverability. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Adithya Krishna <aadithya794@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(home): auth-aware landing page navigation - Redirect authenticated users from / to /workspace via middleware (?home param bypasses) - Show "Go to App" instead of "Log in / Get started" in navbar for authenticated users - Logo links to /?home for authenticated users to stay in marketing context - Settings "Home Page" button opens /?home - Handle isPending session state to prevent CTA button flash * lint * fix(home): remove stale ?from=nav params in landing nav * fix(home): preserve ?home param in nav links during session pending state * lint
* feat(billing): add appliesTo plan restriction for coupon codes * fix(billing): fail coupon creation on partial product resolution
* Show continue options on abort * Fix lint * Fix
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR SummaryMedium Risk Overview Improves app/landing navigation and auth UX by making navbar links and logo hrefs session-aware (using Enhances Tables UX by adding drag-and-drop column reordering persisted via new Operational/perf tweaks include adding “Continue” options when chat/tool execution is aborted, fixing voice input text persistence with restartable speech recognition, switching various Zustand selectors to Written by Cursor Bugbot for commit 59182d5. This will update automatically on new commits. Configure here. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| recognitionRef.current = null | ||
| return false | ||
| } | ||
| }, []) |
There was a problem hiding this comment.
startRecognition captures stale setValue closure reference
Low Severity
The startRecognition callback has an empty dependency array [] but closes over setValue and setIsListening. Since setValue comes from a custom hook (not useState directly), it may not have a stable identity. If setValue changes identity across renders, the onresult handler inside startRecognition will call a stale setValue reference, potentially causing speech recognition results to be lost or applied incorrectly. The valueRef sync mitigates the read side, but stale setValue writes could still be a problem.
|
|
||
| if (storedBlocks.length > 0) { | ||
| storedBlocks.push({ type: 'stopped' }) | ||
| storedBlocks.push({ type: 'text', content: CONTINUE_OPTIONS_CONTENT }) |
There was a problem hiding this comment.
Inconsistent "Stopped" vs "Stopped by user" display text
Low Severity
In persistPartialResponse, cancelled tool calls get displayTitle set to 'Stopped by user' (line 1184), but resolveInterruptedToolCalls sets it to 'Stopped' (line 1262). Since resolveInterruptedToolCalls runs after persistPartialResponse in stopGeneration, the in-memory state shows "Stopped" while the persisted server state saves "Stopped by user". On reload, users see a different label than what was shown live.
Additional Locations (1)
* Allow admin users to assume user sessions * Add explicit role check * Fix lint * Remove admin panel when impersonating * Fix lint --------- Co-authored-by: Theodore Li <theo@sim.ai>
Greptile SummaryThis release bundles several independent UX and infrastructure improvements: column drag-and-drop reorder in tables (persisted via Key changes:
Issues noted:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant ColumnHeaderMenu
participant Table
participant MetadataAPI
User->>ColumnHeaderMenu: dragstart
ColumnHeaderMenu->>Table: onDragStart(columnName)
Table->>Table: setDragColumnName(columnName)
User->>ColumnHeaderMenu: dragover (target header)
ColumnHeaderMenu->>Table: onDragOver(targetName, side)
Table->>Table: setDropTargetColumnName / setDropSide
User->>ColumnHeaderMenu: drop / dragend
ColumnHeaderMenu->>Table: onDragEnd()
Table->>Table: compute newOrder from columnOrderRef
Table->>Table: setColumnOrder(newOrder)
Table->>MetadataAPI: updateMetadata({ columnWidths, columnOrder })
MetadataAPI-->>Table: 200 OK
Note over Table: columnOrder persisted in TableMetadata.columnOrder
Note over Table: displayColumns re-computed via useMemo on next render
Reviews (1): Last reviewed commit: "feat(admin): Add assume user capability ..." | Re-trigger Greptile |
apps/sim/app/workspace/[workspaceId]/home/components/user-input/user-input.tsx
Show resolved
Hide resolved
apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table/table.tsx
Show resolved
Hide resolved
* feat(settings): add video tooltip previews for canvas settings * fix(tooltip): add preload=none and handle query strings in video detection


fix(integrations): remove outdated trigger mode text from FAQ (#3739)
fix(home): voice input text persistence bugs (#3737)
chore: remove lodash (#3741)
feat(table): column drag-and-drop reorder (#3738)
chore: optimize imports and useShallow (#3740)
feat(tour): added product tour (#3703)
feat(home): auth-aware landing page navigation (#3743)
feat(billing): add appliesTo plan restriction for coupon codes (#3744)
improvement(mothership): show continue options on abort (#3746)