feat: Implement Smart Autocomplete, Workspace Layouts, and Multi-Cursor Editing #7

Merged
parkerhdavis merged 2 commits from claude/implement-new-features-FlwtR into main 2026-01-14 10:43:55 -07:00
parkerhdavis commented 2026-01-14 10:43:47 -07:00 (Migrated from github.com)

This commit implements three major new features as outlined in the implementation guide:

1. Smart Autocomplete & Data Entry Assistance ✅

Frontend:

  • Created autocomplete utility with fuzzy matching algorithm
  • Built AutocompleteDropdown component with keyboard navigation
  • Added column value caching to cellStore for fast lookups
  • Integrated autocomplete into CellGridVirtualized cell editing
  • Added autocomplete settings to SettingsModal (enable/disable, min chars, restrict to existing)

Features:

  • Suggests existing values from the current column
  • Fuzzy matching with prioritization (exact > starts-with > contains > fuzzy)
  • Keyboard navigation (Arrow Up/Down, Enter/Tab, Escape)
  • Debounced suggestions with configurable minimum characters
  • Works with all edit modes (inline, textarea, popout)

Files Changed:

  • frontend/src/utils/autocomplete.ts (new)
  • frontend/src/components/cell/AutocompleteDropdown.tsx (new)
  • frontend/src/stores/cellStore.ts (added columnCache)
  • frontend/src/components/cell/CellGridVirtualized.tsx (integrated autocomplete)
  • frontend/src/stores/settingsStore.ts (added settings)
  • frontend/src/components/modals/SettingsModal.tsx (added UI)

2. Workspace Layouts & Panel Presets ✅

Frontend:

  • Created workspace types for layout configuration
  • Built workspaceStore for managing saved layouts
  • Created WorkspaceManagerModal for visual layout management
  • Integrated with App.tsx for applying layouts

Backend:

  • Added Rust storage functions for workspace persistence
  • Registered commands in Tauri (load_workspace_layouts, save_workspace_layouts)

Features:

  • Save current workspace layout with custom name
  • Load, rename, delete, and set default layouts
  • Stores: drawer position/size, sidebar state, zoom level, column widths
  • Quick-switch with Ctrl+1 through Ctrl+9
  • Open manager with Ctrl+Shift+W
  • Persistent storage across sessions

Files Changed:

  • frontend/src/types/workspace.ts (new)
  • frontend/src/stores/workspaceStore.ts (new)
  • frontend/src/components/modals/WorkspaceManagerModal.tsx (new)
  • frontend/src/App.tsx (integrated modal and shortcuts)
  • backend/src/storage.rs (added workspace functions)
  • backend/src/main.rs (registered commands)

3. Multi-Cursor & Multi-Cell Editing ✅

Frontend:

  • Added multi-cursor state to cellSelectionStore
  • Implemented Ctrl+Click to add/remove secondary cursors
  • Added visual distinction (solid primary, dashed secondary cursors)
  • Synchronized editing across all cursors

Features:

  • Ctrl/Cmd+Click to toggle secondary cursors
  • Type to edit all cursor positions simultaneously
  • Paste to all cursor positions
  • Delete/Backspace clears all cursor cells
  • Escape clears all multi-cursors
  • Visual feedback: primary (solid ring), secondary (dashed ring with background)
  • Automatic cleanup on incompatible selections

Files Changed:

  • frontend/src/stores/cellSelectionStore.ts (added multi-cursor state/actions)
  • frontend/src/components/cell/CellGridVirtualized.tsx (integrated rendering and editing)

Technical Notes

  • All features maintain backward compatibility
  • No breaking changes to existing functionality
  • Uses existing Zustand store patterns
  • Follows Seria's local-first, privacy-focused architecture
  • Performance optimized with memoization and batch updates

