Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
305 changes: 305 additions & 0 deletions RELEASE_TRACKER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,305 @@
# Dora v1.0 Release Tracker

> **Current Version**: 0.0.92
> **Target Release**: 1.0.0
> **Branch**: `feat/delete-confirmation-and-ui-alignment`

---

## Status Overview

| Phase | Status | Progress |
|-------|--------|----------|
| Core Features | Complete | 100% |
| UX Polish | In Progress | 85% |
| Error Handling | Complete | 100% |
| Empty States | Complete | 100% |
| Form Validation | Not Started | 0% |
| Testing | Partial | 20% |

---

## Session Progress (2025-02-02)

### Completed This Session

**Error Handling & UX**
- [x] Created `ErrorBoundary` class component (`shared/ui/error-boundary.tsx`)
- [x] Created `ErrorFallback` with smart error mapping (`shared/ui/error-fallback.tsx`)
- [x] Created `mapConnectionError` utility (`shared/utils/error-messages.ts`)
- [x] Wrapped DatabaseStudio, SqlConsole, DockerManager with ErrorBoundary
- [x] Added friendly error messages to all connection operations
- [x] Added EmptyState for "no connections" in main view

**Non-Functional UI Fixes**
- [x] Removed dead `handleToolbarAction` code from database-sidebar.tsx
- [x] Disabled SSH Tunnel UI with "Soon" badge (was showing UI but hardcoded to null)
- [x] Updated Dora AI view to use NotImplemented component with proper description
- [x] Schema Visualizer correctly shows "(Coming Soon)" in tooltip

**Native Dialog Replacement**
- [x] Replaced `alert()` with toast notifications in seed-view.tsx
- [x] Replaced `confirm()` with AlertDialog in database-sidebar.tsx (bulk drop/truncate)
- [x] Fixed stray "3" text in studio-toolbar.tsx

**Cleanup**
- [x] Removed AUDIT_REPORT.html, AUDIT_TASKS.md, recap.md
- [x] Removed unused imports (Wand2, ToolbarAction, SshTunnelConfig)
- [x] Removed debug console.log statements from:
- disabled-feature.tsx
- database-studio.tsx (loadTableData, row actions)
- sql-console/api.ts (query execution logs)

### New Files Created
```
apps/desktop/src/shared/ui/error-boundary.tsx
apps/desktop/src/shared/ui/error-fallback.tsx
apps/desktop/src/shared/utils/error-messages.ts
```
Comment on lines +54 to +58
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add language identifiers to fenced code blocks (MD040).
This resolves markdownlint warnings and improves syntax highlighting.

✅ Suggested change
-```
+```text
 apps/desktop/src/shared/ui/error-boundary.tsx
 apps/desktop/src/shared/ui/error-fallback.tsx
 apps/desktop/src/shared/utils/error-messages.ts
-```
+```

-```
+```text
 apps/desktop/src/pages/Index.tsx
   - Added ErrorBoundary wrapping
   - Added EmptyState for no connections
@@
 apps/desktop/src/features/connections/components/connection-dialog/connection-form.tsx
   - Disabled SSH tunnel checkbox with "Soon" badge and tooltip
   - Removed unused SshTunnelConfigForm import
-```
+```

-```
+```text
 apps/desktop/
 ├── src/
 │   ├── features/
@@
 │       └── Index.tsx           # Main app shell
 ├── src-tauri/
 │   └── src/
 │       ├── database/           # DB operations
 │       └── commands/           # Tauri commands
-```
+```

Also applies to: 61-95, 277-301

🧰 Tools
🪛 markdownlint-cli2 (0.20.0)

[warning] 54-54: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In `@RELEASE_TRACKER.md` around lines 54 - 58, The Markdown fenced code blocks in
RELEASE_TRACKER.md lack language identifiers which triggers MD040; update each
triple-backtick block that lists file paths or ASCII trees (the blocks around
the lists like the ones containing
"apps/desktop/src/shared/ui/error-boundary.tsx" and the ASCII tree under
"apps/desktop/") to use a language tag (use "text") by changing ``` to ```text
for all occurrences (also apply the same fix to the other ranges noted around
lines 61-95 and 277-301).


### Files Modified
```
apps/desktop/src/pages/Index.tsx
- Added ErrorBoundary wrapping
- Added EmptyState for no connections
- Updated to use NotImplemented for Dora AI
- Added mapConnectionError for all connection errors

apps/desktop/src/features/sidebar/database-sidebar.tsx
- Removed dead handleToolbarAction function
- Removed unused ToolbarAction import
- Replaced confirm() with AlertDialog for bulk drop/truncate

apps/desktop/src/features/docker-manager/components/seed-view.tsx
- Replaced alert() with toast notifications

apps/desktop/src/features/database-studio/components/studio-toolbar.tsx
- Fixed stray "3" text

apps/desktop/src/features/database-studio/database-studio.tsx
- Removed debug console.log statements

apps/desktop/src/features/sql-console/api.ts
- Removed debug console.log statements

apps/desktop/src/shared/ui/disabled-feature.tsx
- Removed debug console.log statement

apps/desktop/src/features/sidebar/components/bottom-toolbar.tsx
- Made onAction prop optional

apps/desktop/src/features/connections/components/connection-dialog/connection-form.tsx
- Disabled SSH tunnel checkbox with "Soon" badge and tooltip
- Removed unused SshTunnelConfigForm import
```

---

## What's Implemented

