Skip to content

Release Notes: v0.4.0

Release Date: 2026-05-04

Overview

Traffic2OpenAPI v0.4.0 expands storage backend support through migration to github.com/plexusone/omnistorage. The new omnistorage package provides access to cloud storage backends including Amazon S3, Google Cloud Storage, Google Drive, GitHub Releases, and Dropbox, in addition to file, memory, SFTP, and channel backends.

This release adopts the registry pattern for backend creation, providing a cleaner API where all backends are auto-registered and can be created by name without direct package imports.

This is an internal dependency change. Users of core functionality (HAR conversion, inference, OpenAPI generation) are unaffected. Only users who directly use StorageProvider with custom omnistorage backends need to update their code.

Highlights

  • Expanded Storage Backends: S3, GCS, Google Drive, GitHub Releases, and Dropbox support via omnistorage registry pattern

Changed

  • Use omnistorage.Open() registry pattern for dynamic backend creation

Dependencies

  • Migrate from github.com/grokify/omnistorage to github.com/plexusone/omnistorage v0.2.0
  • Add github.com/plexusone/omnistorage-core v0.4.0 for compress/gzip and format/ndjson utilities
  • Update github.com/pb33f/libopenapi from v0.34.3 to v0.36.3
  • Update github.com/fsnotify/fsnotify from v1.9.0 to v1.10.0

StorageProvider Migration Guide

This section only applies if you use ir.Storage() with custom omnistorage backends.

Import Path Changes

Before (v0.3.x):

import (
    "github.com/grokify/omnistorage"
    "github.com/grokify/omnistorage/backend/file"
    "github.com/grokify/omnistorage/backend/s3"
)

backend := file.New(file.Config{Root: "/data"})

After (v0.4.0):

import (
    "github.com/plexusone/omnistorage"
)

// Use registry pattern - all backends auto-registered
backend, err := omnistorage.Open("file", map[string]string{"root": "/data"})

Registry Pattern

The new omnistorage package uses a registry pattern where all backends are automatically registered via init() functions:

// Create backends by name - no direct imports needed
backend, _ := omnistorage.Open("file", map[string]string{"root": "/data"})
backend, _ := omnistorage.Open("s3", map[string]string{"bucket": "my-bucket", "region": "us-east-1"})
backend, _ := omnistorage.Open("gcs", map[string]string{"bucket": "my-bucket"})

Available Backends

Backend Registry Name Description
File file Local filesystem storage
Memory memory In-memory storage (testing)
Channel channel Go channel-based IPC
SFTP sftp SSH file transfer
Amazon S3 s3 AWS S3 storage
Google Cloud Storage gcs GCS storage
Google Drive drive Google Drive storage
GitHub Releases github GitHub release assets
Dropbox dropbox Dropbox cloud storage

Migration Steps

  1. Update imports from github.com/grokify/omnistorage to github.com/plexusone/omnistorage
  2. Replace direct backend constructors with omnistorage.Open()
  3. Run go mod tidy