64 Commits
Author SHA1 Message Date
LaurensBartelds 54a0ede92a feat: implement AI usage tracking and quota management with daily usage records
Test / backend (push) Failing after 1m6s
Test / frontend (push) Successful in 34s
2026-05-05 15:37:17 +02:00
LaurensBarteldsandCopilot 1a37209f72 feat: add resend verification email functionality and related schemas
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 27s
Release Pipeline / build-and-release (push) Successful in 5m55s
Co-authored-by: Copilot <copilot@github.com>
2026-05-02 21:03:56 +02:00
LaurensBartelds 25e590639a fix: update email verification endpoint and improve error handling in apiFetch 2026-05-02 20:58:31 +02:00
LaurensBartelds f6d97baeb5 fix: rename graded prop to avoid naming conflict in GrammarCorrection component
Test / backend (push) Successful in 14s
Test / frontend (push) Successful in 28s
Release Pipeline / build-and-release (push) Successful in 5m55s
2026-05-02 20:01:27 +02:00
LaurensBartelds b58500901a feat: add markdown rendering support with marked and integrate into Tex component
Test / backend (push) Successful in 13s
Test / frontend (push) Failing after 21s
2026-05-02 19:57:42 +02:00
LaurensBartelds e906951b06 feat: add new question types and components for fill-in-the-blanks, true/false, code submission, dropdown completion, numeric range, dictation, grammar correction, and flashcards
Test / backend (push) Successful in 13s
Test / frontend (push) Failing after 19s
- Updated QuestionRenderer to support new question types.
- Added FillInTheBlanks, TrueFalse, CodeSubmission, DropdownCompletion, NumericRange, Dictation, GrammarCorrection, and Flashcard components.
- Enhanced grading logic to handle new question types.
- Updated translations for new question types in English and Dutch.
- Added CSS styles for new components and question types.
- Extended Question and related types to accommodate new configurations and answers.
2026-05-02 19:25:28 +02:00
LaurensBartelds a78fb8efc3 feat: add download instructions functionality and UI integration in Workspace component
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 26s
2026-05-02 18:25:03 +02:00
LaurensBartelds a40bfa7838 feat: implement overflow menu for exam actions in MyExams component
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 27s
Release Pipeline / build-and-release (push) Successful in 5m43s
2026-05-02 17:50:21 +02:00
LaurensBartelds 26041cba1e feat: remove import URL functionality from Overview component
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 27s
2026-05-02 17:42:50 +02:00
LaurensBartelds 63aa9b572a feat: integrate AI features for question generation and tutoring
Test / backend (push) Failing after 14s
Test / frontend (push) Failing after 19s
- Added AI routes for generating questions, providing hints, and tutor chat functionality.
- Implemented AI client setup and model retrieval in aiClient.ts.
- Created aiAssist.ts for handling AI-related operations including question generation and hint retrieval.
- Updated services to utilize the new AI client and assist functions.
- Enhanced frontend components to support AI question generation and tutor chat, including UI for generating questions and displaying hints.
- Added localization strings for new AI features in English and Dutch.
- Updated exam review process to include AI-generated hints and tutor chat functionality.
2026-05-02 17:22:56 +02:00
LaurensBartelds 1ec1633dd9 feat: add collections management and study coach features
Test / backend (push) Failing after 13s
Test / frontend (push) Successful in 25s
- Implemented collection repository with CRUD operations for user collections.
- Created routes for managing collections, including listing, creating, updating, and deleting collections.
- Added sharing functionality for exams, allowing users to share and clone exams.
- Developed a study coach service that analyzes exam results and provides study tips based on weak areas.
- Introduced frontend components for managing collections, sharing exams, and displaying study coach insights.
- Enhanced user experience with loading states and error handling in shared components.
2026-05-02 16:55:08 +02:00
LaurensBartelds 201d21a678 feat: add AI grading test endpoint and update connection logic
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 24s
Release Pipeline / build-and-release (push) Successful in 5m26s
2026-05-02 13:46:49 +02:00
LaurensBartelds 993265318b feat: integrate AI grading functionality
Test / backend (push) Successful in 16s
Test / frontend (push) Successful in 24s
Release Pipeline / build-and-release (push) Successful in 5m22s
- Added OpenAI package to backend dependencies for AI grading.
- Implemented new grading routes and services to handle AI grading requests.
- Updated admin settings to include AI provider configuration options.
- Enhanced frontend components to support AI grading, including UI for testing AI connection and displaying AI feedback.
- Updated results component to allow for AI-assisted grading and display of suggested grades.
- Added internationalization support for new AI grading features in both English and Dutch.
2026-05-02 12:41:53 +02:00
LaurensBartelds 95cf0db5a4 feat: add retake attempt functionality and update translations for retake button
Test / backend (push) Successful in 15s
Test / frontend (push) Successful in 27s
Release Pipeline / build-and-release (push) Successful in 5m24s
2026-04-27 20:22:17 +02:00
LaurensBartelds 028c732716 feat: add redo functionality for failed exam questions and update translations
Test / backend (push) Successful in 14s
Test / frontend (push) Successful in 24s
2026-04-27 20:15:28 +02:00
LaurensBartelds acbcfde617 feat: add storage management features including user storage quota and usage tracking
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 24s
- Updated database schema to include `storage_quota_bytes` and `plan` for users.
- Implemented storage usage calculations in `storageRepo` and added tests for storage functionality.
- Created `StorageManager` component to display and manage user storage.
- Enhanced user settings to show storage details and warnings for high usage.
- Added translations for new storage-related strings in English and Dutch.
- Updated styles for storage overview and details in CSS.
2026-04-27 15:29:43 +02:00
LaurensBartelds 4935251125 feat: implement retake exam functionality and update translations for exam status
Test / backend (push) Successful in 12s
Test / frontend (push) Successful in 23s
2026-04-27 11:28:01 +02:00
LaurensBartelds 95603f93a0 refactor: update result schemas and tests for improved state management and feedback modes
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 24s
Release Pipeline / build-and-release (push) Failing after 6s
2026-04-26 23:54:56 +02:00
LaurensBartelds ae8a01bc54 refactor: remove max-width constraint from workspace main layout 2026-04-26 23:31:20 +02:00
LaurensBartelds 2b7939d478 feat: enhance exam loading functionality with examId support and update UI components
Test / backend (push) Successful in 14s
Test / frontend (push) Successful in 24s
2026-04-26 23:25:24 +02:00
LaurensBartelds 50efba6f34 feat: implement tweaks context for user preferences and remove TweaksPanel component
Test / backend (push) Successful in 12s
Test / frontend (push) Successful in 23s
2026-04-26 23:16:21 +02:00
LaurensBartelds 92c1de650a feat: add language selection feature to settings and update translations
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 23s
2026-04-26 23:04:39 +02:00
LaurensBartelds 83bb412b35 feat: enhance setup process with SMTP configuration and token generation
Test / backend (push) Successful in 12s
Test / frontend (push) Successful in 23s
fix: require authentication for certain routes and improve exam data handling
chore: update .gitignore to include additional database files
2026-04-26 22:53:00 +02:00
LaurensBartelds e9c0a2615a feat: add i18next and react-i18next for internationalization support
Test / backend (push) Successful in 12s
Test / frontend (push) Failing after 5s
2026-04-26 21:59:06 +02:00
LaurensBartelds 98bba73192 fix: update comments in latex utility and refactor variable declaration for clarity
Test / backend (push) Successful in 13s
Test / frontend (push) Failing after 16s
2026-04-26 21:53:37 +02:00
LaurensBartelds ef8fe6f938 feat: enhance testing framework with new test cases and configurations
Test / backend (push) Failing after 9s
Test / frontend (push) Failing after 14s
2026-04-26 21:45:02 +02:00
LaurensBartelds 6277826472 Add internationalization support with English and Dutch translations
- Integrated i18next for language detection and translation support.
- Added English and Dutch JSON translation files for various app sections.
- Updated TweaksPanel and Workspace components to use translated strings.
- Imported i18n configuration in main entry file.
2026-04-26 21:19:47 +02:00
LaurensBartelds c64cdcd9e3 feat: Implement API modules for admin, auth, exam, result, and setup functionalities
- Created adminApi.ts for admin-related operations including user management and site settings.
- Developed authApi.ts for authentication processes such as registration, login, and profile management.
- Added examApi.ts for handling exam CRUD operations.
- Introduced resultApi.ts for managing results submission and retrieval.
- Established setupApi.ts for initial setup processes and status checks.
- Created ErrorBoundary component to handle rendering errors gracefully in the frontend.
- Re-exported shared API utilities in index.ts for easier access.
2026-04-26 20:10:46 +02:00
LaurensBartelds 62af83ce53 feat: add MyExams, MyResults, Settings, and Workspace components
Release Pipeline / build-and-release (push) Failing after 41s
- Implemented MyExams component for managing user exams, including loading, deleting, and creating new exams.
- Created MyResults component to display user results with options to review and delete results.
- Developed Settings component for updating user display name and changing password.
- Introduced Workspace component to serve as a container for MyExams, MyResults, and Settings, with navigation between tabs.
2026-04-25 20:20:23 +02:00
LaurensBartelds ad777ef1c3 feat: implement setup wizard for initial configuration and user registration 2026-04-25 16:48:23 +02:00
LaurensBartelds 4f33444653 fix: update exam route parameter format and improve question index calculation
Release Pipeline / build-and-release (push) Successful in 5m29s
2026-04-25 16:18:07 +02:00
LaurensBartelds 29d9264cfb feat: optimize state updates using flushSync for smoother exam transitions
Release Pipeline / build-and-release (push) Successful in 5m52s
2026-04-25 13:30:34 +02:00
LaurensBartelds 107ebf4d47 feat: implement admin dashboard with site settings, user management, and activity monitoring 2026-04-25 00:14:57 +02:00
LaurensBartelds 4eeacc38c5 feat: replace screen state machine with React Router v7 URL routing
Release Pipeline / build-and-release (push) Successful in 5m24s
- Install react-router-dom
- Add slugify utility with full TDD test suite (7 tests)
- Wrap app in BrowserRouter in main.tsx
- Add optional onNavigate prop to ExamRunner.goTo
- Create ExamRoute component (deep-link restore + back/forward sync)
- Migrate App.tsx: replace screen useState with <Routes>, all setScreen()
  calls replaced with navigate(), add activateExam for deep-link activation,
  use useLocation for verify/reset-password special layouts
