Ryan Malloy 9781c9e676 Handle corrupt/empty notebook files, atomic writes
_read_notebook_file returns None on empty or unparseable JSON instead
of crashing with JSONDecodeError (surfaced as 500). save_notebook now
writes to a temp file and atomically renames, preventing empty files
from container restarts mid-write.
2026-03-05 19:33:44 -07:00
..