Jokul
e63940b548
feat: multi-format viewer (Text/Hex/JSON/Binary/Gzip/Deflate/Brotli)
...
- New format.ts: decodeValue + detectFormat using Node.js zlib
- IPC: redis:decodeValue, redis:detectFormat
- StringEditor: format selector dropdown with auto-detect
- Monaco editor shows decoded value, read-only for compressed formats
- Auto-detect: JSON, Gzip (1f 8b), Deflate (78 xx), non-printable → Hex
- i18n keys for all formats (zh-CN + en)
2026-07-07 21:48:52 +08:00
Jokul
cdadfbe5e4
feat: Stream consumer groups UI
...
- stream.ts: streamGroups, streamConsumers, streamGroupCreate, streamGroupDestroy, streamAck
- IPC: redis:streamGroups, streamConsumers, streamGroupCreate, streamGroupDestroy, streamAck
- Preload bridge + types for all new methods
- StreamEditor.vue: collapsible consumer groups panel
- XINFO GROUPS table with name/consumers/pending/last-delivered-id
- Click group to expand XINFO CONSUMERS
- Create group dialog (name, start ID, MKSTREAM)
- Destroy group with confirm
- i18n keys (zh-CN + en)
- P1 complete!
2026-07-07 21:22:12 +08:00
Jokul
00c11d4dfe
feat: CLI MULTI/EXEC transaction support
...
- CliView: detect MULTI/EXEC/DISCARD commands
- MULTI enters transaction mode (tx> prompt, yellow)
- Commands in tx mode are queued (QUEUED + queue count)
- EXEC executes all queued commands, shows array results
- DISCARD cancels transaction
- WATCH/UNWATCH handled as non-queued tx commands
- i18n keys for tx messages (zh-CN + en)
2026-07-07 21:11:23 +08:00
Jokul
c7e47c4d5b
feat: CLI SUBSCRIBE/MONITOR streaming mode
...
- New pubsub.ts: startSubscribe/stopSubscribe/startMonitor/stopMonitor
- IPC: redis:subscribe, redis:unsubscribe, redis:monitor, redis:monitorStop
- Streaming messages pushed via webContents.send
- Preload: onSubscribeMessage/onMonitorMessage callbacks
- CliView: detect SUBSCRIBE/PSUBSCRIBE/MONITOR, switch to streaming mode
- Stop button with pulsing indicator (green=subscribe, yellow=monitor)
- Real-time message display with timestamps
- Auto-cleanup on unmount
- i18n keys (zh-CN + en)
2026-07-07 21:07:57 +08:00
Jokul
742c62517c
feat: Redis command autocomplete in CLI
...
- New src/data/commands.ts: 139 Redis commands across 11 categories
- CliView.vue: autocomplete dropdown with prefix matching
- Category-colored command names (admin=read=green/write=yellow/etc)
- Up/Down navigate suggestions, Tab/Enter selects, Escape closes
- History navigation preserved when suggestions hidden
- Syntax and description shown for each command
2026-07-07 20:59:59 +08:00
Jokul
05a6f6aa17
feat: Monaco editor for StringEditor
...
- Install monaco-editor + @guolao/vue-monaco-editor
- main.ts: loader.config + MonacoEnvironment worker setup
- StringEditor.vue: replace textarea with Monaco editor
- JSON syntax highlighting, folding, word wrap
- Read-only mode when not editing, auto-detect JSON
- Theme follows app theme (vs-dark/vs)
- Font size follows app settings
2026-07-07 20:37:04 +08:00
Jokul
6a1f94cd48
feat: multi-connection parallel support
...
- connection store: connectedIds array, per-connection health/serverInfo maps
- connect() no longer disconnects existing connections
- New switchTo(id), disconnectById(id), isConnectedById(id) methods
- Per-connection health check timers (Map-based)
- ConnectionCard: switch to connected, connect if not, disconnect if active
- MainArea: per-connection tab state (save/restore on switch)
- Connection switcher dropdown in tab bar showing all open connections
- Clean up tab state when connection disconnects
2026-07-07 20:31:57 +08:00
Jokul
11a73494c0
feat: multi-tab support in MainArea
...
- Refactor MainArea: tabs array + activeTabId (was single activeTab)
- Open/close tabs dynamically, status tab not closable
- Tab opener buttons (keys/cli/slowlog/memory) in top-right
- Right-click context menu: close/closeOthers/closeRight/closeLeft
- Mouse wheel cycling through tabs
- Scrollable tab bar with hidden scrollbar
- i18n keys for tab context menu (zh-CN + en)
2026-07-07 20:26:47 +08:00
Jokul
405dfa77c4
feat: auto-updater integration
...
- Install electron-updater
- New updater.ts: check/download/install with progress events
- IPC: updater:check, updater:download, updater:install, updater:status
- Preload bridge for updater API
- electron-builder publish config (github provider)
- Fix build files path: out -> electron-dist
- i18n keys for updater notifications (zh-CN + en)
2026-07-05 22:13:25 +08:00
Jokul
d131a2732d
feat: Command Log dialog
...
- New commandLogger.ts: in-memory log (max 5000 entries)
- withLog() wrapper in ipc-handlers.ts for all write commands
- CommandLog.vue: table with time/command/duration, write-only filter
- IPC: redis:getCommandLog, redis:clearCommandLog
- Ctrl+G shortcut from Sidebar
- i18n keys (zh-CN + en)
2026-07-05 21:48:33 +08:00
Jokul
15869943e8
feat: Memory Analysis tab
...
- New MemoryAnalysis.vue: scan all keys with MEMORY USAGE
- Pause/resume/stop scanning, min size filter, sort asc/desc
- Added as tab in MainArea with Odometer icon
- i18n keys for all memory analysis labels (zh-CN + en)
2026-07-05 21:23:43 +08:00
Jokul
169017df65
feat: Cluster mode support
...
- NewConnectionDialog: cluster checkbox
- connection.ts: use Redis.Cluster() when cluster is enabled
- i18n keys for cluster (zh-CN + en)
2026-07-05 21:20:42 +08:00
Jokul
e46d6a80be
feat: Sentinel mode support
...
- NewConnectionDialog: sentinel toggle + host/port/masterName/nodePassword form
- connection.ts: use ioredis sentinels config when sentinelEnabled
- Add sentinelEnabled/sentinelHost/sentinelPort/sentinelNodePassword to all types
- i18n keys for all sentinel fields (zh-CN + en)
2026-07-05 16:43:52 +08:00
Jokul
1686af1a79
feat: TLS certificate file support
...
- NewConnectionDialog: TLS cert file selectors (CA/Cert/Key) + rejectUnauthorized checkbox
- connection.ts: read cert files and pass to ioredis tls options
- Add tlsRejectUnauthorized to all ConnectionConfig types
- i18n keys for tlsCaPath/tlsCertPath/tlsKeyPath/tlsRejectUnauthorized
2026-07-05 16:35:38 +08:00
Jokul
bb32d2d647
docs: roadmap and optimization checklist
2026-07-05 16:13:35 +08:00