- Remove unused AppScreen type from types.ts
2026-04-24 23:55:52 +02:00
LaurensBartelds 283f5826ae fixed actions
Release Pipeline / build-and-release (push) Failing after 52s
2026-04-23 14:18:54 +02:00
LaurensBartelds 53abe32795 feat: implement admin dashboard with site settings, user management, and activity monitoring 2026-04-22 23:28:40 +02:00
LaurensBartelds c4c1e1a45a feat: add notes functionality to exam state and update UI for note-taking 2026-04-22 22:48:24 +02:00
LaurensBartelds d0b1ac0145 fix: update font imports and adjust color variables for improved accessibility 2026-04-22 22:32:11 +02:00
LaurensBartelds b91d5769fe feat: implement landing page with file upload, sample loading, and comprehensive JSON schema documentation 2026-04-21 23:13:53 +02:00
LaurensBartelds 5c7b0bdb45 feat: add interactive matching question component with responsive connection lines and styles 2026-04-21 23:04:39 +02:00
LaurensBartelds eb013d4978 feat: initialize database and authentication routes in backend 2026-04-21 22:51:22 +02:00
LaurensBartelds be69db04a5 Add SVG icons and TypeScript configuration files
- Introduced a new favicon.svg file for the application.
- Added icons.svg containing various SVG symbols for UI components.
- Created tsconfig.app.json for frontend TypeScript configuration with ES2023 target and bundler mode.
- Established tsconfig.json to reference app and node configurations.
- Implemented tsconfig.node.json for Node.js specific TypeScript settings.
2026-04-21 22:19:06 +02:00
LaurensBarteldsandClaude Sonnet 4.6 8420e6cae0 fix: final review fixes — key props, fetch guard, highlightCode placeholder strategy
- Add key={q.id} to QuestionRenderer in ExamRunner and Results to reset
  component state (Match activeLeft, OrderQuestion init) between questions
