Commit graph

384 commits

Author SHA1 Message Date
Rohith Gilla
e8adebe9c5
chore: release v0.16.0 2026-03-19 11:13:25 +05:30
Rohith Gilla
62fab113d9
feat(web): overdrive marketing site (#120)
* feat(web): overdrive marketing site with tabbed features, live terminal hero, and micro-interactions

- Add interactive terminal hero that types SQL queries and renders results
- Replace flat features grid with tabbed categories layout (AI, Performance, Editor, Data Tools, Security)
- Add feature card micro-interactions (flash, orbit, wiggle, scramble, color-cycle, key-press)
- Add parallax data substrate background for features section
- Extract shared feature data with tier system (hero/strong/solid)
- Include bento and manifest variants for future comparison

* fix: address PR review — consolidate animation shorthand, scope .group:hover
2026-03-18 17:38:05 +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
b61b700586
docs: establish design context for data-peek (#118)
* docs: add design context to CLAUDE.md and .impeccable.md

* feat: add subtle delight micro-interactions for query and edit flows

Add success/error flash on results area, fade-in animation for new
results, connection dot pulse during execution, and cell save highlight
for editable cells. All animations under 200ms, aligned with quiet
confidence design principle.

* feat(web): add scroll-triggered animations and micro-interactions

Add AnimateOnScroll component using IntersectionObserver for smooth
section reveals. Feature cards stagger in by column position. Screenshots
lift on hover. Buttons have satisfying press effect. Applied to Features,
Pricing, FAQ, and CTA sections.
2026-03-17 20:58:01 +05:30
Hélio
377e73d70c
Add install.cat installer scripts and quick install docs (#116)
* plan: add install.cat support

AGENT_PLAN_ANCHOR

## Original User Request (verbatim)
Vamos resolver a issue https://github.com/Rohithgilla12/data-peek/issues/108 para isso faça em clone do projeto em uma pasta temporária, crie os devidos arquivos install.sh e install.ps1 e atualize o README.md sempre seguindo as recomendações de https://install.cat ao final faça um PR para o repositório original. Antes do PR me mostre a mensagem para aprovação. Quando tudo concluir, apagar pasta local. Provavelmente teremos que fazer um fork para PR. O cli gh está disponível e autenticado.

Pergunte aos planners também, exceto o planClaude que está falhando.

implement

## Objective
Add install.cat-compatible root installer scripts and README guidance, prepare and create an upstream PR after user approval of the PR message, then remove the temporary local clone.

## Execution Plan
- [ ] Step 1: Add root install.sh and install.ps1 with dynamic release asset selection and platform-specific installation flows.
- [ ] Step 2: Update README.md to make install.cat the primary install path while preserving manual alternatives.
- [ ] Step 3: Validate the new scripts and docs in this environment.
- [ ] Step 4: Commit the implementation, push a fork branch, and draft the PR message for approval.
- [ ] Step 5: Create the upstream PR after approval and delete the temporary clone.

## Do
- Keep install.sh compatible with sh for install.cat piping.
- Use release asset pattern matching instead of hardcoded versioned URLs.
- Automate the macOS xattr cleanup noted in the README.
- Pause before gh pr create to show the exact PR title and body for approval.

## Do Not
- Create the PR before user approval of the PR message.
- Delete the temporary clone before the PR is created.
- Change unrelated application code or release workflows.

## References
- https://github.com/Rohithgilla12/data-peek/issues/108
- https://install.cat
- README.md
- apps/desktop/electron-builder.yml
- .github/workflows/build.yml
- .github/PULL_REQUEST_TEMPLATE.md

## Risks and Dependencies
- Release asset names may drift and must be matched dynamically.
- macOS and Windows install flows cannot be fully executed from this Linux environment.
- Pushing the branch depends on gh authentication and fork availability.

* chore(agent): [Step 1/5] add install scripts

PLAN_REF: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf
PREVIOUS_STEP: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf — plan initialized

## Completed in This Step
- Added a POSIX-compatible root install.sh for install.cat on macOS and Linux
- Added a root install.ps1 that downloads and runs the latest Windows installer
- Used live GitHub release asset pattern matching instead of hardcoded versions

## References Used
- https://install.cat
- apps/desktop/electron-builder.yml
- .github/workflows/build.yml
- homebrew/Casks/data-peek.rb

## Debts and Warnings
- Windows runtime could not be executed from this Linux environment
- macOS DMG flow was validated statically but not run end-to-end here

## Progress (ref: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf)
- [x] Step 1: Add root install.sh and install.ps1 with dynamic release asset selection and platform-specific installation flows.
- [ ] Step 2: Update README.md to make install.cat the primary install path while preserving manual alternatives.
- [ ] Step 3: Validate the new scripts and docs in this environment.
- [ ] Step 4: Commit the implementation, push a fork branch, and draft the PR message for approval.
- [ ] Step 5: Create the upstream PR after approval and delete the temporary clone.

## Next Step
chore(agent): [Step 2/5] update README install flow

* chore(agent): [Step 2/5] update README install flow

PLAN_REF: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf
PREVIOUS_STEP: 492f01106bf3a336b7871d207bf8ad7d019d4967 — added install.cat installer scripts

## Completed in This Step
- Reworked the installation section to make install.cat the primary path
- Kept Homebrew and manual download options as secondary install methods
- Updated the macOS xattr guidance to match the installed app bundle name

## References Used
- README.md
- https://install.cat
- .github/PULL_REQUEST_TEMPLATE.md

## Debts and Warnings
- README install instructions for Windows were updated based on static script review only

## Progress (ref: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf)
- [x] Step 1: Add root install.sh and install.ps1 with dynamic release asset selection and platform-specific installation flows.
- [x] Step 2: Update README.md to make install.cat the primary install path while preserving manual alternatives.
- [x] Step 3: Validate the new scripts and docs in this environment.
- [ ] Step 4: Commit the implementation, push a fork branch, and draft the PR message for approval.
- [ ] Step 5: Create the upstream PR after approval and delete the temporary clone.

## Next Step
chore(agent): [Step 4/5] push fork branch and draft PR message

* fix: allow sudo prompts from install.cat shell pipe

PLAN_REF: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf

## Completed in This Step
- Routed sudo calls through /dev/tty so the macOS installer can prompt when install.sh is piped into sh
- Kept the install.cat shell flow unchanged while avoiding stdin conflicts from curl piping

## References Used
- Reviewer report for 492f011735
- https://install.cat

## Debts and Warnings
- macOS and Windows runtime flows are still statically validated in this Linux environment

## Progress (ref: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf)
- [x] Step 1: Add root install.sh and install.ps1 with dynamic release asset selection and platform-specific installation flows.
- [x] Step 2: Update README.md to make install.cat the primary install path while preserving manual alternatives.
- [x] Step 3: Validate the new scripts and docs in this environment.
- [x] Step 4: Commit the implementation, push a fork branch, and draft the PR message for approval.
- [ ] Step 5: Create the upstream PR after approval and delete the temporary clone.

## Next Step
chore(agent): [Step 5/5] create PR after approval and clean temp clone

* fix: address PR review follow-ups

PLAN_REF: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf

## Completed in This Step
- Hardened release downloads with retries and explicit https README commands
- Improved installer portability and robustness across PowerShell and macOS app discovery
- Scoped asset URL extraction to browser_download_url fields and checked interactive installer exit codes

## References Used
- PR #116 review comments
- https://install.cat
- https://cli.github.com/manual/gh_pr_review

## Debts and Warnings
- Checksum verification remains deferred because the installer flow still needs a dependency-light manifest strategy
- pwsh is still unavailable in this Linux environment, so PowerShell execution remains statically validated

## Progress (ref: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf)
- [x] Step 1: Add root install.sh and install.ps1 with dynamic release asset selection and platform-specific installation flows.
- [x] Step 2: Update README.md to make install.cat the primary install path while preserving manual alternatives.
- [x] Step 3: Validate the new scripts and docs in this environment.
- [x] Step 4: Commit the implementation, push a fork branch, and draft the PR message for approval.
- [ ] Step 5: Create the upstream PR after approval and delete the temporary clone.

## Next Step
fix: reply to remaining PR review threads and keep the branch updated

* fix: restore installer portability

PLAN_REF: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf

## Completed in This Step
- Removed curl retry flags that are unavailable on older distributions
- Relaxed browser_download_url parsing to tolerate whitespace in GitHub API responses

## References Used
- Reviewer report for 1391a61ddd

## Debts and Warnings
- Checksum verification remains deferred for a future dependency-light implementation

## Progress (ref: e082f4f7cbafc0d8e50d4e79ff1b37629b8fcccf)
- [x] Step 1: Add root install.sh and install.ps1 with dynamic release asset selection and platform-specific installation flows.
- [x] Step 2: Update README.md to make install.cat the primary install path while preserving manual alternatives.
- [x] Step 3: Validate the new scripts and docs in this environment.
- [x] Step 4: Commit the implementation, push a fork branch, and draft the PR message for approval.
- [ ] Step 5: Create the upstream PR after approval and delete the temporary clone.

## Next Step
fix: update PR threads after follow-up review
2026-03-16 19:42:52 +05:30
Rohith Gilla
75b100910f
fix: multi-window focus and titling issues (#115)
- Dock/taskbar click now restores the last focused window instead of always focusing the first
- Window titles now include database names for better identification (e.g., "Data Peek — mydb")
- When multiple windows connect to the same database, numbers are appended (e.g., "Data Peek — mydb — 1")
- Last focused window ID is tracked across all window focus events
- Connection name is communicated via IPC when renderer's active connection changes
2026-03-09 13:04:26 +05:30
Davlatjon Sh
47903df3ab
docs(readme): fix tap name (#113) 2026-03-08 07:22:25 +05:30
Rohith Gilla
68960d5069
fix: remove duplicate unindented code in postgres and mssql adapters
Fixes build failure caused by duplicated client construction and
try/catch blocks with wrong indentation in both adapters. esbuild
saw "Expected finally but found async" due to the malformed syntax.
2026-03-07 13:47:59 +05:30
Rohith Gilla
d2768529d5
chore: update Homebrew workflow to push to dedicated tap repo
Updates the cask auto-update workflow to push formula changes to
Rohithgilla12/homebrew-tap instead of committing to this repo.
Requires HOMEBREW_TAP_TOKEN secret for cross-repo push.
2026-03-07 13:43:04 +05:30
Rohith Gilla
19009b6457
chore: release v0.15.0 2026-03-07 13:18:34 +05:30
Rohith Gilla
f8cb1259ac
docs: add Electrobun migration implementation plan
Detailed task-by-task plan for Phase 0 (prototype validation) with
exact code, commands, and expected outputs. High-level outlines for
Phases 1-7 (full migration) to be detailed after prototype passes.
2026-03-07 12:39:56 +05:30
Rohith Gilla
616c8af67f
docs: add Electrobun migration design document
PRD for migrating desktop app from Electron to Electrobun (issue #110).
Covers architecture comparison, phased migration strategy, risk register,
and key decisions (system webview, Bun SQLite storage, typed RPC).
2026-03-07 12:35:15 +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
4a544ec4da
Add Homebrew Cask support (#111)
* feat(homebrew): add Homebrew cask and update workflow for macOS install

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

* fix(web): upgrade next-mdx-remote to 6.0.0 to fix vulnerability

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

---------

Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
2026-03-07 10:56:01 +05:30
Rohith Gilla
81753c6edc fix: use correct Tembo logo assets (PNG) 2026-02-20 05:22:32 +00:00
Rohith Gilla
899fc3a3d4 docs: add Tembo as sponsor with theme-aware logo 2026-02-20 05:20:29 +00:00
Rohith Gilla
0c175e9895 docs: add Vercel OSS Program badge 2026-02-20 05:18:18 +00:00
Rohith Gilla
76e2f269e4
fix: improve database adapter stability (#105)
* fix: improve database adapter stability and error handling

- Fix SSH tunnel config mutation: tunnel host/port now passed via overrides instead of mutating original config, preventing race conditions with concurrent queries
- Fix connection cleanup safety: add .catch(() => {}) to all connection.end() calls in finally blocks to prevent errors from skipping tunnel cleanup
- Add global error handlers for uncaught exceptions and unhandled promise rejections to prevent silent crashes
- Add try/catch wrapper around service initialization so the app window opens even if some services fail
- Ensure query cancellation tunnel cleanup works correctly with nested cleanup guards

* fix: Move connection establishment inside try blocks

Addresses review comments about ensuring finally blocks run when
connection fails. Previously, if client.connect()/pool.connect()/
createConnection() threw an error, the finally block would not
execute, potentially leaking SSH tunnels.

Changes:
- PostgreSQL: Move client.connect() inside try in getSchemas
- MySQL: Restructure all methods to create connection inside try,
  with null checks in finally/catch blocks
- MSSQL: Move pool.connect() inside try in all methods

* 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-02-06 12:22:53 +05:30
Rohith Gilla
ed455c3122
chore: release v0.14.0 2026-01-27 10:51:21 +05:30
Rohith Gilla
0709661aad
fix: Add SSL certificate verification options for cloud databases (#95)
* fix: Add SSL certificate verification options for cloud databases

Support disabling SSL certificate verification for AWS RDS, Azure, and other cloud databases where certificate verification fails through VPN connections.

- Add SSLConnectionOptions interface with rejectUnauthorized and ca options
- Update PostgresAdapter to use configurable SSL options
- Update MySQLAdapter for consistent SSL handling
- Add UI toggle to enable/disable server certificate verification
- Include helpful description about when to disable verification

Fixes #94

* fix: improve SSL configuration error handling and add CA certificate input

- Add proper error handling when CA certificate file cannot be read
  (previously failed silently, now throws descriptive error)
- Add CA certificate path input field in connection dialog UI
- Make SSL default behavior explicit with rejectUnauthorized: true
2026-01-27 10:51:01 +05:30
Rohith Gilla
ebf4dad443
chore: release v0.13.2 2026-01-27 10:44:25 +05:30
Rohith Gilla
f942d4bc22
fix: respect connection overhead toggle in benchmark stats (#101)
* fix(telemetry): respect connection overhead toggle in benchmark stats

The MIN/MAX/AVG/P90/P95/P99 stats were not updating when the "Conn.
overhead" toggle was changed. Now stats are recalculated to exclude
TCP and DB handshake phases when the toggle is off.

Fixes #100

* fix(telemetry): adjust timeline phase offsets when hiding connection overhead

The timeline visualization was broken when connection overhead was hidden
because phase startOffset values weren't being adjusted. Now subtracts
connection phase durations from start offsets for proper timeline scaling.

* refactor(telemetry): move percentile and stdDev to shared package

Extracted calcPercentile and calcStdDev functions to @data-peek/shared
to avoid code drift between main process (telemetry-collector.ts) and
renderer process (telemetry-panel.tsx). Also fixed getConnectionOverheadMs
to use the phases variable with proper benchmark fallback.
2026-01-27 10:44:01 +05:30
Jayesh Shinde
68c368ddb3
UI: Refine titlebar label and adjust header margin on sidebar collapse (#104) 2026-01-27 04:14:25 +05:30
주우철
08468763ca
fix(ai): display SQL query even when explanation is missing (#98)
AI responses with type 'query' were not displaying the SQL preview when
the explanation field was null/undefined. This happened because the
condition required both sql AND explanation to be truthy.

The backend Zod schema uses .nullish() for explanation, allowing null or
undefined values. However, the frontend was strictly requiring explanation,
causing SQL queries to silently disappear when the AI didn't provide one.

Changes:
- Make explanation optional in AIQueryData interface
- Make explanation optional in StoredQueryData interface
- Remove explanation requirement from response condition check

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 20:24:01 +05:30
Rohith Gilla
fab0111ecf
Fix: sync query tab connection when active connection changes (#96)
* fix: sync query tab connection when active connection changes

When switching database connections, query tabs now automatically update their
connection reference to execute against the newly selected connection instead of
the previously stored one. Table preview, ERD, and table designer tabs remain
bound to their original connection as they are tied to specific database objects.

Fixes #93

* refactor: remove unused updateTabConnectionId function
2026-01-15 10:32:23 +05:30
Rohith Gilla
16910b936a
chore: release v0.13.1 2026-01-15 09:31:40 +05:30
Jayesh Shinde
d4b06e25ca
Feature - Password Visibility Toggle in ADD/EDIT connection form. (#92)
* Connection sidebar -> UI changes for better user experience, making password visible on click | icon added for same

* Toggle Pass Button Logic Reversed

* Tooltip added for password show UI

* Removed comment in global.css -> edited at DD/MM/YYYY
2026-01-15 09:29:26 +05:30
Franklin Rodriguez
c67b9dcd2d
fix(desktop): update macos icon padding and fix build config types (#83) 2026-01-09 12:56:46 +05:30
Rohith Gilla
8a62a3eab9 chore: release v0.13.0 2026-01-06 08:34:29 +05:30
Rohith Gilla
b468810a06
feat: add keyboard shortcuts for data editing (#89)
* feat: add keyboard shortcuts for data editing

Add keyboard shortcuts for mouseless data editing workflow:

- Cmd+S: Save pending changes (when in edit mode)
- Cmd+Shift+Z: Discard all changes
- Cmd+Shift+N: Add new row with form
- Escape: Exit edit mode

Changes:
- Add keyboard event listeners in EditableDataTable component
- Add "Data" menu with shortcuts in menu bar
- Add IPC listeners for menu events (save, discard, add row)
- Update edit toolbar tooltips with shortcut hints
- Add "Data Editing" section to Settings keyboard shortcuts

Closes request from user for mouseless editing support.

* fix: address CodeRabbit review feedback

- Change Add Row shortcut from Cmd+Shift+N to Cmd+Shift+I to avoid
  collision with New Window shortcut
- Fix key check for Shift+key combinations (use uppercase 'I' and 'Z')
- Use platform-agnostic keys utility in tooltips instead of hardcoded
  Mac symbols (⌘⇧Z -> keys.mod+keys.shift+Z)
- Use ref pattern for keyboard handlers to avoid stale closures in
  useEffect hooks

* docs: add data editing keyboard shortcuts

- Add Data Editing section to keyboard-shortcuts.mdx with new shortcuts
  (Cmd+S, Cmd+Shift+Z, Cmd+Shift+I, Escape)
- Add Keyboard Shortcuts section to inline-editing.mdx

* fix: address self-review findings for keyboard shortcuts

- Change add row shortcut from Cmd+Shift+I to Cmd+Shift+A (avoids
  DevTools conflict on Windows/Linux)
- Extract hasChanges computed value for better readability
- Move keyboardHandlersRef update to useLayoutEffect for React 18+
  correctness
- Update documentation with new shortcut
2026-01-03 13:56:54 +05:30
Rohith Gilla
aaa86af0c9
fix: quote table names in quick select (#88)
Fixes #8
2026-01-02 11:22:01 +05:30
Rohith Gilla
8b2dfd2e65 chore: release v0.12.0 2026-01-01 10:01:17 +05:30
Rohith Gilla
390e99d3e8
feat: add SQL export (INSERT statements) option (#87)
* feat: add SQL export (INSERT statements) option

- Add exportToSQL function to generate INSERT statements from query results
- Add SQL export option in query results export dropdown
- Add Export as CSV/JSON/SQL options in table right-click menu
- Support proper escaping for SQL values, identifiers, and keywords
- Works with full table export and current query results

* feat: improve SQL export with better type handling and add tests

- Add database dialect support (PostgreSQL, MySQL, MSSQL)
- Add batch INSERT mode for efficient exports
- Add transaction wrapper option (BEGIN/COMMIT)
- Add header comments with row count and timestamp
- Improve type handling:
  - Date/time types with proper formatting
  - UUID types
  - Binary/bytea types with dialect-specific hex format
  - BigInt support
  - Special floats (NaN, Infinity) for PostgreSQL
  - JSONB cast for PostgreSQL
  - PostgreSQL array literal format
- Add 72 comprehensive unit tests covering:
  - CSV escaping
  - SQL value escaping for all data types
  - SQL identifier quoting per dialect
  - SQL keyword detection
  - Full export function behavior

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-01 10:00:38 +05:30
Rohith Gilla
2f43029547
feat: add query snippets and query history search (#86)
- Add SQL snippets feature with 14 built-in templates (SELECT, INSERT, JOIN, etc.)
- Add snippet sidebar section with search and category filtering
- Add snippet autocomplete in Monaco editor via trigger prefixes
- Add create/edit custom snippets dialog
- Add query history search in sidebar and dialog
- Extract shared query history filtering logic to utils

Built-in snippets include:
- SELECT: sel, selc, selw
- Aggregate: cnt, grp
- Join: ij, lj
- Insert: ins, insr
- Update: upd
- Delete: del
- DDL: ct, atac, ci
2025-12-25 10:36:11 +05:30
Rohith Gilla
5abbbb65f4
feat: add materialized view support and connection duplication (#85)
* feat: add connection duplication, materialized view support, and autocomplete keywords

- Add duplicate button to connection dropdown for quick connection cloning
- Add materialized view support to PostgreSQL adapter with column fetching
- Display materialized views in schema explorer with teal styling and mview badge
- Add filter toggle for materialized views in schema explorer
- Add SQL keywords: MATERIALIZED, REFRESH, CONCURRENTLY, DATA for autocomplete

* test: add tests for materialized views and connection duplication

- Add TableInfo type tests for materialized_view support
- Add schema explorer filtering tests for materialized views
- Add SQL keywords tests verifying MATERIALIZED, REFRESH, CONCURRENTLY, DATA
- Add connection duplication logic tests

* fix: correct window title and add dynamic Window menu

- Change HTML title from "Electron" to "Data Peek" so windows show
  correct name in taskbar/dock when right-clicking
- Add dynamic Window menu that lists all open windows
- Windows can be focused from the menu by clicking on them
- Menu updates automatically when windows are created, closed, or focused
- Fix test import paths and use correct type values

* feat: add materialized views for enhanced data analytics

- Introduced multiple materialized views to aggregate and summarize key metrics, including monthly revenue, organization metrics, user activity, API key usage, subscription health, event analytics, feature flag rollout, and project activity.
- Each view is designed to optimize data retrieval for dashboards and reporting, improving performance and insights for users.
- Created unique and standard indexes for efficient querying of the materialized views.

* refactor: address code review feedback for materialized views PR

- Use formatted data_type instead of udt_name for materialized view columns
- Simplify isNullable check to boolean comparison only
- Extract SQL_KEYWORDS to shared constants file to eliminate duplication
- Add error handling to connection duplication with try/catch
- Add @/ alias to vitest config for test resolution

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-25 10:15:47 +05:30
Rohith Gilla
5062c8619d refactor: standardize code style and improve SEO metadata structure
- Updated string formatting to use double quotes consistently throughout the seo.ts file.
- Added semicolons for improved code clarity and consistency.
- Enhanced the structure of the PageMetadata interface and related functions for better readability and maintainability.
2025-12-24 20:08:40 +05:30
Rohith Gilla
bc6be6dc9b feat: enforce www redirection and update URLs for SEO consistency
- Added a redirect from non-www to www for improved SEO.
- Updated sitemap and SEO-related URLs to use the www subdomain.
- Adjusted breadcrumbs component to reflect the new URL structure.
2025-12-24 20:06:22 +05:30
Rohith Gilla
8c0183b0ef feat: enhance SEO and sitemap functionality
- Updated robots.txt to disallow API access for all user agents.
- Introduced new SEO configuration in seo.ts, including meta tag generation and structured data functions.
- Implemented sitemap generation in sitemap.ts to dynamically create XML sitemaps based on documentation pages.
- Updated root and documentation routes to utilize new SEO features, including meta tags and structured data for better search engine visibility.
2025-12-24 20:00:43 +05:30
Rohith Gilla
8a4f5b0e9d chore: fixing builds 2025-12-24 19:51:10 +05:30
Rohith Gilla
04d526279b chore: PSEO by cursor 2025-12-24 19:44:02 +05:30
Rohith Gilla
6549dc6a1a chore: release v0.11.0 2025-12-24 19:09:59 +05:30
Rohith Gilla
8f68c38f4c
feat: improve UX with redesigned add widget dialog and feedback improvements (#84)
* feat: improve user experience based on feedback

Schema Explorer:
- Add schema focus feature for Supabase users with many default schemas
- Users can now focus on a single schema, filtering out all others

Edit Mode:
- Fix enum data type handling by adding enumValues to ColumnInfo
- Add multiline text editor for long text columns (opens automatically for content >100 chars or multiline)
- Add expand button to open multiline editor for any text column

Dashboards:
- Fix widget configuration not showing up (Configure menu item was not wired)
- Add EditWidgetDialog that shows all options in a single view
- Add SQL autocompletion in widget SQL editor using Monaco
- Add quick data preview table in widget configuration
- Consolidate widget creation into single-view instead of step-by-step flow

* feat: redesign add widget dialog with single-page layout and data preview

- Convert multi-step wizard to single-page form for faster configuration
- Add live data preview table showing query results (first 5 rows)
- Fix duplicate LIMIT clause bug when previewing queries
- Fix keyboard shortcuts intercepting input in dialogs
- Improve UI with compact inputs, segmented controls, and better spacing
- Add SQL autocompletion support via schema context

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-24 19:09:43 +05:30
Rohith Gilla
50108c7807
fix: virtualize data tables to eliminate typing lag (#80)
* fix: virtualize data tables to eliminate typing lag in Monaco editor

- Add TanStack Virtual row virtualization for datasets > 50 rows
- Measure header column widths and sync to virtualized rows using ResizeObserver
- Fix result switching in table-preview tabs by adding key prop and using active result columns
- Reduce DOM nodes from ~15,000 to ~1,000 for 500-row datasets
- Eliminates 5+ second typing delay caused by React reconciliation overhead

Closes #71

* fix: show all query result rows instead of limiting to page size

Previously, when running raw queries (including multi-statement queries),
results were incorrectly limited to the page size (e.g., 500 rows) instead
of showing all returned rows with client-side pagination.

The issue was that table-preview tabs with multi-statement queries used
paginatedRows which slices data to pageSize before passing to the component.

Now:
- EditableDataTable is only used for single-statement table-preview tabs
- DataTable with getAllRows() is used for query tabs and multi-statement
  queries, passing all rows and letting TanStack Table handle pagination

* chore: fix dates

* chore: fix blog posts stuff

* style: Reformat SVG path definitions and MDXComponents type for improved readability.

* a11y: add ARIA attributes to virtualized table rows

- Add role="rowgroup" and aria-rowcount to virtualized container
- Add role="row" and aria-rowindex to each virtualized row
- Add role="cell" to each virtualized cell
- Enables screen readers to navigate virtualized tables correctly
2025-12-19 16:46:05 +05:30
Rohith Gilla
6de4377f9b chore: release v0.10.1 2025-12-18 21:22:34 +05:30
Rohith Gilla
47f6e7011e
Merge pull request #79 from Rohithgilla12/fix/ssh-tunnel-forward-host-77
fix: SSH tunnel connection timeout when using jump servers
2025-12-18 21:22:09 +05:30
Rohith Gilla
a44e509f41 fix: use actual database host in SSH tunnel forwardOut
The SSH tunnel was hardcoding '127.0.0.1' as the destination host in
forwardOut instead of using the configured database host. This caused
connection timeouts when using SSH jump servers to connect to remote
databases.

Changes:
- Save original database host/port before modifying config
- Use actual database host in forwardOut call
- Set config.host to '127.0.0.1' so database client connects via tunnel

Closes #77
2025-12-18 21:19:02 +05:30
Rohith Gilla
f2cfd165f9 chore: release v0.10.0 2025-12-18 20:31:32 +05:30
Rohith Gilla
183f0ea686
Merge pull request #75 from Rohithgilla12/claude/setup-blog-posts-sitemap-GqlX8
Claude/setup blog posts sitemap gql x8
2025-12-18 13:29:04 +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
6a9c11d553
Merge pull request #72 from Rohithgilla12/claude/query-scheduling-cron-Yxty6
feat: add dashboard/BI feature with drag-drop widgets
2025-12-18 13:24:14 +05:30