Skip to content

Migrating from v0.25 to v0.26: deprecated symbols removed

This release removes public symbols that were marked // Deprecated: in earlier versions. Both have direct, already-documented replacements.


Breaking Changes

pkg/grpc: ConfigKeyPort, ConfigKeyReflection, ConfigTLSPrefix removed

Package: pkg/grpc

These constants hard-coded the default-prefix config keys (server.grpc.port, server.grpc.reflection, server.grpc.tls). They were superseded by the prefix-aware ServerOption API.

Before:

port := cfg.GetInt(grpc.ConfigKeyPort)

After:

// Read your server's keys from its configured prefix instead. The default
// prefix is grpc.DefaultConfigPrefix ("server.grpc"); override with
// grpc.WithConfigPrefix when running multiple servers.
port := cfg.GetInt(grpc.DefaultConfigPrefix + ".port")

grpc.DefaultConfigPrefix and grpc.ConfigKeySharedPort (server.port) remain. Server construction is unaffected — NewServer, Start, DialLocal and Register already derive <prefix>.port / .reflection / .tls from WithConfigPrefix.

pkg/cmd/update: ExportNewUpdater, ExportNewOfflineUpdater removed

Package: pkg/cmd/update

These package-level var test seams raced under parallel tests. They were deprecated in favour of per-call-site factory injection.

Before:

old := update.ExportNewUpdater
defer func() { update.ExportNewUpdater = old }()
update.ExportNewUpdater = func(ctx context.Context, p *props.Props, v string, f bool) (update.Updater, error) {
    return myMock, nil
}
cmd := update.NewCmdUpdate(props)

After:

cmd := update.NewCmdUpdate(props, update.WithUpdater(
    func(ctx context.Context, p *props.Props, v string, f bool) (update.Updater, error) {
        return myMock, nil
    },
))

WithUpdater / WithOfflineUpdater accept the same factory signatures and are threaded through NewCmdUpdate, Update, and updateFromFile. Each call site gets its own factory, so concurrent tests no longer clobber a shared global.


Internal-only removals (no action required)

The no-op WrapSubcommandsWithMiddleware fields on the internal/generator types (CommandContext, GeneratorConfig, ManifestCommand) were removed. They had no effect since v0.20 (see v0.19 → v0.20) and are not part of the public API. Existing manifests carrying wrap_subcommands_with_middleware: still load — the key is simply ignored.