Skip to content

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 VaultFromURI function 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/UnregisterProvider functions for registering provider factories by URI scheme
  • VaultFromURI: Create vaults directly from URI strings like file:///path/to/secrets or env://PREFIX_
  • RegisteredSchemes: Query all registered URI schemes

Changed

  • Bump golang.org/x/crypto from 0.48.0 to 0.52.0
  • Bump golang.org/x/term from 0.40.0 to 0.43.0
  • Bump github.com/grokify/oscompat from 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

go get github.com/plexusone/omnivault@v0.4.0

Upgrading

No breaking changes. Simply update your go.mod:

require github.com/plexusone/omnivault v0.4.0

And run:

go mod tidy