Skip to content

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/omnistorage to github.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-aws package (85b2b62)
  • AWS SDK dependencies removed to keep core thin and provider-agnostic (85b2b62)

Added

  • New kvs/ subsystem for key-value storage with Store, ListableStore, and DocumentStore interfaces (85b2b62)
  • In-memory KVS backend (kvs/backend/memory) for ephemeral storage (85b2b62)
  • SQLite KVS backend (kvs/backend/sqlite) for persistent key-value storage using modernc.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/sqlite v1.49.1 for SQLite KVS backend (85b2b62)
  • Remove AWS SDK v2 dependencies (moved to omni-aws) (85b2b62)
  • Bump github.com/grokify/mogo from 0.74.0 to 0.74.2 (07a9cf5)
  • Bump golang.org/x/crypto from 0.49.0 to 0.50.0 (80c7c47)
  • Bump github.com/klauspost/compress from 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-aws package (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_hosts instead of InsecureIgnoreHostKey() to prevent MITM attacks (8bf114c)

Changed

  • SFTP backend requires server host key in ~/.ssh/known_hosts file for connections (8bf114c)
  • Use oscompat/tsync for cross-platform timestamp comparison in sync.NeedsUpdate() (75bb613)

Dependencies

  • Add github.com/grokify/oscompat v0.1.0 dependency (75bb613)
  • Bump github.com/klauspost/compress from 1.18.2 to 1.18.3 (1c2da6e)
  • Bump golang.org/x/crypto from 0.46.0 to 0.47.0 (bcc14ea)
  • Bump github.com/grokify/mogo from 0.72.5 to 0.72.6 (bd348b1)

Documentation

  • Rename Omnistorage to OmniStorage in documentation (190488c)
  • Fix TRD.md formatting (c38909e)

v0.1.0 - 2026-01-10

Highlights

  • Initial release with unified storage abstraction layer for Go

Added

  • Core Backend interface with NewWriter, NewReader, Exists, Delete, List, Close methods (0ae32d4)
  • RecordWriter and RecordReader interfaces for streaming record-oriented data (0ae32d4)
  • ExtendedBackend interface with Stat, Mkdir, Rmdir, Copy, Move, and Features methods (0ae32d4)
  • ObjectInfo interface 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(), and Backends() 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() and sync.VerifyAndReport() for detailed verification results (a66ded4)
  • sync.VerifyIntegrity() and sync.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() and MovePath() 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)

Tests

  • Comprehensive test suite with 80+ tests across all packages (de720c3)
  • Conformance tests for backend implementations (de720c3)
  • Integration tests for file, memory, and S3 backends (de720c3)