- Fix QuickStartWizard error matching (services wrap errors in new Error(),
losing err.response; now checks err.message as fallback)
- Add shellEscape() to all remaining unescaped CLI commands (removeUser,
enableUser, disableUser, deletePolicy, attachPolicy, createPolicy)
- Fix inconsistent cookie secure flag in logout endpoint
- Add HTML escaping in email report templates to prevent XSS
- Add IP validation on token refresh to enforce IP binding
- Harden email recipient validation against header injection
- Add CSV injection prevention in report export
- Add JWT_SECRET minimum length validation (32 chars) in production
- Update bcrypt 5.x→6.x, nodemailer 6.x→8.x, fix all backend npm vulns
- Redesign UI: new theme (IBM Plex Sans, MinIO-inspired palette), improved
login page, dashboard with skeleton loaders, refined sidebar navigation
- Add missing i18n keys for login and user menu (DE + EN)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set up i18n infrastructure with react-i18next
- Add German as default language with English fallback
- Create comprehensive translation files for all UI components
- Translate Dashboard, QuickStartWizard, Reports, and navigation
- Add language switcher in app header
- Maintain existing German email template in backend
- Create modular translation structure with namespaces
- Add testing checklist and implementation summary
All user-facing strings in dashboard, quick wizard, and reports
sections are now available in German, fulfilling the requirement
for complete German localization.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add setupProxy.js to proxy API calls to backend container
- Install http-proxy-middleware for development proxy support
- Update docker-compose.dev.yml to use backend service name
- Add HOST=0.0.0.0 to allow external connections to dev server
- Add empty favicon.ico to prevent 500 errors
- Update proxy configuration to use port 7510
This fixes the ERR_CONNECTION_REFUSED errors when the frontend
tries to connect to the backend API in Docker environment.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace deprecated docker-compose with docker compose
- Add package-lock.json files for backend and frontend
- Fix npm ci deployment errors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>