airvzxf / airvzxf/voxora

feat(refactor): MiniMaxConfig name collision across voxora-config and voxora-minimax (SemVer tripwire)

Open
#190 1 comment 0 reactions 0 assignees View on GitHub
breaking-change refactor
Dominant language
Rust
Stars
0
Forks
1
Avg merge
11m
Merged PRs (30d)
77

Description

## Problem

Both `voxora-config` and `voxora-minimax` define a struct named `MiniMaxConfig`:

- `voxora-config/src/minimax.rs` — the *user-facing* configuration struct (env-var cascade, CLI flag plumbing).
- `voxora-minimax/src/config.rs` — the *engine-internal* configuration struct (base URL, model name, timeouts).

When a downstream consumer writes `use voxora_config::MiniMaxConfig;` and `use voxora_minimax::MiniMaxConfig;` in the same file (the canonical pattern for any app that wires both the user config and the engine), the second import silently shadows the first. The struct appears twice in docs.rs search results with the same name and no disambiguation warning. This is a SemVer tripwire: the moment one of them adds a field, consumers' `use` statements become ambiguous at compile time.

## Recipe

Rename `voxora_minimax::MiniMaxConfig` → `MiniMaxEngineConfig` (or `MiniMaxSettings`) in 0.7.0. The user-facing `voxora_config::MiniMaxConfig` stays unchanged (the rename is purely internal to the engine crate). Add a deprecation alias `pub type MiniMaxConfig = MiniMaxEngineConfig;` in 0.6.x so consumers that hit the collision via the indirect re-export path (`voxora_bridge::MiniMaxConfig`) get a clear migration message.

## Acceptance

- `voxora-minimax::MiniMaxConfig` no longer exists by that name; only `MiniMaxEngineConfig` (or equivalent) is exported.
- The user-facing `voxora_config::MiniMaxConfig` is unchanged.
- A search of `crates.io` reverse-deps confirms no consumer is using `voxora_minimax::MiniMaxConfig` directly (it's a low-confidence check; the rename is safe because the engine crate's public docs are internal).

Contributor guide

Open the contributing guide

Research direction

Compare voxora-config/src/minimax.rs with voxora-minimax/src/config.rs, then trace the engine type's exports and the voxora_bridge re-export mentioned in the issue. Check the package versioning and crates.io reverse-dependency information before choosing the compatibility path. Done means the engine configuration has a distinct public name, the user-facing name is unchanged, and the stated acceptance checks pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.