Releases: codeErrorSleep/dbpaw
Releases · codeErrorSleep/dbpaw
Release list
DbPaw v0.5.13
[0.5.13] - 2026-07-15
⚙️ Miscellaneous Tasks
- Release v0.5.13
DbPaw v0.5.12
[0.5.12] - 2026-07-06
⚙️ Miscellaneous Tasks
- Release v0.5.12
DbPaw v0.5.11
[0.5.11] - 2026-06-30
⚙️ Miscellaneous Tasks
- Bump version to 0.5.11
DbPaw v0.5.10
[0.5.10] - 2026-06-29
⚙️ Miscellaneous Tasks
- Bump version to 0.5.10
DbPaw v0.5.9
[0.5.9] - 2026-06-27
🚀 Features
- Implement MongoDB document browser with CRUD operations
- Add dynamic schema selection in SQL editor
- (clickhouse) Add multi-statement query execution support
🐛 Bug Fixes
- Use bun.lock instead of package-lock.json in lint:web script
- Dynamic import mocks to exclude from production bundle
- DB2 list_schemas query, database-aware mock, i18n schema keys, and e2e tests
- Update API unit tests to match invoke() parameter behavior
- Clean up anonymous volumes when removing integration test containers
- Sync mysql integration tests with trait signature changes
- Update mariadb integration tests for optional table totals
- Update mariadb command/stateful tests for AppError and services module
- Use UFCS for RoutineDriver calls in mysql integration test
- (splitter) Track BEGIN...END blocks to avoid splitting stored procedures
- Update integration tests for get_table_data include_total param and Option total
- AI provider bugs and update default models
- Handle mariadb json fields without row projection
- (mysql) Guard bool decode to TINYINT columns only
- Use RoutineDriver UFCS for list_routines/get_routine_ddl in integration tests
🚜 Refactor
- Split driver-registry into metadata, icons, and tree-config modules
- ESLint warnings分层治理
- Extract isTauri/normalizeImportDriver to lightweight platform module
- (api) Remove legacy invoke overload
- (api) Strip explicit generics from all invoke call sites
📚 Documentation
- Add cell editing E2E tests design
- Add invoke type safety rule to AGENTS.md
⚡ Performance
- Optimize React re-renders and add opencode config
🧪 Testing
- Add unit tests for services/api modules
- Add 68 unit tests for connection_service and DriverCapabilities
- Add cell editing E2E tests for datagrid
- Add E2E tests for create database flow
- Add AI chat E2E tests with sidebar toggle
- Add AI chat messaging E2E tests
- Add AI conversation history E2E tests
- Add AI new conversation E2E tests
- Add AI Markdown rendering E2E tests
- Add connection import E2E tests
- (e2e) Add cell editing scenarios for DataGrid
⚙️ Miscellaneous Tasks
- Bump version to 0.5.9
DbPaw v0.5.8
[0.5.8] - 2026-06-24
🐛 Bug Fixes
- Show Connection Name field for file-based drivers (SQLite, DuckDB)
- Wait for keys instead of isLoading in useRedisKeyScan test
🚜 Refactor
- Use tmp_path helper and split import_tests into two files
- Split ai.rs into directory module with focused submodules
- Split import_dialects.rs by database dialect
🧪 Testing
- Add Connection Name visibility tests for all drivers
⚙️ Miscellaneous Tasks
- Bump version to 0.5.8
DbPaw v0.5.7
[0.5.7] - 2026-06-22
⚙️ Miscellaneous Tasks
- Bump version to 0.5.7
DbPaw v0.5.5
Changelog: (2026-06-15)
419 files changed, 50,154 insertions, 74,965 deletions
✨ New Features
Driver Capabilities System
- Added
DriverCapabilitiesbitflags for dynamic feature detection - New capability sub-traits:
ForeignKeyDriver,RoutineDriver,SchemaDriver - Added
get_driver_capabilitiesTauri command and frontend API - New
useDriverCapabilitieshook with module-level cache
Structured Error Handling
- Added
AlreadyExistsandPermissionDeniederror variants toAppError - Added
is_retryable()method for structured error classification AppErrornow crosses IPC boundary directly as structured JSON{code, message, hint, category}
Logging
- Replaced all
println!/eprintln!with structuredtracinglogging
🏗️ Refactoring
Database Driver Modularization
All major database drivers have been split from monolithic files into modular directory structures:
| Driver | Modules |
|---|---|
| ClickHouse | connection.rs, query.rs, metadata.rs, table_data.rs, helpers.rs |
| PostgreSQL | connection.rs, query.rs, metadata.rs, table_data.rs |
| MySQL | connection.rs, query.rs, metadata.rs, table_data.rs |
| SQLite | Modular structure |
| MSSQL | Modular structure |
| DuckDB | Modular structure |
| DB2 | Modular structure |
| Elasticsearch | client.rs, search.rs, index.rs, bulk.rs |
| Cassandra | Migrated to DriverResult<AppError> |
| MongoDB | Migrated to DriverResult<AppError> |
| Oracle | Migrated to DriverResult<AppError> |
Frontend Component Decomposition
- ConnectionDialog: Split into
ConnectionTypeStep,ConnectionSummaryHeader,ConnectionBasicFields,ConnectionNetworkFields,ConnectionSecurityFields,ConnectionDialogFooter - SqlEditor: Extracted
useSqlEditorForm,useSqlEditorApi,useSqlEditorActions,useSqlResultshooks +SqlResultsPanel,SqlToolbarcomponents - RedisBrowserView: Extracted
useRedisSelection,useRedisKeyScan,useRedisDialogs,useRedisBatchOpshooks +KeySearchPanel,KeyListPanel,DetailPanel,BatchOperationsToolbar,RedisBrowserDialogscomponents - RedisZSetViewer: Rewritten with extracted hooks (
useZSetEditing,useZSetRangeQuery,useZSetRankScore,useZSetLexRange,useZSetPop) and components
Error Handling Migration
- Migrated all database drivers from string-tagged errors (
[VALIDATION_ERROR],[ERR-1001]) to structuredAppErrorconstructors - Deprecated
From<String> for AppError - Migrated connection, transfer, metadata, query, storage, MCP modules to
AppError
Command Registry
- Replaced flat
generate_handler!with per-module macros:connection_commands!,query_commands!,metadata_commands!,storage_commands!,redis_commands!,elasticsearch_commands!,mongodb_commands!,system_commands!,mcp_commands!
Service Layer
- Extracted core functions from command/direct pairs to eliminate duplication
- Extracted migration system to
db/migrations.rs - Split
connection.rsintoconnection/sub-modules - Split
api.tsinto domain-specific modules underservices/api/
🐛 Bug Fixes
- Fixed
Cmd+Sshortcut not working on macOS in SQL editor - Fixed modifier-only keydowns incorrectly triggering shortcuts during recording
- Fixed missing
CursorandResultSetMetadatatrait imports for DB2 driver - Fixed Rust compilation errors and cleaned up imports
- Fixed TypeScript type errors in refactored components
- Fixed Elasticsearch compilation errors
- Fixed write lock release before connection cleanup
- Resolved all test failures on main (Rust + frontend + lint)
🧪 Testing
- Added comprehensive behavior tests for
SqlEditor,ConnectionDialog,TabContentRenderer,useTabFactory - Added behavior tests for
useTableClipboard,useTableHotkeys - Added hook and view tests for Redis components
- Added tests for shortcut recorder and match modules
- Migrated integration test error assertions to new error codes
📦 Dependencies
- Added
bitflagsfor driver capability flags
🔧 CI/CD
- Pinned Windows runner to
windows-2022for MSVC compatibility - Added
/std:c++17and/EHscflags for Windows MSVC builds
🌐 i18n
- Replaced hardcoded English strings in 4 components with i18n keys
- Removed unused Japanese locale file
📚 Documentation
- Added design specs and implementation plans for major refactors
- Updated AGENTS.md to reflect
api.tssplit intoapi/directory - Removed AI-generated design docs and unrelated files
DbPaw v0.5.3
[0.5.3] - 2026-06-06
🚀 Features
- Add handleApiError utility for toast error pattern
- Add redis i18n keys to English locale
- Add redis i18n keys to Chinese locale
- I18n RedisBrowserView toast.error calls
- I18n RedisKeyView toast.error calls
- I18n RedisStreamViewer toast.error calls
- I18n RedisGeoViewer toast.error calls
- Add useFormField helper for ConnectionForm fields
- Extract RedisFormSection from ConnectionDialog
- Extract ElasticsearchFormSection from ConnectionDialog
- Extract MongoDbFormSection from ConnectionDialog
- Extract MssqlFormSection from ConnectionDialog
- Add ConnectionTreeContent component
- Add ConnectionTreeDialogs wrapper component
- Add tab-contexts with 5 domain contexts and TabActionsProvider
🐛 Bug Fixes
- Add context menu to row number cells in table view
- Add redis.ts, fix query.ts import, update index.ts router
- Remove unused ImportDriverCapability import from types/sql.ts
- Move SetOptions interface to module scope and export
- Add type guards for discriminated union TabItem fields
- Unmount inactive tab content
- Restore cargo test compatibility
💼 Other
- TabItem discriminated union refactor design
- TabItem discriminated union implementation plan
- TabItem discriminated union refactor into main
🚜 Refactor
- Extract redis mocks to mocks/redis.ts
- Extract query mocks to mocks/query.ts
- Extract metadata mocks to mocks/metadata.ts
- Extract tableData mocks to mocks/tableData.ts
- Extract connections mocks to mocks/connections.ts
- Extract saved queries mocks to mocks/queries.ts
- Extract transfer mocks to mocks/transfer.ts
- Extract elasticsearch mocks to mocks/elasticsearch.ts
- Extract mongodb mocks to mocks/mongodb.ts
- Extract ai mocks to mocks/ai.ts
- Extract system and mcp mocks
- Add mocks router and re-exports in index.ts
- Remove old mocks.ts, update test imports
- Split ConnectionList.tsx into focused sub-components
- Split mocks.ts into domain-specific modules
- Extract RedisStreamViewer dialog components
- Remove types from api.ts, re-export from types/
- Split RedisStreamViewer into hooks + file-per-component
- Extract redis-format.ts from RedisKeyView
- Extract redis-patch.ts from RedisKeyView
- Extract useRedisKey hook from RedisKeyView
- Extract RedisKeyFormHeader from RedisKeyView
- Slim RedisKeyView.tsx to thin shell using hook + form header
- Share sql identifier quoting
- Replace inline driver sections with extracted components
- Apply useFormField to generic fields in ConnectionDialog
- Extract SidebarSearch from ConnectionList
- Extract SidebarHeader component from ConnectionList
- Import ConnectionDialogTestMessage from ConnectionDialog
- Remove unused props from ConnectionTreeContent
- Fix ConnectionTreeContent code quality issues
- Merge SET option state in useRedisKey into single object
- Consolidate SET option props in RedisKeyFormHeader
- Update RedisKeyView to use consolidated SET options
- Use extracted sub-components in ConnectionList
- TabContentRenderer sub-components use context hooks instead of flat props
- (tab) Split TabItem into 12 discriminated union subtypes
- Update TabContentRenderer.tsx renderer signatures to use specific tab subtypes
- (tab) Add subtype imports and type constraint to useTabFactory
- Add type casts in useTabFactory for discriminated union compatibility
- Use EditorTabItem in useQueryEditor.ts
- Add TableTabItem type narrowing in useTableViewer
- Use EditorTabItem in test helper
- Split tab content renderer actions
- Split ConnectionList state domains
- Split driver module responsibilities
- Split transfer services
- Split transfer services
📚 Documentation
- Add api.ts type split design spec
- Add api.ts type split implementation plan
- Add RedisKeyView split spec and plan
- Add ConnectionDialog refactor design spec
- Add ConnectionDialog refactor implementation plan
- Update agent architecture guidance
⚙️ Miscellaneous Tasks
- Remove 15 unused dependencies and 5 unused shadcn/ui components
- Bump version to 0.5.3
DbPaw v0.5.2
[0.5.2] - 2026-06-03
🚀 Features
- Extract useTabManager hook from App.tsx
- Extract useQueryEditor hook from App.tsx (Task 2)
- (hooks) Extract table viewer logic into useTableViewer hook
- Extract useUnsavedChanges hook from App.tsx
- Extract WindowActions component from App.tsx
- Extract TabBar component from App.tsx
- Extract TabContentRenderer component from App.tsx
- Extract AppLayout component from App.tsx
🐛 Bug Fixes
- Table virtual scroll issues - duplicate spacer, draft rows, IIFE pattern
- Use @/ import alias in useTabManager hook
- Use toast instead of alert in useQueryEditor
- Add try/catch in handleCloseFlowSave, remove dead ref
- Tab switching causes data table to disappear
🚜 Refactor
- Extract errorMessage() utility and add React.memo to TreeNode/StreamEntryRow
- 优化后端代码重复 & 连接池改进
- Extract global keyboard shortcuts into useKeyboardShortcuts hook
- Extract UnsavedChangesDialog from App.tsx
- Extract App.tsx into hooks and components, create shared TabItem type
⚙️ Miscellaneous Tasks
- Bump version to 0.5.2