data-peek/docs/roadmap.md
Rohith Gilla a168975867
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 08:18:55 +05:30

122 lines
4.2 KiB
Markdown

---
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!