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:
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.