Changelog

A complete history of features, fixes, and improvements across all releases

98
Releases
109
Pull Requests
305
Commits
2
Contributors

Release Groups

  1. v0.12.11 – v0.13.33 — Enterprise Features, Quality & Testing
  2. v0.6.0 – v0.12.5 — i18n, Translations & Data Management
  3. v0.1.0 – v0.5.8 — Dynamic Forms & BI-API v2
  4. v0.0.48 – v0.0.61 — Security & Admin Polish
  5. v0.0.40 – v0.0.47 — Visualization & UX
  6. v0.0.30 – v0.0.39 — Analytics & Infrastructure
  7. v0.0.20 – v0.0.29 — Documentation & Quality
  8. v0.0.10 – v0.0.19 — Core Features
  9. v0.0.1 – v0.0.9 — Foundation

v0.12.11 – v0.13.33 Enterprise Features, Quality & Testing

PR #172 – #210
+ Added
  • Plan/license system with Lago billing integration and template limits
  • Demo mode with auto-reset and restricted rights for trial deployments
  • Health-check endpoint (/api/health) for SLA monitoring
  • Audit log system with automatic action logging via AuditService
  • Scheduled reports with email delivery (ScheduledReport model)
  • Email notification system for new submissions
  • SSO/LDAP provider integration with admin configuration page
  • Self-update and version management system
  • Jump-to-block link from template editor to block editor
  • Block translation status indicator in admin template EN view
  • Slug normalization and validation for blocks and templates
  • Info block on admin user management page explaining roles
  • PHPStan, TypeScript typecheck, Vitest & Prettier as local quality checks
  • TypeScript typecheck added to pre-commit hook
  • 89 new tests across 9 test files covering critical gaps (Settings, Plan, User, Health, Geo controllers)
  • EN translation field for maintenance info text
  • Missing SSO translation keys for DE and EN
  • Missing admin nav items for new enterprise features (developer only)
  • Code quality section in technical documentation
~ Changed
  • BI API endpoints refactored to template-based scoping to prevent data mixing across templates
  • Dashboard labels and chart titles now translate based on active locale
  • Dashboard translation switched from morph relationship to direct Translation query
  • Form submission now sends template_slug instead of defaulting to ‘schnell’
  • Stats grid made responsive for any number of top cards
  • Numeric top cards supported with dashboard flags restricted to aggregatable fields
  • i18n refactor for email-notifications, updates, and organization admin pages
  • White-label: hardcoded eforms.cloud references replaced with dynamic values
