Redis write commands (SET/DEL/...) ran from the query editor or the
key-browser terminal did not update the dbN (count) labels in the left
tree until a manual refresh. Add refreshRedisDbKeyCounts(), which re-fetches
authoritative per-db counts via INFO keyspace and patches the labels in place
without rebuilding the tree (preserving expanded key nodes), then trigger it
fire-and-forget after any mutating command in both execution paths.
The Redis key-name completion cache was only cleared on connection
lifecycle events, so SET/DEL/EXPIRE/... left autocomplete showing
stale keys. Drop the cache for the db each write command ran on:
- add isRedisMutatingCommand() based on the command-table safety field
(confirm = write; destructive blocked cmds minus read-only/admin ones)
- invalidate after each mutating command in queryStore batch execution
and in RedisKeyBrowser.runRedisCommand
* feat: highlight selected SQL matches
* fix(core): detect column extra changes (auto_increment, on_update) in table structure SQL generation
- Add has_column_extra_change check to build_column_sql skip condition
- Add is_column_extra_empty to handle None/Some(false)/empty ColumnExtra
- Fix false positives when extra is parsed but no effective change
* feat(generate): fix date range persistence, add i18n for data generation
* fix:Remove invalid references
* fix(generate): ensure config save/load covers all generator params
- Remove auto-reset watch in GeneratorParamsPanel that cleared params
when loading a profile with different generatorKey
- Extend defaultGeneratorParams() to provide explicit defaults for all
35+ generators (full_name, phone, email, barcode, url, file_path,
foreign_key, image, regex, product_name, etc.) so profiles persist
and restore correctly through JSON serialize/deserialize round-trip
---------
Co-authored-by: t8y2 <1156263951@qq.com>
The result used filter:false + validFor, which CodeMirror treats as
mutually exclusive — validFor is ignored, so the list froze and the
selection did not move while typing. Build the result with the default
built-in filter so typing narrows the list and moves the selection.