Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, this project adheres to Semantic Versioning, commits follow Conventional Commits, and this changelog is generated by Structured Changelog.
Unreleased¶
v0.3.0 - 2026-04-25¶
Highlights¶
- Organization change: module renamed from github.com/grokify/omnistorage to github.com/plexusone/omnistorage-core with reorganized package structure
Breaking¶
- Module renamed from
github.com/grokify/omnistoragetogithub.com/plexusone/omnistorage-core(85b2b62) - Package structure reorganized:
backend/→object/backend/,compress/→object/compress/,format/→object/format/,sync/→object/sync/(85b2b62) - S3 backend removed from core; now available in separate
plexusone/omni-awspackage (85b2b62) - AWS SDK dependencies removed to keep core thin and provider-agnostic (
85b2b62)
Added¶
- New
kvs/subsystem for key-value storage withStore,ListableStore, andDocumentStoreinterfaces (85b2b62) - In-memory KVS backend (
kvs/backend/memory) for ephemeral storage (85b2b62) - SQLite KVS backend (
kvs/backend/sqlite) for persistent key-value storage usingmodernc.org/sqlite(85b2b62)
Changed¶
- MkDocs theme updated to PlexusOne design system with dark mode default (
2a499af) - Site URL updated to
plexusone.github.io/omnistorage-core(2a499af)
Dependencies¶
- Add
modernc.org/sqlitev1.49.1 for SQLite KVS backend (85b2b62) - Remove AWS SDK v2 dependencies (moved to omni-aws) (
85b2b62) - Bump
github.com/grokify/mogofrom 0.74.0 to 0.74.2 (07a9cf5) - Bump
golang.org/x/cryptofrom 0.49.0 to 0.50.0 (80c7c47) - Bump
github.com/klauspost/compressfrom 1.18.4 to 1.18.5 (05a4c52)
Documentation¶
- All documentation updated for new module name and package paths (
a0114c1) - S3 backend documentation updated to reference
plexusone/omni-awspackage (a0114c1) - README badges and links updated for new organization (
3cf603d)
v0.2.0 - 2026-01-17¶
Highlights¶
- Security fix for SFTP host key verification, cross-platform timestamp improvements, and dependency updates
Security¶
- SFTP backend now verifies host keys using
~/.ssh/known_hostsinstead ofInsecureIgnoreHostKey()to prevent MITM attacks (8bf114c)
Changed¶
- SFTP backend requires server host key in
~/.ssh/known_hostsfile for connections (8bf114c) - Use
oscompat/tsyncfor cross-platform timestamp comparison insync.NeedsUpdate()(75bb613)
Dependencies¶
- Add
github.com/grokify/oscompatv0.1.0 dependency (75bb613) - Bump
github.com/klauspost/compressfrom 1.18.2 to 1.18.3 (1c2da6e) - Bump
golang.org/x/cryptofrom 0.46.0 to 0.47.0 (bcc14ea) - Bump
github.com/grokify/mogofrom 0.72.5 to 0.72.6 (bd348b1)
Documentation¶
v0.1.0 - 2026-01-10¶
Highlights¶
- Initial release with unified storage abstraction layer for Go
Added¶
- Core
Backendinterface withNewWriter,NewReader,Exists,Delete,List,Closemethods (0ae32d4) RecordWriterandRecordReaderinterfaces for streaming record-oriented data (0ae32d4)ExtendedBackendinterface withStat,Mkdir,Rmdir,Copy,Move, andFeaturesmethods (0ae32d4)ObjectInfointerface for file metadata (Size, ModTime, Hash, MimeType) (0ae32d4)- Hash support for MD5, SHA1, SHA256, CRC32, and custom hash types (
0ae32d4) - Features struct for backend capability discovery (
0ae32d4) - Backend registry with
Register(),Open(), andBackends()functions (0ae32d4) - File backend (
backend/file) for local filesystem storage (0e30186) - Memory backend (
backend/memory) for in-memory storage and testing (0e30186) - S3 backend (
backend/s3) supporting AWS S3, Cloudflare R2, MinIO, Wasabi, and other S3-compatible services (5d3aa2f) - SFTP backend (
backend/sftp) for SSH file transfer with password and key authentication (a17e985) - Channel backend (
backend/channel) for Go channel-based inter-goroutine communication (41109e3) - Multi-writer (
multi/writer) for fan-out to multiple backends (WriteAll, WriteBestEffort, WriteQuorum modes) (18e84fd) - NDJSON format (
format/ndjson) for newline-delimited JSON record framing (9ec3bd3) - Gzip compression (
compress/gzip) wrapper (60a6395) - Zstandard compression (
compress/zstd) wrapper (60a6395) - Sync package with rclone-inspired file synchronization (
a66ded4) sync.Sync()for one-way sync with optional delete (a66ded4)sync.Copy()for copying files without deleting extras (a66ded4)sync.CopyFile(),sync.CopyBetweenPaths(),sync.CopyToPath(),sync.CopyFromPath()convenience functions (a66ded4)sync.TreeCopy()for preserving full directory structure (a66ded4)sync.Check()for comparing files between backends (a66ded4)sync.Verify(),sync.VerifyFile(),sync.VerifyChecksum()for verification (a66ded4)sync.VerifyWithDetails()andsync.VerifyAndReport()for detailed verification results (a66ded4)sync.VerifyIntegrity()andsync.VerifyAllIntegrity()for file integrity checks (a66ded4)sync.Bisync()for bidirectional sync with conflict resolution (NewerWins, LargerWins, KeepBoth, etc.) (a66ded4)- Filter system (
sync/filter) with include/exclude patterns, size filters, and age filters (a66ded4) - Rate limiting with token bucket algorithm for bandwidth control (
a66ded4) - Retry with exponential backoff and jitter for failed operations (
a66ded4) - Progress callbacks for sync operations (
a66ded4) - Dry-run mode for sync operations (
a66ded4) - Concurrent transfer support with configurable parallelism (
a66ded4) - Structured logging via slog for sync operations (
a66ded4) - Helper functions
CopyPath()andMovePath()for cross-backend operations (0ae32d4) AsExtended()helper for type-safe ExtendedBackend conversion (0ae32d4)
Documentation¶
- README.md with usage examples and API documentation (
c311de1) - ROADMAP.md with development phases and planned features (
c311de1) - PRD.md (Product Requirements Document) (
c311de1) - TRD.md (Technical Requirements Document) (
c311de1) - GoDoc comments on all public APIs (
c311de1)