Commit Graph
100 Commits
Author SHA1 Message Date
cfngc4594 941f1a74fa feat: replace dockview with flexlayout-react 2025-06-13 14:03:17 +08:00
cfngc4594 03f150214d chore(prisma): make TestcaseResult.output nullable in migration 2025-05-16 10:43:48 +08:00
cfngc4594 23a7e2e69e fix(prisma): make TestcaseResult.output field optional 2025-05-16 10:42:20 +08:00
cfngc4594 9443ab6d6d refactor(api): extract OpenAI client to shared module 2025-05-14 22:30:45 +08:00
cfngc4594 1c031ce24e refactor(judge-button): migrate run code button to standalone component
- Replace RunCodeButton with new JudgeButton component
- Use problem-specific stores instead of playground stores
- Implement new judge toast notification system
- Simplify authentication check logic
- Utilize new TooltipButton component
2025-05-14 17:04:03 +08:00
cfngc4594 4ca6840bbd refactor(problems): consolidate judge status toast
- Migrate status toast from shared hooks to problems feature
- Remove deprecated show-status-toast.tsx and status.ts
- Implement self-contained JudgeToast component with built-in status mapping
2025-05-14 16:09:13 +08:00
cfngc4594 9003e4b5a4 refactor(components): simplify BackButton by using TooltipButton 2025-05-13 17:38:26 +08:00
cfngc4594 2e74ffbac3 refactor(config): migrate editor options to standalone editor config
- Rename `editor-language.ts` to `editor.ts`
- Update interface from `IEditorConstructionOptions` to `IStandaloneEditorConstructionOptions`
- Keep all existing editor options unchanged
2025-05-13 16:57:35 +08:00
cfngc4594 49419654a0 feat(problemset): enhance header component with back button and className prop
- Replace problem-header.tsx with new header.tsx implementation
- Add BackButton functionality to navigate to home page
- Make className prop configurable using cn utility
- Maintain existing user avatar functionality
2025-05-13 16:47:11 +08:00
cfngc4594 9766dea138 refactor(back-button): relocate and rename back button component
- Move from features/problems/components to shared components directory
- Rename NavigateBackButton to simpler BackButton
- Update component interface naming to BackButtonProps
- Keep all existing functionality intact
2025-05-13 16:43:01 +08:00
cfngc4594 ad8a3e646e feat(code-panel): add code editor panel components
- Add CodePanel component as container for editor interface
- Add CodeContent component with Prisma data fetching
- Include CodeContentSkeleton for loading state
- Implement ProblemEditor integration with templates
2025-05-13 16:37:35 +08:00
cfngc4594 33930e7a33 chore(utils): remove unused utility functions
- Remove getPath function (moved to problem-editor store)
- Remove getDifficultyColorClass function (unused)
- Keep only core cn utility function
2025-05-13 16:34:28 +08:00
cfngc4594 bcdd72317c feat(store): add problem editor state management
- Create problem-editor store with Zustand
- Manage editor state including problem, language, value and path
- Implement localStorage persistence for editor content
- Provide utility functions for language and value retrieval
2025-05-13 16:31:38 +08:00
cfngc4594 5aec2ec323 refactor(mdx-render): simplify theme configuration and change export style
- Remove custom Monaco theme imports
- Use github default themes for rehypePrettyCode
- Change component export from default to named export
2025-05-13 16:27:46 +08:00
cfngc4594 ba1937ecbb refactor(problems): update ProblemHeader import path to new location 2025-05-13 16:14:57 +08:00
cfngc4594 aec8393d2d feat(dockview): export Dockview component and create ProblemDockview wrapper
- Export Dockview component from src/components/dockview.tsx to make it reusable
- Create new ProblemDockview component in src/features/problems/components/dockview.tsx that:
  - Integrates with next-intl for locale handling
  - Connects to problem-dockview store
  - Wraps Dockview with problem-specific configuration
  - Adds locale-based key for proper re-rendering
- Maintain existing Dockview functionality including:
  - Layout persistence
  - Panel management
  - API handling
