Release Notes - v0.4.0¶
Release Date: 2026-05-23
Overview¶
OmniVault v0.4.0 introduces a provider registry pattern with the new VaultFromURI function, enabling automatic vault creation from URI strings. External providers can now register themselves via init() imports, simplifying multi-provider setups.
Highlights¶
- New
VaultFromURIfunction for creating vaults from URI strings - Provider registry pattern for extensible provider discovery
- External providers can self-register via
init()imports
What's New¶
Added¶
- Provider Registry: New
RegisterProvider/UnregisterProviderfunctions for registering provider factories by URI scheme - VaultFromURI: Create vaults directly from URI strings like
file:///path/to/secretsorenv://PREFIX_ - RegisteredSchemes: Query all registered URI schemes
Changed¶
- Bump
golang.org/x/cryptofrom 0.48.0 to 0.52.0 - Bump
golang.org/x/termfrom 0.40.0 to 0.43.0 - Bump
github.com/grokify/oscompatfrom 0.1.0 to 0.3.0
Usage¶
Creating Vaults from URIs¶
import "github.com/plexusone/omnivault"
// Built-in providers
v, err := omnivault.VaultFromURI("file:///path/to/secrets")
v, err := omnivault.VaultFromURI("env://MY_PREFIX_")
v, err := omnivault.VaultFromURI("memory://")
Using External Providers¶
External providers can register themselves when imported:
import (
"github.com/plexusone/omnivault"
_ "github.com/plexusone/omni-onepassword/omnivault/register" // Registers "op://"
)
// Now op:// URIs work automatically
v, err := omnivault.VaultFromURI("op://MyVault")
Registering Custom Providers¶
import "github.com/plexusone/omnivault"
func init() {
omnivault.RegisterProvider("myscheme", func(uri string) (vault.Vault, error) {
return myProvider.New(uri)
})
}
Installation¶
Upgrading¶
No breaking changes. Simply update your go.mod:
And run: