feat(tables): improve view and filter controls - #6725
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Filter builder switches from Apply/Clear to Sort gains optional
Reviewed by Cursor Bugbot for commit b98cd2e. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryThe PR completes the table-view controls and hardens filter autosave behavior.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains; the current conversion, removal, and deferred-condition paths address both previously reported filter-state defects.
|
| Filename | Overview |
|---|---|
| apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-filter/table-filter.tsx | Moves autosave into completed gestures while preserving OR boundaries and deferred applied conditions; both previously reported filter failures are addressed. |
| apps/sim/lib/table/query-builder/converters.ts | Preserves logical group boundaries around incomplete rows and round-trips valueless predicate operators. |
| apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-filter/table-filter.test.tsx | Covers passive rendering, deferred valueless conditions, and OR-boundary preservation for clearing and removal. |
| apps/sim/app/workspace/[workspaceId]/tables/[tableId]/table.tsx | Explicitly enables autosave under the feature flag and remounts filter drafts only for genuine external filter replacement. |
| apps/sim/hooks/queries/tables.ts | Hardens optimistic saved-view updates and stale default-view response handling. |
| apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/views-menu/views-menu.tsx | Adds default-view pinning and improves row action hit behavior. |
| apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/columns-menu/columns-menu.tsx | Migrates column controls to a menu that remains open across visibility changes. |
Reviews (9): Last reviewed commit: "fix(tables): keep hidden view actions cl..." | Re-trigger Greptile
e4f0403 to
a262d4f
Compare
|
@cursor review |
a262d4f to
5aa0911
Compare
|
@cursor review |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 1fe415c. Configure here.
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit e932732. Configure here.
e932732 to
3ab8bc3
Compare
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
1 issue from previous review remains unresolved.
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 3ab8bc3. Configure here.
3ab8bc3 to
4abb641
Compare
4abb641 to
4c88818
Compare
…onses Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4c88818 to
b98cd2e
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit b98cd2e. Configure here.
| aria-label={defaultState.isDefault ? 'Current default view' : 'Set as default'} | ||
| title={defaultState.isDefault ? 'Current default view' : 'Set as default'} | ||
| disabled={!defaultState.onSetDefault} | ||
| className='pointer-events-auto' |
There was a problem hiding this comment.
Disabled pin clicks select the view
Medium Severity
The pin is always shown, but a disabled pin (Current default view, or any pin for read-only members) still uses Button’s disabled:pointer-events-none. That sits on a pointer-events-none overlay, so a mouse click passes through to the row, runs onSelect, and closes the menu instead of leaving the pin inert.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit b98cd2e. Configure here.


Summary
This second PR builds on #6724 and completes the table-view control changes. With
table-viewsenabled, users can choose which saved view is a table's default via a pin in the Views menu. The Columns and Sort menus stay open across view-editing gestures. The filter builder applies dropdown and row gestures immediately, while typed text commits on Enter or blur.With
table-viewsdisabled, none of those interaction changes leak into the existing experience: the filter builder keeps its legacy Apply/Clear flow and Sort closes after a selection. The flag is resolved server-side for both table-detail and embedded surfaces and passed into these interactions explicitly.Filter commits now happen directly in completed user-event handlers, not in an after-render effect. Opening the panel, rerendering it, or refreshing column data does not write anything by itself. The save baseline still seeds from the builder's own reading of the stored filter, so a stored tree the flat builder renders differently is only normalized after the user actually edits a rule.
Autosave hardening:
isNullandisNotNullconditions and mixed AND/OR filters round-trip through the builder without being silently dropped or flattened until the user changes them.Type of Change
Testing
isNullshapes, stale promotion responses leaving the default untouched, the disabled default pin staying inert, and flag-off legacy filter/sort behavior.bun run lintandbun run lint:checkbun run check:audits(30 repository policy audits)bun run type-check(26 package tasks)bun run apps/sim/scripts/check-block-registry.ts feat/better-table-views-uxChecklist
Screenshots/Videos
Not included. DOM interaction tests cover the changed menus and filter-commit behavior.
Post-Deploy Monitoring & Validation