Skip to content

Add inline live AND column filters with inferred typed comparisons - #121

Closed
jonaraphael wants to merge 21 commits into
codex/feat-hidden-row-defaultsfrom
codex/feat-column-filters
Closed

jonaraphael wants to merge 21 commits into
codex/feat-hidden-row-defaultsfrom
codex/feat-column-filters

Conversation

@jonaraphael

@jonaraphael jonaraphael commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Column filters now live in the table’s filter details row and update matching rows as the user types. Filter this column appears in the top context-menu section. Repeating it or choosing Add filter creates independent AND conditions, including multiple conditions on the same column, such as Amount > 10 AND Amount < 20. Conditions can be edited or removed individually, and Clear all removes every saved condition. No native VS Code picker or input popup is used.

Operators follow the type inferred from the complete original body, excluding the effective header and hidden metadata. Every type offers Contains, Does Not Contain, Regular Expression, Equals, Does Not Equal, Is Empty and Is Not Empty; number/date columns also offer >, >=, < and <=. Exact decimal and sub-millisecond timestamp comparisons, the supported date formats and RE2 syntax remain unchanged. Filtering adds no commands or settings and changes no datatype palette or global type inference.

Live updates retain input focus/caret, reject stale responses/chunks and preserve absolute source row identities. Blank values leave draft conditions inactive; invalid queries show an inline error while retaining the last valid results. Only valid conditions are persisted per file. Interrupted IME text and other unsent drafts survive a same-document refresh in controller memory without being stored. Queued refresh acknowledgments are renewed when newer filter typing arrives. Column identity/session/URI checks prevent restoring drafts into a different target.

Filtering matches the full source before chunking. Copy/paste/fill/find/sort keep their existing filtered-source behavior, while saving retains hidden and nonmatching records. Structural column changes remap every condition. Pending or failed cell edits retain their recovery guards; the combined build also retains its stronger source ownership/Save As safeguards.

This implements the filtering portion of #80 and builds on #118; large-file preview remains separate in #119. README and PRIVACY.md describe the inline controls and valid-condition storage.

Validation:

  • Node 20.20.0: compile and all 299 branch tests pass. The combined review build (2f43410) passes all 571 tests. No failures or skips; lint has 0 errors and 86 existing warnings; diff checks pass.
  • Shipped frontend + real provider tests cover live typing, same-column AND, input/caret identity, IME, invalid queries, stale responses/epochs, exact numbers/dates, predicate remapping, delayed/failed edits, retry/discard, same-document volatile restoration, stale ACKs, column/URI invalidation, header/metadata edge cases, source identities and saves.
  • Actual Chromium QA uses generated provider HTML and shipped media with synthetic TextDocument/mock host data. Repeated context actions and Add filter reduce 150 CSV records to 90, 15, then 10. Verified all four themes, zero native picker/input calls, unchanged source/disk, invalid query retention and out-of-order results. A 2,400-row TSV with hidden metadata and headers off filters a record beyond the initial chunk and retains its physical source ID.
  • Browser QA does not establish native OS clipboard or Find in Files acceptance; the existing Cannot jump to search result in text editor when CSV extension is enabled #104/Copied table does not saved into clipboard #105 verification qualifications remain separate. No GitHub comments were replied to.

Inline AND filters using synthetic CSV data

@jonaraphael
jonaraphael marked this pull request as ready for review October 17, 2026 04:39
@jonaraphael
jonaraphael marked this pull request as draft October 17, 2026 07:25
@jonaraphael jonaraphael changed the title Add persistent full-source column filters Add persistent column filters with inferred-type comparisons Oct 17, 2026
@jonaraphael
jonaraphael marked this pull request as ready for review October 17, 2026 07:42
@jonaraphael
jonaraphael marked this pull request as draft October 17, 2026 13:37
# Conflicts:
#	src/CsvEditorProvider.ts
@jonaraphael
jonaraphael marked this pull request as ready for review October 17, 2026 14:01
@jonaraphael jonaraphael changed the title Add persistent column filters with inferred-type comparisons Add inline live AND column filters with inferred typed comparisons Oct 17, 2026
@jonaraphael
jonaraphael deleted the codex/feat-column-filters branch October 17, 2026 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant