This commit introduces a significant update to both the frontend and backend, focusing on enhanced user engagement and a consistent visual identity.
Key changes include:
- **Frontend UI/UX Refactor**:
- Implemented a "hand-drawn" aesthetic across the entire application using CSS overrides, custom SVG charts, and specific border/shadow styles to match the Excalidraw experience.
- Added a new notification system in the Header to display user updates.
- Enhanced the Template Picker with more variety and improved interaction models.
- Added a "Presentation Mode" in the Editor.
- Improved Dashboard visualizations with hand-drawn style sparklines and charts.
- Added modal dialogs for creating drawings and templates with custom names.
- **Backend & API Enhancements**:
- Implemented full CRUD support for custom templates, allowing users to save their drawings as reusable templates.
- Added a notification service with endpoints to list, mark as read, and mark all as read.
- Updated the API client to handle more robust JSON responses and error states.
- Improved CORS/Origin validation in the HTTP middleware to handle proxy headers (`X-Forwarded-Host`, `X-Forwarded-Proto`) more reliably.
- **Database & Infrastructure**:
- Added a new PostgreSQL migration for the `notifications` table.
- Updated the data models in the workspace to support templates (including snapshot storage) and notifications.
- Updated `.gitignore` to exclude graphify cache and AST files.
Migrate the frontend to ESLint 9, add `eslint.config.mjs`, and replace various `any` types with more specific or safer alternatives across the codebase.
- Update `package.json` with new ESLint and TypeScript-ESLint dependencies
- Replace `any` with `Record<string, unknown>` or specific types in `TemplatePicker`, `Editor`, and `FileBrowser`
- Improve error handling in `TeamSettings` and `Templates` using type guards
- Add explicit type imports for Excalidraw elements in `Editor.tsx`
- Refactor `Modal.tsx` for cleaner conditional logic
- Add `check` script to `package.json` for type checking
- Fix go.mod Go version from invalid 1.25.7 to 1.23
- Fix Dockerfile golang image from 1.25 to 1.23
- Add window.matchMedia mock for jsdom themeStore tests
- Exclude e2e/ from Vitest to prevent Playwright test conflicts
- Add frontend test step to both CI workflows