Skip to content

Merge 'dev' into 'main'#98

Merged
khalidbelk merged 132 commits into
mainfrom
dev
Feb 2, 2026
Merged

Merge 'dev' into 'main'#98
khalidbelk merged 132 commits into
mainfrom
dev

Conversation

@khalidbelk

@khalidbelk khalidbelk commented Feb 2, 2026

Copy link
Copy Markdown
Member

02/01/2026 dev deployment to beta

LucasRossignon and others added 30 commits October 26, 2025 10:43
- Add dedicated settings page for course visibility management
- Add PublicCourseCard and PublicSheetCard components for Club Edukai
- Implement slider toggle for public/private course visibility
- Add comprehensive info box explaining public visibility features
- Add tabbed interface for public courses and summary sheets
- Implement comprehensive search functionality across title and author
- Add subject and level filters with dynamic dropdowns
- Add filter counter badges and reset functionality
- Integrate getPublicCourses and getPublicSheets API endpoints
- Add frontend fallback for isOwner verification in Header component
- Extend CourseData interface with isOwner, isShared, and author properties
- Replace inline toggle with clickable visibility badge in CourseCard
- Handle author as both string and object types in library page
- Remove deprecated shared course page using shareToken
- Remove ShareCourseDialog component replaced by settings page approach
- Clean up references to old sharing implementation
Introduce centralized Visibility enum with PUBLIC and PRIVATE constants
to replace hardcoded strings throughout the codebase. This improves
type safety and maintainability.
Add reset password page with form component, following the same
design pattern as other auth pages with gradient background and
card layout.
Replace boolean isShared field with visibility field using Visibility
enum across all course-related types and components. Update CourseData
interface, CourseCard, settings page, and Club Edukai to use the new
visibility pattern aligned with backend API.

- Update SummarySheetData to include visibility, isOwner, and title fields
- Replace isShared checks with visibility === Visibility.PUBLIC
- Simplify Club Edukai to show only courses (removed summary sheets tab)
- Remove all console.log statements (keep console.error in catch blocks)
- Delete duplicate file useSession 2.ts
- Delete test data directory (json/testData/)
- Remove test data imports from useQuiz and useSheet hooks
- Fix ESLint unused variable warnings by prefixing with underscore
- Clean up unused catch parameters
- Add AuthPageLayout component for consistent auth page structure
- Add EdukaiHeader component for branding
- Add FeatureCard component for showcasing features
- Add PublicContentCard base component to eliminate code duplication
- Add keyboard utility helpers for accessibility compliance
- Refactor PublicCourseCard and PublicSheetCard to use shared PublicContentCard base
- Reduces duplication by 69.2% in PublicCourseCard and 25% in PublicSheetCard
- Modernize auth pages with new AuthPageLayout and feature components
- Update auth component exports for new modular structure
SonarCloud fixes:
- Fix locale-aware string sorting for proper French character handling
- Resolve function name conflict with built-in Error class
- Remove unnecessary await on synchronous cookies() call
- Add keyboard accessibility with role, tabIndex, and onKeyDown handlers
- Associate form labels with controls using htmlFor and id attributes
- Replace array index keys with stable unique keys
- Optimize UserContext with useMemo to prevent unnecessary re-renders
- Extract nested ternaries into clear helper functions for readability
- Replace role="button" divs with semantic HTML button and label elements
- Fix drag event handler types for better TypeScript compliance
- Add console.debug for appropriate debugging in error handlers
- Remove unused imports

Code cleanup:
- Remove temporary console.log debug statements from components
- Remove debug logging from middleware authentication flow
- Clean up debug logs from auth container success handler
Update gitignore configuration
…during uploads

feat(file-processor): refactor processing state management and enhance error callback
fix(file-processors): update OCR progress message for clarity
fix(next.config): disable React Strict Mode to prevent double rendering issues
…xam, LastQuiz, Ranking, Skills, SummarySheets, Tips, and Quiz components (align cards header)
…ve messaging

feat(exam): add empty state for exams with user guidance
…g handling

feat(exam-dialog): add controlled open state and trigger ref for ExamDialog
fix(calendar): set French locale for DayPicker in Calendar component
- Refactored SummarySheets component to handle both AI-generated and user-uploaded summary sheets.
- Added blob service for managing user-uploaded files, including delete functionality.
- Updated SummarySheetData type to differentiate between AI-generated and user-uploaded sheets.
- Improved search functionality to filter based on content for AI sheets and name for user-uploaded files.
- Enhanced UI elements for better user experience, including improved styling and responsiveness.
- Integrated PDF preview component for displaying PDF files dynamically.
- Added logging for better debugging and error handling in services and components.
- Updated package dependencies to include react-pdf for PDF handling.
TristanHourtoulle and others added 24 commits December 2, 2025 17:53
- Add useSubscription hook encapsulating subscription state and payment actions
- Create lib/subscription module with types and helper functions
- Compute subscription status from user data with cancellation detection
- Provide formatSubscriptionDate for localized date display
- Extract PricingPage into reusable card components with useSubscription hook
- Add PaymentError class with secure logging and user-friendly messages
- Optimize useGenerationProgress callback refs to prevent SSE reconnections
- Add standardized ApiResult types with type guards and factory functions
- Configure Vitest with jsdom environment
- Add test setup with Next.js router and EventSource mocks
- Create unit tests for payment service (12 tests)
- Create unit tests for useGenerationProgress hook (16 tests)
- Create unit tests for file-processors (45 tests)
- Achieve 88% overall test coverage
- Add vitest, @testing-library/react, @testing-library/jest-dom
- Add @vitejs/plugin-react and jsdom
- Add test scripts: test, test:watch, test:coverage, test:ui
- Add logServiceError helper for consistent error logging
- Log errors only in development mode to prevent data leaks
- Include axios status details when available
- Add JSDoc documentation for error handling patterns
- Add full ARIA support to ProgressBar (role, aria-valuenow, aria-valuetext)
- Add ARIA labels and aria-current to StepIndicator
- Include screen reader descriptions for progress states
- Memoize components for performance
Refactor file processing logic for optimization, including adjustments to character limits and text cleaning methods.
Removed optimization comments from text processing.
feat: implement Stripe payment integration and subscription management
This seems to be unused
…ount deletion

Add Eye/EyeOff toggle on the password field and implement API error
translation with typed error handling using ApiError. Remove leftover
console.log debug statements.
…g page

The useEffect in useSubscription had empty deps [], causing
refreshUserProfile to never execute since sessionLoading was still
true on mount. Adding sessionLoading as a dependency ensures the
profile is fetched once the session is ready.
feat(generate): add file upload handling before course generation
Implement course deletion from the library page with a confirmation
dialog that warns about associated data (quizzes, exams, summary sheets)
being permanently removed.
feat(library): add course deletion with confirmation dialog

@TristanHourtoulle TristanHourtoulle left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SGTM ! ;)

@khalidbelk khalidbelk merged commit 1b78741 into main Feb 2, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants