# Changelog v1.0.5 ### Features - Email notifications for report submitters - Confirmation email sent to reporter when a bug report is submitted - Status change email sent to reporter when report status is updated (includes old/new status) - Ad-hoc messaging: admins can send direct messages to reporters from the report detail page - Optional message attachment when resolving a report (included in status change email) - Reporter message history displayed as a timeline in the Admin Console - CC sender option when composing reporter messages - Three new customizable email templates: reporter confirmation, status change, and direct message - Per-project `notifyReporter` setting to control automatic reporter emails (default: enabled) ### Improvements - Improved responsive layout and readability on small screens (mobile view) - Extended widget dialog color customization with background, secondary, input, and foreground colors for both light and dark modes - License Status card in Admin Console now shows customer email and license issue date - License expiry displays "Never" for non-expiring licenses instead of a far-future date - License dates use a readable format (e.g. "March 22, 2026") ### Fix - Widget theme (dark/light) now correctly follows the host website or system preference when set to auto. - User is no longer logged out after changing their password in Profile Settings. The current session is preserved while all other sessions are invalidated. - Widget launcher button now correctly hides the icon when set to "No Icon" in project-level settings. Nullable fields (icon, text, tooltip) were being overridden by global defaults due to nullish coalescing treating explicit `null` as unset. - Enterprise license now correctly unlocks S3 Storage and Email Templates features. Fixed feature name mismatch (`email-templates` vs `custom-templates`) and added automatic feature granting for the enterprise plan. - Enterprise license is now persisted to the database and survives Docker container updates. Previously, the license was only stored in memory and lost on restart. - Admin Console no longer crashes when duplicating a browser tab after a deployment. Stale chunk imports are caught and the page reloads automatically to fetch the latest assets. - Fix typed mocks in `reporter-email.test.ts` (properly typed `SendEmailOptions` spy) ### Security - Server-side file upload validation: MIME type allowlist, magic bytes verification, and configurable size limits - Invalid or oversized files are rejected before being saved to disk ### Settings - Separate configurable upload size limits for images and videos (Admin Console > Screenshot Settings) - New settings: Max Image Upload Size (default 10 MB), Max Video Upload Size (default 50 MB, up to 500 MB) - Widget dynamically reflects configured size limits in validation messages and helper text - Default max screenshot capture size changed from 10 MB to 5 MB ### Internal - Add `tests/server/tsconfig.json` so server test files are covered by TypeScript type checking in the IDE - Add test suites for reporter email, reporter messages service, reporter notifications, and reporter messages routes - Version stamping in Docker builds and beta tag support in CI/CD workflows - Remove unused exports and dead code flagged by knip (12 items across 8 files) - Delete unused `SettingsUpdateInput` type and `WebhookService` interface