- Renamed 'Data notice (GDPR)' to 'Privacy Notice' in email modal
- Removed redundant last sentence from privacy notice
- Analysis button larger, bolder, uppercase so it is easy to spot
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- emails.json now stores {email, token, retained} dicts instead of strings
- Confirmation email contains a personalised /keep/<token> link
- Clicking the link marks retained=True in emails.json and shows a
confirmation page to the attendee
- Delete and Notify All skips retained emails entirely, only notifies
and removes those with retained=False
- Admin page splits emails into Retained (opted in) and Pending deletion
with colour-coded counts
- Added BASE_URL env var for constructing keep-links in emails
- Backward-compatible: old plain-string emails.json is migrated on load
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Attendee immediately receives a data-retention notice on email capture,
explaining purpose, deletion deadline (10 July 2026), and how to reply
KEEP if they want their contact retained
- Admin page: Send Full Report to All button (purple) triggers the PDF
report to all collected addresses after the conference
- Admin page: Delete and Notify All button (red) emails each address a
deletion confirmation then wipes emails.json, completing the GDPR cycle
- send_deletion_confirmation() notifies under GDPR Article 17 before data
is removed
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Email modal now shows a plain-language GDPR data notice before the
input field, with an explicit consent checkbox that must be ticked
before the submit button becomes active
- Added DATA_GOVERNANCE.md covering legal basis, purpose, retention,
data subject rights, and deletion deadlines for audit compliance
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Flask poll app for the Hi-Acts 3rd Network Meeting at DESY Hamburg,
10 June 2026. Includes 11-question poll, live D3 bubble chart display,
7-page PDF analysis report, admin dashboard, and CSV export.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>