From 9b5dd2553fc70eafae2fda48db3d91dbc3023592 Mon Sep 17 00:00:00 2001 From: NessZerra Date: Tue, 21 Jul 2026 10:04:14 +0700 Subject: [PATCH] feat: port deferred 0.44/0.45 providers and serve LAN auth - Add ai& (aiand) spend-only API provider with logs pagination - Gate codexbar serve /usage and /cost with dashboard bearer token - Require token + --allow-plain-http for non-loopback --host - Soft-remove Kimi K2 and CrossModel from Settings unless enabled --- .../src-tauri/src/commands/bridge.rs | 7 + .../src/commands/provider_settings.rs | 17 +- .../providers/icons/ProviderIcon-aiand.svg | 6 + .../src/components/providers/providerIcons.ts | 6 + apps/desktop-tauri/src/surfaces/TrayPanel.tsx | 2 +- .../surfaces/settings/tabs/ProvidersTab.tsx | 1 + .../desktop-tauri/src/test/providerCatalog.ts | 5 +- apps/desktop-tauri/src/types/bridge.ts | 1 + rust/src/cli/serve.rs | 356 +++++++++++++- rust/src/core/credential_migration.rs | 1 + rust/src/core/provider.rs | 65 ++- rust/src/core/provider_factory.rs | 17 +- rust/src/core/token_accounts.rs | 10 + rust/src/providers/aiand/mod.rs | 457 ++++++++++++++++++ rust/src/providers/mod.rs | 2 + rust/src/settings/api_keys.rs | 9 + rust/src/settings/tests.rs | 1 + 17 files changed, 922 insertions(+), 41 deletions(-) create mode 100644 apps/desktop-tauri/src/components/providers/icons/ProviderIcon-aiand.svg create mode 100644 rust/src/providers/aiand/mod.rs diff --git a/apps/desktop-tauri/src-tauri/src/commands/bridge.rs b/apps/desktop-tauri/src-tauri/src/commands/bridge.rs index 96fa06179c..7ea4bc5078 100644 --- a/apps/desktop-tauri/src-tauri/src/commands/bridge.rs +++ b/apps/desktop-tauri/src-tauri/src/commands/bridge.rs @@ -557,9 +557,16 @@ impl From for SettingsSnapshot { } pub(crate) fn provider_catalog_for(settings: &Settings) -> Vec { + // Soft-removed providers (upstream #2254) stay hidden in Settings unless already enabled. settings .provider_display_order() .into_iter() + .filter(|provider| { + !provider.is_deprecated() + || settings + .enabled_providers + .contains(provider.cli_name()) + }) .map(|provider| ProviderCatalogEntry { id: provider.cli_name().to_string(), display_name: provider.display_name().to_string(), diff --git a/apps/desktop-tauri/src-tauri/src/commands/provider_settings.rs b/apps/desktop-tauri/src-tauri/src/commands/provider_settings.rs index 2661b58f0d..9e2730ddc9 100644 --- a/apps/desktop-tauri/src-tauri/src/commands/provider_settings.rs +++ b/apps/desktop-tauri/src-tauri/src/commands/provider_settings.rs @@ -25,11 +25,18 @@ pub(crate) fn build_provider_summaries(settings: &Settings) -> Vec