Files
sim/apps
Theodore Li efeacb9e22 fix(tables): stop insert-row flicker and return order_key from rows list (#4918)
* fix(tables): stop insert-row flicker and return order_key from rows list

The rows insert flicker came from useCreateTableRow.onSettled invalidating
tableKeys.detail(tableId), which prefix-matches the nested rowsRoot rows query
and forces an un-cancelled refetch on every insert. A late offset refetch could
resolve after the optimistic splice and clobber freshly-inserted rows.

- invalidate detail with exact:true (+ lists) so the count surfaces refresh
  without cascading into the rows query
- compare order keys bytewise in reconcileCreatedRow to match the server's
  COLLATE "C" ordering and fitsAfter (was localeCompare)
- include order_key in the GET /rows list response; it was dropped in the
  route mapping, so the client never saw keys and reconcileCreatedRow always
  fell back to the position path

* fix(tables): scope optimistic insert splice to the default-order view

reconcileCreatedRow patched every rows query under rowsRoot, but its
orderKey/position heuristic only matches the unfiltered, unsorted server order.
Under a filter or column sort the splice could show wrong rows, wrong order, or
an inflated totalCount, and without the prior rowsRoot refetch it persisted
until the query went stale.

- patch only the default-order rows queries (filter and sort both absent)
- refetch the filtered/sorted variants on insert; active ones update now,
  inactive ones on next view. The default view stays optimistic (no flicker)
- the find/write subtrees are excluded from the splice (different shape)
2026-06-09 01:12:45 -04:00
..