feat(tables): stable column ids for metadata-only rename#4898
feat(tables): stable column ids for metadata-only rename#4898TheodoreSpeaks wants to merge 4 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryHigh Risk Overview Adds Public v1 row APIs and the copilot table tool accept and return name-keyed row data while persisting id-keyed data; filters/sorts are translated at the boundary. The workspace grid switches cells, selection, drag/pin/order, undo, and workflow sidebars to Contracts gain optional column Reviewed by Cursor Bugbot for commit 4dbcbcf. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryThis PR migrates every table column to a stable opaque
Confidence Score: 5/5Safe to merge — ships atomically with an idempotent migration and a getColumnId fallback that keeps existing name-keyed row data reachable throughout the transition. Every column-creation and column-mutation path now generates stable ids unconditionally. The legacy id=name invariant means existing name-keyed row data, metadata keys, and workflow-group refs are all transparently reachable via getColumnId. Name-to-id translation is consistently applied at every external boundary. No id-generation paths remain behind a feature flag. No files require special attention — the broad surface area is covered by 283 existing tests plus the new column-keys.test.ts suite. Important Files Changed
Reviews (4): Last reviewed commit: "refactor(tables): mint column ids via ge..." | Re-trigger Greptile |
…me in upsert error, un-gate group output ids
|
@greptile review |
|
@greptile review |
…on-check plumbing
|
@greptile review |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes 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 4dbcbcf. Configure here.
| for (const [key, data] of context.rowSnapshots) { | ||
| queryClient.setQueryData(key, data) | ||
| } | ||
| } |
There was a problem hiding this comment.
Delete column optimistic cache mismatch
Medium Severity
useDeleteColumn still treats the mutation argument as a display name when updating the schema cache, but the grid now calls delete with the stable column id. Optimistic updates drop row keys and widths correctly yet leave the column in cached schema until onSettled refetch, so deleted columns can briefly remain visible.
Reviewed by Cursor Bugbot for commit 4dbcbcf. Configure here.


Summary
id; row data, metadata (widths/order/pins), workflow-group refs, and filter/sort key by id instead of by namegetColumnIdchokepoint; public v1 API + mothership tool + CSV translate name↔id at the boundary0227_backfill_column_idsstampsid = nameonto existing columns (metadata-only, idempotent); the legacy row-rewrite rename / sync-strip delete paths are removedType of Change
Testing
UPDATE 101, re-runUPDATE 0)bun run lint:checkandbun run check:api-validation:strictpasscolumn-keystests)Checklist