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/omnistoragetogithub.com/plexusone/omnistoragev0.2.0 - Add
github.com/plexusone/omnistorage-corev0.4.0 for compress/gzip and format/ndjson utilities - Update
github.com/pb33f/libopenapifrom v0.34.3 to v0.36.3 - Update
github.com/fsnotify/fsnotifyfrom 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¶
- Update imports from
github.com/grokify/omnistoragetogithub.com/plexusone/omnistorage - Replace direct backend constructors with
omnistorage.Open() - Run
go mod tidy