- library.New now creates BOOKS_DIR (MkdirAll) on startup so uploads
don't fail when the directory is missing on a fresh bind mount
- uploadSubmit logs the underlying OS error on save/write failures
- README: document docker-compose deployment, container UID/GID (100/101)
for bind-mounted ./data permissions, and running the admin CLI via
docker compose exec
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>