- New 'Match Cell' command selects all cells in the sheet whose value
equals the current cell's value (non-contiguous selection)
- Added state.selectedCells (Set of 'r,c' keys) for scatter selection
- isCellSelected checks selectedCells first, then falls back to
rectangular selection
- getSelectedData/clearSelectedCells handle non-contiguous selections
- Cmd+M keyboard shortcut mapped
- Match selection cleared on click, arrow movement, or Escape
Co-authored-by: Shelley <shelley@exe.dev>
Match Row: selects all rows where the cell in the current column
equals the current cell's value. Selection spans first-to-last
matching row across all columns.
Delete Row (Cmd+Backspace): deletes every row in the current
selection, or the single current row if nothing is selected.
Ensures at least one empty row always remains.
Co-authored-by: Shelley <shelley@exe.dev>
Opens a modal with a text field supporting autocomplete of column
names. Enter comma-separated column names in priority order;
rows are sorted ascending using locale-aware numeric comparison,
first by the first column, then by the second, and so on.
Autocomplete filters to matching headers, excludes already-chosen
columns, and supports keyboard navigation (arrows + enter).
Co-authored-by: Shelley <shelley@exe.dev>
- Cap cell and header max-width to 150px (was 200px for best-fit)
- Bump header z-index to 10 (row-number corner to 11) so sticky
headers stay above data cells when scrolling horizontally
- Remove position:relative and z-index from cursor-cell so it no
longer creates a stacking context that overlaps sticky headers
- Sort command palette entries alphabetically (case-insensitive)
Co-authored-by: Shelley <shelley@exe.dev>
Features:
- Spreadsheet-like table with cell navigation (arrow keys)
- Formula bar for editing cell values
- Click and drag cell selection with Shift+Arrow extend
- Column resize by dragging header borders, double-click for best fit
- Editable headers via double-click
- Command palette (Cmd+P) with 12 commands
- Copy/Cut/Paste with CSV, Markdown, and Jira formats
- Insert rows/columns above/below/left/right
- File drag-and-drop to open CSV files
- Native Open/Save dialogs
- Go backend for CSV parsing, formatting, and file I/O
- Vanilla JS frontend, no frameworks
Co-authored-by: Shelley <shelley@exe.dev>