You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Backs out CSV email/phone inference. Inference reads a 100-row sample but the
write path coerces every row and NULLS what the column's type rejects, so a
contact export whose first 100 rows are clean and whose row 250 holds `n/a` had
that cell silently destroyed — where inferring `string` imported it verbatim.
The same hazard already exists for number/boolean/date and is accepted there;
it is materially likelier on contact data, which is exactly where these types
get used. Importing into a column the user typed themselves is unaffected, and
the reasoning is recorded so this is not re-added as an "improvement".
Clearing `includeTime` ran the irreversible truncation. The migration fired
whenever `target.includeTime` was falsy, and a cleared key is absent — the
tri-state's "legacy column, holds instants", the one state that must never be
truncated. It now requires an explicit transition to `false`. Reachable through
the copilot tool, which builds its patch from a loose arg bag.
A fractional "Decimal places" silently saved 0: `2.5` is finite, so the
`Number.isFinite` guard passed it to `clampPrecision`, which falls back to 0 for
a non-integer — the exact outcome the comment above it promised to prevent.
Phone substring filters compared a formatted fragment against punctuation-
stripped storage and matched nothing. Fragments are not whole values, so
`coerce` cannot validate them; types now declare `normalizeFilterFragment`.
A fragment with no digits is left alone — reducing it to `''` would turn
`ILIKE '%%'` into a match on every row.
Also: the retype's select branch was still two-state, so an option clear fell
back to the pre-conversion value; `onSettled`'s column lookup was case-sensitive
where `onMutate`'s is not, skipping row invalidation after a truncation;
`percent` rendered a non-numeric cell as blank, hiding its contents; `boolean`
and `select` declared `canonicalizesValues: false` despite both transforming,
and `select` declared itself orderable.
Renames `TableColumnError` to `TableRequestError` — `withLockedTable` and
`restoreTable` raise it too — and finishes the migration in the DELETE handlers
and v1 POST, which still carried substring lists. Those covered today's messages
but would have silently 500'd the next typed error added.
The `includeTime` toggle now warns before a save that would drop stored times;
the comment claiming it already did was false. Corrects two other stale docs:
the unknown-column range fallback is text, not numeric, and `precision` IS
lossy in CSV export even though storage keeps the full value.
Copy file name to clipboardExpand all lines: apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/column-config-sidebar/column-config-sidebar.tsx
0 commit comments