- Add r.ok check in Landing.loadSample to surface HTTP errors before JSON parse
- Add validateExam call in loadSample (was missing — could pass malformed JSON)
- Rewrite highlightCode with placeholder strategy: extract comment/string spans
  before applying keyword/number/fn regexes so later passes don't corrupt
  previously-injected span attributes; use PUA char + word-wrapped index
  to avoid SonarLint S6324 and prevent digit regex matching index numbers
- Change Landing dropzone from div[role=button] to native button (S6819)
- Change sample cards from div[onClick] to button elements (S6848/S1082)
- Wrap Landing Props in Readonly<> (S6759)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 22:18:11 +02:00
LaurensBartelds 2b12223da6 fix: resolve tsc-b build errors (Tex JSX type, Essay index sig, ExamRunner closure, vitest config) 2026-04-21 22:00:38 +02:00
LaurensBartelds 61496b4b2f feat: add TweaksPanel and App controller — platform complete 2026-04-21 21:56:58 +02:00
LaurensBartelds cbe4e6058c feat: add Results/Review screen 2026-04-21 21:54:37 +02:00
LaurensBartelds 62f714a4a4 fix: make revealed optional in ExamState; fix keyboard handler stale closure; fix navStatus fallthrough 2026-04-21 21:53:33 +02:00
LaurensBartelds 7217cd3a28 feat: add ExamRunner screen 2026-04-21 21:51:34 +02:00
LaurensBartelds ef05f2c08b fix: add validateExam to loadSample; use native button for dropzone accessibility 2026-04-21 21:50:07 +02:00
LaurensBartelds 24d47e1830 feat: add Landing screen 2026-04-21 21:48:06 +02:00