release: bump version to 0.58.0
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / delivery (push) Has been cancelled
release / images (push) Has been cancelled

Release 0.58.0 includes the Earth high-precision boundary PMTiles/MVT pipeline, standardized Earth boundary source collectors, China POV boundary configuration templates, and removal of the legacy low-precision GeoJSON fallback. It also adds Earth news target-location queueing/archive support, fixes datasource task status visibility, documents the Earth surface depth-spacing rules that prevent far-zoom z-fighting snow/black blocks, and updates bilingual operations/developer docs.
This commit is contained in:
linkong
2026-05-15 17:40:07 +08:00
parent dd176a6ae6
commit 93eb41a9f7
75 changed files with 5217 additions and 716 deletions

View File

@@ -303,7 +303,7 @@ export default function AISettings() {
nextSecret === savedPreview ||
nextSecret === revealedSecret ||
nextSecret.startsWith('••••') ||
nextSecret.includes('*')
Array.from(nextSecret).every((char) => char === '*' || char === '•' || /\s/.test(char))
)
const buildAiProviderDraftPayload = (values: any) => {
@@ -381,9 +381,11 @@ export default function AISettings() {
setFeedback({ type: 'success', message: 'AI 配置已保存' })
message.success('AI 配置已保存')
await fetchAISettings()
} catch {
setFeedback({ type: 'error', message: 'AI 配置保存失败' })
message.error('AI 配置保存失败')
} catch (error: unknown) {
const err = error as { response?: { data?: { detail?: string; message?: string } } }
const errorMessage = err.response?.data?.message || err.response?.data?.detail || 'AI 配置保存失败'
setFeedback({ type: 'error', message: errorMessage })
message.error(errorMessage)
} finally {
setSaving(false)
}
@@ -591,12 +593,8 @@ export default function AISettings() {
buildAiProviderDraftPayload(values),
)
if (response.data.success || response.data.connected) {
if (response.data.integrations) {
setIntegrations(response.data.integrations)
await fetchAISettings()
}
setFeedback({ type: 'success', message: response.data.message || 'AI Provider 连接成功' })
message.success(response.data.message || 'AI Provider 连接成功')
setFeedback({ type: 'success', message: response.data.message || '连接测试通过' })
message.success(response.data.message || '连接测试通过')
} else {
setFeedback({ type: 'error', message: response.data.message || 'AI Provider 连接失败' })
message.error(response.data.message || 'AI Provider 连接失败')
@@ -680,6 +678,9 @@ export default function AISettings() {
)}
/>
</Form.Item>
<div style={{ marginTop: -16, marginBottom: 12 }}>
<Text type="secondary"></Text>
</div>
<Form.Item name={['ai_provider', 'provider_api']} label="协议适配">
<Select>
<Select.Option value="openai-completions">OpenAI Chat Completions</Select.Option>
@@ -819,6 +820,9 @@ export default function AISettings() {
onTest={() => { void testWebSearchConnection() }}
/>
</Form.Item>
<div style={{ marginTop: -16, marginBottom: 12 }}>
<Text type="secondary"></Text>
</div>
<Form.Item label="WebSearch API Key">
<Space direction="vertical" style={{ width: '100%' }}>
<Space>