Releases: NicolasGoeddel/universal-snapshot-explorer
Release list
[2.0.1] Bugfix Release: OpenZFS CLI Snapshot Discovery, Root Dataset Resolution & Configuration Guide
[2.0.1] - 2026-08-29
Bugfix Release: OpenZFS CLI Snapshot Discovery, Root Dataset Resolution & Configuration Guide
π Bug Fixes & Stability
- OpenZFS Provider Initialisation & Snapshot Timestamps:
- Fixed an issue in
RootFolderwhereProviderRegistrywas erroneously queried withprovider_type("cli") instead offilesystem_type("zfs"), which caused auto-discovered ZFS roots to silently fall back toGenericProvider/FilesystemSnapshotProvider. - Ensured
ZfsProvider.create_snapshot_providerproperly forwardsconfig.dataset_nametoZfsCliSnapshotProvider.
- Fixed an issue in
- Root-on-ZFS Path Resolution (
/& Container Mount Prefixes):- Fixed dataset matching in
ZfsClient.find_dataset_by_pathwhen the root filesystem dataset is mounted at/and passed into the container via/host(mount_prefix: "/host").
- Fixed dataset matching in
π Documentation
- Comprehensive Configuration & Architecture Guide:
- Created
docs/configuration-guide.mdwith deep-dives into path resolution formulas, provider use-cases (btrbk, Snapper, OpenZFS), and dynamic snapshot-specific UID/GID mappings.
- Created
[2.0.0] Major Release: Universal Snapshot Engine, Btrfs & Snapper Support, Sub-Dataset Boundaries & Strict Type Safety
[2.0.0] - 2026-08-28
Major Release: Universal Snapshot Engine, Btrfs & Snapper Support, Sub-Dataset Boundaries & Strict Type Safety
Version 2.0.0 marks the evolution of ZFS Snapshot Explorer into the Universal Snapshot Explorer (USE). This release introduces a modular, pluggable multi-filesystem engine capable of browsing OpenZFS, Btrfs (including Snapper layouts), and POSIX snapshot directories with full type safety, comprehensive integration testing, and automatic mountpoint boundary discovery.
π Highlights & New Features
-
ποΈ Universal Multi-Filesystem Engine:
- Introduced the
FilesystemProviderinterface andProviderRegistryallowing modular support for any snapshot-capable filesystem. - Added Btrfs & Snapper Support (
BtrfsProvider):- Automatically discovers active Btrfs subvolumes and
.snapshotshierarchies. - Parses Snapper XML metadata (
info.xml) to extract exact snapshot descriptions, user context, and timestamps. - Dynamically resolves snapshot physical paths (
.snapshots/<id>/snapshot).
- Automatically discovers active Btrfs subvolumes and
- Added OpenZFS Provider (
ZfsProvider):- Native ZFS CLI integration via
zfs list -t snapshotfor Unix epoch timestamps and dataset autodiscovery. - Zero-dependency filesystem fallback mode for unprivileged containers.
- Native ZFS CLI integration via
- Added Generic Provider (
GenericProvider):- Fallback provider supporting NFS, CIFS/SMB, and standard POSIX mounts.
- Introduced the
-
π Smarter Mount & Boundary Detection:
- Integrated
/proc/mountsparsing (MountsManager,MountInfo) to identify nested filesystem boundaries and network mounts. - Per-Dataset Snapshot Timelines: Directories that represent independent datasets or mount boundaries (e.g.
/rootor/data/backups) now render their own dedicated snapshot timeline bars in folder rows and breadcrumbs, rather than incorrectly inheriting the parent dataset's timeline.
- Integrated
-
π Dynamic Relative UID/GID Mapping:
- Relative
user_mapandgroup_mappaths (e.g.etc/passwd) are now dynamically resolved from the currently active snapshot and cached per snapshot, accurately reflecting historical users and groups.
- Relative
π οΈ Architecture & Under the Hood
- Python 3.14 Future Annotations & Protocol Modernization:
- Enforced
from __future__ import annotationsacross all 22 source modules. - Completely eliminated dynamic
getattr(...)calls in favor of typedRootFolderProtocolproperties and methods.
- Enforced
- Strict Type Checking with
basedpyright:- Entire codebase runs at
0 errors, 0 warnings, 0 notesunder strictbasedpyrightanalysis.
- Entire codebase runs at
- FastAPI Integration Test Suite:
- 38 comprehensive unit & integration tests covering routing, error handling, ZFS/Btrfs parsing, mount discovery, permissions, and streaming.
- Reached 74% total test code coverage.
- GitHub Actions CI/CD Pipeline:
- Added
.github/workflows/ci.ymlrunningruff,basedpyright, andcoveragechecks on Python 3.14.
- Added
β οΈ Breaking Changes & Migration Guide
- Package & CLI Rename:
- Python package renamed from
goeddel.zfs_snapshot_explorertogoeddel.use. - Executable command renamed from
zfssetouse(orsnapshot-explorer). - To run locally:
uv run use --config-file config.yaml.
- Python package renamed from
- Docker Image Name:
- Published to
ghcr.io/nicolasgoeddel/universal-snapshot-explorer:latest.
- Published to
- Configuration Enhancements:
config.yamlnow supportsbtrfs:global auto-discovery blocks alongsidezfs:.- Manual roots support explicit
filesystem_type: zfs | btrfs | generic.
Documentation & Fixes
[1.0.1] - 2026-08-16
π Documentation & Fixes
- Integrated high-resolution screenshots for Roots Dashboard, Explorer View, and File Details into the README documentation.
- Resolved responsive layout scaling on mobile emulation and fixed MIME type resolution in deep file details view.
Initial Release: ZFS Snapshot Explorer
[1.0.0] - 2026-08-16
Initial Release: ZFS Snapshot Explorer
The initial stable release of ZFS Snapshot Explorer, featuring multi-snapshot timeline visualization and self-service file recovery for OpenZFS systems.
β¨ Initial Features
- Multi-Snapshot Timeline Visualization: Color-coded SVG bars displaying file creation, modification, deletion, and static states across snapshots.
- β‘ Flicker-Free Snapshot Navigation & UI Performance:
- Switching snapshots performs targeted in-place DOM updates without recalculating or redrawing SVG timeline bars.
- GPU-accelerated flat vector graphics and
IntersectionObserverlazy rendering for smooth 60 FPS scrolling in large directories.
- β¨οΈ Full Keyboard Navigation & Quick Search:
- Live typeahead search HUD: jump instantly to matching files and folders by typing starting characters (A-Z, 0-9).
- Comprehensive shortcuts: row navigation (β/β), expanding/collapsing folders (β/β), opening details (i), address bar focus (Ctrl+L), and help cheat sheet (h / ?).
- π Internationalization (i18n):
- Full native bilingual support for English (
en) and German (de) with persistent language selection.
- Full native bilingual support for English (
- π‘οΈ Security & Error Handling:
- Strict path traversal prevention across hierarchical dataset routes.
- Redesigned modern 404 & error page with nearest existing parent navigation and snapshot switcher.
- ZFS CLI Metadata Provider: Extracting exact snapshot creation epoch timestamps via
zfs list -t snapshot. - Filesystem Fallback Provider: Fallback
.zfs/snapshotdirectory scanner with customizable regex timestamp patterns (auto-%Y-%m-%d-%H%M%S). - On-the-Fly Streaming ZIP Downloads: Stream multiple selected files or folders as a
.ziparchive without disk spooling. - Audit Filters: Quick-toggle filters for "Changed files only", "Missing files", and "Hidden dotfiles".
- UID/GID Mapping: Host
/etc/passwdand/etc/groupmapping for file ownership resolution. - Theme Support: Dark and light mode themes with
prefers-color-schemeauto-detection. - Docker Deployment: Container images for Docker Compose and TrueNAS Scale with
/dev/zfspassthrough.