data-peek/docs/roadmap.md

123 lines
4.2 KiB
Markdown
Raw Normal View History

feat: add 6 new features — stats, masking, CSV import, data gen, notifications, health monitor (#119) * docs: add design spec for 6 new features Column Statistics, Data Masking, CSV Import, Data Generator, DB Notifications, and Connection Health Monitor. * docs: update spec with review fixes Resolve all 15 review issues: naming conflicts, preload layer, batch insert interface, guard clauses, confirmation dialogs, etc. * docs: add implementation plan for 6 features Fix critical issues from review: adapter connection pattern, preload event subscription pattern, tab interface definitions, ColumnStatsRequest type, and implementation notes. * feat: add column statistics panel (Tasks 1.1-1.8) Implement the Column Statistics feature allowing users to right-click a column header and view min/max/nulls/distinct/histogram in a right sidebar panel. Supports PostgreSQL (full implementation with median + histogram), MySQL (CASE WHEN histogram, no median), and MSSQL (NTILE histogram + PERCENTILE_CONT median). Includes shared types, IPC handler, Zustand store, stats panel UI, and DataTable integration via onColumnStatsClick. * feat: add Data Masking feature (renderer-only) Adds blur-based data masking so users can hide sensitive columns during demos, screenshots, and pair programming. Entirely renderer-only — no IPC or main process changes. - masking-store: Zustand store with manual per-tab masking, auto-mask rules (email/password/ssn/token etc.), hover-to-peek, and persist middleware for rules/settings only (runtime maskedColumns not persisted) - masking-toolbar: dropdown UI for toggling auto-mask, managing rules, adding custom regex patterns, and unmasking all columns for a tab - data-table: accepts optional tabId, shows lock icon on masked headers, adds Mask/Unmask to column dropdown, applies blur(5px) + userSelect:none to masked cells with alt-hover peek support - editable-data-table: same masking UX; masked cells block editing - tab-query-editor: wires tabId into DataTable, renders MaskingToolbar near Export, intercepts exports when masked columns are present and shows an AlertDialog to confirm exporting with [MASKED] values * feat(csv-import): implement CSV import feature (Tasks 3.1-3.5) - Add shared types: CsvColumnMapping, CsvImportOptions, CsvImportRequest, CsvImportProgress, CsvImportResult, BatchInsertOptions, BatchInsertResult - Install papaparse for CSV parsing in renderer - Create batch-insert.ts: parameterized INSERT with per-dialect placeholder syntax (pg: $1/$2, mysql: ?, mssql: @p1/@p2), ON CONFLICT handling, and cancellation support - Add import-handlers.ts IPC handler for db:import-csv and db:import-cancel; progress events pushed via event.sender.send('db:import-progress') - Add import-store.ts Zustand store with 5-step wizard state, type inference for new tables (integer/numeric/timestamp/boolean/text), and auto-mapping - Create csv-import-dialog.tsx Sheet dialog: file drop zone, target selection, column mapping, options (batch size/conflict/truncate/transaction), and progress/result step - Add "Import CSV" to schema explorer table context menu (both virtualized and non-virtualized paths) * feat: add Data Generator feature (Tasks 4.1-4.5) Adds schema-aware fake data generation using @faker-js/faker. Users can open a data-generator tab from the schema explorer context menu on any table, configure per-column generators (faker, random-int/float/bool/date, uuid, auto-increment, fk-reference, fixed, null), preview 5 sample rows, and insert up to 10 000 rows in configurable batches with live progress. - packages/shared: GeneratorType, ColumnGenerator, DataGenConfig, DataGenProgress, DataGenResult types - main: data-generator.ts engine with heuristics + faker dispatch - main: data-gen-handlers.ts IPC for generate, cancel, preview - preload + preload d.ts: generateData, cancelGenerate, generatePreview, onGenerateProgress on window.api.db - stores: DataGeneratorTab type added to tab-store; data-gen-store for per-tab generator state and actions - renderer: data-generator.tsx UI; schema-explorer "Generate Data" menu item; tab-query-editor dispatch for data-generator tab type * feat: add PostgreSQL LISTEN/NOTIFY dashboard (Chunk 5) Implements a full LISTEN/NOTIFY panel for PostgreSQL connections: - Shared types: PgNotificationEvent, PgNotificationChannel, PgNotificationStats - Main process: dedicated pg.Client listener per connection with SSH tunnel support, auto-reconnect with exponential backoff, and SQLite event history (capped at 10k events per connection) - IPC handlers under pg-notify: prefix; cleanup on app quit - Preload: pgNotify namespace exposing subscribe/unsubscribe/send/getChannels/ getHistory/clearHistory/onEvent - Store: usePgNotificationStore with rolling 60s stats and in-memory event cap - Tab type: pg-notifications added to TabType union with deduplication - UI: channel subscription bar, scrollable event log with JSON highlighting, collapsible send panel and stats; PostgreSQL-only guard - Sidebar: Notifications entry visible only for PostgreSQL connections * feat(shared): add health monitor types (Task 6.1) Add ActiveQuery, TableSizeInfo, CacheStats, LockInfo, and DatabaseSizeInfo types to the shared package for IPC contract. * feat(adapters): implement health monitor queries (Task 6.2) Add getActiveQueries, getTableSizes, getCacheStats, getLocks, and killQuery to DatabaseAdapter interface with implementations for PostgreSQL, MySQL, MSSQL, and SQLite stub. * feat(ipc): add health monitor IPC handlers (Task 6.3) Register IPC handlers for db:active-queries, db:table-sizes, db:cache-stats, db:locks, and db:kill-query channels. * feat(preload): expose health monitor API to renderer (Task 6.4) Add health namespace to preload bridge with activeQueries, tableSizes, cacheStats, locks, and killQuery methods plus type declarations. * feat(store): add health monitor Zustand store (Task 6.5) Create useHealthStore with polling, fetch actions for all health metrics, and kill query support. * feat(ui): add health monitor dashboard tab (Task 6.6) Add HealthMonitor component with 4-panel dashboard: active queries with kill support, table sizes with sorting, cache hit ratios with color coding, and lock/blocking detection. Integrate into tab system and sidebar navigation. * chore: apply prettier formatting * fix: resolve empty block statement lint errors * fix: add column stats to editable table and fix masking infinite loop Column statistics dropdown now available in table preview (editable) mode. Fixed MaskingToolbar infinite re-render caused by creating a new empty array reference on every store snapshot. * docs: update README, features, roadmap, and marketing site for 6 new features Add Column Statistics, Data Masking, CSV Import, Data Generator, Connection Health Monitor, and PostgreSQL Notifications to all documentation and the marketing website features grid. * Apply suggestions from code review Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com> --------- Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
2026-03-18 02:48:55 +00:00
---
title: Roadmap
description: Planned features and future development direction for data-peek
---
# Roadmap
This document outlines planned features and future development priorities for data-peek. Features are organized by priority and scope.
## Pending Features (from v1.1/v2.0 scope)
| Priority | Feature | Description | Scope |
|----------|---------|-------------|-------|
| Medium | Connection groups/folders | Organize connections into folders/groups | v1.1 |
| Low | Database diff tool | Compare schemas between databases | v2.0 |
## Suggested Features
### High Priority
| Feature | Description |
|---------|-------------|
| Query Snippets/Templates | Pre-built SQL templates for common operations (SELECT *, COUNT, JOINs, etc.) |
| Connection Cloning | Quickly duplicate existing connections with modifications |
| Query History Search | Filter and search through query history |
| Keyboard Shortcut Customization | Allow users to remap keyboard shortcuts |
### Medium Priority
| Feature | Description |
|---------|-------------|
| Query Scheduling | Run queries on a local schedule (cron-like) |
| Multiple Result Sets UI | Better UI for queries returning multiple result sets |
| Schema Comparison | Compare schemas between two connections |
| Query Profiler | More detailed execution stats beyond current telemetry |
### Nice to Have
| Feature | Description |
|---------|-------------|
| Stored Procedure Debugger | Step through stored procedures |
| SQL Linting | Highlight potential SQL issues (missing indexes, N+1 patterns) |
## Pro Tier Features (Planned)
These features are planned for the commercial Pro tier:
| Feature | Description |
|---------|-------------|
| Cloud Sync | Sync settings, connections, and saved queries across devices |
| Team Workspaces | Collaborate with team members on queries and connections |
| Shared Query Library | Share queries across your organization |
| SSO/SAML | Enterprise single sign-on support |
| Audit Logs | Track who ran what queries and when |
## Technical Improvements
| Area | Description |
|------|-------------|
| Safe Storage | Investigate and fix safeStorage corruption issues for credential encryption |
| Offline Features | Expand offline functionality beyond current license grace period |
## Current Feature Status
For reference, here's what's already implemented:
### Core
- Multi-database support (PostgreSQL, MySQL, MSSQL, SQLite)
- SSH tunnel connections with password and key auth
- Encrypted credential storage using OS keychain
- SSL connection support
### Query Editor
- Monaco editor with SQL syntax highlighting
- Schema-aware autocomplete with table alias support
- Multi-tab and multi-window support
- Saved queries with organization
- Command palette (`Cmd+K`)
- Query formatting/beautify
### Performance Analysis
- Query telemetry with waterfall visualization
- Benchmark mode (p50/p90/p99 statistics)
- EXPLAIN viewer with interactive visualization
- Query cancellation
### Data Management
- Schema explorer (tables, views, stored procedures, functions)
- Inline editing (INSERT/UPDATE/DELETE)
- Table designer with full DDL support
- JSON editor for JSON/JSONB columns
- Export to CSV, JSON, Excel
- Server-side pagination
- CSV import with column mapping, type inference, and conflict handling
- Data generator with Faker.js integration and FK awareness
- Column statistics (one-click profiling with histograms and top values)
- Data masking (blur sensitive columns with auto-mask rules)
### Database Monitoring
- Connection health monitor (active queries, table sizes, cache stats, locks)
- PostgreSQL LISTEN/NOTIFY pub/sub dashboard
- Kill queries from health monitor
### Visualization
- ERD diagrams with interactive visualization
- Foreign key navigation
### AI Assistant
- Multi-provider support (OpenAI, Anthropic, Google, Groq, Ollama)
- Natural language to SQL
- Charts and insights generation
- Schema-aware responses
### User Experience
- Dark/Light mode with system preference
- Keyboard-first design
- Auto-updates
- Multi-window support
## Contributing
Want to help implement a feature? Check out our [Contributing Guide](https://github.com/Rohithgilla12/data-peek/blob/main/CONTRIBUTING.md) and pick an item from this roadmap!