Fixed
  • English forms loading: added translations seeder and i18n for hardcoded strings
  • Block editor save stripping optional field properties
  • Translation fallback and block option validation
  • Captcha validation, missing template_slug, and Landkreis field reset
  • HTTPS delivery: mixed content and security headers fixed
  • Maintenance page language switcher
  • Nuxt build error: escaped nested {{ in Vue template expression
  • All TypeScript errors resolved across frontend codebase
  • ESLint errors including unused variables in test files
  • Prettier formatting with .prettierignore for inline event handlers
  • Laravel Pint code style issues in 10+ files
  • AuditService guarded against missing audit_logs table during migrations
  • API token test updated to use template-scoped BI endpoint
Removed
  • Material Design wiki styling (added then reverted due to compatibility issues)

v0.6.0 – v0.12.5 i18n, Translations & Data Management

PR #140 – #171
+ Added
  • Full internationalization (i18n) support with German and English via @nuxtjs/i18n
  • LanguageSwitch component for frontend language toggling
  • LocaleTabs component for bilingual editing in block and template editors
  • useTranslations and useApiLocale composables for translation management and locale-aware API calls
  • TranslationController with 5 API endpoints for CRUD, import, and export of translations
  • Translation model for database-backed multilingual content
  • Locale-aware layout settings (header, footer, sections, buttons per language)
  • AI-powered test data generation via LLM prompt (/admin/testdata/prompt)
  • Test data import from JSON (/admin/testdata/import)
  • Per-template submission clearing (/admin/meldungen/clear-by-template)
  • App name configuration endpoint (/api/app-name, /api/admin/app-name)
  • Editor role added to the role hierarchy (user → editor → admin → developer)
  • SimpleHtmlEditor, ValidationErrors, DashboardViewSelector components
  • DynamicChart component replacing legacy hardcoded chart components
~ Changed
  • Field type count increased from 17 to 18 (added toggle as distinct type)
  • Test data endpoints refactored: /testdata/seed replaced by /testdata/prompt + /testdata/import
  • Block editor and template editor now support bilingual field labels (DE/EN tabs)
  • Layout settings extended with per-locale content for all sections
  • Role system expanded from 3 to 4 roles with editor role
Fixed
  • Locale-aware form rendering with correct language fallback
  • Translation import/export preserving all locale data
  • Dashboard charts adapted to multilingual field labels

v0.1.0 – v0.5.8 Dynamic Forms & BI-API v2

+ Added
  • Dynamic form block system with 17 field types, reusable blocks, and template editor
  • FormRenderer and DynamicField components for rendering forms from templates
  • /meldung/:slug page for dynamic form URLs
  • Template import/export as JSON bundles with block reuse
  • Template duplication (inactive copy)
  • Block editor with drag & drop UI, field previews, and extended field types
  • Developer role with block editor access; Editor role for admin access to templates
  • Dynamic BI-API v2: /bi/felder (field discovery), /bi/daten, /bi/stats/feld/{slug}
  • BiFieldRegistry service for automatic field discovery from form blocks
  • Dashboard template selector with per-template statistics
  • Secure math-based CAPTCHA system (3 difficulty levels, SVG rendering, honeypot)
  • WYSIWYG page layout editor with logo upload (header, footer, content sections)
  • Configurable index page with editable cards, sections, and buttons
  • Pre-commit hooks running Pint, ESLint, and Prettier
  • Comprehensive GitHub Pages documentation update (40+ API endpoints, 17 pages, 25 components)
~ Changed
  • BI-API refactored from static endpoints to dynamic field-based queries
  • Dashboard uses Submission model with JSONB storage instead of FallMeldung
  • Admin sidebar reorganized with grouped sections (Formulare, System)
  • "Seiten" renamed to "Seitendesign" in admin navigation
Fixed
  • Admin messages display adapted to block-based storage logic
  • Middleware guard for block editor and template pages
  • Form scroll behavior when filling required fields
  • CAPTCHA cache fallback and error handling
  • Block editor layout with wider panels and draggable resizers
  • DynamicField Bundesland options and dependency support

v0.0.48 – v0.0.61 Security & Admin Polish

PR #61 – #78
+ Added
  • TOTP-based two-factor authentication (2FA) for the admin area
  • Confirmation modal and "Delete All Reports" bulk action
  • Mobile-ready admin menu with hamburger toggle for small screens
  • Test data seeder generating ~100 realistic incident reports for development
  • Admin sidebar help button linking to GitHub Pages documentation
  • CHANGELOG.md and visual changelog page for GitHub Pages
~ Changed
  • Editable maintenance text via admin HTML editor
  • PR title parsed as fallback for version bump type detection
Fixed
  • Multiple Laravel Pint code style violations (concat_space, blank_line_before_return, single_quote)
  • 2FA encryption failures in CI environment
  • Test data seeder wrapped in DB transaction with error handling

v0.0.40 – v0.0.47 Visualization & UX

PR #50 – #58
+ Added
  • Pie chart toggle for all dashboard widgets (switch between bar and pie views)
  • Tooltips on pie chart segment hover with percentage and count
  • Admin profile page for editing own user data
~ Changed
  • Profile, logout, and version info moved to sidebar footer
Fixed
  • Date formatting in report list (datum_vorfall)
  • Bracket artifacts in Gefaehrdung field display
  • Sidebar footer pushed to bottom with margin-top: auto
  • Notification timestamps display

v0.0.30 – v0.0.39 Analytics & Infrastructure

PR #40 – #49
+ Added
  • BI statistics API with token-based authentication and documentation
  • API token management page in admin panel (generate and revoke tokens)
  • Version number display in admin sidebar
  • Accessibility and BI-API feature cards on GitHub Pages homepage
~ Changed
  • Admin seeder only runs when no admin user exists (skip on re-deploy)
Fixed
  • Dashboard not displaying messages due to double JSON encoding
  • Form submission failure from NOT NULL constraints on optional fields
  • NULL/empty rows filtered in Gewaltart JSON query

v0.0.20 – v0.0.29 Documentation & Quality

PR #26 – #39
+ Added
  • GitHub Pages documentation site (technical docs, user manual, accessibility guide)
  • Pre-commit and pre-push git hooks for lint and test checks
  • Admin panel with role-based access control and user management
  • Frontend accessibility improvements (WCAG 2.1 AA compliance)
  • Inline form validation with field-level error messages
  • Version display on backend welcome page
~ Changed
  • Deployment scripts moved to scripts/ directory
Removed
  • Legacy Django project (3G/ directory)
Fixed
  • ESLint warnings and errors across entire frontend codebase
  • Laravel Pint style issues (single_quote, class_definition)

v0.0.10 – v0.0.19 Core Features

PR #14 – #25
+ Added
  • Semantic versioning (v0.0.1) with auto-bump GitHub Action on PR merge
  • Admin-configurable maintenance mode via database toggle
  • Configurable maintenance page for demo deployments
  • Automated API tests for auth, meldung, dashboard, and anonymization endpoints
  • Quality infrastructure: testing, linting, and coverage tooling
  • Standard project files: README, CONTRIBUTING, LICENSE, Makefile
Fixed
  • Let's Encrypt SSL: activate nginx config after certificate retrieval
  • LETSENCRYPT_DOMAIN and EMAIL read from .env instead of hardcoding
  • Default Laravel ExampleTest removed (failed due to encryption bootstrap)
  • HasFactory trait added to FallMeldung model
  • APP_KEY added to phpunit.xml for test environment

v0.0.1 – v0.0.9 Foundation

PR #1 – #13
+ Added
  • Complete rewrite from Django to Laravel 13 + Nuxt 3
  • CI/CD pipeline with GitHub Actions (syntax checks, tests, deployment)
  • Hetzner Docker deployment with Docker Compose orchestration
  • Let's Encrypt SSL setup with Certbot auto-renewal
  • Nginx reverse proxy configuration
  • Anonymous incident reporting form with multi-step layout
  • PII anonymization service (names, emails, phone numbers, dates, room numbers)
  • Admin login with Laravel Sanctum token authentication
  • Dashboard with incident statistics and report listing
  • Mobile-first responsive form design
Fixed
  • Form submission: map camelCase field names to snake_case
  • Login: correct API endpoint URLs, add HasApiTokens trait
  • Double-hashed password in AdminSeeder
  • SSH deployment: clone script execution on remote server
  • YAML syntax error in deployment workflow