Refactor the frontend styling to use consistent design tokens and remove the hand-drawn/rotated aesthetic in favor of a cleaner, more standard UI.
- Replace hardcoded colors and border radii with CSS variables (e.g., `--default-border-color`, `--border-radius-lg`).
- Remove `transform: rotate(...)` and manual `box-shadow` offsets from various components (Sidebar, Dashboard, TemplatePicker, etc.).
- Update `Dashboard` to use a standard `ProgressBar` instead of a hand-drawn SVG chart.
- Standardize font families to use `--ui-font`.
- Clean up `TemplatePicker` logic to properly handle element grouping.
- Remove stale test result files and update `.last-run.json`.
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
- Remove stale cloudflare-worker submodule entry from .gitmodules
- Remove .git dirs from cf-kv and excalidraw-libraries so Git tracks them as regular files
- Fixes 'No url found for submodule path cf-kv' CI error
- 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