0.15.0 - 2026-10-21
⛰️ Features
- (bridge, audit) Push audit lines to a Feishu / DingTalk / WeCom / Slack bot or any URL with --audit-webhook, signed where the bot checks, never a plain write - (9b06764)
- (bridge, docs) Compress the API's answers per request with zstd or gzip from 1 KiB, leaving the page's prebuilt files as they are - (9fb6f80)
- (bridge, web, gui) Registered accounts with setup token, invitations, account page and users import - (22542a7)
- (bridge, web, gui, connection) A locked account for demonstrations, which keeps its password, its tokens and no rows of its own - (ccb385a)
- (bridge, web, gui, connection) Ask for an account and wait for an administrator's approval (--signup approval), beside the invitations - (9b2d033)
- (bridge, web, gui, connection) ADR 18, the bridge's stores in PostgreSQL or MySQL, import-local and the audit viewer - (c4279e6)
- (bridge, web, gui, db) The page's favorites, history, key notes, scripts and settings are kept on the bridge - (4feaac2)
- (bridge,web,account) Settle a deleted account's own entries, default admin token expiry, refresh page data while open - (b01b479)
- (copy, connection) Check a cross-server key copy first and say what re-creating it by type leaves behind - (1bb0ea0)
- (deps, web, gui, ui, docs) Move to gpui-kit 0.8.0, highlight the page's editors with syntect up to 512 kB, scroll the workspace tab strip sideways, and fit a text-table column to its widest cell on a double-click - (ce98791)
- (gui, docs) Settings picks whether a JSON value, or a collection's JSON element, opens as text or as a tree, and the value diff keeps the layout last used - (56b5bd0)
- (gui, web, connection, core, docs) A troubleshooting report reads the server once and saves it as Markdown or HTML with this session's findings, and the slow log reads CONFIG GET as one command - (0e91143)
- (mcp, monitor, topology, bitmap, core) Slowlog_summary / hotkeys / memory_summary MCP tools, timed MONITOR samples counted by client / command / key prefix, per-master keys and slot-share skew on the Load tab, bit edits behind an Edit bits switch - (412485d)
- (release, updater) Ship GPUI Fast builds for Windows and Linux and keep each install on its own build - (89cd737)
- (value-search, connection) Search one key type and continue a stopped search from its cursors - (a2af7f2)
- (web, bridge) Bring multi-db search, compare, Pub/Sub, keyspace events, MONITOR, recycle bin and metrics history to the browser - (30af915)
- (web, bridge, gui, connection, docs) A page diagnoses a connection through the bridge, exports keys as a JSON or CSV download, opens a value too large to save read-only, and lists who is online on which servers - (61e5179)
- (web, gui, connection) The account page is a GPUI dialog behind a BridgeAccounts seam - (118f312)
- (web, gui, db, connection, bridge, docs) A page downloads every export and picks files to import, decodes Protobuf values with viewers the bridge keeps, and remembers the terminal's history in the browser with credentials blanked - (c952344)
🐛 Bug Fixes
- (bridge) Serialize server-list edits so overlapping changes stop dropping each other's entries - (e95e817)
- (bridge, docs) A schema step cut short is run again at start, released migrations are pinned and kept LF, and the guides say to use :nightly until the next release - (5ac9667)
- (bridge, gui, docs) Who is online is an administrator's to read, like the account list, and no longer every full account's - (95c1b20)
- (bridge, web) The bridge fills in the page's asset map as it serves it, and the git filter goes - (593d6e2)
- (connection, gui) A bridge error reply is an error in the browser, and the empty editor offers New key only where a key can be made - (55f5eca)
- (gui, docs) The audit's new search clears the picked line and its event field shows its placeholder whole; ADR 18 records the bridge's measured size - (f50b223)
- (topology, locales) Localize the Sentinel failover, reset and remove confirm bodies - (f02a4de)
- (value-search, deps, locales) Name the match cap when the match list fills (#230) and bump rustls-webpki to 0.103.16 (#231) - (e8ac49c)
- (web) Every glyph is antialiased grayscale, so Latin words and digits in a Chinese line no longer show colour fringes - (3df2281)
🚜 Refactor
- (bridge) Keep the server list, recycle bin, metrics and audit log behind store traits, and seal the bin's values - (5aa2e20)
- (bridge, docs) Split the bridge's api.rs and accounts.rs into modules by family, moves only, and its main() into start-up functions, and add the phased refactor plan - (3fd44e2)
- (connection) Move TLS dialing out of ssh_tunnel.rs into tls_connection.rs - (70ad069)
- (connection, docs) Split ssh_tunnel.rs, config.rs and manager/client.rs into submodules of whole items, every outside path re-exported, the live suite with SSH run before and after - (0604a68)
- (connection, docs) Split the live tests into tests/live/ modules by feature with the fixtures in main.rs, names and CI filters unchanged, and list the operations without a live test - (cb3cb50)
- (core, db, docs) Remove two helpers nothing called, give KeyMetadata its container serde default, and record the core and db pass - (52facc6)
- (gui, docs) Split the updater into check, manifest, download and install modules with tests for the download's checksum and the mirror fallback first - (c78ad4e)
- (gui, docs) Move the workspace tab strip into root/tabs.rs and the root's constructor into named parts with UI tests for the strip first, and record the panel and confirm checks - (b54fde5)
- (gui, docs) Split the status bar into tools menu, server status, telemetry and editor controls modules with UI tests first, and reduce motion in UI tests so a dialog's button stays where the click was aimed - (2ffdd87)
- (gui, docs) Lift the browser's statement-level target gates into function pairs, named seams and web modules, ask this_build for the Kill and AI buttons, with tests for the moved desktop arms first - (b22963a)
- (gui, docs) Split seven of the longest view functions — key tree row and keyword bar, editor key bar, sidebar list, settings constructor, server form and servers page — into named parts, with UI tests for each first and a lock for the shared server list - (5590760)
- (states, docs) Group ZedisServerState's fields into seven sub-structs holding the logic that touches only them, with tests for their events first, and name the background refreshes once on ServerTask - (e22ca9a)
- (web, docs) Split the bridge transport into one submodule per seam it carries, with tests for the server list's save, the bin and metrics routes and the session, lock and watch routes first - (2d90e1f)
📚 Documentation
- (adr) ADR 17 amended, the account page is drawn by the app - (337dceb)
- (adr) ADR 17, the bridge registers its accounts and keeps its data behind stores - (6ef4ea1)
- (bridge, readme) A PostgreSQL and MySQL storage guide with Docker commands and the schema, linked from the READMEs - (ea6f195)
🧪 Testing
- (connection) Wait out another test's background save before the live BGSAVE check on Valkey - (3b365a2)