fix(server): windowed thread snapshots no longer wait on the SQLite writer

getThreadSnapshotWindow ran its reads in a writer transaction, so a held
writer made opening a thread fail with "database is locked". Run the
transaction on the reader with NodeSqliteClient.readOnly, as ShellStream
and ThreadSearch already do. The snapshot only reads, and inside an open
write transaction the reads still use the writer.

Fixes #21840. Implementation from #21869 by ScottN-PV.

Co-Authored-By: ScottN-PV <191782757+ScottN-PV@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
247703a96bJulius Marminge committed on 10/22/2026, 10:16:18 AMparent9f597f2
1 file changedLine totals unavailable