2025-05-13 16:08:33 +08:00
cfngc4594 148ae677d7 refactor(problemset): move components to separate files and improve structure
- Move ProblemsetHeader component from 'problemset-header' to 'header'
- Extract problemset table logic into dedicated ProblemsetTable component
- Add Suspense and skeleton loading for better UX
- Update layout and page structure
2025-05-13 16:03:46 +08:00
cfngc4594 0e3daefe48 feat(config): add LANGUAGES constant for language enum values 2025-05-13 16:00:52 +08:00
cfngc4594 f6ed0baaf0 refactor(prisma): simplify prisma client initialization and remove caching
Removed all caching and logging functionality from prisma.ts, keeping only
the basic Prisma client initialization logic. This includes:
- Removal of getProblems, getCachedProblems, getProblem, getCachedProblem functions
- Removal of related logger and cache imports
- Simplified the global prisma client instantiation
2025-05-13 15:59:57 +08:00
cfngc4594 f9cbc5e085 refactor(code-toolbar): standardize component exports and simplify reset logic
- Changed all toolbar action components from named exports with curly braces to default exports
- Simplified ResetButton by moving template logic to useProblemEditorActions hook
- Updated useProblemEditorActions to handle template selection internally using store data
- Renamed problem-editor-store import to problem-editor for consistency
2025-05-13 15:56:28 +08:00
cfngc4594 eea16a8224 feat(problems): add localization support for problem descriptions and solutions
- Replace cached problem data with direct Prisma queries for localized content
- Implement locale-based content selection for both descriptions and solutions
- Refactor skeleton loading components structure
- Change all exports from named to default exports
2025-05-13 15:36:07 +08:00
cfngc4594 ad2aca2f67 refactor(language-selector): migrate to new location and implementation
- Remove old language selector from `src/components/features/playground/workspace/editor/components`
- Add new implementation in `src/features/problems/code/components/toolbar/controls`
- Update toolbar exports to include the new selector
2025-05-13 15:18:59 +08:00
cfngc4594 cea0027799 refactor(shiki): migrate to shiki/core with lazy initialization
- Replace shiki with shiki/core for better tree-shaking
- Change highlighter initialization to explicit theme/lang imports
- Export getHighlighter function instead of direct highlighter instance
- Add error handling for uninitialized highlighter access
2025-05-13 14:48:32 +08:00
cfngc4594 2efdc21419 refactor(i18n): replace language-settings with locale-switcher
- Replace react-world-flags with next/image for better optimization
- Simplify locale handling logic and remove unused getUserLocale
- Rename component to be more descriptive (language-settings -> locale-switcher)
- Update all references to use the new component
- Add proper SVG flag assets for supported locales
- Remove react-world-flags dependency from package.json
2025-05-13 00:19:01 +08:00
cfngc4594 2e2e0315a8 refactor(hooks): remove theme config and simplify theme hook
- Delete src/config/monaco-theme.ts and src/types/monaco-theme.ts
- Simplify useMonacoTheme hook to directly return theme strings
- Format use-mobile.ts with consistent semicolons and quotes
2025-05-12 21:19:05 +08:00
cfngc4594 01b72209ae refactor(i18n): migrate locale configuration to generated types
- Replace hardcoded locale strings with generated Locale enum from client
- Update cookie key name to be more specific (LOCALE_COOKIE_NAME -> JUDGE4C_LOCALE_KEY)
- Rename defaultLocale to DEFAULT_LOCALE for consistency
- Add 'server-only' imports to ensure server-side usage
- Simplify locale validation using Object.values(Locale)
- Clean up accept-language header parsing logic
2025-05-12 21:07:43 +08:00
cfngc4594 4cc6456151 refactor(prisma): simplify schema and remove zod-prisma-types
- Reorganized Prisma schema structure with simplified models and relations
- Removed zod-prisma-types generator as it's no longer needed
- Consolidated problem content types into a single ProblemLocalization model
- Simplified testcase and template structures
- Removed unused prisma types file
2025-05-12 19:41:28 +08:00
cfngc4594 15b3f630d5 refactor(prisma): simplify schema and remove zod-prisma-types
- Reorganized Prisma schema structure with simplified models and relations
- Removed zod-prisma-types generator as it's no longer needed
- Consolidated problem content types into a single ProblemLocalization model
- Simplified testcase and template structures
- Removed unused prisma types file
2025-05-12 18:32:46 +08:00
cfngc4594 0e9207bfce chore(scripts): remove --turbopack flag from dev script 2025-05-12 11:22:31 +08:00
cfngc4594 9ec8768393 chore(shiki): convert function to arrow function 2025-05-09 09:42:24 +08:00
cfngc4594 baf377b722 refactor(loading): change to named export and arrow function
- Switch from default export to named export
- Convert component to arrow function
- Remove unused props parameter
2025-05-09 09:40:25 +08:00
cfngc4594 7e45010487 fix(styles): adjust tabs overflow container height in abyss theme
Changed height property from 'unset !important' to '100%' for .dv-tabs-overflow-container and .dv-tabs-overflow-dropdown-default in the abyss-spaced theme to fix layout issues.
2025-05-08 11:27:10 +08:00
cfngc4594 25fd9b5f46 chore(prisma/migrations): add migration for multilingual problem support 2025-05-07 21:09:35 +08:00
cfngc4594 cfbbdbf821 feat(prisma/schema): add multilingual support for problem descriptions and solutions
BREAKING CHANGE:
- Removed `description` and `solution` fields from Problem model
- Added new models `ProblemDescription` and `ProblemSolution` with language support (EN/ZH)
- Updated seed data structure to support multilingual content
- Requires database migration and data migration from old structure
2025-05-07 21:04:46 +08:00
cfngc4594 f0beb69b2c fix(page): add missing return statement in RootPage component 2025-05-07 16:42:39 +08:00
cfngc4594 f93224f56e chore(components): remove unused problem-related components
- Delete footer.tsx from problem/description
- Delete solution.tsx from problem/description
- Delete header.tsx from problem/workspace/editor/components
2025-05-07 14:59:17 +08:00
cfngc4594 b67b13d7bf refactor(route): rename [id] to [problemId] in problems route 2025-05-07 14:59:17 +08:00
cfngc4594 1db666a2ab refactor(structure): reorganize page and component exports
- Move root page from /(app) to / directory
- Convert default exports to named exports in components
- Rename MainView component to HeroSection for better semantics
2025-05-07 14:06:31 +08:00
cfngc4594 3417d2ee49 refactor(editor): consolidate editor toolbar actions into unified structure
- Moved all editor action buttons (copy, format, undo, redo, reset) from `src/components/features/playground/workspace/editor/components/` to new location `src/features/problems/code/components/toolbar/actions/`
- Introduced shared `TooltipButton` component to reduce duplication
- Created centralized `useProblemEditorActions` hook for common editor operations
- Updated imports and exports through new index file
- Maintained all existing functionality while improving code organization
2025-05-07 13:42:08 +08:00
cfngc4594 6c9351ccd2 feat(components): add TooltipButton component
- A reusable button with tooltip functionality
- Supports customizable delay, tooltip content, and className
- Uses shadcn/ui Tooltip and Button components
2025-05-07 13:32:26 +08:00
cfngc4594 2e19c08e8b refactor(mdx-renderer): simplify component implementation
- Remove Suspense and Skeleton loading state
- Convert to arrow function syntax
- Reorganize import statements
- Simplify export syntax
2025-05-07 13:31:02 +08:00
cfngc4594 2c7223a323 feat(prisma): add server-only caching for problems queries
- Add 'server-only' import to enforce server-side usage
- Implement cached problem queries with logging:
  - Add getProblems/getCachedProblems for all problems
  - Add getProblem/getCachedProblem for single problem by ID
