Opening a book card swallowed failures: a corrupt or unreadable file
failed silently and normalizeBook could throw on a missing chapters
array. Surface load errors as a toast, throw a clear message on
unparseable JSON, and make normalizeBook tolerant of missing chapters,
metadata and settings.
Claude-Session: https://claude.ai/code/session_01RzTWrLiy4zGuw2hZSQGamk
A freshly created book lived only in memory until the first edit, so
quitting beforehand lost it and it never appeared in the library. Save
it to disk on creation via a shared createAndOpenBook used by both the
Library card and the New Book menu action.
Claude-Session: https://claude.ai/code/session_01RzTWrLiy4zGuw2hZSQGamk