Skip to content

release: prepare v0.3.0 docs updates - #11

Merged
alexnguyen03 merged 189 commits into
mainfrom
dev
Apr 26, 2026
Merged

release: prepare v0.3.0 docs updates#11
alexnguyen03 merged 189 commits into
mainfrom
dev

Conversation

@alexnguyen03

@alexnguyen03 alexnguyen03 commented Apr 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • refresh README to release-ready format
  • add v0.3.0 section in CHANGELOG

Notes

  • release scope documented from v0.2.0-beta to current dev head

Implements Ctrl+Shift+P command palette overlay with:
- Command registry (lib/commands.ts) with 11 commands across 5 categories
- Full keyboard navigation: arrow keys, Enter to execute, Esc to close
- Live fuzzy search by label, category, or keybinding
- Category grouping with kbd badges
- Search icon in Toolbar wired to open palette
- open-workspace-modal custom event bridge for Workspaces command
Introduces ModalBackdrop component as the single source of truth
for modal overlay styling (bg-black/40, z-9999, fade-in animation).
WorkspaceModal and CommandPalette now both delegate to ModalBackdrop.
Adds full keyboard support (Up/Down arrows, Enter, Escape) to both
the connection and database lists in WorkspaceModal. Includes:
- Arrow nav with auto-scrolling (scrollIntoView)
- Visual focus indicators (ring-1)
- Hover sync with keyboard index
- Focused pane tracking between connections and databases
- Auto-reloads TableInfo sub-tabs (Info/Data/ERD) when the active connection or database changes
- Adds standard F5 shortcut specifically for reloading the focused table view without a full app refresh
- Displays F5 key hint on the reload button tooltip
- Exposes F5 inside keyboard shortcuts list (Ctrl+K Ctrl+B)
- Replaces simple text rows with composed list items matching the connection layout
- Adds a generic Database icon from Lucide for left visualization
- Updates sizing, padding, and hover/active states to strictly match the left pane
- Cleans up unused Search/Command Palette trigger and visual dividers from the main Toolbar component
- Copies \main-logo.png\ to \rontend/src/assets/images/\
- Includes the logo at the start of the primary application toolbar for brand visibility
- Replaces the generic \�uild/appicon.png\ with the official \main-logo-with-name.png\
- Reverts the toolbar logo inside \Toolbar.tsx\ back to the icon-only \main-logo.png\ to preserve vertical space
- Removes the legacy UI for manually prompting a script name to save, as all query scripts are now automatically saved under their tab name directly to the SavedScriptsPanel
- Cleans up onSaveScript props from TabBar and QueryGroup
…s globally

This commit creates dedicated constant packages for both frontend (constants.ts) and backend (constants.go) layers. All raw string literals for tab types, event streams, drivers, storage keys, and connection statuses are now synchronized via constants.
Adds AboutModal to display application and developer info, and ChangelogModal for an in-app release notes viewer using react-markdown. Updates Toolbar to open the About modal from the Zentro logo.
Transforms the shortcuts list into a high-density, categorized grid for better visual scanning and space efficiency, following Zentro's premium design guidelines.
Implements a segmented tab control, refined typography, and an enhanced empty state with quick-actions and keyboard shortcut hints for a more pro IDE feel.
Removes container divisions for tabs, switches to Title-case typography, and implements ResizeObserver for an icon-only mode when the sidebar is narrow.
Removes legacy headers and hard dividers in favor of a spacious, integrated layout. Enhances visual hierarchy with Title-case typography, subtle focus states, and an adaptive action-oriented header.
Removes all shadows across WorkspaceModal, Sidebar, and ShortcutsView. Updates design-system skill to formalize super-flat principles as the new project standard.
Adds vertical gap between connection and database items to improve legibility and provide more breathing room in the list view.
Transforms SettingsView into a super-flat interface with Title-case typography and integrated search. Formalizes these patterns in the frontend-design skill documentation.
Updates ShortcutsView to follow the latest design principles: Title-case headers, integrated/flush search bar, increased workspace, and refined typography. Removes all legacy shadow/uppercase styles.
Transforms AboutModal into a spacious, super-flat interface. Removes all legacy shadows, uses extreme rounding (32px), and implements Title-case headers and integrated information cards.
- SchemaInfoView: use result-table-tanstack/rt-th/rt-th-label/rt-sort-icon
  classes to match ResultTable header and layout exactly