- Use React cache and Next.js unstable_cache with tags
- Add detailed logging with timing metrics
2025-05-06 21:33:37 +08:00
cfngc4594 aed942e7e2 refactor(layouts): overhaul problem and problemset page structures
- Simplify ProblemLayout to use children prop and remove ProblemStoreProvider
- Replace PlaygroundHeader with dedicated ProblemHeader component
- Streamline ProblemsetLayout with new ProblemsetHeader
- Remove deprecated BackButton in favor of NavigateBackButton
- Delete unused ProblemStoreProvider and related dependencies
2025-05-06 21:22:13 +08:00
cfngc4594 829370fafd chore(problems): move problem-dockview to components directory 2025-05-06 19:47:02 +08:00
cfngc4594 5f3eb72d00 refactor(problems): migrate description and solution to feature-based structure
- Remove old parallel route implementations (@Description and @Solutions)
- Add new feature-based components for problem description and solution
  - Create content and panel components for both features
  - Implement skeleton loading states
  - Use cached data fetching
- Update MDX rendering and scroll area implementations
2025-05-06 19:38:50 +08:00
cfngc4594 f464fb7636 feat(dockview): refactor dockview component and add problem-specific implementation
- Refactor Dockview component into more modular structure:
  - Extract layout persistence logic to custom hook
  - Extract component conversion logic to custom hook
  - Make storageKey optional
  - Improve type safety with PanelParams interface
  - Add better error handling and duplicate panel detection
