sync: claim removal fix, auto-crawl email, progress bar, search optimization

- Fix claim removal request flow
- Add email notification on auto-crawl skill discovery
- Add progress bar component
- Optimize Meilisearch sync and search indexing
- Improve skill parser and queries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
airano
2026-02-22 04:58:01 +03:30
parent b05cb21a65
commit 0713607693
15 changed files with 352 additions and 14 deletions

View File

@@ -55,6 +55,8 @@ interface ClaimFormProps {
success: {
title: string;
description: string;
pendingTitle: string;
pendingDescription: string;
viewRequests: string;
};
addSuccess: {
@@ -161,6 +163,7 @@ export function ClaimForm({ translations }: ClaimFormProps) {
const [isSubmittingRemove, setIsSubmittingRemove] = useState(false);
const [removeError, setRemoveError] = useState('');
const [removeSuccess, setRemoveSuccess] = useState(false);
const [removePending, setRemovePending] = useState(false);
const [removalRequests, setRemovalRequests] = useState<RemovalRequest[]>([]);
const [loadingRemovalRequests, setLoadingRemovalRequests] = useState(false);
@@ -267,6 +270,7 @@ export function ClaimForm({ translations }: ClaimFormProps) {
}
setRemoveSuccess(true);
setRemovePending(data.pending || false);
setSkillId('');
setRemoveReason('');
fetchRemovalRequests();
@@ -438,11 +442,13 @@ export function ClaimForm({ translations }: ClaimFormProps) {
<div className="card p-8 text-center">
<CheckCircle className="w-12 h-12 mx-auto mb-4 text-success" />
<h2 className="text-xl font-semibold text-text-primary mb-2">
{translations.success.title}
{removePending ? translations.success.pendingTitle : translations.success.title}
</h2>
<p className="text-text-secondary mb-6">{translations.success.description}</p>
<p className="text-text-secondary mb-6">
{removePending ? translations.success.pendingDescription : translations.success.description}
</p>
<button
onClick={() => setRemoveSuccess(false)}
onClick={() => { setRemoveSuccess(false); setRemovePending(false); }}
className="btn-secondary"
>
{translations.success.viewRequests}