Commit Graph

665 Commits

Author SHA1 Message Date
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
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
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
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
9ec8768393 chore(shiki): convert function to arrow function 2025-05-09 09:42:24 +08:00
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
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
f0beb69b2c fix(page): add missing return statement in RootPage component 2025-05-07 16:42:39 +08:00
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
b67b13d7bf refactor(route): rename [id] to [problemId] in problems route 2025-05-07 14:59:17 +08:00
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
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
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
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
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
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
829370fafd chore(problems): move problem-dockview to components directory 2025-05-06 19:47:02 +08:00
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
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
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
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
500113fe8f feat(user-avatar): refactor avatar component into user-avatar with improved structure 2025-05-05 18:39:47 +08:00
a3ef5d88e6 refactor(auth)!: remove components and rewrite sign-in page 2025-05-05 18:21:08 +08:00
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
613dd5ef17 feat(log): add pino logging support 2025-05-04 21:35:44 +08:00
443adf055b feat(editor): configure Monaco workers using URL imports for better bundling 2025-04-20 01:11:38 +08:00
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
f40a8d3821 perf(language-settings): make locale change handling async with await 2025-04-19 10:53:34 +08:00
f2d14d07b2 feat(home): Add PrimaryFeatures component
- 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
fcb75269eb feat(components/ui): add Card component from shadcn/ui 2025-04-17 16:49:35 +08:00
5e7ef4a99d feat(home): replace homepage redirect with actual content 2025-04-17 16:45:49 +08:00
f39bbf76e7 feat(submissions): add login requirement for submissions page
- 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
30ee16fbf0 style(problem): adjust problem layout styles 2025-04-17 07:44:41 +08:00
569beb0b36 feat(layout): add layout with suspense boundary for problem 2025-04-16 18:05:55 +08:00
a7ddd80d09 perf(problemset): add prefetch to problem links for faster navigation 2025-04-16 17:04:28 +08:00
58222795fe chore(avatar): update default image to use local shadcn.jpg 2025-04-16 15:48:06 +08:00
1d0b74136f refactor(i18n): replace hardcoded texts with i18n message keys for auth 2025-04-16 00:40:36 +08:00
4428a29306 refactor(i18n): replace hardcoded texts with i18n message keys 2025-04-15 18:22:21 +08:00
d98522d643 feat(i18n): add locale management and configuration 2025-04-14 23:15:41 +08:00
30922a25bb feat(i18n): integrate next-intl and dynamic locale support in RootLayout 2025-04-14 22:43:27 +08:00
5465450143 feat(auth): update sign-in and sign-up flow with redirect support 2025-04-14 21:27:06 +08:00
799ab3ccd1 refactor(avatar-button): remove unnecessary account and notification items from dropdown menu 2025-04-14 17:59:52 +08:00
c540a04c36 feat(problemset): add status icons for problem set page, support completed and attempted states 2025-04-14 17:35:31 +08:00
0694e4dea0 feat(problemset): add completion status indicator for problems 2025-04-14 17:22:01 +08:00
59e133f29c feat(submissions-table): update table to display detailed status message 2025-04-14 16:53:58 +08:00
69d03f89da refactor(problem): remove TestResult tab and adjust tab positions 2025-04-14 16:25:10 +08:00
d58723bd47 delete(features): remove src/app/(app)/problems/[id]/features folder 2025-04-14 16:22:10 +08:00
207697c592 feat(submission-details): display last failed test case details and error messages 2025-04-14 15:38:02 +08:00
b18dedcc23 feat(judge): create testcaseResult for TLE and update relation field 2025-04-14 15:33:18 +08:00
675c828fe2 feat(submissions): include detailed testcase data in problem submissions query 2025-04-14 15:30:59 +08:00
f53807338a refactor(submission-table): switch to SubmissionWithTestcaseResult to support testcase results 2025-04-14 14:15:16 +08:00
44ec30e988 refactor(store): replace Submission with SubmissionWithTestcaseResult in dockview store 2025-04-14 14:12:15 +08:00
1ad8dbab47 feat(types/prisma): add submission and testcase result query types 2025-04-14 14:11:29 +08:00
fbf563dfdf refactor(details): move panel cleanup logic into useEffect 2025-04-14 10:40:08 +08:00
ce4a0e64c9 feat(store): persist submission state in dockview store 2025-04-14 10:39:06 +08:00
9b82088110 feat(judge): add language-specific compilation commands for C and C++ 2025-04-14 10:28:39 +08:00
2a4d741a76 feat(submissions): show language label alongside icon in submissions table 2025-04-14 10:26:57 +08:00
01c2cd6eef refactor(description-form): simplify form to use basic input instead of markdown editor 2025-04-13 22:45:33 +08:00
c82b75b300 feat(dockview-store): add submission state management 2025-04-13 22:44:05 +08:00
b35ef0208a feat(submissions-table): add click handler to open details panel 2025-04-13 22:43:01 +08:00
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
db620ceae3 feat(judge): add memory usage tracking for accepted solutions 2025-04-13 17:28:13 +08:00
03c47f76d2 feat(judge): set executionTime as max testcase runtime on AC 2025-04-13 13:39:36 +08:00
e7ad3a66e6 style(testcase-form): reorder input props and make inputs read-only 2025-04-13 13:22:47 +08:00
8b3faf4a42 feat(submissions): improve submission table with icons and better status display 2025-04-13 13:18:10 +08:00
105802a209 feat(problem): add parallel routes 2025-04-13 12:06:08 +08:00
a559c326a8 feat(problem): refactor layout and page components
- Refactored `ProblemLayout` to pass panel components (Description, Solutions, etc.) as props.
- Updated `ProblemPage` to dynamically render dock panels with content from props, instead of static components.
- Removed `DefaultDockviewOptions` and integrated custom panel configuration directly in `ProblemPage`.
- Enhanced `DockView` to support dynamic panel content rendering based on passed props.
2025-04-13 11:56:01 +08:00
a897e00a72 chore(dockview): remove unused Dockview configuration file
- Deleted `src/config/dockview.ts` as it was no longer needed with the refactor to support dynamic panel options.
2025-04-13 11:54:07 +08:00
54998d5c1b feat(dockview): update DockView component to support external onApiReady callback
- Removed the internal use of `useDockviewStore` for managing Dockview API state.
- Introduced `onApiReady` prop to allow external handling of the `DockviewApi` when it’s ready.
- Updated `onReady` function to invoke `onApiReady` callback with the API instance.
- Ensured backward compatibility by keeping the previous internal handling of `DockviewApi`.
2025-04-13 11:53:06 +08:00
0de139f29c refactor(bot-toggle): inline Bot panel config and remove DefaultDockviewOptions dependency 2025-04-13 11:41:58 +08:00
56782b83fc refactor(components): migrate DockView to dynamic panel/tab components with store-based API exposure and autoAdd flag 2025-04-13 11:35:29 +08:00
737965dc91 style(submissions-table): replace odd row styling with even row check logic 2025-04-13 11:23:58 +08:00
7d7e503c8e feat(judge): add revalidation for problem page after submission 2025-04-13 11:16:26 +08:00
8809dbdb1a feat(run-code): activate Submissions panel after running code 2025-04-12 13:38:57 +08:00
d9d9db16fe refactor(bot): simplify layout and improve UI rendering in Bot component 2025-04-12 13:17:48 +08:00
72a868402c feat(header): add BotVisibilityToggle to header component 2025-04-12 10:55:41 +08:00
f78196d7e0 feat(components): add bot visibility toggle component
- Added a toggle to control the visibility of the bot panel
- Implemented loading state with Skeleton component
- Integrated with dockview store to manage panel visibility
- Added tooltip to indicate bot's current state (Open/Close)
2025-04-12 10:53:32 +08:00
3b1c2fc41b refactor(problem): replace inline dockview options with default config 2025-04-12 10:47:23 +08:00
69e06ecfc6 feat(dockview): add Zustand store for dockview API management 2025-04-12 10:41:52 +08:00
faf7f45425 feat(dockview): add configuration for panel layout 2025-04-12 10:40:59 +08:00
7963d38388 feat(submissions): add submissions table component and display on problem page
- Added `SubmissionsTable` component to display submissions (including status, language, time, memory, and submission date).
- Updated `Submissions` page to render `SubmissionsTable` with submissions data from `ProblemStore`.
- Improved table sorting and date display logic.
2025-04-11 17:44:45 +08:00
82b0705bdb feat(problem-store): add submissions to problem store state and provider
- Added `submissions` field to `ProblemState` and `ProblemStore` type
- Updated `createProblemStore` function to handle `submissions`
- Modified `ProblemStoreProvider` to pass `submissions` as a prop
- Updated `ProblemLayout` to fetch `submissions` from the database and pass to the provider
2025-04-11 17:42:52 +08:00
ad43eb9b0a refactor(status): extract status logic into separate module
- Moved color class and status map logic to `src/lib/status.ts`
- Simplified `showStatusToast` and `StatusToast` components
- Replaced `getColorClass` with `getStatusColorClass` from the new module
2025-04-11 17:41:04 +08:00
a81be5c0f9 feat(judge): implement full testcase support and result recording
- Add testcase handling with proper input/output validation
- Modify run function to process multiple testcases sequentially
- Implement testcase result recording in database
- Improve error handling and status updates
- Add related type definitions for testcases
2025-04-11 16:01:44 +08:00
4da3723195 feat(types): add getAllProblemsWithTestcases and ProblemWithTestcases 2025-04-11 15:58:37 +08:00
d64f95b4e7 refactor(judge): rewrite judge service to use database submissions
- Change return type from JudgeResult to Submission
- Add database operations to persist submission records
- Improve error handling and container cleanup
- Update compile and run functions to work with submissions
- Add proper status updates throughout the process
2025-04-11 09:52:56 +08:00
dc939085bb refactor(hooks): move show-status-toast.tsx from lib to hooks 2025-04-11 09:47:31 +08:00
6e22822383 chore(toast): rename show-exit-code-toast.tsx to show-status-toast.tsx 2025-04-10 22:42:41 +08:00
895c3f779d refactor(judge): fetch timeLimit and memoryLimit from Problem instead of DockerConfig 2025-04-10 21:59:11 +08:00
84ebd17be9 style(playground): adjust header layout and z-index for centered RunCode button 2025-04-10 20:38:39 +08:00
10c1716019 style(bot): simplify layout and optimize className order 2025-04-10 10:44:39 +08:00
2f2c8ab112 refactor(problems): improve testcase scroll layout using ScrollArea 2025-04-10 10:41:36 +08:00
3f10c08a6c feat(testcase): add dynamic testcase card and form for problem view 2025-04-09 21:26:06 +08:00
f1f2a70c0e refactor(problem-store): consolidate problem data structure into ProblemWithDetails 2025-04-09 20:38:53 +08:00
5698a6b81f feat(types): add problem and testcase details types with prisma include 2025-04-09 20:24:57 +08:00
a02335b255 feat(problem-store): add testcases to store state and provider 2025-04-09 19:41:55 +08:00
e6614a0aa2 feat(types/prisma): implement getTestcaseWithData with TestcaseWithData type 2025-04-09 19:37:47 +08:00
0f71444f9f style(dockview): adjust border radius and tab spacing in abyss-spaced 2025-04-09 15:06:22 +08:00
cb940f8608 refactor(problemset): simplify layout by removing Suspense wrapper 2025-04-08 19:15:06 +08:00
d799578150 refactor(editor/header): adjust workspace header layout structure 2025-04-07 12:32:15 +08:00