Commit graph

68 commits

Author SHA1 Message Date
Rohith Gilla
f880b13cee
chore: release v0.19.1 2026-04-10 16:04:53 +05:30
Rohith Gilla
2ebd1c2835
Add v0.19.0 release video and fix Windows build
- Add Remotion release video for v0.19.0 with 5 feature scenes:
  Web SQL Client, Table Editor UX, Smart Filter Bar,
  Local-First Storage, and Shared UI Package
- Fix electron-builder Windows build by moving @data-peek/ui
  to devDependencies (it's renderer-only, bundled by Vite)
- Fix unused onCopy prop in smart-filter-bar causing TS error
2026-04-07 11:02:38 +05:30
Rohith Gilla
cd412b631b
chore: release v0.19.0 2026-04-07 10:47:58 +05:30
Rohith Gilla
ddb9d9633d
refactor: migrate desktop UI components to shared @data-peek/ui package
Copy 9 remaining components (alert-dialog, chart, checkbox, collapsible,
command, context-menu, progress, sidebar, switch) to packages/ui and
update all 92 desktop files to import from @data-peek/ui instead of
local @/components/ui/* paths.
2026-04-05 09:47:01 +05:30
Rohith Gilla
be91a2587a
chore: release v0.18.0 2026-04-02 20:16:56 +05:30
tembo[bot]
92b4c41cef
Add Tanstack Hotkeys (#129)
* chore: replace manual keyboard handlers with tanstack react-hotkeys integration

Co-authored-by: Rohith <gillarohith1@gmail.com>

* Address review: add conflictBehavior and simplify callback

* Add image sharing to dashboards (#128)

* feat(health-monitor): add ability to share health dashboard panels as images and share query results as images

Co-authored-by: Rohith <gillarohith1@gmail.com>

* Address review: extract share components, deduplicate ShareQueryDialog, fix capture transitions

- Extract renderShareContent into ShareActiveQueries, ShareTableSizes,
  ShareCacheStats, ShareLocks components in health-share-content.tsx
- Move shareDialogTitles/shareDialogPrefixes to module-level constants
- Use single TooltipProvider wrapping the card grid
- Remove transition-all duration-200 from ShareImageDialog capture target
  to prevent intermediate-state captures
- Refactor ShareQueryDialog to use ShareImageDialog as its base, eliminating
  ~250 lines of duplicated background/padding/branding/capture logic
- Add header and extraOptions props to ShareImageDialog for composition
- Add privacy notices about connection names and sensitive data in share
  dialog descriptions

---------

Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
Co-authored-by: Rohith <gillarohith1@gmail.com>
Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>

* chore: replace manual keyboard handlers with tanstack react-hotkeys integration

Co-authored-by: Rohith <gillarohith1@gmail.com>

* Address review: add conflictBehavior and simplify callback

---------

Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
Co-authored-by: Rohith <gillarohith1@gmail.com>
Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>
Co-authored-by: tembo[bot] <208362400+tembo-io[bot]@users.noreply.github.com>
2026-04-02 15:11:11 +05:30
Rohith Gilla
84841567d4
chore: release v0.17.0 2026-04-02 12:14:15 +05:30
Rohith Gilla
4bcff4c0b7
chore: release v0.16.1 2026-04-01 20:56:13 +05:30
Rohith Gilla
a3457e23c7
feat: add Remotion video app for launch videos (#121)
* feat: add Remotion video app and fix build errors

Add apps/video/ (@data-peek/video) — a Remotion app for generating
launch and demo videos. Includes a 30s v0.16.0 launch video composition
with animated feature showcases matching the brand identity.

Fix TypeScript build errors: duplicate variable declarations in
database adapters, missing crypto import in pg-notification-listener,
and inconsistent useEffect return paths in renderer components.

* fix: add missing nanoid dependency to desktop package

nanoid was imported in masking-store.ts but not declared in
package.json, causing CI build failures on Mac and Linux where
hoisting doesn't resolve it.

* fix: correct video duration and masking badge positioning

- Bump durationInFrames from 900 to 941 to match actual timeline
  (intro 120 + 6 features × 117 + transition 9 + outro 110)
- Add position: relative to DataMasking card so the absolute
  "masked" badge renders in the correct location
2026-03-19 13:42:00 +05:30
Rohith Gilla
e8adebe9c5
chore: release v0.16.0 2026-03-19 11:13:25 +05:30
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
Rohith Gilla
19009b6457
chore: release v0.15.0 2026-03-07 13:18:34 +05:30
Rohith Gilla
7d89ca4fa2
feat: Add Query Sharing Feature (Ray.so style) (#107)
* feat: add query sharing feature

- Add ShareQueryDialog component for generating beautiful query images
- Implement SQL syntax highlighting with tokens (keywords, functions, strings, etc.)
- Support multiple background styles (gradients and solid colors)
- Support light/dark themes
- Add database type badge with connection icon
- Copy to clipboard or save as PNG
- Add Share button to query editor toolbar

* fix: address CodeRabbit review feedback

- Replace html2canvas with html-to-image (actively maintained, better CSS support)
- Import SQL_KEYWORDS from shared constants instead of duplicating
- Extract TokenType and BackgroundStyle to separate type aliases (line width)
- Fix handleDownload missing await and dependency in useCallback
- Remove backdrop-blur-sm from render target (unsupported by image export)

* fix: update next-mdx-remote to v6.0.0 (CVE-2026-0969)

* Fix type safety & cleanup (#112)

Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>

---------

Co-authored-by: Rohith Gilla <rohithgilla11@gmail.com>
Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
2026-03-07 11:14:09 +05:30
Rohith Gilla
ed455c3122
chore: release v0.14.0 2026-01-27 10:51:21 +05:30
Rohith Gilla
ebf4dad443
chore: release v0.13.2 2026-01-27 10:44:25 +05:30
Rohith Gilla
16910b936a
chore: release v0.13.1 2026-01-15 09:31:40 +05:30
Rohith Gilla
8a62a3eab9 chore: release v0.13.0 2026-01-06 08:34:29 +05:30
Rohith Gilla
8b2dfd2e65 chore: release v0.12.0 2026-01-01 10:01:17 +05:30
Rohith Gilla
6549dc6a1a chore: release v0.11.0 2025-12-24 19:09:59 +05:30
Rohith Gilla
6de4377f9b chore: release v0.10.1 2025-12-18 21:22:34 +05:30
Rohith Gilla
f2cfd165f9 chore: release v0.10.0 2025-12-18 20:31:32 +05:30
Rohith Gilla
7458e6649a Merge branch 'main' into claude/setup-blog-posts-sitemap-GqlX8 2025-12-18 13:28:50 +05:30
Rohith Gilla
8a865b512a feat: add widgets!!!! 2025-12-17 08:34:49 +05:30
Rohith Gilla
3ed1de344f feat(scheduler): replace setTimeout with node-cron for reliable scheduling
- Replace setTimeout-based scheduling with node-cron for precise timing
- Add "New Schedule" button to empty state in sidebar
- Add cron expression validation before scheduling
- Remove comment dividers per style preference
2025-12-16 19:58:56 +05:30
Rohith Gilla
505e1a139c chore: release v0.9.0 2025-12-16 18:26:32 +05:30
Claude
ac4557c301
feat: add query scheduling with cron-like support
- Add ScheduledQuery and ScheduledQueryRun types to shared package
- Create scheduler service in main process with cron-parser for scheduling
- Add IPC handlers for scheduled queries CRUD operations
- Update preload to expose scheduled queries API
- Create Zustand store for scheduled queries state management
- Add UI components:
  - ScheduledQueriesDialog for listing and managing schedules
  - ScheduledQueryFormDialog for creating/editing schedules
  - ScheduledQueryRunsDialog for viewing run history
  - ScheduledQueries sidebar component
- Support schedule presets (every minute, hourly, daily, etc.) and custom cron
- Include desktop notifications on completion/error
- Store run history with configurable retention
2025-12-16 10:09:32 +00:00
Rohith Gilla
a610709b80
feat: add query performance indicator (#69)
* feat: add query perf indication

* fix: address code review issues from PR #69

- Fix invalid PostgreSQL identifier truncation (use substring(0,63) instead of appending dots)
- Split long regex patterns to satisfy Prettier line length limits
- Add guard against empty/malformed EXPLAIN plan arrays
- Use @shared/index import for consistency with project conventions
- Add missing uuid dependency to package.json
2025-12-16 11:52:55 +05:30
Rohith Gilla
8d9b533ad4 chore: release v0.8.1 2025-12-15 15:17:11 +05:30
Rohith Gilla
c09d243b58
chore: codebase cleanup and DRY refactoring (#63)
* chore: codebase cleanup and DRY refactoring

- Create useCopyToClipboard hook to eliminate duplicate clipboard pattern
- Create getTypeColor utility to consolidate type color logic
- Create usePanelCollapse hook for panel state management
- Create useExecutionPlanResize hook for resize logic with persistence
- Extract connection string parser to dedicated module (206 lines)
- Remove 5 unused AI response types from shared package
- Remove unused dependencies (@ai-sdk/openai-compatible, @ai-sdk/react)
- Remove machine-generated section comments from shared/index.ts

* chore: fix small issue
2025-12-12 15:04:01 +05:30
Rohith Gilla
5311e58c13 fix: add missing @radix-ui/react-visually-hidden dependency
The command.tsx component imports this package but it was not listed
in dependencies, causing production builds to fail.
2025-12-12 13:00:03 +05:30
Rohith Gilla
448fa4895b chore: release v0.8.0 2025-12-12 12:51:38 +05:30
Rohith Gilla
ca5d3e0e5c
feat: migrate command palette to cmdk library (#59)
* feat: migrate command palette to cmdk library

- Replace custom command palette with cmdk for better UX
- Add nested page navigation (connections, saved queries, appearance)
- Implement smart fuzzy search with acronym and character matching
- Add pin/unpin functionality for saved queries
- Auto-switch to newly added connections
- Cmd+P now opens directly to connection list with add/edit options

* chore: Apply consistent code formatting and quoting conventions across various files.

* chore: delete unwanted
2025-12-12 11:26:57 +05:30
Rohith Gilla
256b06b3a1 chore: release v0.7.0 2025-12-11 12:31:44 +05:30
Rohith Gilla
8d023eee0d chore: release v0.6.2 2025-12-09 09:30:57 +05:30
Rohith Gilla
4a57d3c707 chore: release v0.6.1 2025-12-09 09:30:45 +05:30
Rohith Gilla
ec5de32862 fix: move shared package to devDependencies for electron-builder
Fixes Linux build by moving @data-peek/shared from dependencies to
devDependencies. The shared package is bundled by Vite via the @shared
alias, so it's not needed at runtime. Also excludes .turbo directories
from the build.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 09:27:34 +05:30
Rohith Gilla
a64d964c60 chore: release v0.6.0 2025-12-09 08:36:59 +05:30
phantomreactor
70d5f6a270
feat: db connections via ssh (#51)
* feat: connect via ssh

* Update apps/desktop/src/main/ssh-tunnel-service.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* refactor ssh changes

* fix: address review comments

---------

Co-authored-by: Rohith Gilla <gillarohith1@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-09 08:07:57 +05:30
Rohith Gilla
da8cc574d3 chore: fix build and clean things 2025-12-08 19:58:17 +05:30
Rohith Gilla
66df1f77a8 Merge branch 'main' into claude/add-test-coverage-01L5b9CcytSmm7k9rzFdLdiH 2025-12-06 15:54:05 +05:30
Rohith Gilla
f102f61a55 chore: refactor logging 2025-12-06 15:34:08 +05:30
Claude
ff83bb33ae
feat: add comprehensive test coverage for core SQL builders
- Add Vitest testing framework with v8 coverage
- Add 177 unit tests covering critical paths:
  - sql-builder.ts: INSERT/UPDATE/DELETE generation (97% coverage)
  - ddl-builder.ts: CREATE/ALTER TABLE DDL (97% coverage)
  - sql-utils.ts: identifier quoting (100% coverage)
  - edit-store.ts: Zustand store state management (92% coverage)
- Test all 4 database dialects: PostgreSQL, MySQL, SQLite, MSSQL
- Add test scripts: pnpm test, pnpm test:watch, pnpm test:coverage

Resolves CRIT-001: Zero Test Coverage
2025-12-06 08:25:38 +00:00
Rohith Gilla
bf6281c08e chore: release v0.5.3 2025-12-05 21:27:30 +05:30
Rohith Gilla
0f971d0352 chore: release v0.5.2 2025-12-05 08:20:41 +05:30
Rohith Gilla
49890b255c chore: fix linter issues 2025-12-05 08:20:12 +05:30
carvalab
048861fd13
Feat/fix anthropic and OpenAI ai errors (#35)
* feat: fix the AI service to remove the discrimination union

* feat: chore 0.5.2

* feat: reimplement the multi provider
2025-12-05 08:18:55 +05:30
Rohith Gilla
fe092ceee7 chore: release v0.5.1 2025-12-04 21:48:49 +05:30
Rohith Gilla
3051178ce1 chore: release v0.5.0 2025-12-04 18:20:43 +05:30
Rohith Gilla
bfd94e46d3
feat: Sidebar UX improvements with resizable width and virtualization (#30)
* feat: hide quick editor panel and virtualization for longer list

* fix: Address PR review feedback

- Add dynamic size estimation for virtualized items based on expanded state
- Add effect to recalculate virtualizer when items expand/collapse
- Fix keyboard shortcut whitespace issues in tab-query-editor.tsx
2025-12-04 18:19:59 +05:30
Rohith Gilla
8781cb946c chore: release v0.4.0 2025-12-03 16:45:07 +05:30