Parity Gap
Upstream source: `openclaw/openclaw`
- Commit cluster (2026-06-04 – 2026-06-06):
- `8b66003a` — `fix(android): clarify provider attention state`
- `30160933` — `refactor(android): distill provider availability cleanup`
- `d6dbcb2f` — `fix(android): surface expiring providers in palette`
- `61d121f1` — `fix(android): show unavailable model rows as attention`
- `72b387ad` — `fix(android): show configured provider readiness`
Files changed (combined):
- `apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt` — adds `available: Boolean?` field to `GatewayModelSummary`; populates from `obj.optionalBoolean("available")`
- `apps/android/app/src/main/java/ai/openclaw/app/ui/ProvidersModelsScreen.kt` — `ProviderSetupRow` and `ProviderRow` gain `available`, `statusLabel`, `warning`, `setupRequired` fields; row rendering shows attention color when unavailable/warning
- `apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt` — replaces `modelProviderReady(it.status)` count with `readyModelProviderCount(providers, models)`; adds `expiringModelProviderCount(providers)` subtitle line
- `apps/android/app/src/main/java/ai/openclaw/app/ui/ShellScreen.kt` — `homeAttentionRows()` gains `expiringProviderCount` param, surfaces "Provider auth expires soon" attention row
- `apps/android/app/src/test/java/ai/openclaw/app/ui/ProviderModelStatusTest.kt` — +103 lines of new tests including `expiringProviderStatusIsNotFullyReady`, `readyModelProviderCount`, `expiringModelProviderCount` tests
- `apps/android/app/src/test/java/ai/openclaw/app/ui/ShellScreenLogicTest.kt` — adds `homeAttentionRowsSurfaceExpiringProviderAuth` test
- Gateway protocol side: `packages/gateway-protocol/src/schema/agents-models-skills.ts` and `src/gateway/server-methods/models-list-result.ts` — `available` field added to model schema
Related: #715 covers the earlier `modelProviderReady()` helper; this issue tracks the follow-up availability/expiry state layer.
Current app: `yuga-hashimoto/openclaw-assistant`
- `GatewayModelSummary` has no `available` field
- `CommandPalette` uses simple `modelProviderReady()` count without expiry awareness
- No "Provider auth expires soon" attention row on home screen
- `ProviderRow` / `ProviderSetupRow` have no `warning` / `available` fields
Problem Summary
Upstream extended the provider readiness model to distinguish three states:
- Ready — provider status is `"static"` or similar fully-ready value
- Expiring — provider auth expires soon (status `"expiring"`); shown as a warning but not fully failed
- Unavailable/Warning — provider is missing, requires setup, or has a non-ready status
Concretely:
- `GatewayModelSummary` gets an `available: Boolean?` flag from the gateway JSON
- `readyModelProviderCount(providers, models)` counts providers that have ≥1 available model
- `expiringModelProviderCount(providers)` counts providers with `"expiring"` status
- `CommandPalette` subtitle shows "N providers expiring" when nothing is fully ready
- Home screen (ShellScreen) shows an attention row "Provider auth expires soon" for expiring providers
- `ProviderRow` renders in attention/warning color when `available == false` or `warning == true`
Implementation Checklist
Acceptance Criteria
- When a provider auth is expiring, Command Palette shows "N providers expiring" subtitle
- Home screen shows "Provider auth expires soon" attention row for expiring providers
- Unavailable/warning providers render with warning color in Provider list
- `readyModelProviderCount` and `expiringModelProviderCount` pass unit tests
- `expiringProviderStatusIsNotFullyReady` assertion passes
Test Steps
- Connect a gateway with a provider whose auth is near expiry (status `"expiring"`)
- Open Command Palette — subtitle should say "N providers expiring" (not "N providers ready")
- Check home/overview screen — attention row "Provider auth expires soon" should appear
- Open Providers list — the expiring provider row should render with warning styling
- Check a provider with `available = false` — row should appear in attention/warning color
Parity Gap
Upstream source: `openclaw/openclaw`
Files changed (combined):
Related: #715 covers the earlier `modelProviderReady()` helper; this issue tracks the follow-up availability/expiry state layer.
Current app: `yuga-hashimoto/openclaw-assistant`
Problem Summary
Upstream extended the provider readiness model to distinguish three states:
Concretely:
Implementation Checklist
Acceptance Criteria
Test Steps