Peter Steinberger
925c3f3fa8
test: align plugin test contracts
2026-04-22 06:29:13 +01:00
Peter Steinberger
0285afe86f
fix: stabilize testbox test suite
2026-04-22 06:29:13 +01:00
Shakker
08d5ad3828
fix: skip clean run-node runtime restaging
2026-04-22 06:28:50 +01:00
Peter Steinberger
cc91e8ecf9
fix(channels): repair bundled setup runtime deps
2026-04-22 06:26:13 +01:00
dependabot[bot]
38f8bc5592
chore(deps): bump the android-deps group across 1 directory with 17 updates ( #67592 )
...
* build(deps): bump the android-deps group across 1 directory with 17 updates
Bumps the android-deps group with 12 updates in the /apps/android directory:
| Package | From | To |
| --- | --- | --- |
| org.jlleitschuh.gradle.ktlint | `14.0.1` | `14.2.0` |
| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin ) | `2.2.21` | `2.3.20` |
| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin ) | `2.2.21` | `2.3.20` |
| androidx.compose:compose-bom | `2026.02.00` | `2026.03.01` |
| androidx.activity:activity-compose | `1.12.2` | `1.13.0` |
| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization ) | `1.10.0` | `1.11.0` |
| [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java ) | `1.83` | `1.84` |
| [org.commonmark:commonmark](https://github.com/commonmark/commonmark-java ) | `0.27.1` | `0.28.0` |
| [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest ) | `6.1.3` | `6.1.11` |
| [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework ) | `6.0.2` | `6.0.3` |
| androidx.test.ext:junit | `1.2.1` | `1.3.0` |
| [gradle-wrapper](https://github.com/gradle/gradle ) | `9.3.1` | `9.4.1` |
Updates `org.jlleitschuh.gradle.ktlint` from 14.0.1 to 14.2.0
Updates `org.jetbrains.kotlin.plugin.compose` from 2.2.21 to 2.3.20
- [Release notes](https://github.com/JetBrains/kotlin/releases )
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md )
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.20 )
Updates `org.jetbrains.kotlin.plugin.serialization` from 2.2.21 to 2.3.20
- [Release notes](https://github.com/JetBrains/kotlin/releases )
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md )
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.2.21...v2.3.20 )
Updates `androidx.compose:compose-bom` from 2026.02.00 to 2026.03.01
Updates `androidx.activity:activity-compose` from 1.12.2 to 1.13.0
Updates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.10.0 to 1.11.0
- [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases )
- [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md )
- [Commits](https://github.com/Kotlin/kotlinx.serialization/compare/v1.10.0...v1.11.0 )
Updates `org.bouncycastle:bcprov-jdk18on` from 1.83 to 1.84
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html )
- [Commits](https://github.com/bcgit/bc-java/commits )
Updates `org.commonmark:commonmark` from 0.27.1 to 0.28.0
- [Release notes](https://github.com/commonmark/commonmark-java/releases )
- [Changelog](https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md )
- [Commits](https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.27.1...commonmark-parent-0.28.0 )
Updates `org.commonmark:commonmark-ext-autolink` from 0.27.1 to 0.28.0
- [Release notes](https://github.com/commonmark/commonmark-java/releases )
- [Changelog](https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md )
- [Commits](https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.27.1...commonmark-parent-0.28.0 )
Updates `org.commonmark:commonmark-ext-gfm-strikethrough` from 0.27.1 to 0.28.0
- [Release notes](https://github.com/commonmark/commonmark-java/releases )
- [Changelog](https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md )
- [Commits](https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.27.1...commonmark-parent-0.28.0 )
Updates `org.commonmark:commonmark-ext-gfm-tables` from 0.27.1 to 0.28.0
- [Release notes](https://github.com/commonmark/commonmark-java/releases )
- [Changelog](https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md )
- [Commits](https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.27.1...commonmark-parent-0.28.0 )
Updates `org.commonmark:commonmark-ext-task-list-items` from 0.27.1 to 0.28.0
- [Release notes](https://github.com/commonmark/commonmark-java/releases )
- [Changelog](https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md )
- [Commits](https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.27.1...commonmark-parent-0.28.0 )
Updates `io.kotest:kotest-runner-junit5-jvm` from 6.1.3 to 6.1.11
- [Release notes](https://github.com/kotest/kotest/releases )
- [Commits](https://github.com/kotest/kotest/compare/6.1.3...6.1.11 )
Updates `io.kotest:kotest-assertions-core-jvm` from 6.1.3 to 6.1.11
- [Release notes](https://github.com/kotest/kotest/releases )
- [Commits](https://github.com/kotest/kotest/compare/6.1.3...6.1.11 )
Updates `org.junit.vintage:junit-vintage-engine` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/junit-team/junit-framework/releases )
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.0.2...r6.0.3 )
Updates `androidx.test.ext:junit` from 1.2.1 to 1.3.0
Updates `gradle-wrapper` from 9.3.1 to 9.4.1
- [Release notes](https://github.com/gradle/gradle/releases )
- [Commits](https://github.com/gradle/gradle/compare/v9.3.1...v9.4.1 )
---
updated-dependencies:
- dependency-name: org.jlleitschuh.gradle.ktlint
dependency-version: 14.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.jetbrains.kotlin.plugin.compose
dependency-version: 2.3.20
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.jetbrains.kotlin.plugin.serialization
dependency-version: 2.3.20
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: androidx.compose:compose-bom
dependency-version: 2026.03.01
dependency-type: direct:production
dependency-group: android-deps
- dependency-name: androidx.activity:activity-compose
dependency-version: 1.13.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json
dependency-version: 1.11.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.bouncycastle:bcprov-jdk18on
dependency-version: '1.84'
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.commonmark:commonmark
dependency-version: 0.28.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.commonmark:commonmark-ext-autolink
dependency-version: 0.28.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.commonmark:commonmark-ext-gfm-strikethrough
dependency-version: 0.28.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.commonmark:commonmark-ext-gfm-tables
dependency-version: 0.28.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: org.commonmark:commonmark-ext-task-list-items
dependency-version: 0.28.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: io.kotest:kotest-runner-junit5-jvm
dependency-version: 6.1.11
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: android-deps
- dependency-name: io.kotest:kotest-assertions-core-jvm
dependency-version: 6.1.11
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: android-deps
- dependency-name: org.junit.vintage:junit-vintage-engine
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: android-deps
- dependency-name: androidx.test.ext:junit
dependency-version: 1.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: gradle-wrapper
dependency-version: 9.4.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
...
Signed-off-by: dependabot[bot] <support@github.com >
* fix(android): remove Kotlin 2.3 warning failures
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-04-21 22:25:27 -07:00
Peter Steinberger
80f4c931e8
test: align telegram cron test doubles
2026-04-22 06:19:20 +01:00
Peter Steinberger
e39784decd
ci: move preflight off blacksmith runners
2026-04-22 06:12:33 +01:00
Peter Steinberger
40719bcb74
refactor: move cron output policy to channel plugins
2026-04-22 06:11:49 +01:00
Peter Steinberger
3fd2a94404
refactor: generalize command sender identity checks
2026-04-22 06:11:49 +01:00
Peter Steinberger
6639bbbc2e
refactor: generalize conversation id labels
2026-04-22 06:11:49 +01:00
Peter Steinberger
e20a5eeddb
refactor: keep legacy web search config in doctor
2026-04-22 06:11:49 +01:00
Peter Steinberger
a6dce7cf19
refactor: resolve web search secrets by target path
2026-04-22 06:11:49 +01:00
Peter Steinberger
89741c7a23
refactor: use generic web search runtime credential hooks
2026-04-22 06:11:49 +01:00
Peter Steinberger
94f670b893
refactor: use generic web search credential hooks
2026-04-22 06:11:49 +01:00
Peter Steinberger
0c863124bb
refactor: derive setup promotion rules from plugins
2026-04-22 06:11:49 +01:00
Peter Steinberger
db055a5c0d
refactor: move WhatsApp group inference out of core
2026-04-22 06:11:49 +01:00
Peter Steinberger
bdcbb6b49d
refactor: move Feishu model override parsing to plugin
2026-04-22 06:11:49 +01:00
Peter Steinberger
7189b49f81
refactor: move media defaults into plugin manifests
2026-04-22 06:11:49 +01:00
Peter Steinberger
2e775fb03e
refactor: move stale socket modes to channel status
2026-04-22 06:11:49 +01:00
Peter Steinberger
0a027ff591
refactor: derive CLI web credential targets
2026-04-22 06:11:49 +01:00
Peter Steinberger
bc9c2cc162
refactor: derive web credential secret targets from manifests
2026-04-22 06:11:49 +01:00
Peter Steinberger
de616055f7
perf(ci): trim preflight setup and stream test waits
2026-04-22 06:11:02 +01:00
Vincent Koc
812d012b98
docs(changelog): note Tencent provider plugin
2026-04-21 22:06:35 -07:00
Ayaan Zaidi
77de199b1c
fix: improve configure startup ( #69984 )
2026-04-22 10:33:14 +05:30
Ayaan Zaidi
f4966351a1
fix(configure): bound gateway hint probes
2026-04-22 10:33:14 +05:30
Ayaan Zaidi
c1b21a2a3a
fix(cli): skip configure preaction bootstrap
2026-04-22 10:33:14 +05:30
Peter Steinberger
262899f495
ci: shallow checkout live reusable jobs
2026-04-22 06:00:01 +01:00
JuniperSling
d8b9be468a
feat(tencent): add bundled Tencent Cloud provider plugin (Tokenhub + Token Plan) ( #68460 )
...
* feat(tencent): add bundled Tencent Cloud provider plugin (Tokenhub + Token Plan)
* fix(tencent): use provider-specific default model aliases
Both Tencent providers previously defaulted to the same alias "HY3 Preview",
which collides in buildModelAliasIndex (single alias map, keyed by normalized
alias). When both providers are onboarded, alias-based selection routed to
whichever provider was configured last.
Disambiguate the fallback aliases so resolution is deterministic regardless
of onboarding order:
- tencent-tokenhub -> "HY3 Preview (TokenHub)"
- tencent-token-plan -> "HY3 Preview (Token Plan)"
* docs(tencent): rename model to "Hy3 preview" and drop "HY3" family name
Align with the external-facing product name:
- model display name: "HY3 Preview" -> "Hy3 preview"
- family/umbrella references in docs and auth hints: "HY3" -> "Hy3 preview"
- internal cost constant: HY3_COST -> HY_COST
Model call id (hy3-preview) is unchanged.
* docs(tencent): use "Hy" as the family name in generic references
Keep specific model references as "Hy3 preview" (model catalog names,
onboarding aliases, Available-models docs entries), but switch
family/umbrella references to the plain "Hy" family name so future Hy
versions fit without doc churn:
- auth hints: "Hy via Tencent TokenHub Gateway" / "Hy via Token Plan"
- docs intro + Use-case table: "Tencent Hy models" / "call Hy via ..."
- models.ts pricing comment: "Hy pricing"
* feat(tencent): add tiered pricing for Hy3 preview model
---------
Co-authored-by: albertxyu <albertxyu@tencent.com >
2026-04-21 21:59:22 -07:00
Peter Steinberger
c07b388f77
ci: keep pnpm alignment scoped to CI
2026-04-22 05:58:50 +01:00
Peter Steinberger
fbddef34bd
perf(ci): trim provider catalog test setup
2026-04-22 05:57:22 +01:00
Peter Steinberger
dbf3eca590
test: stabilize workspace fallback assertion
2026-04-22 05:50:57 +01:00
pashpashpash
89932593bb
Show typing while heartbeats are running ( #69963 )
...
* Heartbeat: show typing during runs
* Heartbeat: fix typing review issues
* Discord: preserve heartbeat typing config
2026-04-22 13:50:27 +09:00
Zihao WAN
d4f91a354e
fix(ollama): forward think:false for qwen3 chat requests ( #69967 )
...
Forward top-level Ollama think flags on native /api/chat requests so --thinking off sends think:false.\n\nThanks @WZH8898.
2026-04-22 05:49:16 +01:00
fuller-stack-dev
276c00015c
fix: add local embedded TUI mode ( #66767 ) (thanks @fuller-stack-dev)
...
* feat(tui): add local embedded TUI mode with terminal/chat aliases
Adds a gateway-free local TUI path so users can run openclaw in their
terminal without needing a running gateway process.
- TuiBackend interface abstraction (tui-backend.ts) with EmbeddedTuiBackend
implementation that drives the agent loop in-process
- openclaw tui --local flag for local embedded mode
- openclaw terminal / openclaw chat aliases that imply --local
- /auth slash command with codex CLI delegation to avoid prolite plan issue
- Default model display fallback on startup
- Local-aware status text and log suppression
- Concise auth error hints, raw HTML 403 suppression
- Onboarding hatch flow launches local TUI (no gateway required)
- Commander alias bug fix in run-main.ts (.aliases() check)
- All new and updated tests passing (145/145)
* TUI: fix alias detection, cross-platform codex lookup, and history byte-budget safeguards
* TUI: remove RuntimeEnv type annotation to fix CI oxlint error
* TUI: filter gateway-dependent tools and auto-approve plugin hooks in embedded mode
* TUI: suppress console noise and add embedded mode system prompt note
* TUI: reduce embedded-mode tool filtering from 15 to 7, add local session tools
* TUI: fix remaining PR review comments
* TUI: address latest review feedback and CI drift
* Core: align prompt helper with latest base
* Core: match prompt helper formatting with base
* Core: restore prompt helper from latest base
* fix(tui): preserve local auth fallback in source checkouts
* fix(tts): guard telephony provider invocation
* fix(tui): support Windows codex auth shim
* fix(tui): harden local auth flow
* fix: preserve embedded tool-first run events
* fix(tui): keep embedded plugin approvals gated
* fix(tui): restore embedded attempt import
* fix(tui): resolve sessions in embedded stub
* fix: add embedded TUI changelog entry (#66767 ) (thanks @fuller-stack-dev)
* fix: pass setup TUI local mode through relaunch (#66767 ) (thanks @fuller-stack-dev)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-04-22 10:08:57 +05:30
Peter Steinberger
d733d547c0
ci: use fastest Blacksmith testbox runner
2026-04-22 05:33:05 +01:00
dependabot[bot]
68a55cc434
build(deps): bump docker/build-push-action from 6 to 7 ( #48053 )
...
Bumps [docker/build-push-action](https://github.com/docker/build-push-action ) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases )
- [Commits](https://github.com/docker/build-push-action/compare/v6...v7 )
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-21 21:30:47 -07:00
dependabot[bot]
ba8fb6b2b8
build(deps): bump the swift-deps group across 1 directory with 3 updates ( #60168 )
...
* build(deps): bump the swift-deps group across 1 directory with 3 updates
Bumps the swift-deps group with 3 updates in the /apps/macos directory: [github.com/orchetect/menubarextraaccess](https://github.com/orchetect/MenuBarExtraAccess ), [github.com/apple/swift-log](https://github.com/apple/swift-log ) and [github.com/sparkle-project/sparkle](https://github.com/sparkle-project/Sparkle ).
Updates `github.com/orchetect/menubarextraaccess` from 1.2.2 to 1.3.0
- [Release notes](https://github.com/orchetect/MenuBarExtraAccess/releases )
- [Commits](https://github.com/orchetect/MenuBarExtraAccess/compare/1.2.2...1.3.0 )
Updates `github.com/apple/swift-log` from 1.10.1 to 1.11.0
- [Release notes](https://github.com/apple/swift-log/releases )
- [Commits](https://github.com/apple/swift-log/compare/1.10.1...1.11.0 )
Updates `github.com/sparkle-project/sparkle` from 2.9.0 to 2.9.1
- [Release notes](https://github.com/sparkle-project/Sparkle/releases )
- [Commits](https://github.com/sparkle-project/Sparkle/compare/2.9.0...2.9.1 )
---
updated-dependencies:
- dependency-name: github.com/orchetect/menubarextraaccess
dependency-version: 1.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: swift-deps
- dependency-name: github.com/apple/swift-log
dependency-version: 1.11.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: swift-deps
- dependency-name: github.com/sparkle-project/sparkle
dependency-version: 2.9.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: swift-deps
...
Signed-off-by: dependabot[bot] <support@github.com >
* fix(macos): restore MenuBarExtraAccess ordering
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-04-21 21:30:14 -07:00
dependabot[bot]
00da59124d
build(deps): bump actions/setup-node from 4 to 6 ( #61769 )
...
Bumps [actions/setup-node](https://github.com/actions/setup-node ) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases )
- [Commits](https://github.com/actions/setup-node/compare/v4...v6 )
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-21 21:29:52 -07:00
dependabot[bot]
bcadf60b4d
chore(deps): bump actions/create-github-app-token from 2 to 3.0.0 ( #65099 )
...
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token ) from 2 to 3.0.0.
- [Release notes](https://github.com/actions/create-github-app-token/releases )
- [Commits](https://github.com/actions/create-github-app-token/compare/v2...v3 )
---
updated-dependencies:
- dependency-name: actions/create-github-app-token
dependency-version: 3.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-21 21:19:58 -07:00
dependabot[bot]
16c4a04a69
build(deps): bump androidx.test.uiautomator:uiautomator in /apps/android ( #48059 )
...
Bumps androidx.test.uiautomator:uiautomator from 2.4.0-alpha06 to 2.4.0-beta02.
---
updated-dependencies:
- dependency-name: androidx.test.uiautomator:uiautomator
dependency-version: 2.4.0-beta02
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-21 21:19:51 -07:00
dependabot[bot]
7550d426dd
chore(deps): bump actions/github-script from 8 to 9 ( #65098 )
...
Bumps [actions/github-script](https://github.com/actions/github-script ) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases )
- [Commits](https://github.com/actions/github-script/compare/v8...v9 )
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '9'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-21 21:19:26 -07:00
Peter Steinberger
261b07b1d6
ci: prepare Blacksmith testbox shell
2026-04-22 05:17:30 +01:00
Peter Steinberger
092f292ceb
ci: use smaller Blacksmith testbox runner
2026-04-22 05:14:55 +01:00
Peter Steinberger
4e22fc9498
ci: cancel stale push sanity runs
2026-04-22 05:11:57 +01:00
Peter Steinberger
a99490fba4
fix(plugins): support root-owned bundled runtime deps
2026-04-22 05:02:35 +01:00
Peter Steinberger
ba0250e4f3
ci: add Blacksmith testbox workflow
2026-04-22 04:59:38 +01:00
Peter Steinberger
094ca706ed
perf(build): use tsgo for a2ui renderer compile
2026-04-22 04:57:55 +01:00
Shakker
3528a17b67
fix: scope static catalog discovery fallback
2026-04-22 04:51:38 +01:00
Shakker
bbe3dc6c2f
fix: sanitize models list terminal output
2026-04-22 04:51:38 +01:00
Shakker
754125947a
fix: include partial provider discovery fallbacks
2026-04-22 04:51:38 +01:00