π¦ ferox v0.3.0
Released: 2026-09-08
β¨ What's New
π Structured Filter Builder
Browse mode's filter bar was raw-SQL-only. Now there's a column/operator/value picker next to it.
- Pick a column, an operator (
=, !=, >, <, >=, <=, LIKE, ILIKE, IS NULL, IS NOT NULL, IN), and a value - + Add appends a properly quoted
WHEREfragment to the existing filter box β numeric values stay unquoted, everything else is quoted/escaped - The raw filter box is still there for anything the picker doesn't cover; both feed the same
WHEREclause
βοΈ Multi-Row Selection & Bulk Actions
- Shift+Click selects a range, Ctrl+Click toggles individual rows
- Right-click a selection β Copy Selected Rows, Export Selected as CSVβ¦, Export Selected as JSONβ¦, or Delete Selected Rowsβ¦
- Bulk delete shows a confirmation dialog first, then runs one
DELETEbuilt from the table's primary key - Bulk export writes the rows already in memory straight to disk β no re-query
π Duplicate Row
Right-click any row β Duplicate Row runs an INSERT copying every column except the primary key, so serial/identity columns get a fresh value from the database instead of colliding on a unique-constraint violation.
β© CSV Import
Right-click a table β Import CSVβ¦, pick a file. Column names come straight from the CSV's own header row (Postgres skips that line itself via HEADER true) β the file is streamed into the table with COPY ... FROM STDIN in 64KB chunks, so even a large import never sits fully in memory.
π¨ Connection Color Tags
Give any saved connection a color (red/yellow/green/blue) in the connection dialog. It shows up as an accent stripe on the tab bar and in the connection switcher β a quick visual guard against running destructive SQL against the wrong database. Untagged connections still get the old name-based guess (e.g. a group called "Production" turns red).
π Credentials Moved to the OS Keychain
Connection passwords, SSH tunnel passwords, and your AI provider API key no longer sit in config.toml as plain text.
- Stored via Windows Credential Manager / macOS Keychain / Linux Secret Service (the
keyringcrate) - If no keychain backend is available, ferox falls back to plain text automatically β nothing breaks, you just don't get the extra protection
- Migration happens the next time you hit Save on a connection or your AI settings β nothing changes for existing profiles until then
π§Ύ JSON/JSONB Pretty-Print
The "View Full Value" popup now recognizes JSON-shaped cell values, pretty-prints them, and syntax-highlights keys/strings/numbers/literals β with a Pretty / Raw toggle if you want the exact original text.
π Fixes
| # | Description |
|---|---|
| 1 | Settings β NULL cell color picker closed the whole Settings menu the instant you touched it β replaced the popup color wheel with a fixed row of swatch buttons |
| 2 | Cell value popup: the button row could overlap the Close button / character count on long JSON payloads β buttons now wrap, and Close/count moved to their own line |
β‘ Performance
- Bulk row export runs on the DB worker thread with data already in memory β no extra query, and the UI thread never touches the filesystem
- CSV import streams the file in 64KB chunks β memory use doesn't scale with file size
- Binary size grew from ~6.9 MB to ~9.9 MB (release, LTO). Almost all of it is the
keyringcrate's Windows backend, which pulls in a regex engine β a trade-off accepted deliberately for real credential encryption. RAM at idle (~45 MB) and cold start (<200 ms) are unaffected, since keychain I/O only happens on connect/save, never per-frame.
π§ͺ Testing
- 19 new unit tests covering the filter-operator SQL builder, string quoting, the JSON/CSV tokenizers, and connection-color resolution β run on every
cargo test - 2 new
#[ignore]-gated integration tests exercising the riskiest additions β theCOPY FROM STDINprotocol path and the real OS keychain β against a live local Postgres (cargo test -- --ignored)
π¦ Build Info
| Version | 0.3.0 |
| Binary size | ~9.9 MB (release LTO) |
| RAM at idle | ~45 MB |
| Rust edition | 2024 |