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.5.0 - 2026-06-20¶
Highlights¶
- Session storage package with multi-site isolation, size controls, and per-user limits. Redis backend for KVS.
Added¶
- Session storage package (
session/) withStoreinterface for session management (7d9fc52) ControlledStorewrapper with size limits, JSON validation, and violation callbacks (7d9fc52)- Multi-site isolation via
SiteIDconfiguration for secure session separation (7d9fc52) MaxSessionsPerUserlimit with automatic oldest session eviction (7d9fc52)- Structured error types with machine-readable codes for HTTP status mapping (
7d9fc52) - In-memory session backend (
session/backend/memory) for development/testing (7d9fc52) - KVS session backend (
session/backend/kvs) adapting anykvs.ListableStore(7d9fc52) - Redis KVS backend (
kvs/backend/redis) usinggo-redis/v9(af070a6) ViolationHandlercallback for metrics and alerting on policy violations (7d9fc52)
Fixed¶
- Linting issues in session package resolved (
c39f3de)
Dependencies¶
- Add
github.com/redis/go-redis/v9v9.20.1 for Redis KVS backend (a14c5d6) - Promote
github.com/google/uuidto direct dependency (a14c5d6) - Bump
github.com/grokify/mogofrom 0.74.5 to 0.74.6 (f8bdc19) - Bump
golang.org/x/cryptofrom 0.52.0 to 0.53.0 (da59873) - Bump
golang.org/x/sysfrom 0.45.0 to 0.46.0 (a14c5d6) - Bump
modernc.org/libcfrom 1.72.3 to 1.73.4 (a14c5d6) - Bump
modernc.org/sqlitefrom 1.50.0 to 1.52.0 (c3f9f97) - Bump
github.com/grokify/oscompatfrom 0.3.0 to 0.4.0 (c682e77)
Documentation¶
- KVS package documentation (
docs/kvs/index.md) (b0487b7) - Session package overview (
docs/session/index.md) (b0487b7) - Session backends guide (
docs/session/backends.md) (b0487b7) - Session controls reference (
docs/session/controls.md) (b0487b7) - MkDocs navigation updated with Key-Value Storage and Session Storage sections (
b0487b7)
Tests¶
- Comprehensive tests for
ControlledStoreincluding size limits, JSON validation, and site isolation (2fc32ec)
v0.4.0 - 2026-05-03¶
Highlights¶
- Root-level aggregator for batteries-included backend registration
Added¶
- Root aggregator
omnistorage.gothat re-exports core types and auto-registers all built-in backends (channel, dropbox, file, memory, sftp) (09d982d) - Users can now import
github.com/plexusone/omnistorage-coredirectly to get all core backends registered automatically (09d982d) Backends()function re-exported in aggregator to list registered backends (25da889)
Documentation¶
- README updated with aggregator import usage example
- Docs updated to explain core vs umbrella package pattern
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)