# Changelog ## v0.0.1 2026-07-21 — initial development release. ### Added - Manual snapshot commit (notebook toolbar button / command palette `snapshot:commit`) with name + description dialog - Left sidebar timeline (`SnapshotPanel`) showing all snapshots for the current notebook - Cell-level diff (cell-id matching first, LCS fallback; jsdiff for line diff) - One-click restore via `model.fromJSON()` + `context.save()` (no page refresh) - Skip-on-duplicate: commits with the same content hash as the most recent version raise a warning instead of saving - Storage adapter layer with Local (atomic tmp+rename) and S3 (boto3 via optional `[s3]` extra) - `S3ConnectionError` with friendly diagnostic at startup (classifies endpoint unreachable / credentials missing / permission denied / create failed) - Snapshot files embed an envelope (id, timestamp, name, description, hash, size, notebook) so the manifest is fully rebuildable - traitlets config: `storage_type`, `local_root`, `s3_*` (with `S3_*` env-var fallbacks for the credentials) - Manual refresh button in the sidebar (workaround for occasional S3 list lag behind the commit) - Three REST endpoints under `/snapshot/notebook-version/`: `commit` / `list` / `content` - `DEVELOPER.md` covering architecture, build, debug, and packaging ### Changed - Renamed `minio` storage to `s3` (boto3 is the generic S3 SDK; the same config covers AWS S3 and MinIO) - The "save snapshot" toolbar button now uses `panel.toolbar.addItem` (was previously routed through `docRegistry.addWidgetExtension`, which created a new main-area tab instead of a toolbar button) ### Fixed - `Notification.warning` for skipped commits now uses `autoClose: false` and includes a `console.log` diagnostic plus a fallback warning for unexpected response shapes