LaurensBartelds
c002f42459
Merge pull request 'feat: implement retake exam functionality and update translations for exam status' ( #2 ) from fixes into main
...
Test / backend (push) Successful in 17s
Test / frontend (push) Successful in 34s
Reviewed-on: #2
2026-04-27 13:08:22 +02:00
LaurensBartelds
af317058fb
Merge pull request 'feat: Implement API modules for admin, auth, exam, result, and setup functionalities' ( #1 ) from refactor into main
...
Test / backend (push) Successful in 12s
Test / frontend (push) Successful in 23s
Reviewed-on: #1
2026-04-27 00:11:28 +02:00
LaurensBartelds
2907197308
fix: update npm ci command to include --legacy-peer-deps for frontend job
Test / backend (push) Successful in 13s
Test / frontend (push) Successful in 24s
2026-04-26 22:01:45 +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
739133e1f4
feat: update dependencies and add dotenv, express-rate-limit, and zod; enhance adminSchemas validation
Test / backend (push) Successful in 14s
Test / frontend (push) Failing after 13s
2026-04-26 21:49:02 +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
a37c093cc4
feat: add CI workflow for backend and frontend tests
Test / backend-tests (push) Failing after 9s
Test / frontend-tests (push) Successful in 9s
2026-04-26 21:23:14 +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
f7b93f8612
feat: enhance user registration with email verification configuration and status handling
2026-04-25 16:31:27 +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
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 and Claude Sonnet 4.6
e97d90e316
docs: add React Router URL routing implementation plan
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 23:48:23 +02:00
LaurensBartelds and Claude Sonnet 4.6
1c13f4849a
docs: add React Router URL routing design spec
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 23:39:06 +02:00
LaurensBartelds
40fe1479f9
fix: update SSH key handling in deploy workflow to remove unnecessary transformations
Release Pipeline / build-and-release (push) Successful in 5m41s
2026-04-24 23:02:21 +02:00
LaurensBartelds
7b4288fe86
fix: update route handling for static files to improve frontend serving
Release Pipeline / build-and-release (push) Successful in 5m36s
2026-04-24 22:52:53 +02:00
LaurensBartelds
9539e3d740
feat: refactor SSH key handling in deploy workflow to use ssh-agent
2026-04-24 22:35:45 +02:00
LaurensBartelds
10ce58fdfe
feat: update deploy workflow to enhance SSH key handling and add git status checks
2026-04-24 22:30:38 +02:00
LaurensBartelds
aeed804460
feat: enhance permissions in settings.local.json and update deploy workflow for SSH key handling
2026-04-24 22:20:08 +02:00
LaurensBartelds
e21610880b
Update release workflow: quotes and asset uploads
Release Pipeline / build-and-release (push) Successful in 5m14s
2026-04-24 16:49:27 +02:00
LaurensBartelds
13bebba16e
feat: add Gitea workflow for automated release building and asset publishing
Release Pipeline / build-and-release (push) Failing after 5m13s
2026-04-24 16:05:53 +02:00
LaurensBartelds
98b9d51d83
feat: add Gitea Actions workflow for automated multi-arch Docker image releases
Release Pipeline / build-and-release (push) Failing after 4s
2026-04-24 16:01:32 +02:00
LaurensBartelds
5b7d31cb34
feat: add Gitea Actions release pipeline to build and publish Docker images
Release Pipeline / build-and-release (push) Failing after 5m56s
2026-04-24 15:52:03 +02:00
LaurensBartelds
376f244035
fix: update permissions in settings.local.json and add .claude/settings.local.json to .gitignore
Release Pipeline / build-and-release (push) Failing after 4m22s
2026-04-24 10:47:24 +02:00
LaurensBartelds and Claude Sonnet 4.6
c4e6219606
fix: revert release creation to softprops/action-gh-release@v2 (without generate_release_notes)
...
Manual curl approach silently dropped large tar.gz files due to Gitea's
attachment size limit. The action handles large file uploads correctly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 10:46:56 +02:00
LaurensBartelds and Claude Sonnet 4.6
34410a9cb8
fix: add verbose output to release asset uploads for debugging
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 10:44:14 +02:00
LaurensBartelds and Claude Sonnet 4.6
18b76f2350
fix: replace wget with curl in deploy, fix release asset upload to use multipart/form-data
...
Release Pipeline / build-and-release (push) Successful in 4m21s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 10:13:22 +02:00
LaurensBartelds and Claude Sonnet 4.6
865c21d023
fix: add --break-system-packages for pip ansible install on PEP 668 runners
...
Release Pipeline / build-and-release (push) Successful in 4m20s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 09:40:00 +02:00
LaurensBartelds
1e0429314b
Merge branch 'main' of https://git.gzmn.nl/LaurensBartelds/brainwave
Release Pipeline / build-and-release (push) Successful in 4m20s
2026-04-24 09:33:02 +02:00
LaurensBartelds
029e29f1d4
feat: extend permissions in settings.local.json for Python and YAML processing
2026-04-24 09:32:49 +02:00
LaurensBartelds
0a5caab064
fix: derive release tag from Gitea API instead of head_branch
2026-04-24 09:30:21 +02:00
LaurensBartelds
28e8c8c375
fix: harden deploy workflow (if guard, wget --fail, pip ansible, secret cleanup)
2026-04-24 09:27:55 +02:00
LaurensBartelds
5a96a3c5b7
feat: add deploy workflow to push ARM release to OrangePi via Ansible
2026-04-24 09:24:32 +02:00
LaurensBartelds
6a3e2ed4d1
fix: use ansible_user for deploy path and add changed_when guards
2026-04-24 09:22:55 +02:00
LaurensBartelds
2cbc710fb2
feat: add Ansible playbook for ARM deploy to OrangePi
2026-04-24 08:46:12 +02:00
LaurensBartelds and Claude Sonnet 4.6
76c1fd6347
docs: add implementation plan for ARM deploy to OrangePi via Ansible
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 08:43:33 +02:00
LaurensBartelds and Claude Sonnet 4.6
ce4bb97215
docs: add ARM deploy to OrangePi via Ansible design spec
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 08:41:30 +02:00
LaurensBartelds
fb6cf1fedd
Update .gitea/workflows/release.yml
Release Pipeline / build-and-release (push) Successful in 4m25s
2026-04-24 00:24:56 +02:00
LaurensBartelds
162c404ff7
feat: enhance Docker build process with multi-architecture support and compose file generation
Release Pipeline / build-and-release (push) Failing after 4m41s
2026-04-23 23:16:18 +02:00
LaurensBartelds
34f16d3439
fix: remove generate_release_notes to fix Gitea 405 error
Release Pipeline / build-and-release (push) Successful in 41s
2026-04-23 15:03:58 +02:00
LaurensBartelds
283f5826ae
fixed actions
Release Pipeline / build-and-release (push) Failing after 52s
2026-04-23 14:18:54 +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
LaurensBartelds and Claude 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
LaurensBartelds
49cf77633c
feat: add QuestionRenderer dispatcher
2026-04-21 21:46:19 +02:00
LaurensBartelds
535bdb5a50
fix: remove stale value check from OrderQuestion initial; guard wrong class in Match
2026-04-21 21:45:31 +02:00
LaurensBartelds
e48e37ad87
feat: add Essay, Match, and OrderQuestion renderers
2026-04-21 21:43:30 +02:00
LaurensBartelds
82ba53da0e
feat: add ShortAnswer and MathInput renderers
2026-04-21 21:41:37 +02:00
LaurensBartelds
2a59f13870
fix: use Array.isArray guard instead of unsafe cast in MultipleSelect
2026-04-21 21:40:41 +02:00
LaurensBartelds
535434421a
feat: add MultipleChoice and MultipleSelect renderers
2026-04-21 21:38:58 +02:00
LaurensBartelds
b5e53c97e6
feat: add QuestionMedia with DOMPurify SVG sanitization
2026-04-21 21:37:27 +02:00
LaurensBartelds and Claude Sonnet 4.6
b0efb524b1
fix: escape plain text in renderLatex; add latex utility tests
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 21:35:43 +02:00
LaurensBartelds
95de63bd98
feat: add LaTeX rendering utilities and Tex component
2026-04-21 21:29:26 +02:00
LaurensBartelds and Claude Sonnet 4.6
611277ee8a
feat: port design system CSS, update entry point and page title
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 21:28:08 +02:00
LaurensBartelds
00640fbc04
feat: add formatting, storage, and validation utilities
2026-04-21 21:22:49 +02:00
LaurensBartelds and Claude Sonnet 4.6
e211594429
feat: add grading utilities with tests
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 21:21:27 +02:00
LaurensBartelds
99b40e46dc
feat: add TypeScript types for exam platform
2026-04-21 21:19:27 +02:00
LaurensBartelds and Claude Sonnet 4.6
7ad0667668
chore: add katex, dompurify, vitest; copy sample exam files
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 21:14:29 +02:00
LaurensBartelds
4f124afa6f
Initial commit
2026-04-21 20:13:52 +02:00