* fix(app): Survive panics in background work and log them
A panic in background work (a spell check, an LSP handler) aborted the whole
app and left nothing behind: the message went to stderr, which a launched app
doesn't keep, and the stripped binary gave crash reports no function names.
- Release builds unwind, so a panic fails one task or command instead of
quitting the IDE. Commands already turn a panicked blocking task into an
error, and the existing catch_unwind around JSON-RPC notification handlers
now takes effect.
- A panic hook appends the thread, location, message and backtrace to the
log file synchronously, before the non-blocking writer could lose them.
- Release builds keep the symbol table (strip = "debuginfo"), so crash
reports and logged backtraces name functions.
* test(app): Match the panic location with file!() so the test passes on Windows