- ColumnRow: replace Tailwind ad-hoc backgrounds with rt-row-alt/
  rt-row-selected/rt-row-deleted; cells use rt-cell-content/rt-cell-dirty/
  rt-cell-input; row selection shows bg+gutter only (no per-cell border)
- DataTypeCell: adopt rt-cell-content/rt-cell-dirty for view state;
  edit input uses rt-cell-input class; add spellCheck=false
- ResultTable: minor icon/spacing polish aligned with design system
- components.css: sync result-table token usage
- build: update Windows app icon to zentro_logo.ico
- ColumnRow: replace rt-class system with Tailwind utility classes;
  selection uses bg-accent/10 tint over border-only approach;
  editing inputs use consistent bg-bg-tertiary border-l-accent pattern;
  dirty cells highlighted with text-success; error row uses Tailwind classes
- SchemaInfoView: replace result-table-tanstack with native table-fixed;
  sticky header with backdrop-blur; ArrowUpDown icon for unsorted columns;
  divide-y dividers for row borders
- DataTypeCell: remove isRowSelected prop; view mode uses Tailwind inline
  text-success for dirty state; edit input uses bg-bg-tertiary pattern
- MonacoEditor: revert nav tracking additions (back to clean focus/blur)
- Toolbar/ShortcutsView: revert nav history keybindings; clean whitespace
Synchronizes button styles using TableInfo as reference. Updates Button component with danger flag and consistent hover/border/bg logic. Refactors Toolbar, TableInfo, ResultPanel, and ConnectionForm to use the new standard.
alexnguyen03 and others added 29 commits March 29, 2026 16:36
Release: early-access v0.2.0-beta + project-centric cleanup
…ce (#2)

* feat(query): add write safety guards and prod double confirmation

* feat: add rule-based keybindings and postgres bootstrap

* Refine explorer schema UX and add connection edit/delete actions

* chore(editor): snapshot current result/tableinfo changes before toolbar refactor

* feat(table-info): flatten tabs and unify contextual toolbar layout

* fix(table-info): avoid rendering ResultPanel custom render actions in data toolbar

* fix(result-panel): normalize pending edit state to prevent data-tab crash

* fix(result-panel): keep hook order stable when result is not ready

* refactor(table-info): use 4-2-4 grid toolbar layout and remove tab scrollbar

* feat: revamp write safety settings and env port config

* style: compact table rows and center index columns

* feat: improve result paging and add advanced export options

* fix(table-info): auto-recover table metadata after reload

* refactor(result-table): split table logic into modular hooks

* fix(shortcuts): remove unsafe double cast in key capture
* feat(query): add write safety guards and prod double confirmation

* feat: add rule-based keybindings and postgres bootstrap

* Refine explorer schema UX and add connection edit/delete actions

* chore(editor): snapshot current result/tableinfo changes before toolbar refactor

* feat(table-info): flatten tabs and unify contextual toolbar layout

* fix(table-info): avoid rendering ResultPanel custom render actions in data toolbar

* fix(result-panel): normalize pending edit state to prevent data-tab crash

* fix(result-panel): keep hook order stable when result is not ready

* refactor(table-info): use 4-2-4 grid toolbar layout and remove tab scrollbar

* feat: revamp write safety settings and env port config

* style: compact table rows and center index columns

* feat: improve result paging and add advanced export options

* fix(table-info): auto-recover table metadata after reload

* refactor(result-table): split table logic into modular hooks

* fix(shortcuts): remove unsafe double cast in key capture

* feat: add SQL git tracking timeline with manual and close-flush commits

* fix(frontend): replace prompt with PromptModal for manual git commit

* fix(frontend): remove stale useScriptStore reference in QueryGroup
* feat(frontend): migrate core UI foundation to shadcn/radix

* feat(frontend): phase2 migrate overlay wrapper and query compare select

* chore(frontend): phase3 cleanup modal usage and enforce ui guardrails

* chore(frontend): complete phase3 shadcn cleanup and guardrails

* refactor(frontend): standardize legacy ui to shadcn patterns

* feat(frontend): standardize ui on shadcn primitives

* refactor(frontend): align confirmation tooltip spinner with shadcn patterns

* refactor(frontend): migrate legacy modal overlay toast to shadcn ui

* feat(frontend): enforce strict shadcn alignment and guardrails

* feat(frontend): strict shadcn alignment for target UI surfaces

* feat(app): refine window controls, shortcuts ordering, and update fallback

* refactor sidebar panel architecture and icon tabbar UX

* harmonize primary sidebar filter interactions

* refactor(table-info): unify toolbar and add schema breadcrumb navigation

* feat(table-info): show count badges for unsaved tab changes

* refactor(table-info): use compact switches for pk/null and hide erd badge

* chore: apply latest frontend startup and UI updates

* feat: migrate notifications to sonner and add settings preview

* refactor: standardize ui button interactions with shadcn

* refactor(ui): flat sidebar panels, design token CSS migration, ARIA improvements

- Remove bg-card/separated backgrounds from all sidebar panels
  (ConnectionTree, SavedScriptsPanel, HistoryPanel, GitTimelinePanel,
   SecondarySidebar, PrimaryExplorerPanel, Sidebar) for consistent flat look
- Migrate MonacoEditor table-nav CSS from color-mix() to design tokens
  (--popover, --muted, --border-subtle) for plugin-themable styling
- Complete ARIA listbox pattern with aria-activedescendant, unique option IDs,
  and tabindex on the widget container
- Fix ObjectQuickViewPanel: replace BaseTable with shadcn Table, deduplicate
  empty-state blocks, use nullish coalescing for column keys
- Fix Sidebar tab height mismatch (h-6 → h-8) and restore Toolbar border-bottom
- Add z-sticky semantic token usage in ConnectionTree expanded header

* feat(result-panel): add context menu copy actions and fix dirty-cell bug

- Add Copy Cell Value, Copy with Headers, Copy as JSON to right-click menu
- Fix: double-clicking a cell without editing no longer marks it as dirty
- Fix: editing a cell back to its original value now clears the dirty mark

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* feat: implement 10 workflow improvements from roadmap

- #2 INSERT/UPDATE templates in Ctrl+E context search (action picker)
- #3 Statement-aware multi-result tab labels (SELECT users, UPDATE orders)
- #4 Native DDL: MySQL uses SHOW CREATE TABLE, SQLite uses sqlite_master
- #5 Column visibility toggle in result table toolbar
- #8 ErdView parallel async fetches (Promise.all replaces for...of)
- #12 Auto row count after query completes (no manual click needed)
- #15 Refresh button in Data Sample tab
- #17 Copy as INSERT / Copy as UPDATE context menu actions
- #18 F12 Go To Definition registered in Monaco SQL language
- R2 Fix stale filter bar after re-run via key prop reset

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix: resolve TypeScript errors from workflow improvements commit

- ResultPanel: add missing imports (cn, useConnectionStore), derive
  driver from hook instead of undefined activeProfile variable
- MonacoEditor: unwrap TableNavigationMatch from navigation result
  union type, use ref to hold definition provider for proper cleanup

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix(ui): update ContextSearchDialog

* chore(ai): configure native Claude Code workflow

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix(guardrails): replace native buttons with Button component, fix double cast and comment triggers

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix(a11y): add role=button and keyboard handler to threshold div in SettingsData

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

---------

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
* feat(frontend): migrate core UI foundation to shadcn/radix

* feat(frontend): phase2 migrate overlay wrapper and query compare select

* chore(frontend): phase3 cleanup modal usage and enforce ui guardrails

* chore(frontend): complete phase3 shadcn cleanup and guardrails

* refactor(frontend): standardize legacy ui to shadcn patterns

* feat(frontend): standardize ui on shadcn primitives

* refactor(frontend): align confirmation tooltip spinner with shadcn patterns

* refactor(frontend): migrate legacy modal overlay toast to shadcn ui

* feat(frontend): enforce strict shadcn alignment and guardrails

* feat(frontend): strict shadcn alignment for target UI surfaces

* feat(app): refine window controls, shortcuts ordering, and update fallback

* refactor sidebar panel architecture and icon tabbar UX

* harmonize primary sidebar filter interactions

* refactor(table-info): unify toolbar and add schema breadcrumb navigation

* feat(table-info): show count badges for unsaved tab changes

* refactor(table-info): use compact switches for pk/null and hide erd badge

* chore: apply latest frontend startup and UI updates

* feat: migrate notifications to sonner and add settings preview

* refactor: standardize ui button interactions with shadcn

* refactor(ui): flat sidebar panels, design token CSS migration, ARIA improvements

- Remove bg-card/separated backgrounds from all sidebar panels
  (ConnectionTree, SavedScriptsPanel, HistoryPanel, GitTimelinePanel,
   SecondarySidebar, PrimaryExplorerPanel, Sidebar) for consistent flat look
- Migrate MonacoEditor table-nav CSS from color-mix() to design tokens
  (--popover, --muted, --border-subtle) for plugin-themable styling
- Complete ARIA listbox pattern with aria-activedescendant, unique option IDs,
  and tabindex on the widget container
- Fix ObjectQuickViewPanel: replace BaseTable with shadcn Table, deduplicate
  empty-state blocks, use nullish coalescing for column keys
- Fix Sidebar tab height mismatch (h-6 → h-8) and restore Toolbar border-bottom
- Add z-sticky semantic token usage in ConnectionTree expanded header

* feat(result-panel): add context menu copy actions and fix dirty-cell bug

- Add Copy Cell Value, Copy with Headers, Copy as JSON to right-click menu
- Fix: double-clicking a cell without editing no longer marks it as dirty
- Fix: editing a cell back to its original value now clears the dirty mark

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* feat: implement 10 workflow improvements from roadmap

- #2 INSERT/UPDATE templates in Ctrl+E context search (action picker)
- #3 Statement-aware multi-result tab labels (SELECT users, UPDATE orders)
- #4 Native DDL: MySQL uses SHOW CREATE TABLE, SQLite uses sqlite_master
- #5 Column visibility toggle in result table toolbar
- #8 ErdView parallel async fetches (Promise.all replaces for...of)
- #12 Auto row count after query completes (no manual click needed)
- #15 Refresh button in Data Sample tab
- #17 Copy as INSERT / Copy as UPDATE context menu actions
- #18 F12 Go To Definition registered in Monaco SQL language
- R2 Fix stale filter bar after re-run via key prop reset

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix: resolve TypeScript errors from workflow improvements commit

- ResultPanel: add missing imports (cn, useConnectionStore), derive
  driver from hook instead of undefined activeProfile variable
- MonacoEditor: unwrap TableNavigationMatch from navigation result
  union type, use ref to hold definition provider for proper cleanup

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix(ui): update ContextSearchDialog

* fix(ui): remove editing cell borders for native enterprise look

Remove primary-colored borders/rings from inline table cell inputs across
ResultTable and TableInfo views; use subtle bg tint for editing/dirty states.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix(schema): fix DropIndex signature and identifier quoting

Add tableName param to DropIndex (required by MySQL/SQL Server syntax),
and quote all identifiers in CreateIndex/DropIndex DDL per driver dialect.

* fix(guardrails): replace native controls and fix double-cast violation

---------

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
* feat(frontend): migrate core UI foundation to shadcn/radix

* feat(frontend): phase2 migrate overlay wrapper and query compare select

* chore(frontend): phase3 cleanup modal usage and enforce ui guardrails

* chore(frontend): complete phase3 shadcn cleanup and guardrails

* refactor(frontend): standardize legacy ui to shadcn patterns

* feat(frontend): standardize ui on shadcn primitives

* refactor(frontend): align confirmation tooltip spinner with shadcn patterns

* refactor(frontend): migrate legacy modal overlay toast to shadcn ui

* feat(frontend): enforce strict shadcn alignment and guardrails

* feat(frontend): strict shadcn alignment for target UI surfaces

* feat(app): refine window controls, shortcuts ordering, and update fallback

* refactor sidebar panel architecture and icon tabbar UX

* harmonize primary sidebar filter interactions

* refactor(table-info): unify toolbar and add schema breadcrumb navigation

* feat(table-info): show count badges for unsaved tab changes

* refactor(table-info): use compact switches for pk/null and hide erd badge

* chore: apply latest frontend startup and UI updates

* feat: migrate notifications to sonner and add settings preview

* refactor: standardize ui button interactions with shadcn

* refactor(ui): flat sidebar panels, design token CSS migration, ARIA improvements

- Remove bg-card/separated backgrounds from all sidebar panels
  (ConnectionTree, SavedScriptsPanel, HistoryPanel, GitTimelinePanel,
   SecondarySidebar, PrimaryExplorerPanel, Sidebar) for consistent flat look
- Migrate MonacoEditor table-nav CSS from color-mix() to design tokens
  (--popover, --muted, --border-subtle) for plugin-themable styling
- Complete ARIA listbox pattern with aria-activedescendant, unique option IDs,
  and tabindex on the widget container
- Fix ObjectQuickViewPanel: replace BaseTable with shadcn Table, deduplicate
  empty-state blocks, use nullish coalescing for column keys
- Fix Sidebar tab height mismatch (h-6 → h-8) and restore Toolbar border-bottom
- Add z-sticky semantic token usage in ConnectionTree expanded header

* feat(result-panel): add context menu copy actions and fix dirty-cell bug

- Add Copy Cell Value, Copy with Headers, Copy as JSON to right-click menu
- Fix: double-clicking a cell without editing no longer marks it as dirty
- Fix: editing a cell back to its original value now clears the dirty mark

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* feat: implement 10 workflow improvements from roadmap

- #2 INSERT/UPDATE templates in Ctrl+E context search (action picker)
- #3 Statement-aware multi-result tab labels (SELECT users, UPDATE orders)
- #4 Native DDL: MySQL uses SHOW CREATE TABLE, SQLite uses sqlite_master
- #5 Column visibility toggle in result table toolbar
- #8 ErdView parallel async fetches (Promise.all replaces for...of)
- #12 Auto row count after query completes (no manual click needed)
- #15 Refresh button in Data Sample tab
- #17 Copy as INSERT / Copy as UPDATE context menu actions
- #18 F12 Go To Definition registered in Monaco SQL language
- R2 Fix stale filter bar after re-run via key prop reset

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix: resolve TypeScript errors from workflow improvements commit

- ResultPanel: add missing imports (cn, useConnectionStore), derive
  driver from hook instead of undefined activeProfile variable
- MonacoEditor: unwrap TableNavigationMatch from navigation result
  union type, use ref to hold definition provider for proper cleanup

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix(ui): update ContextSearchDialog

* fix(ui): remove editing cell borders for native enterprise look

Remove primary-colored borders/rings from inline table cell inputs across
ResultTable and TableInfo views; use subtle bg tint for editing/dirty states.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>

* fix(schema): fix DropIndex signature and identifier quoting

Add tableName param to DropIndex (required by MySQL/SQL Server syntax),
and quote all identifiers in CreateIndex/DropIndex DDL per driver dialect.

* fix(guardrails): replace native controls and fix double-cast violation

* feat(source-control): add diff preview and footer commit

* feat(core): streamline source control workflow and auto-commit

Unify source control UX around changes/history and branch spotlight flow.

Add per-project auto_commit_on_exit and shutdown commit behavior for git_repo_path.

Enable double-click open-to-query from changes/history file lists.

* fix(fe): satisfy guardrails by replacing native button controls

---------

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
* feat(table-info): add constraints tab and unify table behaviors

* feat(explorer): add full table context menu with drop/truncate and export flow

* feat(constraints): implement full foreign key CRUD flow

* fix(constraints): break infinite re-render loop in ConstraintsView

loadReferencedColumns had refColumnCache in its dep array, causing a
cascade: cache update → new callback → loadAll recreated → useEffect
retriggers loadAll → infinite loop on tab load.

Fix by reading cache via a ref (refColumnCacheRef) inside the callback
so it no longer needs refColumnCache as a dependency.
* feat(table-info): add constraints tab and unify table behaviors

* feat(explorer): add full table context menu with drop/truncate and export flow

* feat(constraints): implement full foreign key CRUD flow

* fix(constraints): break infinite re-render loop in ConstraintsView

loadReferencedColumns had refColumnCache in its dep array, causing a
cascade: cache update → new callback → loadAll recreated → useEffect
retriggers loadAll → infinite loop on tab load.

Fix by reading cache via a ref (refColumnCacheRef) inside the callback
so it no longer needs refColumnCache as a dependency.

* feat: start UI redesign foundation

* feat(project-hub): inline edit, explorer action, and icon popover picker

* feat(ui): apply RingUI-inspired tokens and primitive styling refresh

* fix(perf): reduce memory usage and fix Monaco lifecycle leaks

- Lazy-mount Monaco tabs — only render after first activation,
  preventing N editor instances from loading upfront (~80-150 MB each)
- Fix wheel zoom handler leak in MonacoEditor: store ref and remove
  listener in onDidDispose instead of leaking anonymous function
- Fix QueryCompareModal crash: dispose DiffEditor on unmount before
  React destroys TextModels, preventing 'TextModel got disposed before
  DiffEditorWidget model got reset' error
- Strip version suffixes from all localStorage keys (editor-session,
  project-store, layout-store, etc.) — keys are now unversioned
- Extend LEGACY_STORAGE_KEYS to evict all old versioned entries on
  next startup (v1–v4 variants across all stores)

* feat(ui): polish sidebar and branch spotlight styling

- BranchSpotlight: wider panel (620px), rounded corners, search bar
  separated with bg-muted header, add empty state message, section
  divider between actions and branch list with branch count badge,
  denser row padding and truncation-safe layout
- ConnectionTree: tighten category button vertical padding py-2 → py-1
- Sidebar: remove explicit bg-transparent from TabsList (inherits correctly)

* feat(ui): normalize Input styling with inputSize and variant props

Add `inputSize` (sm/md/lg/xl) and `variant` (default/ghost) props to
the Input component so callers express intent via tokens rather than
ad-hoc className overrides.

- sm  → h-7 / text-label  (sidebar search bars, inline table cells)
- md  → h-8 / text-small  (default, connection forms)
- lg  → h-9 / text-body   (section headers, export fields)
- xl  → h-10 / text-body  (project hub wizard, card edit forms)
- ghost variant → bg-muted/40 border-input/70 with focus bg-background
  (SettingsView, ShortcutsView, TableInfo filter bars)

Remove hardcoded h-7/h-8/h-9/h-10/h-11 and text-[11px]/text-[12px]/
text-[13px] overrides across 20 files in favor of the new props.
Drop redundant h-7/text-[12px] from rt-cell-input usages in TableInfo
(rt-cell-input already sets height:100% in components.css).

* feat(ui): switch Input radius to rounded-sm, minor class cleanups

- Input base: rounded-[8px] → rounded-sm (uses --radius-scale-sm token)
- ConnectionTree filter: remove redundant rounded-sm override (now inherited)
- ContextSearchDialog context menu: min-w-[160px] → w-40 canonical class

* fix(ui): fix ProjectWizard environment picker layout to single column

Each environment option now occupies its own full row with a horizontal
layout: env badge on the left, name and description in the middle,
and checkmark on the right. Removes the broken 2-column grid that caused
overlapping text between adjacent cards.

* feat(ui): normalize Input styling with inputSize/variant props across all components

Replace ad-hoc h-*, text-[Npx], and px-* overrides on Input with the new
inputSize (sm/md/lg/xl) and variant (default/ghost) props. Also fixes
Button size= props that were accidentally changed by the migration script,
and updates canonical Tailwind class names (pl-5.5, min-w-25).

* feat(ui): replace ProjectWizard multi-step flow with single-screen form

Collapse the 4-step wizard (basics → environment → connection → review)
into one scrollable form: icon popover + name/description inline at top,
env picker as a 5-badge single-row with tooltips, collapsible connection
and storage sections.

* Sync provider filter toolbar with connection/database filter style

* Refine UI consistency across toolbar, connection picker, and shared controls

* Refine env switching UX and enforce bound-env shortcut guard

* feat(ui): replace ConstraintsView monolith with 6 independent Keys accordion sections

Consolidates indexes, unique_keys, and constraints tabs into a single
Keys tab with per-section Save/Discard and confirmation modals showing
operation summaries before execution.

- Extract ColumnPickerCell into shared component
- Add operationsList param to useWriteSafetyGuard.guardOperations
- Add CheckConstraintsView, PrimaryKeyView, UniqueConstraintsView, ForeignKeysView
- Expand KeysView from 3 to 6 accordion sections (SQLite gating for UC/FK)
- Delete ConstraintsView monolith

* Fix FK ref schema/table options visibility in table info view

* refactor table info panels and align shadcn table/accordion behavior

* refactor table info panels to shadcn table primitives

* refactor(table-info): compact key headers, update sort icons, and show edit cell borders

* feat(result-table): move filtering to server and add order-by bar

* feat(result-filter): add order-by chip builder with execute on add/remove

* Fix result filter base query flow and preserve existing WHERE

* Refine result filter/editor flow and add SQL alias utilities

* Optimize DB connection reuse and remove background ping sessions

* feat: migrate SQL tracking to project repo and harden source control

* fix(table-info): stabilize data filter SQL generation and loading UX

* fix(table-data): use canonical base query for result filter flow

* refactor(result-panel): split modules and fix filter sync update loop

* Refine result context actions and harden table hook memory cleanup

* feat: emit async query row count event

* refactor: remove total row count flow and simplify sidebar filters

* fix(result-panel): make column visibility toggle affect table columns

* feat(result-panel): improve columns popover scrolling and header actions

* feat(result-table): improve row state styling and edited cell highlight

* chore(ui): commit current workspace changes

* Refactor project env config flow and polish connection/env UI

* Improve env/connection UX and add selection state in connection tree

* Improve project wizard env binding flow and fix IndexInfoView update loop

* Refine context search input controls and toggle icon behavior

* remove Restart App action from file menu

* add startup readiness gate for persisted app state

* Fix Data Explorer F5 race cancellation and move result loading bar

* Update table info views, toolbar, app startup, and animation styles

* Enforce unique query names and filename-based script IDs

* Refine row detail JSON copy UX and compact JsonViewer gutter

* fix(bookmarks): load global scope and remap on tab rename

* feat(result-tabs): align result subtabs with query tab style

* feat(ui-table): add sticky header option and use in quick view

* feat(about): show real wails runtime/build info in about modal

* refactor settings telemetry controls and remove export bundle flow

* feat(window): use native traffic lights on macOS, hide custom controls

* feat(result-table): row header selection, drag-select, multi-row INSERT, context menu improvements

* refactor(context-menu): flatten WHERE action and remove By Row PK

Remove the "Generate WHERE" submenu entirely — the single remaining
action (By Selected Values IN) is now a flat top-level item labelled
"Generate WHERE (IN)". Also removes the unused By Row PK handler,
canGenerateWhereByPk variable, and buildWhereClauseByPrimaryKeys import.

* feat(zoom): enable Ctrl+=/- zoom shortcuts and redesign status bar indicator

* feat(row-detail): add field filter input with Esc-to-clear

* refactor(ui): unify Button/Input/Select sizing under shared ControlSize contract

- Add ControlSize ('sm'|'md') to contract.ts with CONTROL_SIZE_CLASS map
- Rewrite Input with size prop (default sm), drop inputSize, fix HTML attr conflict via Omit
- Rewrite SelectTrigger with size prop (default sm) from contract
- Align Button CVA sizes: sm=h-7, md=h-9, add icon-xs/icon-sm/icon-md, remove old 'default'
- Fix import casing (Button→button, Input→input) across all consumers
- Migrate all call sites from inputSize/selectSize/hardcoded sizes to unified size prop

* refactor(ui): redesign sidebar tabs and TableInfo tab bar with active bg highlight

* refactor(ui): shrink toolbar height, downsize toolbar icons to icon-sm, fix WindowControls hover bg

* refactor(ui): restyle DatabaseTreePicker connections as borderless session cards

Replace border-based layout with bg-opacity approach: connection cards use
bg-muted/40 (hover /60) or bg-accent/8 when selected, db items use bg-accent/15,
edit/delete actions revealed on hover via opacity transition.

* Refactor project wizard UI and smooth env-config launch

* Fix env binding overwrite in project wizard

* Improve edit wizard state persistence and save actions

* ZEN-15: Integrate all-agent branch into feat/ui-redesign (#9)

* feat(ZEN-9): add barrel exports for component and store folders

(cherry picked from commit 389251cdf25af7554b5cff775c8dde6de69f7eab)
(cherry picked from commit 37812b6e761feea66cc58d7d7bd39ca3dad9dbc0)

* feat(ZEN-10): split MonacoEditor into focused hooks

(cherry picked from commit 924783bad66aa1a1d39ee7fd2e60109c490d7126)
(cherry picked from commit 80e5d827f4d354e0cf5aa8afc7226925b2f1f527)

* feat(ZEN-11): split ResultPanel and ResultFilterBar into composable units

(cherry picked from commit 83c2f116420d3a52919abc90e0140ba135f87349)
(cherry picked from commit 7409fe2bcc9837b58729e0f8d5cb5325d89f4e3f)

* feat(ZEN-12): consolidate editor domain/UI folder boundaries

(cherry picked from commit 823c6d915e6d13a0b435321c379088a22127a742)
(cherry picked from commit d8fb7685e798c6de64f023040874a467c2730e41)

* fix(ZEN-15): resolve frontend guardrail critical violations

* ci(ZEN-15): harden frontend npm install against network flakes

* fix(ZEN-15): restore frontend build stability and module consistency

* fix frontend tests for project wizard toolbar and row detail

* fix guardrail no-double-unknown-cast in toolbar

* refactor(table-info): align table tabs styling with sidebar pattern

* refactor(ui): normalize typography/tokens and redesign environment badges

* Refine toolbar alignment and quick environment row layout

* Refine sidebar typography and table schema breadcrumb styling

* Fix MSSQL metadata queries and lazy-load table keys tab

* Unify table breadcrumb selector with sidebar select pattern

* Unify result limit select UI and refine tab drag styling

* refactor(row-detail): unify PK cell style with fake input and match editor height

* refactor(sidebar-ui): align tree styles and fix result grid scroll

* refactor(ui): unify context menu components and related editor views

* refactor(project-hub): redesign tabs/list UI and move row actions to context menu

* feat(project-hub): add pin interactions and improve context menu row UX

* chore(project-wizard): apply remaining UI consistency updates

* style: update environment badge pills and testing tone

* feat(design-system): implement v2.0.0 token system with user customization

Full design system overhaul: three-tier CSS token system (user-overridable
entry points → semantic → shadcn aliases), density system via data-density
attribute, unified interactive state tokens, user-configurable accent color,
font families, and UI density persisted to backend preferences.

* refactor(toolbar): redesign center pill layout and centralize env brand colors

Toolbar center: project button left, server/db absolutely centered, env badge
right — env bg tint derived from token via getEnvironmentBgClass. Env brand
colors centralized in ENVIRONMENT_BRAND (projects.ts) with CSS token-backed
env-badge-* utility classes; EnvironmentBadge no longer hardcodes hex values.

* Fix state token usage for selected/hover styles

* Refine status bar typography to lighter compact text

* Sync ConnectionTree selection with active table and viewport scroll

* Refine filter/status UI and stabilize tree-editor sync

* Redesign TemplatePopover using result table CSS design language

* Move stdlib runtime calls to helpers.go to satisfy BE guardrails

* Fix FE guardrail violations: replace native controls with UI kit components

* Fix duplicate AddPrimaryKey export in generated Wails JS bindings

* Fix RowDetailTab test to match click-to-edit div/textarea pattern
* feat(search): universal script search via # prefix in ContextSearchDialog

- Add ScriptSearchResults component with background content loading,
  matched-line display (VSCode-style), and highlight helpers
- ContextSearchDialog: typing '#' switches to script search mode —
  kind filter hides, placeholder updates, matched lines shown
- SavedScriptsPanel: background content cache, first-line preview
  with hover popover, content-aware search with matched lines

* feat(search): script search UI polish + jump-to-line + HoverCard

- ScriptSearchResults: extract MatchedLinesDisplay component (reusable),
  each matched line shows 1-based line number and is individually clickable
  → opens script and jumps editor cursor to that exact line; remove font-mono
- ContextSearchDialog: emit JUMP_TO_LINE_ACTION after opening/switching to
  script tab so clicking a matched line lands the cursor on it
- SavedScriptsPanel: extract ScriptListItem with local previewOpen state;
  whole row is HoverCardTrigger so bg-muted persists while card is open;
  matched lines use MatchedLinesDisplay + same jump-to-line behaviour;
  replace custom native-popover with shadcn HoverCard (openDelay/closeDelay)
- Add hover-card.tsx UI component (@radix-ui/react-hover-card)
@alexnguyen03
alexnguyen03 merged commit 31bae6b into main Apr 26, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant