# UnifiedSpread dev-31.0.2 Table Filter / Header / Keyboard Performance Fix

## Purpose

This patch strengthens spreadsheet-list behavior after XLSX import and during large list operations.

## Changes

- Repairs imported AutoFilter ranges when the XLSX metadata exposes only the header row.
- Detects likely Excel/Google Sheets-style tables from dense header rows and contiguous body rows.
- Creates native filter dropdowns on detected table headers even when lightweight XLSX import does not expose table metadata.
- Resolves Create Filter from a body cell, such as `PLAN` row 3, back to the full list header row.
- Generates filter value candidates from the detected table body instead of the active column only.
- Caps filter value checkbox rendering to prevent UI stalls with large unique lists.
- Adds a search box to filter value lists when many values exist.
- Optimizes visible-row filtering so the active filter range is repaired once per render pass instead of once per row.

## Design Notes

The feature intentionally remains data-driven. It does not depend on visual formatting alone because many imported XLSX lists have sparse columns or style information that is not fully exposed by SheetJS Community Edition.

## Remaining Work

- Full OOXML table part parsing (`xl/tables/table*.xml`).
- Advanced filter menus with multi-condition groups.
- Virtualized checkbox rendering for extremely high-cardinality columns.
