import React, { useMemo } from 'react'; import { Sparkles, X } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { version } from '../../package.json'; import changelogRaw from '../../CHANGELOG.md?raw'; import { renderChangelogBody } from '../utils/changelogMarkdown'; export default function WhatsNew() { const { t } = useTranslation(); const navigate = useNavigate(); const close = () => { if (window.history.length > 1) navigate(-1); else navigate('/'); }; const entry = useMemo(() => { const blocks = changelogRaw.split(/\n(?=## \[)/).filter((b: string) => b.startsWith('## [')); const block = blocks.find((b: string) => b.startsWith(`## [${version}]`)); if (!block) return null; const lines = block.split('\n'); const match = lines[0].match(/## \[([^\]]+)\](?:\s*-\s*(.+))?/); const body = lines.slice(1).join('\n').trim(); return { version: match?.[1] ?? version, date: match?.[2] ?? '', body }; }, []); return (

{t('whatsNew.title')}

v{entry?.version ?? version} {entry?.date && ยท {entry.date}}
{entry ? ( renderChangelogBody(entry.body) ) : (

{t('whatsNew.empty')}

)}
); }