This commit is contained in:
Nicholas-Xiong 2026-05-31 01:23:28 -04:00 committed by GitHub
commit 7f00d74355
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 33 additions and 13 deletions

View file

@ -1364,6 +1364,7 @@ export function MemorySection({
}, [indexDraft, fireFlash]);
const onDeleteExtraction = useCallback(async (id: string) => {
if (!window.confirm(t('settings.memoryExtractionDeleteConfirm'))) return;
// Optimistic removal: drop the row immediately so the click feels
// instant. The SSE 'deleted' event will arrive moments later and is
// a no-op against an already-removed id; if the request fails we
@ -1373,7 +1374,7 @@ export function MemorySection({
if (!ok) {
void reloadExtractions();
}
}, [reloadExtractions]);
}, [reloadExtractions, t]);
const onClearExtractions = useCallback(async () => {
if (!window.confirm(t('settings.memoryExtractionsClearConfirm'))) return;

View file

@ -1685,6 +1685,7 @@ export const ar: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'تثبيت',

View file

@ -1623,6 +1623,7 @@ export const de: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Installieren',

View file

@ -2483,6 +2483,7 @@ export const en: Dict = {
'settings.memoryExtractionWritten': 'written',
'settings.memoryExtractionDuration': 'in',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.memoryExtractionsClearConfirm':

View file

@ -1574,6 +1574,7 @@ export const esES: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Instalar',

View file

@ -1728,6 +1728,7 @@ export const fa: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'نصب',

View file

@ -2347,6 +2347,7 @@ export const fr: Dict = {
'settings.memoryExtractionWritten': 'écrite',
'settings.memoryExtractionDuration': 'en',
'settings.memoryExtractionDelete': 'Supprimer',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Effacer',
'settings.memoryExtractionsClearTitle': 'Effacer tout lhistorique dextraction',
'settings.memoryExtractionsClearConfirm': 'Effacer tout lhistorique des extractions ? Cette action est irréversible.',

View file

@ -1695,6 +1695,7 @@ export const hu: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Telepítés',

View file

@ -1803,6 +1803,7 @@ export const id: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Instal',

View file

@ -1561,6 +1561,7 @@ export const it: Dict = {
'settings.memoryNoProviderBannerBody': 'Nessuna chiave API trovata per l\'estrattore di memoria. Aggiungi una chiave OpenAI sotto Provider di media, o imposta ANTHROPIC_API_KEY / OPENAI_API_KEY nell\'ambiente, per abilitare l\'estrazione guidata da LLM. L\'estrazione euristica regex è ancora attiva.',
'settings.memoryExtractionProviderOverride': 'impostazioni memoria',
'settings.memoryExtractionDelete': 'Elimina',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Cancella',
'settings.memoryExtractionsClearTitle': 'Cancella tutta la cronologia di estrazione',
'settings.libraryInstall': 'Installa',

View file

@ -1622,6 +1622,7 @@ export const ja: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'インストール',

View file

@ -1735,6 +1735,7 @@ export const ko: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': '설치',

View file

@ -1685,6 +1685,7 @@ export const pl: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Zainstaluj',

View file

@ -1726,6 +1726,7 @@ export const ptBR: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Instalar',

View file

@ -1726,6 +1726,7 @@ export const ru: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Установить',

View file

@ -1672,6 +1672,7 @@ export const tr: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Yükle',

View file

@ -1727,6 +1727,7 @@ export const uk: Dict = {
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Встановити',

View file

@ -2433,6 +2433,7 @@ export const zhCN: Dict = {
'settings.memoryExtractionWritten': '写入',
'settings.memoryExtractionDuration': '耗时',
'settings.memoryExtractionDelete': '删除',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': '清空',
'settings.memoryExtractionsClearTitle': '清空整个抽取历史',
'settings.memoryExtractionsClearConfirm': '确定要清空整个抽取历史吗?此操作无法撤销。',

View file

@ -1984,6 +1984,7 @@ export const zhTW: Dict = {
'settings.memoryNoProviderBannerBody': '未找到可用的 API keyLLM 抽取已跳過。可以在媒體提供者裡填入 OpenAI key或設定環境變數 ANTHROPIC_API_KEY / OPENAI_API_KEY 來啟用。啟發式抽取仍在執行。',
'settings.memoryExtractionProviderOverride': '記憶設定',
'settings.memoryExtractionDelete': '刪除',
'settings.memoryExtractionDeleteConfirm': 'Delete this extraction history item? This cannot be undone.',
'settings.memoryExtractionsClear': '清空',
'settings.memoryExtractionsClearTitle': '清空整個抽取歷史',
'settings.libraryInstall': '安裝',

View file

@ -648,6 +648,7 @@ export interface Dict {
'settings.memoryExtractionWritten': string;
'settings.memoryExtractionDuration': string;
'settings.memoryExtractionDelete': string;
'settings.memoryExtractionDeleteConfirm': string;
'settings.memoryExtractionsClear': string;
'settings.memoryExtractionsClearTitle': string;
'settings.memoryExtractionsClearConfirm': string;

View file

@ -1283,10 +1283,10 @@
.home-hero__footer-option--select[data-field-name='designSystem'] .home-hero__footer-select-menu {
left: 0;
bottom: calc(100% + 9px);
width: min(340px, calc(100vw - 32px));
max-width: min(340px, calc(100vw - 32px));
max-height: min(280px, calc(100vh - 240px));
padding: 7px;
width: min(400px, calc(100vw - 32px));
max-width: min(400px, calc(100vw - 32px));
max-height: min(320px, calc(100vh - 240px));
padding: 10px;
border-color: color-mix(in srgb, var(--border) 70%, transparent);
border-radius: 13px;
background: color-mix(in srgb, var(--bg-panel) 98%, white);
@ -1303,7 +1303,7 @@
}
.home-hero__footer-option--select[data-field-name='designSystem'] .home-hero__footer-select-search {
margin: 0;
padding: 0 0 6px;
padding: 0 0 8px;
background: color-mix(in srgb, var(--bg-panel) 98%, white);
}
.home-hero__footer-select-search input {
@ -1321,13 +1321,13 @@
padding: 0 12px;
}
.home-hero__footer-option--select[data-field-name='designSystem'] .home-hero__footer-select-search input {
height: 34px;
height: 38px;
border-color: color-mix(in srgb, var(--border) 74%, transparent);
border-radius: 9px;
color: var(--text);
font-size: 12px;
font-size: 13px;
font-weight: 600;
padding: 0 10px;
padding: 0 12px;
box-shadow:
inset 0 1px 0 color-mix(in srgb, white 70%, transparent),
0 1px 2px rgba(15, 23, 42, 0.04);
@ -1350,7 +1350,7 @@
font-weight: 650;
}
.home-hero__footer-option--select[data-field-name='designSystem'] .home-hero__footer-select-count {
padding: 7px 3px 0;
padding: 8px 3px 0;
color: var(--text-muted);
font-size: 11.5px;
font-weight: 700;
@ -1361,8 +1361,8 @@
border-top: 1px solid color-mix(in srgb, var(--border) 68%, transparent);
}
.home-hero__footer-option--select[data-field-name='designSystem'] .home-hero__footer-select-group + .home-hero__footer-select-group {
margin-top: 6px;
padding-top: 7px;
margin-top: 8px;
padding-top: 8px;
}
.home-hero__footer-select-group-label {
padding: 7px 4px 6px;
@ -1373,7 +1373,7 @@
text-transform: uppercase;
}
.home-hero__footer-option--select[data-field-name='designSystem'] .home-hero__footer-select-group-label {
padding: 3px 3px 5px;
padding: 4px 3px 6px;
color: color-mix(in srgb, var(--text-muted) 82%, transparent);
font-size: 9.5px;
font-weight: 800;