The frontend commits edited cell values as plain strings (and PK locators as numbers/booleans), but tokio-postgres String binds only text-ish types and i64 only int8, so editing integer/boolean/uuid/jsonb/… columns failed with `cannot convert between the Rust type and the Postgres type`.
Adds PgText — a ToSql impl that accepts any Postgres type and writes the value as UTF-8 in text wire format so the server parses it into the column's own type (NULL → SQL NULL). Adds the bytes dependency + unit tests.
The Recent strip was computed from get().connections, which is still empty while loadAll() is in flight on app startup, so cached recent IDs got filtered out and the strip appeared empty/flaky until a remount. loadAll() now refreshes recents after connections populate.
Verification
cargo test (db_viewer): 39 passed, 0 failed
bun test (desktop frontend): 1076 passed, including 2 new recents regression tests
Two backend fixes, combined into one PR.
## 1. PostgreSQL cell-edit serialization (db_viewer.rs)
The frontend commits edited cell values as plain strings (and PK locators as numbers/booleans), but tokio-postgres `String` binds only text-ish types and `i64` only int8, so editing integer/boolean/uuid/jsonb/… columns failed with \`cannot convert between the Rust type and the Postgres type\`.
Adds `PgText` — a `ToSql` impl that accepts any Postgres type and writes the value as UTF-8 in text wire format so the server parses it into the column's own type (NULL → SQL NULL). Adds the `bytes` dependency + unit tests.
## 2. Recent-connections startup race (connectionStore.ts)
The Recent strip was computed from `get().connections`, which is still empty while `loadAll()` is in flight on app startup, so cached recent IDs got filtered out and the strip appeared empty/flaky until a remount. `loadAll()` now refreshes recents after connections populate.
## Verification
- cargo test (db_viewer): 39 passed, 0 failed
- bun test (desktop frontend): 1076 passed, including 2 new recents regression tests
The Recent strip was computed from get().connections which is still empty
while loadAll() is in flight on app startup, so cached recent IDs got
filtered out and the strip could appear empty/flaky until a remount.
loadAll now refreshes recents after connections populate.
The frontend commits edited cell values as plain strings (and PK locators as
numbers/booleans), but tokio-postgres' String binds only text-ish types and
i64 only int8, so editing integer/boolean/uuid/jsonb/… columns failed with
'cannot convert between the Rust type and the Postgres type'.
Introduce PgText — a ToSql impl that accepts any Postgres type and writes the
value as UTF-8 in text wire format so the server parses it into the column's
own type. NULL binds as SQL NULL. Adds the bytes crate and unit tests.
rustc resolves link.exe via PATH for the windows-msvc target, but Git for
Windows ships GNU coreutils' link.exe which shadows MSVC's linker, breaking
every build-script link. Add ilammy/msvc-dev-cmd@v1 before the tauri build so
PATH/LIB/INCLUDE point at the real MSVC toolchain (and it fails fast if MSVC
is missing instead of at link time).
archive.mariadb.org / get.enterprisedb.com downloads are extremely slow from
the self-hosted Windows runner (30-40+ min for the MariaDB zip). Check for a
pre-downloaded copy at C:\ci\cache\ first and copy it, falling back to the
network download only when absent.
msvc-dev-cmd sets the env but rustc still resolved link.exe to Git's GNU
coreutils link (C:\Program Files\Git\usr\bin\link.exe), so build-script
linking failed with 'extra operand'. Run the tauri build in a cmd shell that
sources vcvars64.bat so PATH/LIB/INCLUDE point at the real MSVC toolchain in
the same process.
Windows installs Python as 'python' (python3 is a Store alias), so the upload
step's python3 JSON parsing failed on the Windows runner. Fall back to 'python'
when python3 is absent.
The Windows runner's act_runner service env still lacks python/python3, so the
release-upload step failed to parse JSON. Use grep to pull the release id,
removing the Python dependency from both upload steps.
Sync version in desktop/package.json, Cargo.toml, tauri.conf.json, the Astro
landing page, version/bundle-config/docs-coverage tests, and both README
download tables. Add v0.7.12 changelog entry.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Two backend fixes, combined into one PR.
1. PostgreSQL cell-edit serialization (db_viewer.rs)
The frontend commits edited cell values as plain strings (and PK locators as numbers/booleans), but tokio-postgres
Stringbinds only text-ish types andi64only int8, so editing integer/boolean/uuid/jsonb/… columns failed with `cannot convert between the Rust type and the Postgres type`.Adds
PgText— aToSqlimpl that accepts any Postgres type and writes the value as UTF-8 in text wire format so the server parses it into the column's own type (NULL → SQL NULL). Adds thebytesdependency + unit tests.2. Recent-connections startup race (connectionStore.ts)
The Recent strip was computed from
get().connections, which is still empty whileloadAll()is in flight on app startup, so cached recent IDs got filtered out and the strip appeared empty/flaky until a remount.loadAll()now refreshes recents after connections populate.Verification