Publish row ids as strings — a new book 404'd the moment you selected it

FixEmailService
Shipped
August 9, 2026 at 8:25 PM UTC
Author
Kamo
Commit
0e2f66d

CockroachDB unique_rowid() produces 64-bit ids. A real one from contact_books is 1200081912680906758; JavaScript's JSON.parse rounds anything past Number.MAX_SAFE_INTEGER, so the browser held 1200081912680906800 and every request made with it answered "ContactBook not found" for a book that plainly existed. Only newly created books were affected in practice, because those are the ones unique_rowid() numbers. EmailService deliberately has no global ToStringSerializer for Long — EmailMessage.uid is a number the mailbox relies on — so the ids are declared as String per DTO, the way CorrespondentResolver already does. Bulk request bodies take string ids too; a path variable was always safe, since a URL segment is text either way. ContactIdPrecisionTest pins it: the real id serialises as a quoted string, and survives the round trip the browser actually makes.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing