judge4c/prisma/seed.ts

1734 lines
46 KiB
TypeScript
Raw Normal View History

feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
import { PrismaClient, Prisma } from "@/generated/client";
2025-03-09 09:45:13 +00:00
const prisma = new PrismaClient();
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
const dockerConfigData: Prisma.DockerConfigCreateInput[] = [
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
language: "c",
image: "gcc",
tag: "latest",
workingDir: "/src",
compileOutputLimit: 1 * 1024 * 1024,
runOutputLimit: 1 * 1024 * 1024,
},
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
language: "cpp",
image: "gcc",
tag: "latest",
workingDir: "/src",
compileOutputLimit: 1 * 1024 * 1024,
runOutputLimit: 1 * 1024 * 1024,
},
];
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
const languageServerConfigData: Prisma.LanguageServerConfigCreateInput[] = [
2025-03-09 09:45:13 +00:00
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
language: "c",
protocol: "wss",
hostname: "lsp-c.litchi.icu",
path: "/clangd",
},
{
language: "cpp",
protocol: "wss",
hostname: "lsp-cpp.litchi.icu",
path: "/clangd",
},
];
const problemData: Prisma.ProblemCreateInput[] = [
{
displayId: 1000,
difficulty: "EASY",
isPublished: true,
localizations: {
2025-03-09 09:45:13 +00:00
create: [
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
locale: "en",
type: "TITLE",
content: "Two Sum",
},
{
locale: "zh",
type: "TITLE",
content: "两数之和",
},
{
locale: "en",
type: "DESCRIPTION",
content: `Given an array of integers \`nums\` and an integer \`target\`, return indices of the two numbers such that they add up to \`target\`.
2025-03-09 09:45:13 +00:00
You may assume that each input would have **exactly one solution**, and you may not use the same element twice.
You can return the answer in any order.
## Examples
### Example 1
\`\`\`shell
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
\`\`\`
### Example 2
\`\`\`shell
Input: nums = [3,2,4], target = 6
Output: [1,2]
\`\`\`
### Example 3
\`\`\`shell
Input: nums = [3,3], target = 6
Output: [0,1]
\`\`\`
## Constraints
\`\`\`math
2 <= nums.length <= 10^4
\`\`\`
\`\`\`math
-10^9 <= nums[i] <= 10^9
\`\`\`
\`\`\`math
-10^9 <= target <= 10^9
\`\`\`
<div align="center">
Only one valid answer exists.
</div>
**Follow-up:** Can you come up with an algorithm that is less than $O(n^2)$ time complexity?
2025-03-09 09:45:13 +00:00
---
<Accordion title="Hint 1">
A really brute force way would be to search for all possible pairs of numbers but that would be too slow. Again, it's best to try out brute force solutions for just for completeness. It is from these brute force solutions that you can come up with optimizations.
</Accordion>
<Accordion title="Hint 2">
So, if we fix one of the numbers, say \`x\`, we have to scan the entire array to find the next number \`y\` which is \`value - x\` where value is the input parameter. Can we change our array somehow so that this search becomes faster?
</Accordion>
<Accordion title="Hint 3">
The second train of thought is, without changing the array, can we use additional space somehow? Like maybe a hash map to speed up the search?
</Accordion>`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
locale: "zh",
type: "DESCRIPTION",
content: `给定一个整数数组\`nums\` 一个整数\`target\`, 返回数组中两个数的下标,使得它们的和等于 \`target\`.
使
##
### 1
\`\`\`shell
输入: nums = [2,7,11,15], target = 9
: [0,1]
解释: Because nums[0] + nums[1] == 9, we return [0, 1].
\`\`\`
### 2
\`\`\`shell
输入: nums = [3,2,4], target = 6
: [1,2]
\`\`\`
### 3
\`\`\`shell
输入: nums = [3,3], target = 6
: [0,1]
\`\`\`
##
\`\`\`math
2 <= nums.length <= 10^4
\`\`\`
\`\`\`math
-10^9 <= nums[i] <= 10^9
\`\`\`
\`\`\`math
-10^9 <= target <= 10^9
\`\`\`
<div align="center">
</div>
**** $O(n^2)$ ?
---
<Accordion title="提示 1">
</Accordion>
<Accordion title="提示 2">
\`x\`, 我们就必须遍历整个数组来找到另一个数字 \`y\`,而 \`y\`等于 \`value - x\` (这里的 value 是输入的参数)。我们能否以某种方式对数组进行处理,从而让这种查找变得更快呢?
</Accordion>
<Accordion title="提示 3">
</Accordion>`,
},
{
locale: "en",
type: "SOLUTION",
content: `![Example](https://assets.leetcode.com/uploads/2020/10/02/addtwonumber1.jpg)
## Approach 1: Brute Force
### Algorithm
The brute force approach is simple. Loop through each element $x$ and find if there is another value that equals to $target - x$.
### Implementation
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
\`\`\`c showLineNumbers {2-3,6-7,15}
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
for (int i = 0; i < numsSize; i++) {
for (int j = i + 1; j < numsSize; j++) {
if (nums[j] == target - nums[i]) {
int* result = malloc(sizeof(int) * 2);
result[0] = i;
result[1] = j;
*returnSize = 2;
return result;
}
}
}
// Return an empty array if no solution is found
*returnSize = 0;
return malloc(sizeof(int) * 0);
}
\`\`\`
### Complexity Analysis
- **Time complexity:** $O(n^2)$.
For each element, we try to find its complement by looping through the rest of the array which takes $O(n)$ time. Therefore, the time complexity is $O(n^2)$.
- **Space complexity:** $O(1)$.
The space required does not depend on the size of the input array, so only constant space is used.
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
<VideoEmbed platform="bilibili" id="BV1vkNGehEun" />
---
## Approach 2: Two-pass Hash Table
### Intuition
To improve our runtime complexity, we need a more efficient way to check if the complement exists in the array. If the complement exists, we need to get its index. What is the best way to maintain a mapping of each element in the array to its index? A hash table.
We can reduce the lookup time from $O(n)$ to $O(1)$ by trading space for speed. A hash table is well suited for this purpose because it supports fast lookup in near constant time. I say "near" because if a collision occurred, a lookup could degenerate to $O(n)$ time. However, lookup in a hash table should be amortized $O(1)$ time as long as the hash function was chosen carefully.
### Algorithm
A simple implementation uses two iterations. In the first iteration, we add each element's value as a key and its index as a value to the hash table. Then, in the second iteration, we check if each element's complement ($target - nums[i]$) exists in the hash table. If it does exist, we return current element's index and its complement's index. Beware that the complement must not be $nums[i]$ itself!
### Implementation
\`\`\`c showLineNumbers
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
struct hashTable {
int key;
int value;
UT_hash_handle hh;
} *hashTable = NULL, *item, *tmpItem;
for (int i = 0; i < numsSize; i++) {
HASH_FIND_INT(hashTable, &nums[i], item);
if (item) {
int* result = malloc(sizeof(int) * 2);
result[0] = item->value;
result[1] = i;
*returnSize = 2;
HASH_ITER(hh, hashTable, item, tmpItem) {
HASH_DEL(hashTable, item);
free(item);
}
return result;
}
item = malloc(sizeof(struct hashTable));
item->key = target - nums[i];
item->value = i;
HASH_ADD_INT(hashTable, key, item);
}
HASH_ITER(hh, hashTable, item, tmpItem) {
HASH_DEL(hashTable, item);
free(item);
}
*returnSize = 0;
// If no valid pair is found, return an empty array
return malloc(sizeof(int) * 0);
}
\`\`\`
### Complexity Analysis
- **Time complexity:** $O(n)$.
We traverse the list containing $n$ elements exactly twice. Since the hash table reduces the lookup time to $O(1)$, the overall time complexity is $O(n)$.
- **Space complexity:** $O(n)$.
The extra space required depends on the number of items stored in the hash table, which stores exactly $n$ elements.
---
## Approach 3: One-pass Hash Table
### Algorithm
It turns out we can do it in one-pass. While we are iterating and inserting elements into the hash table, we also look back to check if current element's complement already exists in the hash table. If it exists, we have found a solution and return the indices immediately.
### Implementation
\`\`\`c showLineNumbers
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
struct hashTable {
int key;
int value;
UT_hash_handle hh;
} *hashTable = NULL, *item;
for (int i = 0; i < numsSize; i++) {
int complement = target - nums[i];
HASH_FIND_INT(hashTable, &complement, item);
if (item) {
int* result = malloc(sizeof(int) * 2);
result[0] = item->value;
result[1] = i;
*returnSize = 2;
HASH_CLEAR(hh, hashTable); // Free the hash table
return result;
}
item = malloc(sizeof(struct hashTable));
item->key = nums[i];
item->value = i;
HASH_ADD_INT(hashTable, key, item);
}
*returnSize = 0;
HASH_CLEAR(hh, hashTable); // Free the hash table
// Return an empty array if no solution is found
return malloc(0); // Allocate 0 bytes
}
\`\`\`
### Complexity Analysis
- **Time complexity:** $O(n)$.
We traverse the list containing $n$ elements only once. Each lookup in the table costs only $O(1)$ time.
- **Space complexity:** $O(n)$.
The extra space required depends on the number of items stored in the hash table, which stores at most $n$ elements.
---
## Summary of Approaches
| Approach | Time Complexity | Space Complexity |
| ------------------- | :-------------: | :--------------: |
| Brute Force | $O(n^2)$ | $O(1)$ |
| Two-pass Hash Table | $O(n)$ | $O(n)$ |
| One-pass Hash Table | $O(n)$ | $O(n)$ |`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
locale: "zh",
type: "SOLUTION",
content: `![示例](https://assets.leetcode.com/uploads/2020/10/02/addtwonumber1.jpg)
##
###
 x $target - x$.
###
\`\`\`c showLineNumbers {2-3,6-7,15}
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
for (int i = 0; i < numsSize; i++) {
for (int j = i + 1; j < numsSize; j++) {
if (nums[j] == target - nums[i]) {
int* result = malloc(sizeof(int) * 2);
result[0] = i;
result[1] = j;
*returnSize = 2;
return result;
}
}
}
// 如果未找到解,返回一个空数组
*returnSize = 0;
return malloc(sizeof(int) * 0);
}
\`\`\`
###
- **** $O(n^2)$.
$O(n)$ $O(n^2)$.
- **\(O(1)\)** $O(1)$.
使
<VideoEmbed platform="bilibili" id="BV1vkNGehEun" />
---
## 2: 两遍哈希表
###
$O(n)$ $O(1)$ 退 $O(n)$  $O(1)$
###
使 ($target - nums[i]$) $nums[i]$ !
###
\`\`\`c showLineNumbers
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
struct hashTable {
int key;
int value;
UT_hash_handle hh;
} *hashTable = NULL, *item, *tmpItem;
for (int i = 0; i < numsSize; i++) {
HASH_FIND_INT(hashTable, &nums[i], item);
if (item) {
int* result = malloc(sizeof(int) * 2);
result[0] = item->value;
result[1] = i;
*returnSize = 2;
HASH_ITER(hh, hashTable, item, tmpItem) {
HASH_DEL(hashTable, item);
free(item);
}
return result;
}
item = malloc(sizeof(struct hashTable));
item->key = target - nums[i];
item->value = i;
HASH_ADD_INT(hashTable, key, item);
}
HASH_ITER(hh, hashTable, item, tmpItem) {
HASH_DEL(hashTable, item);
free(item);
}
*returnSize = 0;
// 如果没有找到有效的数对,则返回一个空数组
return malloc(sizeof(int) * 0);
}
\`\`\`
###
- **** $O(n)$.
 n  $O(1)$ $O(n)$
- **** $O(n)$.
$n$
---
##
###
###
\`\`\`c showLineNumbers
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
struct hashTable {
int key;
int value;
UT_hash_handle hh;
} *hashTable = NULL, *item;
for (int i = 0; i < numsSize; i++) {
int complement = target - nums[i];
HASH_FIND_INT(hashTable, &complement, item);
if (item) {
int* result = malloc(sizeof(int) * 2);
result[0] = item->value;
result[1] = i;
*returnSize = 2;
HASH_CLEAR(hh, hashTable); // 释放哈希表内存
return result;
}
item = malloc(sizeof(struct hashTable));
item->key = nums[i];
item->value = i;
HASH_ADD_INT(hashTable, key, item);
}
*returnSize = 0;
HASH_CLEAR(hh, hashTable); // 释放哈希表内存
// 若未找到解,返回一个空数组
return malloc(0); // 分配0字节内存即空数组
}
\`\`\`
###
- **** $O(n)$.
 n  $O(1)$
- **** $O(n)$.
$n$
---
##
| | | |
| ------------------- | :-------------: | :--------------: |
| | $O(n^2)$ | $O(1)$ |
| | $O(n)$ | $O(n)$ |
| | $O(n)$ | $O(n)$ |`,
},
],
},
templates: {
create: [
{
language: "c",
content: `#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int *twoSum(int *nums, int numsSize, int target, int *returnSize) {
}
int *parseIntArray(char *line, int *len) {
line[strcspn(line, "\\n")] = 0;
char *p = line;
while (*p && (*p == '[' || *p == ' ' || *p == ']'))
p++;
int capacity = 10;
int *arr = malloc(capacity * sizeof(int));
*len = 0;
char *token = strtok(p, ",");
while (token) {
if (*len >= capacity) {
capacity *= 2;
arr = realloc(arr, capacity * sizeof(int));
}
arr[(*len)++] = atoi(token);
token = strtok(NULL, ",");
}
return arr;
}
char *formatOutput(int *res, int resLen) {
if (resLen == 0)
return "[]";
char *buf = malloc(resLen * 12 + 3);
char *p = buf;
*p++ = '[';
for (int i = 0; i < resLen; i++) {
p += sprintf(p, "%d", res[i]);
if (i != resLen - 1)
*p++ = ',';
}
*p++ = ']';
*p = 0;
return buf;
}
int main() {
char line[1024];
while (fgets(line, sizeof(line), stdin)) {
int numsSize;
int *nums = parseIntArray(line, &numsSize);
if (!fgets(line, sizeof(line), stdin))
break;
int target = atoi(line);
int returnSize;
int *res = twoSum(nums, numsSize, target, &returnSize);
char *output = formatOutput(res, returnSize);
printf("%s\\n", output);
free(nums);
if (returnSize > 0)
free(res);
if (returnSize > 0)
free(output);
}
return 0;
2025-03-09 09:45:13 +00:00
}`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
language: "cpp",
content: `#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
class Solution {
2025-03-09 09:45:13 +00:00
public:
vector<int> twoSum(vector<int> &nums, int target) {
}
};
vector<int> parseIntArray(const string &input) {
vector<int> result;
string trimmed = input.substr(1, input.size() - 2);
stringstream ss(trimmed);
string token;
while (getline(ss, token, ',')) {
result.push_back(stoi(token));
}
return result;
}
string formatOutput(const vector<int> &output) {
if (output.empty())
return "[]";
stringstream ss;
ss << "[";
for (size_t i = 0; i < output.size(); ++i) {
ss << output[i];
if (i != output.size() - 1)
ss << ",";
}
ss << "]";
return ss.str();
}
int main() {
string line;
while (getline(cin, line)) {
vector<int> nums = parseIntArray(line);
getline(cin, line);
int target = stoi(line);
Solution sol;
vector<int> result = sol.twoSum(nums, target);
cout << formatOutput(result) << endl;
}
return 0;
}`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
],
},
testcases: {
create: [
{
inputs: {
create: [
{
index: 0,
name: "nums",
value: "[2,7,11,15]",
},
{
index: 1,
name: "target",
value: "9",
2025-03-09 09:45:13 +00:00
},
],
},
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
expectedOutput: "[0,1]",
},
{
inputs: {
create: [
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 0,
name: "nums",
value: "[3,2,4]",
},
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 1,
name: "target",
value: "6",
},
],
},
expectedOutput: "[1,2]",
},
{
inputs: {
create: [
{
index: 0,
name: "nums",
value: "[3,3]",
},
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 1,
name: "target",
value: "6",
},
],
},
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
expectedOutput: "[0,1]",
},
],
},
},
{
displayId: 1001,
difficulty: "MEDIUM",
isPublished: true,
localizations: {
create: [
{
locale: "en",
type: "TITLE",
content: "Add Two Numbers",
2025-03-09 09:45:13 +00:00
},
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
locale: "zh",
type: "TITLE",
content: "两数相加",
},
{
locale: "en",
type: "DESCRIPTION",
content: `You are given two **non-empty** linked lists representing two non-negative integers. The digits are stored in **reverse order**, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.
2025-03-09 09:45:13 +00:00
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
## Examples
### Example 1
![Example 1](https://assets.leetcode.com/uploads/2020/10/02/addtwonumber1.jpg)
2025-03-09 09:45:13 +00:00
\`\`\`shell
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.
\`\`\`
### Example 2
\`\`\`shell
Input: l1 = [0], l2 = [0]
Output: [0]
\`\`\`
### Example 3
\`\`\`shell
Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]
\`\`\`
## Constraints
<div align="center">
The number of nodes in each linked list is in the range $[1, 100]$.
</div>
\`\`\`math
0 <= Node.val <= 9
\`\`\`
<div align="center">
It is guaranteed that the list represents a number that does not have leading zeros.
</div>`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
locale: "zh",
type: "DESCRIPTION",
content: `给定两个**非空**链表,它们表示两个非负整数。这些数字以**逆序**存储,并且每个节点包含一个数字。将这两个数字相加,并以链表形式返回它们的和。
0
##
### 1
![1](https://assets.leetcode.com/uploads/2020/10/02/addtwonumber1.jpg)
\`\`\`shell
输入: l1 = [2,4,3], l2 = [5,6,4]
: [7,0,8]
解释: 342 + 465 = 807.
\`\`\`
### 2
\`\`\`shell
输入: l1 = [0], l2 = [0]
: [0]
\`\`\`
### 3
\`\`\`shell
输入: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
: [8,9,9,9,0,0,0,1]
\`\`\`
##
<div align="center">
e $[1, 100]$.
</div>
\`\`\`math
0 <= <= 9
\`\`\`
<div align="center">
</div>`,
},
{
locale: "en",
type: "SOLUTION",
content: `## Approach 1: Elementary Math
### Intuition
Keep track of the carry using a variable and simulate digits-by-digits sum starting from the head of list, which contains the least-significant digit.
![Figure 1](https://leetcode.com/problems/add-two-numbers/Figures/2_add_two_numbers.svg)
*Figure 1. Visualization of the addition of two numbers: $342 + 465 = 807$.*
*Each node contains a single digit and the digits are stored in reverse order.*
### Algorithm
Just like how you would sum two numbers on a piece of paper, we begin by summing the least-significant digits, which is the head of $l1$ and $l2$. Since each digit is in the range of $09$, summing two digits may "overflow". For example $5 + 7 = 12$. In this case, we set the current digit to $2$ and bring over the $carry = 1$ to the next iteration. $carry$ must be either $0$ or $1$ because the largest possible sum of two digits (including the carry) is $9 + 9 + 1 = 19$.
The pseudocode is as following:
- Initialize current node to dummy head of the returning list.
- Initialize carry to $0$.
- Loop through lists $l1$ and $l2$ until you reach both ends and carry is $0$.
- Set $x$ to node $l1$'s value. If $l1$ has reached the end of $l1$, set to $0$.
- Set $y$ to node $l2$'s value. If $l2$ has reached the end of $l2$, set to $0$.
- Set $sum = x + y + carry$.
- Update $carry = sum/10$.
- Create a new node with the digit value of ($sum$ $mod$ $10$) and set it to current node's next, then advance current node to next.
- Advance both $l1$ and $l2$.
- Return dummy head's next node.
Note that we use a dummy head to simplify the code. Without a dummy head, you would have to write extra conditional statements to initialize the head's value.
Take extra caution of the following cases:
| Test case | Explanation |
| ----------------------- | ----------------------------------------------------------------------------- |
| l1=[0,1]<br/>l2=[0,1,2] | When one list is longer than the other. |
| l1=[]<br/>l2=[0,1] | When one list is null, which means an empty list. |
| l1=[9,9]<br/>l2=[1] | The sum could have an extra carry of one at the end, which is easy to forget. |
### Implementation
\`\`\`c showLineNumbers
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* dummyHead = malloc(sizeof(struct ListNode));
dummyHead->val = 0;
dummyHead->next = NULL;
struct ListNode* curr = dummyHead;
int carry = 0;
while (l1 != NULL || l2 != NULL || carry != 0) {
int x = (l1 != NULL) ? l1->val : 0;
int y = (l2 != NULL) ? l2->val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr->next = malloc(sizeof(struct ListNode));
curr->next->val = sum % 10;
curr->next->next = NULL;
curr = curr->next;
if (l1 != NULL) l1 = l1->next;
if (l2 != NULL) l2 = l2->next;
}
struct ListNode* result = dummyHead->next;
free(dummyHead); // Free the memory allocated for dummyHead
return result;
}
\`\`\`
### Complexity Analysis
- **Time complexity:** $O(max(m,n))$
Assume that $m$ and $n$ represents the length of $l1$ and $l2$ respectively, the algorithm above iterates at most $max(m,n)$ times.
- **Space complexity:** $O(1)$
The length of the new list is at most $max(m,n) + 1$ However, we don't count the answer as part of the space complexity.
### Follow up
What if the the digits in the linked list are stored in non-reversed order? For example:
$(3 4 2) + (4 6 5) = 8 0 7$`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
locale: "zh",
type: "SOLUTION",
content: `## 方法 1基础数学方法
###
使
![Figure 1](https://leetcode.com/problems/add-two-numbers/Figures/2_add_two_numbers.svg)
* 1. $342 + 465 = 807$.*
**
###
$l1$ $l2$ $09$ $5 + 7 = 12$ $2$ $carry = 1$ $carry$ $0$ $1$ $9 + 9 + 1 = 19$.
- dummy head
- carry $0$.
- $l1$ $l2$ $0$.
- $x$ $l1$ $l1$ $0$.
- $y$ $l2$ $l2$ $0$.
- $sum = x + y + carry$.
- $carry = sum/10$.
- $sum$ $mod$ $10$
- $l1$ $l2$
-
使
| | |
| ----------------------- | ----------------------------------------------------------------------------- |
| l1=[0,1]<br/>l2=[0,1,2] | |
| l1=[]<br/>l2=[0,1] | 0 |
| l1=[9,9]<br/>l2=[1] | |
###
\`\`\`c showLineNumbers
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* dummyHead = malloc(sizeof(struct ListNode));
dummyHead->val = 0;
dummyHead->next = NULL;
struct ListNode* curr = dummyHead;
int carry = 0;
while (l1 != NULL || l2 != NULL || carry != 0) {
int x = (l1 != NULL) ? l1->val : 0;
int y = (l2 != NULL) ? l2->val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr->next = malloc(sizeof(struct ListNode));
curr->next->val = sum % 10;
curr->next->next = NULL;
curr = curr->next;
if (l1 != NULL) l1 = l1->next;
if (l2 != NULL) l2 = l2->next;
}
struct ListNode* result = dummyHead->next;
free(dummyHead); // 释放为哑结点dummyHead分配的内存。
return result;
}
\`\`\`
###
- **** $O(max(m,n))$
$m$ $n$ $l1$ $l2$ $max(m,n)$
- **** $O(1)$
$max(m,n) + 1$
###
$(3 4 2) + (4 6 5) = 8 0 7$`,
},
],
},
templates: {
create: [
{
language: "c",
content: `#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) {
}
struct ListNode *parseList(char *line) {
line[strcspn(line, "\\n")] = 0;
char *p = line;
while (*p && (*p == '[' || *p == ' ' || *p == ']'))
p++;
struct ListNode dummy;
struct ListNode *cur = &dummy;
dummy.next = NULL;
char *token = strtok(p, ",");
while (token) {
struct ListNode *node = malloc(sizeof(struct ListNode));
node->val = atoi(token);
node->next = NULL;
cur->next = node;
cur = node;
token = strtok(NULL, ",");
}
return dummy.next;
}
void printList(struct ListNode *head) {
printf("[");
while (head) {
printf("%d", head->val);
head = head->next;
if (head)
printf(",");
}
printf("]\\n");
}
void freeList(struct ListNode *head) {
while (head) {
struct ListNode *tmp = head;
head = head->next;
free(tmp);
}
}
int main() {
char line[1024];
while (fgets(line, sizeof(line), stdin)) {
struct ListNode *l1 = parseList(line);
if (!fgets(line, sizeof(line), stdin))
break;
struct ListNode *l2 = parseList(line);
struct ListNode *result = addTwoNumbers(l1, l2);
printList(result);
freeList(l1);
freeList(l2);
freeList(result);
}
return 0;
}`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
language: "cpp",
content: `#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
2025-03-09 09:45:13 +00:00
class Solution {
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
}
};
ListNode *createList(const string &line) {
ListNode dummy;
ListNode *tail = &dummy;
dummy.next = nullptr;
string nums = line;
nums.erase(remove(nums.begin(), nums.end(), '['), nums.end());
nums.erase(remove(nums.begin(), nums.end(), ']'), nums.end());
stringstream ss(nums);
string token;
while (getline(ss, token, ',')) {
if (!token.empty()) {
int val = stoi(token);
tail->next = new ListNode(val);
tail = tail->next;
}
}
return dummy.next;
}
void printList(ListNode *head) {
cout << "[";
while (head) {
cout << head->val;
if (head->next)
cout << ",";
head = head->next;
}
cout << "]" << endl;
}
void freeList(ListNode *head) {
while (head) {
ListNode *tmp = head;
head = head->next;
delete tmp;
}
}
int main() {
string line;
while (getline(cin, line)) {
ListNode *l1 = createList(line);
if (!getline(cin, line))
break;
ListNode *l2 = createList(line);
Solution sol;
ListNode *res = sol.addTwoNumbers(l1, l2);
printList(res);
freeList(l1);
freeList(l2);
freeList(res);
}
return 0;
}`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
],
},
testcases: {
create: [
{
inputs: {
create: [
{
index: 0,
name: "l1",
value: "[2,4,3]",
},
{
index: 1,
name: "l2",
value: "[5,6,4]",
2025-03-09 09:45:13 +00:00
},
],
},
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
expectedOutput: "[7,0,8]",
},
{
inputs: {
create: [
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 0,
name: "l1",
value: "[0]",
},
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 1,
name: "l2",
value: "[0]",
},
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
],
},
expectedOutput: "[0]",
},
{
inputs: {
create: [
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 0,
name: "l1",
value: "[9,9,9,9,9,9,9]",
},
{
index: 1,
name: "l2",
value: "[9,9,9,9]",
},
],
},
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
expectedOutput: "[8,9,9,9,0,0,0,1]",
2025-03-09 09:45:13 +00:00
},
],
},
},
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
displayId: 1002,
difficulty: "HARD",
isPublished: true,
localizations: {
2025-03-09 09:45:13 +00:00
create: [
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
locale: "en",
type: "TITLE",
content: "Median of Two Sorted Arrays",
},
{
locale: "zh",
type: "TITLE",
content: "寻找两个正序数组的中位数",
},
{
locale: "en",
type: "DESCRIPTION",
content: `Given two sorted arrays \`nums1\` and \`nums2\` of size \`m\` and \`n\` respectively, return **the median** of the two sorted arrays.
2025-03-09 09:45:13 +00:00
The overall run time complexity should be $O(log(m+n))$.
## Examples
### Example 1
\`\`\`shell
Input: nums1 = [1,3], nums2 = [2]
Output: 2.00000
Explanation: merged array = [1,2,3] and median is 2.
\`\`\`
### Example 2
\`\`\`shell
Input: nums1 = [1,2], nums2 = [3,4]
Output: 2.50000
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
\`\`\`
## Constraints
\`\`\`math
nums_1.length == m
\`\`\`
\`\`\`math
nums_2.length == n
\`\`\`
\`\`\`math
0 <= m <= 1000
\`\`\`
\`\`\`math
0 <= n <= 1000
\`\`\`
\`\`\`math
1 <= m + n <= 2000
\`\`\`
\`\`\`math
-10^6 <= nums_1[i], nums_2[i] <= 10^6
\`\`\``,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
locale: "zh",
type: "DESCRIPTION",
content: `给定两个大小分别为 \`nums1\`\`nums2\` 的有序数组 \`m\`\`n\` ,请返回这两个有序数组的**中位数**。
$O(log(m+n))$.
##
### 1
\`\`\`shell
Input: nums1 = [1,3], nums2 = [2]
Output: 2.00000
Explanation: merged array = [1,2,3] and median is 2.
\`\`\`
### 2
\`\`\`shell
Input: nums1 = [1,2], nums2 = [3,4]
Output: 2.50000
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
\`\`\`
##
\`\`\`math
nums_1.length == m
\`\`\`
\`\`\`math
nums_2.length == n
\`\`\`
\`\`\`math
0 <= m <= 1000
\`\`\`
\`\`\`math
0 <= n <= 1000
\`\`\`
\`\`\`math
1 <= m + n <= 2000
\`\`\`
\`\`\`math
-10^6 <= nums_1[i], nums_2[i] <= 10^6
\`\`\``,
},
{
locale: "en",
type: "SOLUTION",
content: `## Approach 1: Merge Sort
### Intuition
Let's start with the straightforward approach. If we put the elements of two arrays in one array \`A\` and arrange them in order. Assume the merged arrays has a length of \`n\`, then the median is:
- \`A[n / 2]\`, if \`n\` is odd.
- The average of \`A[n / 2]\` and \`A[n / 2 + 1]\`, if \`n\` is even.
However, we do not really need to merge and sort these arrays. Note that both arrays are already sorted, so the smallest element is either the first element of \`nums1\` or the first element of \`nums2\`. Therefore, we can set two pointers \`p1\` and \`p2\` at the start of each array, then we can get the smallest element from the \`nums1\` and \`nums2\` by comparing the values \`nums1[p1]\` and \`nums2[p2]\`.
Please refer to the following slide as an example:
### Algorithm
1. Get the total size of two arrays \`m + n\`
- If \`m + n\` is odd, we are looking for the \`(m + n) / 2\` -th element.
- If \`m + n\` is even, we are looking for the average of the \`(m + n) / 2\` -th and the \`(m + n) / 2 + 1\` -th elements.
2. Set two pointers \`p1\` and \`p2\` at the beginning of arrays \`nums1\` and \`nums2\`.
3. If both \`p1\` and \`p2\` are in bounds of the arrays, compare the values at \`p1\` and \`p2\`:
- If \`nums1[p1]\` is smaller than \`nums2[p2]\`, we move \`p1\` one place to the right.
- Otherwise, we move \`p2\` one place to the right.
If \`p1\` is outside \`nums1\`, just move \`p2\` one place to the right.
If \`p2\` is outside \`nums2\`, just move \`p1\` one place to the right.
4. Get the target elements and calculate the median:
- If \`m + n\` is odd, repeat step 3 by \`(m + n + 1) / 2\` times and return the element from the last step.
- If \`m + n\` is even, repeat step 3 by \`(m + n) / 2 + 1\` times and return the average of the elements from the last two steps.
### Implementation
\`\`\`c showLineNumbers
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int m = nums1Size, n = nums2Size;
int p1 = 0, p2 = 0;
int getMin() {
if (p1 < m && p2 < n) {
return nums1[p1] < nums2[p2] ? nums1[p1++] : nums2[p2++];
} else if (p1 < m) {
return nums1[p1++];
} else if (p2 < n) {
return nums2[p2++];
}
return -1;
}
double median;
if ((m + n) % 2 == 0) {
for (int i = 0; i < ((m + n) / 2) - 1; ++i) {
int temp = getMin();
}
median = (getMin() + getMin()) / 2.0;
} else {
for (int i = 0; i < (m + n) / 2; ++i) {
int temp = getMin();
}
median = getMin();
}
return median;
}
\`\`\`
### Complexity Analysis
Let $m$ be the size of array \`nums1\` and $n$ be the size of array \`nums2\`.
- **Time complexity:** $O(m + n)$
- We get the smallest element by comparing two values at \`p1\` and \`p2\`, it takes $O(1)$ to compare two elements and move the corresponding pointer to the right.
- We need to traverse half of the arrays before reaching the median element(s).
- To sum up, the time complexity is $O(m + n)$.
- **Space complexity:** $O(1)$
- We only need to maintain two pointers \`p1\` and \`p2\`.`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
locale: "zh",
type: "SOLUTION",
content: `## 方法 1: 归并排序思路
###
\`A\` 并排序,假设合并后数组的长度为 \`n\`,那么中位数为:
- n \`A[n / 2]\`
- n \`A[n / 2]\`\`A[n / 2 + 1]\` 的平均值。
\`nums1\`\`nums2\`。 因此,我们可以设置两个指针 \`p1\`\`p2\` 分别指向两个数组的起始位置,通过比较 \`nums1[p1]\`\`nums2[p2]\`的值来逐步获取合并后的有序元素。
###
1. \`m + n\`
- \`m + n\` 为奇数,我们需要找到第 \`(m + n) / 2\` 个元素(从 0 开始计数)。
- \`m + n\` 为偶数,我们需要找到第 \`(m + n) / 2\` 个和第 \`(m + n) / 2 + 1\` 个元素的平均值。
2. \`p1\` = 0指向 \`nums1\` 起始)和 \`p2\` = 0指向 \`nums2\` 起始)。
3. \`p1\`\`p2\` 都在数组的有效范围内(即未越界),则比较 \`p1\`\`p2\`所指位置的值:
- \`nums1[p1]\` 小于 \`nums2[p2]\`,则将 \`p1\` 向右移动一位。
- \`p2\` 向右移动一位。
\`p1\` 超出 \`nums1\`的范围,则直接将 \`p2\` 向右移动一位。
\`p2\` 超出 \`nums2\`的范围,则直接将 \`p1\` 向右移动一位。
4.
- \`m + n\` 为奇数,重复步骤 \`3 (m + n + 1) / 2\` 次(每次移动指针对应获取一个元素),最后一次步骤中得到的元素即为中位数。
- \`m + n\` 为偶数,重复步骤 \`3 (m + n) / 2 + 1\` 次,取最后两次步骤中得到的元素,计算它们的平均值作为中位数。
###
\`\`\`c showLineNumbers
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int m = nums1Size, n = nums2Size;
int p1 = 0, p2 = 0;
int getMin() {
if (p1 < m && p2 < n) {
return nums1[p1] < nums2[p2] ? nums1[p1++] : nums2[p2++];
} else if (p1 < m) {
return nums1[p1++];
} else if (p2 < n) {
return nums2[p2++];
}
return -1;
}
double median;
if ((m + n) % 2 == 0) {
for (int i = 0; i < ((m + n) / 2) - 1; ++i) {
int temp = getMin();
}
median = (getMin() + getMin()) / 2.0;
} else {
for (int i = 0; i < (m + n) / 2; ++i) {
int temp = getMin();
}
median = getMin();
}
return median;
}
\`\`\`
###
\`nums1\` 的长度为 $m$ ,数组 \`nums2\` 的长度为 $n$
- **** $O(m + n)$
- \`p1\`\`p2\`指向的两个元素来获取当前最小元素,每次比较和移动指针的时间为 $O(1)$
-
- $O(m + n)$.
- **** $O(1)$
- \`p1\`\`p2\` ,无需额外线性空间。`,
},
],
},
templates: {
create: [
{
language: "c",
content: `#include <stdio.h>
#include <stdlib.h>
#include <string.h>
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
}
int *parseIntArray(char *line, int *len) {
line[strcspn(line, "\\n")] = 0;
char *p = line;
while (*p && (*p == '[' || *p == ' ' || *p == ']'))
p++;
int capacity = 10;
int *arr = malloc(capacity * sizeof(int));
*len = 0;
char *token = strtok(p, ",");
while (token) {
if (*len >= capacity) {
capacity *= 2;
arr = realloc(arr, capacity * sizeof(int));
}
arr[(*len)++] = atoi(token);
token = strtok(NULL, ",");
}
return arr;
}
int main() {
char line[1024];
while (fgets(line, sizeof(line), stdin)) {
int nums1Size;
int *nums1 = parseIntArray(line, &nums1Size);
if (!fgets(line, sizeof(line), stdin))
break;
int nums2Size;
int *nums2 = parseIntArray(line, &nums2Size);
double result = findMedianSortedArrays(nums1, nums1Size, nums2, nums2Size);
printf("%.5f\\n", result);
free(nums1);
free(nums2);
}
return 0;
}`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
{
language: "cpp",
content: `#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
class Solution {
2025-03-09 09:45:13 +00:00
public:
double findMedianSortedArrays(vector<int> &nums1, vector<int> &nums2) {
}
};
vector<int> parseVector(const string &line) {
vector<int> result;
stringstream ss(line);
char c;
int num;
while (ss >> c) {
if (isdigit(c) || c == '-' || c == '+') {
ss.putback(c);
ss >> num;
result.push_back(num);
}
}
return result;
}
int main() {
string line;
while (getline(cin, line)) {
vector<int> nums1 = parseVector(line);
if (!getline(cin, line))
break;
vector<int> nums2 = parseVector(line);
Solution sol;
double result = sol.findMedianSortedArrays(nums1, nums2);
printf("%.5f\\n", result);
}
return 0;
}`,
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
},
],
},
testcases: {
create: [
{
inputs: {
create: [
{
index: 0,
name: "nums1",
value: "[1,3]",
},
{
index: 1,
name: "nums2",
value: "[2]",
2025-03-09 09:45:13 +00:00
},
],
},
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
expectedOutput: "2.00000",
},
{
inputs: {
create: [
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 0,
name: "nums1",
value: "[1,2]",
},
{
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
index: 1,
name: "nums2",
value: "[3,4]",
},
],
},
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
expectedOutput: "2.50000",
2025-03-09 09:45:13 +00:00
},
],
},
},
];
export async function main() {
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
for (const dockerConfig of dockerConfigData) {
await prisma.dockerConfig.create({
data: dockerConfig,
});
}
for (const languageServerConfig of languageServerConfigData) {
await prisma.languageServerConfig.create({
data: languageServerConfig,
});
}
feat: update main branch (#45) * chore(deps): add pino and pino-pretty packages * feat(log): add pino logging support * chore(tailwind): update config with features path and animate import * chore(deps): add react-icons package * 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 * refactor(auth)!: remove components and rewrite sign-in page * feat(user-avatar): refactor avatar component into user-avatar with improved structure * 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 * 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 * 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 * 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 * chore(problems): move problem-dockview to components directory * 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 * 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 * refactor(mdx-renderer): simplify component implementation - Remove Suspense and Skeleton loading state - Convert to arrow function syntax - Reorganize import statements - Simplify export syntax * 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 * 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 * 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 * refactor(route): rename [id] to [problemId] in problems route * 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 * fix(page): add missing return statement in RootPage component * 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 * chore(prisma/migrations): add migration for multilingual problem support * 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. * 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 * chore(shiki): convert function to arrow function * chore(scripts): remove --turbopack flag from dev script * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * feat(config): add LANGUAGES constant for language enum values * 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 * 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 * refactor(problems): update ProblemHeader import path to new location * 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 * 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 * chore(utils): remove unused utility functions - Remove getPath function (moved to problem-editor store) - Remove getDifficultyColorClass function (unused) - Keep only core cn utility function * 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 * 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 * 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 * 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 * refactor(components): simplify BackButton by using TooltipButton * 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 * 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 * refactor(api): extract OpenAI client to shared module * fix(prisma): make TestcaseResult.output field optional * chore(prisma): make TestcaseResult.output nullable in migration * feat: replace dockview with flexlayout-react
2025-06-21 06:09:57 +00:00
for (const problem of problemData) {
await prisma.problem.create({
data: problem,
});
2025-03-09 09:45:13 +00:00
}
}
main();