The result has been sqlflow, which at its core wraps sqlite transctions into Read() and Write() methods that takes care of the transaction life-cycle and avoids the most common issues with using sqlite concurrently (no SQLITE_BUSY errors for you anymore).
It pairs really nicely with https://sqlc.dev so if you use it, the query type it generates is compatible.
It also supports encryption and the multi-tenant pattern, where each user can get their own sqlite database file, both of which I use in http://trackm.net
For encryption I you can use the github.com/jgiannuzzi/go-sqlite3 fork to enable SQLCipher encrypted files.