fix(config): ensure user model_list isn't overridden with default models if originally empty
Previously, `loadConfig` in `pkg/config/migration.go` checked `len(tmp.ModelList) > 0` to decide whether to override the default loaded `cfg.ModelList`. If the user has manually cleared out their model list, leaving it as an empty array (`[]`), the unmarshaling would fail this condition and revert their list to the long default list again whenever the configuration is saved. This commit changes the condition to use `json.RawMessage` to accurately detect if the `model_list` key was actually present in the file, regardless of its length. Co-authored-by: TanLuong <28281768+TanLuong@users.noreply.github.com>
This commit is contained in:
parent
f63ddcfae2
commit
5d4d177a58
2 changed files with 25 additions and 2 deletions
|
|
@ -521,11 +521,13 @@ func loadConfig(data []byte) (*Config, error) {
|
||||||
// would silently inherit values from the DefaultConfig template at the same
|
// would silently inherit values from the DefaultConfig template at the same
|
||||||
// index position. We only reset cfg.ModelList when the user actually provides
|
// index position. We only reset cfg.ModelList when the user actually provides
|
||||||
// entries; when count is 0 we keep DefaultConfig's built-in list as fallback.
|
// entries; when count is 0 we keep DefaultConfig's built-in list as fallback.
|
||||||
var tmp Config
|
var tmp struct {
|
||||||
|
ModelList json.RawMessage `json:"model_list"`
|
||||||
|
}
|
||||||
if err := json.Unmarshal(data, &tmp); err != nil {
|
if err := json.Unmarshal(data, &tmp); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(tmp.ModelList) > 0 {
|
if tmp.ModelList != nil {
|
||||||
cfg.ModelList = nil
|
cfg.ModelList = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
21
pkg/config/migration.go.patch
Normal file
21
pkg/config/migration.go.patch
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
--- pkg/config/migration.go
|
||||||
|
+++ pkg/config/migration.go
|
||||||
|
@@ -515,11 +515,16 @@
|
||||||
|
// zero-initializing them, so fields absent from the user's JSON (e.g. api_base)
|
||||||
|
// would silently inherit values from the DefaultConfig template at the same
|
||||||
|
// index position. We only reset cfg.ModelList when the user actually provides
|
||||||
|
// entries; when count is 0 we keep DefaultConfig's built-in list as fallback.
|
||||||
|
- var tmp Config
|
||||||
|
+ var tmp struct {
|
||||||
|
+ ModelList json.RawMessage `json:"model_list"`
|
||||||
|
+ }
|
||||||
|
if err := json.Unmarshal(data, &tmp); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
- if len(tmp.ModelList) > 0 {
|
||||||
|
+ if tmp.ModelList != nil {
|
||||||
|
+ // User explicitly defined model_list, even if it's empty []
|
||||||
|
cfg.ModelList = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.Unmarshal(data, cfg); err != nil {
|
||||||
Loading…
Add table
Reference in a new issue