Merge 'dev' into 'main'#98
Merged
Merged
Conversation
- 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
…e to improve readability
…ess bar and improved styling
…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
… summary_sheets update
- 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.
- 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: delete account
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
02/01/2026 dev deployment to beta