Keyboard Shortcuts Added

  • Autocomplete: Arrow Up/Down (navigate), Enter/Tab (select), Escape (dismiss)
  • Workspace: Ctrl+Shift+W (open manager), Ctrl+1-9 (quick switch)
  • Multi-Cursor: Ctrl+Click (toggle cursors), Escape (clear cursors)

Estimated implementation time: ~18-22 hours
All features tested and functional

This commit implements three major new features as outlined in the implementation guide: ## 1. Smart Autocomplete & Data Entry Assistance ✅ **Frontend:** - Created autocomplete utility with fuzzy matching algorithm - Built AutocompleteDropdown component with keyboard navigation - Added column value caching to cellStore for fast lookups - Integrated autocomplete into CellGridVirtualized cell editing - Added autocomplete settings to SettingsModal (enable/disable, min chars, restrict to existing) **Features:** - Suggests existing values from the current column - Fuzzy matching with prioritization (exact > starts-with > contains > fuzzy) - Keyboard navigation (Arrow Up/Down, Enter/Tab, Escape) - Debounced suggestions with configurable minimum characters - Works with all edit modes (inline, textarea, popout) **Files Changed:** - frontend/src/utils/autocomplete.ts (new) - frontend/src/components/cell/AutocompleteDropdown.tsx (new) - frontend/src/stores/cellStore.ts (added columnCache) - frontend/src/components/cell/CellGridVirtualized.tsx (integrated autocomplete) - frontend/src/stores/settingsStore.ts (added settings) - frontend/src/components/modals/SettingsModal.tsx (added UI) ## 2. Workspace Layouts & Panel Presets ✅ **Frontend:** - Created workspace types for layout configuration - Built workspaceStore for managing saved layouts - Created WorkspaceManagerModal for visual layout management - Integrated with App.tsx for applying layouts **Backend:** - Added Rust storage functions for workspace persistence - Registered commands in Tauri (load_workspace_layouts, save_workspace_layouts) **Features:** - Save current workspace layout with custom name - Load, rename, delete, and set default layouts - Stores: drawer position/size, sidebar state, zoom level, column widths - Quick-switch with Ctrl+1 through Ctrl+9 - Open manager with Ctrl+Shift+W - Persistent storage across sessions **Files Changed:** - frontend/src/types/workspace.ts (new) - frontend/src/stores/workspaceStore.ts (new) - frontend/src/components/modals/WorkspaceManagerModal.tsx (new) - frontend/src/App.tsx (integrated modal and shortcuts) - backend/src/storage.rs (added workspace functions) - backend/src/main.rs (registered commands) ## 3. Multi-Cursor & Multi-Cell Editing ✅ **Frontend:** - Added multi-cursor state to cellSelectionStore - Implemented Ctrl+Click to add/remove secondary cursors - Added visual distinction (solid primary, dashed secondary cursors) - Synchronized editing across all cursors **Features:** - Ctrl/Cmd+Click to toggle secondary cursors - Type to edit all cursor positions simultaneously - Paste to all cursor positions - Delete/Backspace clears all cursor cells - Escape clears all multi-cursors - Visual feedback: primary (solid ring), secondary (dashed ring with background) - Automatic cleanup on incompatible selections **Files Changed:** - frontend/src/stores/cellSelectionStore.ts (added multi-cursor state/actions) - frontend/src/components/cell/CellGridVirtualized.tsx (integrated rendering and editing) ## Technical Notes - All features maintain backward compatibility - No breaking changes to existing functionality - Uses existing Zustand store patterns - Follows Seria's local-first, privacy-focused architecture - Performance optimized with memoization and batch updates ## Keyboard Shortcuts Added - Autocomplete: Arrow Up/Down (navigate), Enter/Tab (select), Escape (dismiss) - Workspace: Ctrl+Shift+W (open manager), Ctrl+1-9 (quick switch) - Multi-Cursor: Ctrl+Click (toggle cursors), Escape (clear cursors) Estimated implementation time: ~18-22 hours All features tested and functional
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
parker/seria!7
No description provided.