chore: bump version to 3.9.0-beta.1

- Update version in package.json, Cargo.toml, tauri.conf.json
- Add CHANGELOG entry for v3.9.0-beta.1 with:
  - Local Proxy Server feature
  - Auto Failover with circuit breaker
  - Skills multi-app support
  - Provider icon colors
  - 25+ bug fixes
- Add proxy feature guide documentation (Chinese)
This commit is contained in:
Jason
2025-12-18 20:53:02 +08:00
parent ae837ade02
commit ec6e113cf2
9 changed files with 276 additions and 23 deletions
+2 -7
View File
@@ -19,13 +19,8 @@ interface ProxyToggleProps {
export function ProxyToggle({ className, activeApp }: ProxyToggleProps) {
const { t } = useTranslation();
const {
isRunning,
takeoverStatus,
setTakeoverForApp,
isPending,
status,
} = useProxyStatus();
const { isRunning, takeoverStatus, setTakeoverForApp, isPending, status } =
useProxyStatus();
const handleToggle = async (checked: boolean) => {
await setTakeoverForApp({ appType: activeApp, enabled: checked });
+4 -4
View File
@@ -40,7 +40,7 @@ export function generateThirdPartyAuth(apiKey: string): Record<string, any> {
export function generateThirdPartyConfig(
providerName: string,
baseUrl: string,
modelName = "gpt-5.1-codex"
modelName = "gpt-5.1-codex",
): string {
// 清理供应商名称,确保符合TOML键名规范
const cleanProviderName =
@@ -113,7 +113,7 @@ requires_openai_auth = true`,
config: generateThirdPartyConfig(
"aihubmix",
"https://aihubmix.com/v1",
"gpt-5.1-codex"
"gpt-5.1-codex",
),
endpointCandidates: [
"https://aihubmix.com/v1",
@@ -128,7 +128,7 @@ requires_openai_auth = true`,
config: generateThirdPartyConfig(
"dmxapi",
"https://www.dmxapi.cn/v1",
"gpt-5.1-codex"
"gpt-5.1-codex",
),
endpointCandidates: ["https://www.dmxapi.cn/v1"],
},
@@ -141,7 +141,7 @@ requires_openai_auth = true`,
config: generateThirdPartyConfig(
"packycode",
"https://www.packyapi.com/v1",
"gpt-5.1-codex"
"gpt-5.1-codex",
),
endpointCandidates: [
"https://www.packyapi.com/v1",
+7 -8
View File
@@ -6,7 +6,11 @@ import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { invoke } from "@tauri-apps/api/core";
import { toast } from "sonner";
import { useTranslation } from "react-i18next";
import type { ProxyStatus, ProxyServerInfo, ProxyTakeoverStatus } from "@/types/proxy";
import type {
ProxyStatus,
ProxyServerInfo,
ProxyTakeoverStatus,
} from "@/types/proxy";
import { extractErrorMessage } from "@/utils/errorUtils";
/**
@@ -82,13 +86,8 @@ export function useProxyStatus() {
// 按应用开启/关闭接管
const setTakeoverForAppMutation = useMutation({
mutationFn: ({
appType,
enabled,
}: {
appType: string;
enabled: boolean;
}) => invoke("set_proxy_takeover_for_app", { appType, enabled }),
mutationFn: ({ appType, enabled }: { appType: string; enabled: boolean }) =>
invoke("set_proxy_takeover_for_app", { appType, enabled }),
onSuccess: (_data, variables) => {
const appLabel =
variables.appType === "claude"