Repository navigation
feat(table): add per-column type override pills in CsvTable (AC-16) - #229
Merged
obvious-autobuild-staging[bot] merged 1 commit intoOct 20, 2026
Merged
Conversation
…CsvTable Allow users to pin individual CSV column output types (Auto, String, Number, Boolean) directly from the CsvTable column selection toolbar without altering raw CSV text or global parse settings. Co-authored-by: David Boskovic <david@obvious.ai>
obvious-autobuild-staging
Bot
force-pushed
the
feat/column-type-overrides
branch
from
October 20, 2026 02:41
527fca9 to
bc990ca
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Global number and JSON literal parsing (
Parse numbers,Parse JSON) works well for uniform tables, but real-world CSVs frequently mix numeric postal codes or numeric IDs (90210,1001) that must stay strings alongside numeric amount columns, or containyes/no/1/0columns that should emit JSON booleans. Previously, users had to toggle globalParse numbersoff for the entire dataset or manually edit the JSON output.What
app/src/lib/convert.ts(AC-16/D15):ColumnTypeOverride = "auto" | "string" | "number" | "boolean"and extendedConverterOptions/Csv2JsonOptionswith optionalcolumnTypes?: Record<string, ColumnTypeOverride>.applySmartValuesbefore globalpass(v)rules while preservingemptyFields: "skip"andnullLiterals: "null"precedence:"string"keeps the cell as a raw string even when globalparseNumbersorparseJSONis enabled."number"coerces numeric strings viatoSmartNumbereven when globalparseNumbersis disabled."boolean"coerces case-insensitivetrue/false/1/0/yes/noto booleans and preserves unrecognized strings."auto"falls through to the global smart pass.CsvTable.tsx:CSV → JSONinput table, the selection toolbar rendersType: Auto · String · Number · Boolean(data-testid="input-table-column-type-{auto|string|number|boolean}") witharia-pressedstate.[STR],[NUM],[BOOL]) in the grid column title and surface a contextual"N column types pinned"reset chip (data-testid="input-table-column-types-reset") in the table toolbar.columnTypes.columnTypesinrecentHistory.tssnapshots and added bundled changelog entry#18.How to Review
app/src/lib/convert.ts&app/src/lib/__tests__/convert.test.ts: per-column coercion logic and composition with array/hash modes,emptyFields, andnullLiterals.app/src/components/CsvTable.tsx&app/src/components/CsvTable.test.tsx: selection toolbar segmented control, header badge rendering, header rename migration, and reset chip.app/src/App.tsx,app/src/components/InputPane.tsx, &app/src/App.test.tsx: end-to-end state wiring and reset on Clear.Test Evidence
AC-16: Per-column type overrides (Auto · String · Number · Boolean) in CsvTable selection toolbar with header badges and reset chip


cd app && npm run lint && npx tsc -b --noEmit && npm test && npm run build(33 test suites, 562 tests passing)bash .github/scripts/verify-seo.sh(prerendered HTML check passing)agent-browserverification at1440×900attached viaautobuild-qa.Human author: David Boskovic (david@obvious.ai)
🔗 Obvious Project · 🧵 Obvious Thread · 🔀 Obvious PR Artifact