### Database Studio (Core Feature)
- [x] Table browser with pagination
- [x] CRUD operations (create, read, update, delete rows)
- [x] Column management (add/drop columns)
- [x] Row selection (single + bulk)
- [x] Delete confirmation dialogs (respects settings)
- [x] Bulk edit dialog
- [x] Set NULL dialog
- [x] Drop table dialog
- [x] CSV export (selected rows)
- [x] CSV export (all rows)
- [x] Data seeder dialog
- [x] Sort and filter support
- [x] Primary key detection
- [x] Soft delete backend support (LibSQL)

### SQL Console
- [x] Monaco editor with syntax highlighting
- [x] Query execution
- [x] Results grid with column definitions
- [x] Query history panel + zustand store
- [x] Keyboard shortcuts (Cmd+Enter to run)
- [x] Snippets sidebar
- [x] Cheatsheet panel
- [x] Toggle panels (left sidebar, history, filter)

### Connections
- [x] Add/edit/delete connections
- [x] Connection testing
- [x] Multiple database types (LibSQL, SQLite, PostgreSQL, MySQL)
- [x] Connection list in sidebar
- [x] Friendly error messages for connection failures
- [ ] SSH tunnel UI (fields exist, not wired)

### Docker Manager
- [x] Container list view
- [x] Container logs
- [x] Start/stop containers
- [x] Export docker-compose

### Error Handling
- [x] ErrorBoundary wraps all major features
- [x] ErrorFallback with smart error categorization
- [x] Connection errors → friendly messages
- [x] Network errors → friendly messages
- [x] Permission errors → friendly messages
- [x] Timeout errors → friendly messages
- [x] Technical details expandable for debugging

### Empty States
- [x] No connections → shows onboarding CTA
- [x] No database connected → shows add connection button
- [x] No tables → shows explanation
- [x] Search returns nothing → shows feedback

### UI Components (Shared)
- [x] AlertDialog (shadcn)
- [x] All core shadcn components
- [x] EmptyState component
- [x] ErrorState component
- [x] ErrorBoundary component
- [x] ErrorFallback component
- [x] Skeleton component
- [x] DisabledFeature component
- [x] NotImplemented component

### Backend (Rust/Tauri)
- [x] LibSQL connection handling
- [x] SQLite connection handling
- [x] Query execution with timing
- [x] Table schema introspection
- [x] Row mutations (insert, update, delete)
- [x] Soft delete support
- [x] Truncate table support
- [x] Script/snippet storage
- [x] Settings persistence
- [x] Command shortcuts system

---

## What's Missing for v1.0

### Phase 1: Form Validation (HIGH)
Prevent invalid data submission.

- [ ] Install zod + @hookform/resolvers
- [ ] Add record dialog validation
- [ ] Edit cell validation
- [ ] Connection form validation
- [ ] Type-specific validators (int, date, JSON, etc.)

### Phase 2: Polish (MEDIUM)
- [ ] Consistent keyboard navigation
- [ ] ARIA labels for accessibility
- [ ] SSH tunnel actually working

### Phase 3: Testing (MEDIUM)
- [ ] Fix existing test failures
- [ ] Add integration tests for critical paths
- [ ] Connection add/edit/delete tests
- [ ] Query execution tests

---

## Uncommitted Changes

### Backend (Rust)
- `commands.rs` - new commands
- `schema.rs` - schema updates
- `maintenance.rs` - soft delete + truncate
- `mutation.rs` - mutation updates

### Frontend
- `Index.tsx` - ErrorBoundary wrapping, empty states, error mapping
- `database-studio.tsx` - delete confirmation, CSV export
- `sql-console.tsx` - query history integration
- `console-toolbar.tsx` - history toggle
- `data-grid.tsx` - grid improvements
- `studio-toolbar.tsx` - toolbar updates

### New Files (Untracked)
- `error-boundary.tsx` - React error boundary
- `error-fallback.tsx` - Friendly error UI
- `error-messages.ts` - Error mapping utility
- `query-history-panel.tsx` - history UI
- `query-history-store.tsx` - zustand store
- `empty-state.tsx` - generic empty state
- `error-state.tsx` - basic error display
- `skeleton.tsx` - loading skeletons
- `disabled-feature.tsx` - feature flags
- `not-implemented.tsx` - placeholder

---

## Release Checklist

### Before Release
- [x] Error boundaries implemented
- [x] Error messages are user-friendly
- [x] Empty states provide guidance
- [ ] Form validation prevents bad data
- [ ] Tests passing
- [ ] No TypeScript errors
- [ ] Manual QA pass
- [ ] Update CHANGELOG.md
- [ ] Update version to 1.0.0

### Release Process
1. Commit all pending changes
2. Merge feature branch to master
3. Tag release v1.0.0
4. Build binaries (macOS, Windows, Linux)
5. Create GitHub release
6. Update documentation

---

## Commands

```bash
# Development
bun run desktop:dev

# Tests
bun run test

# Build
bun run build

# Desktop build
bun run desktop:build
```

---

## File Structure Reference

```
apps/desktop/
├── src/
│ ├── features/
│ │ ├── database-studio/ # Main data grid feature
│ │ ├── sql-console/ # Query editor
│ │ ├── connections/ # Connection management
│ │ ├── docker-manager/ # Docker integration
│ │ └── settings/ # App settings
│ ├── shared/
│ │ ├── ui/ # Reusable components
│ │ │ ├── error-boundary.tsx
│ │ │ ├── error-fallback.tsx
│ │ │ ├── empty-state.tsx
│ │ │ └── ...
│ │ └── utils/
│ │ ├── error-messages.ts
│ │ └── ...
│ └── pages/
│ └── Index.tsx # Main app shell
├── src-tauri/
│ └── src/
│ ├── database/ # DB operations
│ └── commands/ # Tauri commands
```

---

*Last updated: 2025-02-02*
Loading
Loading