docs(faces): link the face-recognition guidance from where people look (#1125)

Every other feature routes readers to docs.picpeak.app. Face recognition was the
one that either pointed somewhere else or pointed at nothing — poor placement
for the feature with the highest read-before-you-enable burden anything here
ships.

.env.example referenced docs/feature-face-recognition.md, which does not exist —
and creating it is not the fix, because .gitignore:89 ignores docs/feature-*.md
outright, so the file would be invisible to anyone who cloned. That was the only
pointer to legal guidance an operator got while editing the variables that turn
Art. 9 processing on.

Also: the README linked the sidecar's developer README for the feature name and
had no row in the documentation table, docs/single-container.md left readers who
wanted the feature nowhere to go, ml/README.md had no backlink, and the admin
consent callout had no link at all. It does now, inline at the end of the
obligation.

Reported by @Luca-Timo.
This commit is contained in:
Paul Nothaft
2026-08-22 21:38:25 +02:00
committed by GitHub
parent 87115b28e8
commit 25fbefc703
7 changed files with 29 additions and 4 deletions
@@ -19,7 +19,7 @@ import React, { useEffect, useRef, useState } from 'react';
import { useQuery } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { toast } from 'react-toastify';
import { Users, RefreshCw, Trash2, AlertTriangle, ShieldCheck, SlidersHorizontal } from 'lucide-react';
import { Users, RefreshCw, Trash2, AlertTriangle, ShieldCheck, SlidersHorizontal, ExternalLink } from 'lucide-react';
import { PeopleManagerModal } from './PeopleManagerModal';
import { Button, Card, Loading } from '../common';
@@ -280,6 +280,20 @@ export const FaceRecognitionCard: React.FC<FaceRecognitionCardProps> = ({ eventI
defaultValue:
'Detected faces are personal data, and in the EU they count as a special category. You are the controller for this gallery: make sure you have a lawful basis for the people in these photos before switching this on. Nothing leaves your server — detection runs in your own container.',
})}
{/* The guidance is reachable from the one screen where someone is
about to start Art. 9 processing, rather than only from the
README they have not opened (#1125). Inside the consent callout
on purpose: next to the obligation, not filed under help. */}
{' '}
<a
href="https://docs.picpeak.app/features/face-recognition"
target="_blank"
rel="noopener noreferrer"
className="underline font-medium whitespace-nowrap"
>
{t('admin.faces.consentLearnMore', { defaultValue: 'Read the guidance' })}
<ExternalLink size={12} className="inline-block ml-0.5 -mt-0.5" aria-hidden />
</a>
</p>
</div>
+1
View File
@@ -3158,6 +3158,7 @@
"title": "Personen in dieser Galerie",
"subtitle": "Fotos nach den abgebildeten Personen gruppieren, damit Gäste ihre eigenen finden und herunterladen können.",
"consentNotice": "Erkannte Gesichter sind personenbezogene Daten und gelten in der EU als besondere Kategorie. Sie sind für diese Galerie verantwortlich: Stellen Sie sicher, dass Sie eine Rechtsgrundlage für die abgebildeten Personen haben, bevor Sie dies aktivieren. Nichts verlässt Ihren Server — die Erkennung läuft in Ihrem eigenen Container.",
"consentLearnMore": "Hinweise lesen",
"enable": "Personen in dieser Galerie erkennen",
"enableHint": "Vorhandene Fotos werden im Hintergrund durchsucht. Gesichter und ihre numerischen Signaturen werden in Ihrer Datenbank gespeichert; sie sind niemals in Backups oder Exporten enthalten.",
"visible": "Personenleiste für Gäste anzeigen",
+1
View File
@@ -2730,6 +2730,7 @@
"title": "People in this gallery",
"subtitle": "Group photos by the people in them, so guests can find and download their own.",
"consentNotice": "Detected faces are personal data, and in the EU they count as a special category. You are the controller for this gallery: make sure you have a lawful basis for the people in these photos before switching this on. Nothing leaves your server — detection runs in your own container.",
"consentLearnMore": "Read the guidance",
"enable": "Detect people in this gallery",
"enableHint": "Existing photos are scanned in the background. Faces and their numeric signatures are stored in your database; they are never included in backups or exports.",
"visible": "Show the people bar to guests",