- Add new ProblemDockview wrapper component:
  - Integrates with problem-dockview store
  - Adds locale awareness
  - Provides standardized storage key
- Update related type definitions and imports
2025-05-06 18:45:08 +08:00
cfngc4594 c182452dd0 refactor(stores): split dockview store into problem-specific store
- Remove generic dockview store (`src/stores/dockview.tsx`)
- Add problem-specific dockview store (`src/stores/problem-dockview.tsx`)
- Remove submission-related state as it's no longer needed
2025-05-06 18:37:39 +08:00
cfngc4594 3042af4575 style(dockview): reduce tabs container height and center align items
- Changed --dv-tabs-and-actions-container-height from 44px to 36px
- Added align-items: center to .dv-tabs-container
- Improved CSS formatting for better readability
2025-05-06 17:20:46 +08:00
cfngc4594 500113fe8f feat(user-avatar): refactor avatar component into user-avatar with improved structure 2025-05-05 18:39:47 +08:00
cfngc4594 a3ef5d88e6 refactor(auth)!: remove components and rewrite sign-in page 2025-05-05 18:21:08 +08:00
cfngc4594 1f21cad4d1 refactor(auth)!: replace credentials with OAuth providers and add logging
BREAKING CHANGE:
- Removed credentials-based authentication
- Added Google OAuth provider
- Implemented detailed logging for auth events
- Removed custom JWT/session handling
- Added sign-in page configuration
- Marked as server-only
2025-05-05 17:05:01 +08:00
cfngc4594 7db089dd4c chore(deps): add react-icons package 2025-05-05 14:12:41 +08:00
cfngc4594 e42aa935be chore(tailwind): update config with features path and animate import 2025-05-05 09:23:55 +08:00
cfngc4594 613dd5ef17 feat(log): add pino logging support 2025-05-04 21:35:44 +08:00
cfngc4594 4b4dcb1ff5 chore(deps): add pino and pino-pretty packages 2025-05-04 21:32:18 +08:00
cfngc4594 443adf055b feat(editor): configure Monaco workers using URL imports for better bundling
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 0s
2025-04-20 01:11:38 +08:00
cfngc4594 7785ac8c1e chore(deps): add server-only package 2025-04-19 15:51:31 +08:00
cfngc4594 e5defb8adf fix(vscode): remove src/i18n from i18n-ally.localesPaths and set keystyle to nested
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 0s
2025-04-19 12:59:42 +08:00
cfngc4594 64182bccc6 fix(dockview): move panel titles from options to params to prevent i18n title persistence in layout 2025-04-19 12:53:39 +08:00
cfngc4594 f40a8d3821 perf(language-settings): make locale change handling async with await 2025-04-19 10:53:34 +08:00
cfngc4594 f2d14d07b2 feat(home): Add PrimaryFeatures component
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 1s
- Add PrimaryFeatures component with MobileFriendlyCard, DockerCard, and LSPCard.
- Update HomePage to include PrimaryFeatures component between MainView and FAQs.
2025-04-17 21:42:58 +08:00
cfngc4594 fcb75269eb feat(components/ui): add Card component from shadcn/ui 2025-04-17 16:49:35 +08:00
cfngc4594 5e7ef4a99d feat(home): replace homepage redirect with actual content 2025-04-17 16:45:49 +08:00
cfngc4594 93da6eb2cb chore(deps): add framer-motion package 2025-04-17 16:35:50 +08:00
cfngc4594 f39bbf76e7 feat(submissions): add login requirement for submissions page
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 0s
- Add SubmissionLoginButton component for unauthenticated users
- Modify submissions page to check auth session
- Filter submissions by current user when logged in
2025-04-17 09:31:04 +08:00
cfngc4594 30ee16fbf0 style(problem): adjust problem layout styles 2025-04-17 07:44:41 +08:00
cfngc4594 569beb0b36 feat(layout): add layout with suspense boundary for problem
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 0s
2025-04-16 18:05:55 +08:00
cfngc4594 a7ddd80d09 perf(problemset): add prefetch to problem links for faster navigation
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 0s
2025-04-16 17:04:28 +08:00
cfngc4594 58222795fe chore(avatar): update default image to use local shadcn.jpg 2025-04-16 15:48:06 +08:00
cfngc4594 1d0b74136f refactor(i18n): replace hardcoded texts with i18n message keys for auth 2025-04-16 00:40:36 +08:00
cfngc4594 0b3086f333 chore(seed): add seed data for problem templates 2025-04-15 23:07:47 +08:00
cfngc4594 4428a29306 refactor(i18n): replace hardcoded texts with i18n message keys
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 1s
2025-04-15 18:22:21 +08:00
cfngc4594 8b276ae91e chore(docker): add compose.cn.yml file 2025-04-15 13:27:08 +08:00
cfngc4594 a2bf1fc7a1 chore(deps): add react-world-flags package 2025-04-15 01:03:35 +08:00
cfngc4594 d98522d643 feat(i18n): add locale management and configuration 2025-04-14 23:15:41 +08:00
cfngc4594 30922a25bb feat(i18n): integrate next-intl and dynamic locale support in RootLayout 2025-04-14 22:43:27 +08:00
cfngc4594 8673e4615a feat(i18n): integrate next-intl plugin for internationalization 2025-04-14 21:49:16 +08:00
cfngc4594 e7e8b5da8b chore(deps): add next-intl package 2025-04-14 21:46:03 +08:00
cfngc4594 5465450143 feat(auth): update sign-in and sign-up flow with redirect support
Build & Push Judge4c Docker Image / build-and-push-judge4c-docker-image (., Dockerfile, judge4c) (push) Failing after 0s
2025-04-14 21:27:06 +08:00
cfngc4594 799ab3ccd1 refactor(avatar-button): remove unnecessary account and notification items from dropdown menu 2025-04-14 17:59:52 +08:00
cfngc4594 c540a04c36 feat(problemset): add status icons for problem set page, support completed and attempted states 2025-04-14 17:35:31 +08:00
cfngc4594 0694e4dea0 feat(problemset): add completion status indicator for problems 2025-04-14 17:22:01 +08:00
cfngc4594 59e133f29c feat(submissions-table): update table to display detailed status message 2025-04-14 16:53:58 +08:00
cfngc4594 69d03f89da refactor(problem): remove TestResult tab and adjust tab positions 2025-04-14 16:25:10 +08:00
cfngc4594 d58723bd47 delete(features): remove src/app/(app)/problems/[id]/features folder 2025-04-14 16:22:10 +08:00
cfngc4594 207697c592 feat(submission-details): display last failed test case details and error messages 2025-04-14 15:38:02 +08:00
cfngc4594 b18dedcc23 feat(judge): create testcaseResult for TLE and update relation field 2025-04-14 15:33:18 +08:00
cfngc4594 675c828fe2 feat(submissions): include detailed testcase data in problem submissions query 2025-04-14 15:30:59 +08:00
cfngc4594 f53807338a refactor(submission-table): switch to SubmissionWithTestcaseResult to support testcase results 2025-04-14 14:15:16 +08:00
cfngc4594 44ec30e988 refactor(store): replace Submission with SubmissionWithTestcaseResult in dockview store 2025-04-14 14:12:15 +08:00
cfngc4594 1ad8dbab47 feat(types/prisma): add submission and testcase result query types 2025-04-14 14:11:29 +08:00
cfngc4594 81f89f7b16 refactor(schema): rename TestcaseResult fields to camelCase 2025-04-14 11:33:19 +08:00
cfngc4594 fbf563dfdf refactor(details): move panel cleanup logic into useEffect 2025-04-14 10:40:08 +08:00
cfngc4594 ce4a0e64c9 feat(store): persist submission state in dockview store 2025-04-14 10:39:06 +08:00
cfngc4594 9b82088110 feat(judge): add language-specific compilation commands for C and C++ 2025-04-14 10:28:39 +08:00
cfngc4594 2a4d741a76 feat(submissions): show language label alongside icon in submissions table 2025-04-14 10:26:57 +08:00
cfngc4594 01c2cd6eef refactor(description-form): simplify form to use basic input instead of markdown editor 2025-04-13 22:45:33 +08:00
cfngc4594 c82b75b300 feat(dockview-store): add submission state management 2025-04-13 22:44:05 +08:00
cfngc4594 b35ef0208a feat(submissions-table): add click handler to open details panel 2025-04-13 22:43:01 +08:00
cfngc4594 2d06b778e6 feat(problems): add Details panel for submission details view
- Add new Details component to display submission details
- Modify ProblemLayout and ProblemPage to support Details panel
- Implement Details page with submission code view and metadata
- Add navigation back to Submissions panel
2025-04-13 22:42:08 +08:00