Releases: yuhp/opencode-models-discovery
Release list
v1.1.0
Added
- Add opt-in vLLM model info enrichment with:
{
"modelsDiscovery": {
"modelInfoFormat": "vllm"
}
}- When a vLLM-compatible /v1/models response exposes the non-standard
max_model_len field, discovered models receive matching limit.context
and limit.output values.
Notes
- vLLM enrichment only uses max_model_len; it does not infer model
capabilities such as reasoning, tools, or modalities. - Models remain discoverable when max_model_len is unavailable.
v1.0.2
🎉 Release v1.0.2
Changes since v1.0.1.
What's Changed
Models.dev Compatibility
- Improved models.dev metadata lookup for gateway-prefixed model IDs and provider variant suffixes, such as
openrouter/moonshotai/kimi-k2.6:free. - Metadata enrichment now reliably applies display names, limits, tool support, reasoning support, and declared modalities when a matching models.dev entry is available.
Safer Discovered Model Defaults
- Discovered non-embedding models now receive safe fallback modalities of text input and text output.
- This fixes missing modality declarations for chat models outside the previous name-based whitelist, including DeepSeek-style model IDs.
- When models.dev metadata is available, its declared model capabilities continue to override the fallback.
Release Infrastructure
- Updated release workflows to use Node.js 24.18.0 and current npm, ensuring compatibility with npm trusted publishing.
Verification
- Full test suite and TypeScript type checking pass.
v1.0.1
Release v1.0.1
v1.0.1 improves models.dev enrichment for custom providers and updates the README Star History embed.
Fixed
models.dev Matching for Custom Provider IDs
models.dev enrichment now matches by model id segment rather than requiring the provider prefix to match.
This allows custom provider ids such as:
custom/gpt-4o
to safely match models.dev metadata for:
openai/gpt-4o
when the model id segment is unambiguous.
The matcher still avoids unsafe metadata assignment:
- duplicate exact model id segment matches return no metadata
- tied prefix matches return no metadata
- weak prefix matches are rejected
This behavior only applies when models.dev enrichment is explicitly enabled:
{
"modelsDiscovery": {
"modelInfoFormat": "models.dev"
}
}Smart Model Names
When smartModelName is enabled and models.dev provides a display name, the plugin can use the models.dev display name for enriched models.
When smartModelName is disabled, discovered models keep their raw ids even if models.dev provides a display name.
Documentation
Updated documentation to clarify that models.dev matching is based on model id segments, not provider ids or display names.
Updated README Star History image URLs to use a public Star History embed token.
Validation
Validated with:
npm run test:run -- test/models-dev-fetcher.test.ts test/plugin.test.ts
npm run typecheck
npm run test:runTest result:
3 test files passed
68 tests passed
v1.0.0
Release v1.0.0
v1.0.0 completes the provider-level configuration migration introduced in v0.12.0.
This release includes a breaking change: plugin-level global discovery configuration is no longer applied at runtime. Discovery settings should now be configured under each provider at provider.<id>.options.modelsDiscovery.
Breaking Change
Plugin-level global discovery config is now ignored:
{
"plugin": [
[
"opencode-models-discovery",
{
"discovery": {
"enabled": false
},
"models": {
"includeRegex": ["^deepseek"]
},
"smartModelName": true
}
]
]
}Move settings to provider-level config:
{
"provider": {
"example": {
"options": {
"modelsDiscovery": {
"enabled": false,
"smartModelName": true,
"models": {
"includeBy": [
{ "field": "id", "match": "^deepseek" }
]
}
}
}
}
}
}The plugin still detects legacy global config. When detected, it logs a warning, shows a migration toast, and injects /models-discovery:migrate.
New
Provider-Level Dynamic Filters
Added provider-level models.includeBy and models.excludeBy under:
provider.<id>.options.modelsDiscovery.models
Rules support two modes:
{
"field": "available",
"equals": false
}{
"field": "id",
"match": "^deepseek"
}Use equals for strict equality against:
stringnumberbooleannull
Use match for regex matching against string field values.
Example:
{
"modelsDiscovery": {
"models": {
"includeBy": [
{ "field": "id", "match": "^deepseek" }
],
"excludeBy": [
{ "field": "available", "equals": false },
{ "field": "id", "match": "embedding" }
]
}
}
}Default Discovery Environment Variable
Added OPENCODE_MODELS_DISCOVERY_DEFAULT_ENABLED.
Supported truthy values:
true1yeson
Supported falsy values:
false0nooff
Provider-level modelsDiscovery.enabled takes precedence over the environment variable.
Example:
OPENCODE_MODELS_DISCOVERY_DEFAULT_ENABLED=false opencodeThis disables discovery by default only for providers without explicit modelsDiscovery.enabled.
Config Helper Updates
Updated /models-discovery:config to recommend provider-level configuration and the new includeBy / excludeBy filters.
Updated /models-discovery:migrate to guide migration from legacy global config to provider-level config.
Changed
Legacy Global Config Handling
Legacy global config is still detected, but no longer applied.
Updated warning message:
Global opencode-models-discovery config is no longer applied in v1.0.0. Move settings to provider.<name>.options.modelsDiscovery or run /models-discovery:migrate.
Model Regex Filters
Provider-level models.includeRegex and models.excludeRegex remain supported as id-only shortcuts.
For new configs, prefer:
{
"includeBy": [
{ "field": "id", "match": "^qwen/" }
],
"excludeBy": [
{ "field": "id", "match": "embedding|rerank" }
]
}Existing includeRegex / excludeRegex shortcut behavior is preserved.
Documentation
Updated:
README.mddocs/configuration.mddocs/upgrading.md
Added:
docs/config_example/README.mddocs/config_example/deepseek.mddocs/issues/v1.0.0-provider-level-config-prd.md
Validation
Validated with:
npm run typecheck
npm run test:run
npm run build
npm pack --dry-runTest result:
3 test files passed
64 tests passed
Upgrade Notes
If you use only provider-level modelsDiscovery config, no action should be required.
If you use plugin-level global config, migrate it to each provider.
Old:
{
"plugin": [
[
"opencode-models-discovery",
{
"models": {
"includeRegex": ["^qwen"]
}
}
]
]
}New:
{
"provider": {
"example": {
"options": {
"modelsDiscovery": {
"models": {
"includeBy": [
{ "field": "id", "match": "^qwen" }
]
}
}
}
}
}
}After changing OpenCode config, restart OpenCode.
v0.12.0
Release v0.12.0
v0.12.0 is a transition release for the provider-level discovery configuration model. Existing plugin-level discovery config continues to work in 0.12.x, but it is now deprecated and will be removed in 1.0.0.
Highlights
- Added
/models-discovery:configfor assistant-guided provider-level setup. - Added
/models-discovery:migratewhen deprecated plugin-level discovery config is detected. - Added one-time legacy config warnings and migration guidance.
- Kept existing discovery behavior compatible for
0.12.x. - Removed an unused
chat.paramshook. - Updated release automation to sync
package-lock.jsonversions and usePublish vX.Y.Zrelease PR titles.
Configuration Migration
Deprecated plugin-level options still work in 0.12.x, but should be moved to provider.<name>.options.modelsDiscovery:
discovery.enabledproviders.includeproviders.excludemodels.includeRegexmodels.excludeRegexsmartModelName
Recommended provider-level shape:
{
"provider": {
"lmstudio": {
"options": {
"modelsDiscovery": {
"enabled": true
}
}
}
}
}v1.0 Compatibility Boundary
Planned 1.0.0 behavior:
- Plugin-level discovery config will be removed.
- Discovery will remain enabled by default for compatible providers.
- Set
provider.<name>.options.modelsDiscovery.enabled = falseto disable discovery for one provider. OPENCODE_MODELS_DISCOVERY_DEFAULT_ENABLED=falseis planned for users who want unspecified providers to default to disabled.
Validation
The release workflow passed:
npm run buildResult:
Test Files 3 passed
Tests 56 passed
Installation
npm install opencode-models-discovery@0.12.0
# or
bun add opencode-models-discovery@0.12.0v0.11.1
🎉 Release v0.11.1
Changes since v0.11.0.
Maintenance
- Merge pull request #30 from yuhp/release/v0.11.1 (b344470)
- Merge pull request #29 from yuhp/refactor/openai-discovery-http-client (6fa40ee)
- ci: release from dev by default (5458a54)
- refactor: remove unused provider auto-detection (c114872)
- refactor: use low-level http client for discovery (86b6b33)
Installation
npm install opencode-models-discovery@0.11.1
# or
bun add opencode-models-discovery@0.11.1v0.11.0
🎉 Release v0.11.0
Changes since v0.10.3.
Features
- feat: add Level 4 prefix-based matching for model variants (98e79a2)
- feat: extend models.dev fallback with all metadata fields (55703af)
- feat: add models.dev fallback with 3-level matching (dbb14e6)
- feat: add default fallback values for model limits (7dfa5e9)
Fixes
- fix: ensure default context limits are always set with correct fallback sequence (f7e48bd)
Maintenance
- Merge pull request #28 from yuhp/release/v0.11.0 (44a492b)
- Merge remote-tracking branch 'origin/main' into release/v0.11.0 (89d9f5a)
- Merge pull request #26 from rajebdev/feat/upgrade-features (e151121)
- refactor: make models.dev metadata enrichment explicit (19bb4c7)
- chore: update gitignore and dependencies - Update .gitignore patterns - Refresh package-lock.json with latest dependencies (e20e2d0)
Installation
npm install opencode-models-discovery@0.11.0
# or
bun add opencode-models-discovery@0.11.0v0.10.3
🎉 Release v0.10.3
Changes since v0.10.2.
Fixes
- fix: fallback when fetch fails during discovery (cc77cdf)
Maintenance
- Merge pull request #23 from yuhp/release/v0.10.3 (6345868)
- Merge pull request #22 from yuhp/pr-20-fetch-fallback-patch (e06eac3)
Installation
npm install opencode-models-discovery@0.10.3
# or
bun add opencode-models-discovery@0.10.3v0.10.2
🎉 Release v0.10.2
Changes since v0.10.1.
Maintenance
- Merge pull request #17 from yuhp/release/v0.10.2 (726f553)
- Merge pull request #16 from yuhp/host-env-auth-store (d57f12c)
- Support host-specific auth stores for Mimocode compatibility (3290d14)
Installation
npm install opencode-models-discovery@0.10.2
# or
bun add opencode-models-discovery@0.10.2v0.10.1
🎉 Release v0.10.1
Changes since v0.10.0.
Fixes
- fix: align plugin peer dependency with opencode engine (ea623a9)
Documentation
- docs: reorganize README and guides (06127f0)
Maintenance
- Merge pull request #15 from yuhp/release/v0.10.1 (d2847d5)
- Merge pull request #14 from yuhp/dev (811f09d)
- refactor(deps): move @opencode-ai/plugin to peerDependencies (48ac86f)
Installation
npm install opencode-models-discovery@0.10.1
# or
bun add opencode-models-discovery@0.10.1