feat(legal): imprint & privacy notices, "Über MindSift"

- LEGAL_IMPRINT_/LEGAL_PRIVACY_ URL and Markdown (inline or *_FILE);
  only http(s) URLs accepted
- /auth/status exposes legal info; public GET /legal/{imprint|privacy}
- Links on login/setup screen and in the settings footer: URL opens a new
  tab, Markdown a reading modal; hidden when nothing is configured
- "Über MindSift" modal (version, license, repository) in settings and help
- Docs and compose/env examples

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
sandrodachandClaude Opus 5.5 committed 2026-10-28 23:10:27 +01:00
1 parent a62b204e14
commit d6c70d7a8e
17 files changed
+318 -2

No files matched your search

+9
View File
@@ -28,6 +28,7 @@ import {
Flame,
Check,
} from 'lucide-react';
import { AboutModal } from '../../components/AboutModal';
interface HelpViewProps {
onBack?: () => void;
@@ -55,6 +56,7 @@ interface DocCard {
export const HelpView: React.FC<HelpViewProps> = ({ onBack }) => {
const [activeCategory, setActiveCategory] = useState<HelpCategory>('all');
const [searchQuery, setSearchQuery] = useState('');
const [showAbout, setShowAbout] = useState(false);
// Documentation sections & cards data
const cards: DocCard[] = useMemo(
@@ -876,6 +878,13 @@ export const HelpView: React.FC<HelpViewProps> = ({ onBack }) => {
</div>
</div>
)}
<div className="flex justify-center pt-2">
<button type="button" onClick={() => setShowAbout(true)} className="text-[11px] text-muted hover:text-main hover:underline underline-offset-2">
Über MindSift
</button>
</div>
{showAbout && <AboutModal onClose={() => setShowAbout(false)} />}
</div>
);
};