Commit Graph

603 Commits

Author SHA1 Message Date
99f8407e2a feat(ai-bot): add empty state UI and improve message handling 2025-03-25 10:29:25 +08:00
d560904779 feat(api/chat): add OpenAI-based chat route with sarcastic AI personality 2025-03-25 10:03:04 +08:00
7d73118759 feat(ai-bot): enhance AI chat with code integration and optimizations 2025-03-25 00:27:56 +08:00
ef37451313 chore(ui): add eslint-disable for unused variables in ChatMessageList 2025-03-24 21:27:12 +08:00
c0783f0648 chore(ui): add eslint-disable for empty object type in ChatInputProps 2025-03-24 21:26:47 +08:00
cbe8ff9941 feat(ai-bot): integrate problem data into AI bot page initialization 2025-03-24 21:24:20 +08:00
8d8b6666b4 feat(playground): add AI chat interface for bot 2025-03-24 19:58:48 +08:00
c7e2b59ddf feat(playground): add AI bot layout with suspense fallback 2025-03-24 19:57:07 +08:00
6f26be6119 feat(playground): add AI layout with bot tab 2025-03-24 19:56:06 +08:00
da92cd49bc feat(playground): add AI panel to problem layout 2025-03-24 19:55:17 +08:00
599d44b341 refactor(globals): migrate global styles to components and adjust layout 2025-03-24 13:57:26 +08:00
378d568694 fix(toast): update ExitCodeToast styling and layout 2025-03-24 13:08:21 +08:00
2b4a4b527e feat(cli): add all components with shadcn-chat-cli 2025-03-24 11:38:00 +08:00
cc3fb8afc4 feat(playground): add generateStaticParams for problem static generation 2025-03-24 11:28:40 +08:00
45cbbc2978 refactor(PlaygroundLayout): separate templates from problemData 2025-03-24 10:39:56 +08:00
d0118eca65 refactor(playground): migrate problem description to client component 2025-03-24 10:33:14 +08:00
288a3cc4c5 feat(playground): include full problem data in provider 2025-03-24 10:32:20 +08:00
0c9ad2b8b0 refactor(mdx-preview): use MdxComponents and add className prop 2025-03-24 10:31:09 +08:00
7a0a13aa97 feat(hook): add problem field to useProblem hook 2025-03-24 10:29:46 +08:00
dcb666c12d feat(problem-store-provider): pass problem data to ProblemStoreProvider 2025-03-24 10:28:58 +08:00
2a90162c73 feat(problem-store): add problem field to ProblemState 2025-03-24 10:28:16 +08:00
c97613ac1d refactor(problem-editor): rename CodeEditor to ProblemEditor 2025-03-23 23:55:11 +08:00
9e4bcfaf96 refactor(lsp-status-button): update LSP status logic to use WebSocket state 2025-03-23 23:53:07 +08:00
09a8276d39 refactor(problem-editor): modify LSP connection logic to manage WebSocket state 2025-03-23 23:51:58 +08:00
1796d21a09 refactor(language-server): modify connectToLanguageServer to return both client and webSocket 2025-03-23 23:51:12 +08:00
f246ff1a6d feat(use-problem): integrate WebSocket into problem hook 2025-03-23 23:49:34 +08:00
cea8748a4e feat(problem-store-provider): update to include WebSocket in provider state 2025-03-23 23:48:19 +08:00
3fbec8cd24 feat(problem-store): add WebSocket to store and update actions 2025-03-23 23:47:36 +08:00
6df93de3ca feat(header): add LSP status button to workspace header 2025-03-23 22:05:59 +08:00
cd5f3c88dc refactor(problem-editor): optimize event handlers with useCallback 2025-03-23 21:03:53 +08:00
4842c9302c feat(problem-editor): add LSP support and language client connection 2025-03-23 18:50:07 +08:00
becb48f4d7 feat(use-problem): add monacoLanguageClient state management 2025-03-23 16:59:22 +08:00
0e5e683ef3 refactor(use-problem): pass problemId to getPath function 2025-03-23 15:36:53 +08:00
b339e407cf feat(utils): include problemId in getPath function 2025-03-23 15:34:57 +08:00
c5cf52168b refactor(problemset): remove force-dynamic export 2025-03-23 14:16:57 +08:00
45a9950ad3 fix(credentials-sign-in-form): redirect to dashboard after successful sign-in 2025-03-22 13:49:12 +08:00
985da4f804 feat(auth): modify signIn logic to prevent redirect after credentials sign-in 2025-03-22 13:18:06 +08:00
107f5d6670 feat(problemset): display sequential index instead of database id 2025-03-22 12:30:04 +08:00
e5ba5dd51a refactor(hooks): rename use-problem-editor.ts to use-problem.ts 2025-03-22 00:23:27 +08:00
695dabe821 refactor(problem-editor): rename problem-editor-provider.tsx to problem-store-provider.tsx 2025-03-22 00:00:49 +08:00
8904e13a68 refactor(problem-editor): replace Zustand store with useRef store 2025-03-21 23:59:07 +08:00
14bee1ade8 feat(store): add problem store for managing editor state 2025-03-21 23:58:50 +08:00
f43ba10a57 refactor(store): rename src/store to src/stores 2025-03-21 23:58:40 +08:00
69115c4ef0 feat(run-code): integrate exit code toast and update problem editor hook 2025-03-21 11:08:00 +08:00
b46a603f62 feat(toast): add custom exit code toast component with icons and messages 2025-03-21 11:07:10 +08:00
b19692ee4f feat(problem-editor): add MonacoLanguageClient to problem editor state 2025-03-20 16:44:34 +08:00
321a712bf9 feat(playground-layout): integrate problem data fetching and editor configuration 2025-03-20 16:12:23 +08:00
d79b88e0b6 refactor(page): simplify WorkspaceEditorPage by removing unnecessary database queries and state management 2025-03-20 16:10:11 +08:00
ceee810e14 refactor(page): update import paths for WorkspaceEditorHeader and WorkspaceEditorFooter 2025-03-20 15:58:05 +08:00
91d9344bc9 refactor(header): update import style for RunCode component 2025-03-20 15:51:59 +08:00
bb8d893419 chore(store): remove useCodeEditorStore.ts 2025-03-20 15:47:18 +08:00
bc541fc605 refactor(header): convert default exports to named exports for buttons and language selector 2025-03-20 15:46:09 +08:00
547c458a20 refactor(redo-button): replace useCodeEditorStore with useProblemEditor in RedoButton component 2025-03-20 15:43:14 +08:00
5db172fce3 feat(LanguageSelector): add loading state for hydration 2025-03-20 15:41:46 +08:00
7051f57204 refactor(WorkspaceEditorFooter): replace useCodeEditorStore with useProblemEditor 2025-03-20 15:39:10 +08:00
00f83d69f1 refactor(ResetButton): replace useCodeEditorStore with useProblemEditor 2025-03-20 15:35:53 +08:00
0ae01d35bc feat(UndoButton): replace useCodeEditorStore with useProblemEditor 2025-03-20 15:34:45 +08:00
a6595c51db feat(format-button): switch to useProblemEditor hook for editor state 2025-03-20 15:28:44 +08:00
12d0eed66a feat(copy-button): update to use useProblemEditor hook for editor state 2025-03-20 15:26:33 +08:00
74c8175153 feat(editor): refactor code editor component to problem editor 2025-03-20 15:15:37 +08:00
cc76648437 refactor(useProblemEditor): update hooks to support language-specific localStorage keys 2025-03-20 15:11:23 +08:00
458bdfbf42 fix(useMonacoTheme): return theme ID instead of the full theme object 2025-03-20 14:47:16 +08:00
783b8415ea refactor(editor): integrate ProblemEditorProvider for workspace editor 2025-03-20 14:44:17 +08:00
fae504b35d chore(components): remove unused core-editor component 2025-03-20 14:42:45 +08:00
9814358637 feat(problem-editor): add hydration state for better rehydration handling 2025-03-20 14:40:09 +08:00
7a29d751d3 chore(store): delete unused useProblemEditorStore.ts file 2025-03-20 14:19:23 +08:00
d2bafafc14 refactor(problem-editor-provider): Add editor state and actions 2025-03-20 14:18:15 +08:00
69dfb8cb12 refactor(useProblemEditor): refactor to use useProblemEditorStore for state management 2025-03-20 14:15:37 +08:00
298d2c1c86 refactor(WorkspaceEditorHeader): remove unused props and simplify component 2025-03-20 13:30:42 +08:00
6bd3a44d8d refactor(language-selector): update to use useProblemEditor hook 2025-03-20 13:25:47 +08:00
a44826990c refactor(hooks): improve useProblemEditor state management and persistence 2025-03-20 13:08:00 +08:00
2d83d3f143 feat(providers): add ProblemEditorProvider context for state management 2025-03-20 13:05:51 +08:00
8290634afd fix(utils): update function to use fileName instead of language 2025-03-19 18:18:44 +08:00
1c0ffb8cda feat(hooks): add useProblemEditor hook for managing problem-specific editor language 2025-03-19 15:14:11 +08:00
71227b0890 feat(store): add problem editor state management with zustand 2025-03-19 15:13:34 +08:00
154b66d524 refactor(hooks): rename monacoTheme to currentTheme in useMonacoTheme 2025-03-19 14:58:11 +08:00
24b5d96913 feat(core-editor): Add CoreEditor component with Monaco Editor integration 2025-03-19 13:18:00 +08:00
8ab8892388 fix(auth): improve credential validation and password verification 2025-03-19 08:34:15 +08:00
919016cf27 fix(auth): update error message for sign-in and sign-up functions 2025-03-18 23:24:36 +08:00
0e16b9ff6c feat(credentials-sign-up-form): add user registration with transition and toast notifications 2025-03-18 22:52:00 +08:00
7ecef7679f feat(credentials-sign-in-form): add loading state, error handling, and navigation after sign in 2025-03-18 22:50:59 +08:00
bef8dcee44 feat(auth): enhance signIn and signUp with error handling and form value types 2025-03-18 22:50:06 +08:00
c9c07664cf feat(layout): update Toaster position to top-right 2025-03-18 22:49:06 +08:00
a33bf167d4 rename(components): update file names for consistency 2025-03-18 22:14:12 +08:00
63c0656f25 feat(auth): assign ADMIN role to the first user on sign up 2025-03-18 21:53:59 +08:00
e25a97d698 feat(auth): add event to assign ADMIN role to the first user 2025-03-18 21:53:12 +08:00
b55ed07004 fix(Loading): update loading state rendering with skeletons for better UX 2025-03-18 19:49:03 +08:00
91ce73d72b feat(Loading): add skeletonClassName prop to customize Skeleton style 2025-03-18 19:46:19 +08:00
6c53c5ee32 refactor(page): replace accordion structure with LanguageServerAccordion component 2025-03-18 19:37:30 +08:00
bd085751b6 feat(component): add LanguageServerAccordion for language server settings 2025-03-18 19:36:36 +08:00
1acd915459 feat(store): add useAdminSettingsStore for managing admin settings 2025-03-18 19:34:45 +08:00
449dfd56f2 refactor(loading): add className prop and support additional props 2025-03-18 19:34:00 +08:00
7eb6eedf22 feat(settings): add Suspense with Loading fallback in language server layout 2025-03-18 19:33:14 +08:00
ceb01aec59 feat(dashboard): add admin dashboard page 2025-03-18 14:58:19 +08:00
2248645a38 feat(sidebar): update navigation links for settings page 2025-03-18 14:53:12 +08:00
827fb26966 feat(language-server): add settings page for language server configuration 2025-03-18 14:45:45 +08:00
06c711bdaf feat(form): add language-server form for settings 2025-03-18 14:43:48 +08:00
494b899f09 feat(actions): add language server configuration handling 2025-03-18 14:33:51 +08:00
6ec039eeb5 feat(admin): add language server settings layout 2025-03-18 11:01:35 +08:00
168df31fad refactor(admin): replace breadcrumb with Navbar in dashboard layout 2025-03-18 10:40:03 +08:00
0dec1e5697 feat(navbar): add breadcrumb navigation component 2025-03-18 10:36:26 +08:00
047cd04ea3 feat(components/ui): add Accordion component from shadcn/ui 2025-03-17 20:21:20 +08:00
6a4855086e feat(component/ui): add Textarea component from shadcn/ui 2025-03-17 17:57:20 +08:00
f266d9cdf7 feat(dashboard): remove guest prop and return notFound for non-ADMIN users 2025-03-17 12:06:48 +08:00
4ef120178c fix(nav-main): concatenate base URL with sub-item URL 2025-03-17 11:58:51 +08:00
b403a0f977 refactor(components): extract NavUserProps and NavMainProps type and optimize type definitions 2025-03-17 11:35:05 +08:00
cb966297e1 refactor(app-sidebar): support external user prop and remove internal user data 2025-03-17 10:45:23 +08:00
36c6dd138f feat(dashboard): add layout component for dashboard 2025-03-17 10:07:00 +08:00
a5faab67c5 feat(components/ui): add Sidebar-07 component from shadcn/ui 2025-03-16 20:31:21 +08:00
aa10163c51 feat(code-editor): update component to set path based on language configuration 2025-03-16 20:00:55 +08:00
af0ece8952 feat(judge): integrate Prisma for editor language configurations 2025-03-16 19:32:34 +08:00
0cb5484fbd chore(store): update result type and remove unused imports 2025-03-16 19:31:05 +08:00
2d4abc5141 chore(types): delete src/types/judge.ts file 2025-03-16 19:28:52 +08:00
f34a01e8f5 feat(judge): remove unused judge configuration file 2025-03-16 17:07:24 +08:00
f3b9ae64f4 feat(code-editor): refactor to support dynamic language and LSP configuration 2025-03-16 16:36:02 +08:00
332e019e70 feat(workspace/editor): add language server config support and optimize data fetching logic 2025-03-16 16:24:58 +08:00
4dc3b44bf0 feat(workspace-editor): add languageServerConfigs support to WorkspaceEditorHeader 2025-03-16 16:06:33 +08:00
004bdb510b feat(language-selector): update to support multiple language server configurations 2025-03-16 15:59:59 +08:00
acfeee5a26 refactor(language-server): replace EditorLanguageMetadata with EditorLanguageConfig and LanguageServerConfig for better type safety 2025-03-16 15:49:46 +08:00
31c5d86f2c chore(store): update CodeEditorStore for LSP config changes 2025-03-16 15:40:00 +08:00
ff8eff5891 chore(config, types): remove deprecated language server and editor language files 2025-03-16 15:39:07 +08:00
c1999bd386 refactor(utils): update getPath function to use EditorLanguageConfig from Prisma 2025-03-16 15:36:54 +08:00
07ffcf439b refactor(code-editor-store): replace DefaultEditorLanguageConfig with DEFAULT_EDITOR_LANGUAGE constant 2025-03-16 14:28:25 +08:00
b0bb5b5250 feat(editor-language): simplify language configuration to a constant 2025-03-16 14:27:28 +08:00
ee4020f50f feat(workspace): pass editorLanguageConfigs to LanguageSelector and WorkspaceEditorHeader 2025-03-16 14:18:14 +08:00
b0e00e7d69 feat(language-selector): integrate icons for languages in language selector 2025-03-16 13:33:16 +08:00
02f4fc1c3f feat(config): add mapping for EditorLanguage to icons 2025-03-16 13:31:08 +08:00
82d85d3b31 refactor(config): remove icon property from EditorLanguageConfig 2025-03-16 13:24:06 +08:00
939cd4b2f0 refactor(types): remove icon property from EditorLanguageMetadata type 2025-03-16 13:23:32 +08:00
d1188f5ea6 chore(components): move features to components/features 2025-03-16 12:05:59 +08:00
db4bc0dc73 chore(config): remove problem folder 2025-03-15 22:35:15 +08:00
672b627ed1 chore(app): remove playground folder 2025-03-15 22:34:23 +08:00
3e4c58d953 refactor(AuthLayout): replace <a> with <Link> for better navigation 2025-03-15 00:11:51 +08:00
740bc1e00b feat(problemset): optimize database query by selecting specific fields 2025-03-14 18:59:44 +08:00
cd50e73fc9 refactor(auth): extract saltRounds constant 2025-03-14 17:15:38 +08:00
116519a70b feat(auth): refactor sign up and sign in forms with react-hook-form and zod validation 2025-03-14 17:08:11 +08:00
468e72e9a8 feat(auth): add sign up and sign in functions with credentials 2025-03-14 17:06:19 +08:00
abae72118a feat(components/ui): add Form component from shadcn/ui 2025-03-14 15:55:37 +08:00
0215644e6c refactor(auth): extract credentials sign-in and sign-up forms into separate components 2025-03-14 15:54:32 +08:00
5f49d6841e feat(layout): add Sonner Toaster for toast notifications 2025-03-14 15:36:29 +08:00
18d9b28e1e feat(components/ui): add Sonner component from shadcn/ui 2025-03-14 15:33:07 +08:00
907d108714 feat(auth): implement custom credentials provider with session management 2025-03-14 14:39:26 +08:00
bfaaf25732 feat(auth): add layout for authentication pages with redirect logic 2025-03-14 14:38:51 +08:00
2d872da445 feat(auth): add sign-in and sign-up pages 2025-03-14 14:37:32 +08:00
095af823e4 feat(auth): add sign-in and sign-up forms with GitHub sign-in option 2025-03-14 14:36:35 +08:00
eadd276c29 feat(auth): add GitHubSignIn component 2025-03-14 14:35:07 +08:00
47c219bc4a refactor(avatar-button): replace sign-in handler with redirect to /sign-in 2025-03-14 14:34:05 +08:00
e6e5ea98ea feat(auth): add validation schema using Zod 2025-03-14 14:22:58 +08:00
17dd98c78c refactor(utils): remove type annotation from getPath function 2025-03-14 11:04:12 +08:00
e2dce21261 feat(components/ui): add Label component from shadcn/ui 2025-03-14 10:11:22 +08:00
60aef705d5 refactor(editor): replace loading skeleton with custom Loading component 2025-03-13 11:44:14 +08:00
2f037f8a78 feat(layout): add Suspense with fallback loading for problemset layout 2025-03-13 11:24:24 +08:00
b78547a992 feat(run-code): add tooltip to button for better UX 2025-03-13 10:48:01 +08:00
574a98e58e chore(auth): move auth.ts to src/lib directory 2025-03-12 22:46:01 +08:00
c6cba8f504 feat(playground-header): replace SettingsButton with AvatarButton 2025-03-12 21:17:50 +08:00
e6b4be4758 feat(problemset-layout): add AvatarButton to problemset layout 2025-03-12 21:17:14 +08:00
171ee8abdc refactor(settings-button): update to use dropdown menu item instead of button 2025-03-12 21:15:44 +08:00
d0235b0989 feat(avatar-button): add AvatarButton component with login/logout functionality 2025-03-12 21:14:18 +08:00
2679f52066 feat(RootLayout): add SettingsDialog component 2025-03-12 17:38:33 +08:00
118b96a7a8 fix(auth): change prisma import to default export 2025-03-12 15:55:42 +08:00
012e0f7d05 fix(problem): remove unnecessary parseInt conversion for problem id 2025-03-12 15:32:14 +08:00
24d94f3802 feat(prisma): add global Prisma client instance 2025-03-12 15:25:31 +08:00
bc7b7e3b8a feat(components/ui): add Avatar component from shadcn/ui 2025-03-12 15:19:41 +08:00
89d9dbd01e feat(auth): add GitHub provider for authentication 2025-03-12 15:18:31 +08:00
256a8614e3 feat(auth): integrate PrismaAdapter with NextAuth for database integration 2025-03-12 15:07:20 +08:00
d3d280e618 refactor(prisma): replace global with globalThis for cross-platform compatibility 2025-03-12 15:06:08 +08:00
18ab071ca6 feat(auth): create route.ts for NextAuth API handler 2025-03-12 15:02:02 +08:00
134cd38964 feat(auth): create auth.ts for authentication setup 2025-03-12 15:01:26 +08:00
eab62706e0 feat(problemset): add dynamic rendering for ProblemsetPage 2025-03-12 13:57:57 +08:00
c58ed38c03 feat(problemset): add sorting by id in problemset page 2025-03-12 12:52:50 +08:00
6d61e6e783 refactor(header): remove state management and add back button 2025-03-12 12:24:53 +08:00
97405a8657 feat(components): add back button component with tooltip 2025-03-12 12:22:41 +08:00
247e54c40c refactor(settings-dialog): integrate settings dialog state with store 2025-03-12 11:49:29 +08:00
83356993e9 refactor(settings-button): integrate settings dialog state with store 2025-03-12 11:48:41 +08:00
efa16c8b77 refactor(store): rename useSettingNavStore to useSettingsStore and update state structure 2025-03-12 11:47:31 +08:00
a7a50231d2 refactor(problems): use Suspense for lazy loading and adjust layout structure 2025-03-12 08:59:38 +08:00
ca2d663533 feat(playground): add min size constraints for resizable panels 2025-03-12 08:23:24 +08:00
2bc704a818 feat(loading): add Loading component 2025-03-11 22:40:21 +08:00
6a01fed089 refactor(prisma): move prisma initialization to default export 2025-03-11 14:58:36 +08:00
862fbf1379 fix(prisma): ensure single Prisma Client instance in development
- Reference: https://www.prisma.io/docs/orm/more/help-and-troubleshooting/nextjs-help#recommended-solution
2025-03-11 12:47:28 +08:00
4b0d238d37 fix(RunCode): update component with custom classes for background and hover states 2025-03-10 23:10:56 +08:00
84ac0a88dc feat(solution): add layout and page components for problem solution, including footer 2025-03-10 20:54:31 +08:00
4727c55bcc refactor(layout, page, description): update problem page layout and structure, including description fetching and TabsContent styling 2025-03-10 20:51:21 +08:00
aaa4c1def5 fix(mdx-components): restore list decoration for ordered and unordered lists
- Restored default list decorations (bullet points for `ul` and numbers for `ol`).
- Solution based on issue from `sindresorhus/github-markdown-css#103`.
2025-03-10 20:41:53 +08:00
13fd49fd18 style(mdx): update code highlighting styles for dark mode 2025-03-10 14:23:19 +08:00
8c847018f0 fix(theme): update code block styles to use useTheme hook value 2025-03-09 20:30:02 +08:00
0868f45a10 chore(playground): comment out the import and usage of ProblemDescriptionFooter 2025-03-09 18:59:55 +08:00
28c10ad590 fix(style): removing shadow 2025-03-09 18:58:48 +08:00
849c8bc609 feat(page): deprecate /playground and redirect to /problemset 2025-03-09 18:21:27 +08:00
0dbed9c284 feat(terminal): add TerminalTestcasePage with release info card 2025-03-09 18:17:18 +08:00
f3303fff3d feat(layout): add TerminalTestcaseLayout component for rendering testcase content 2025-03-09 18:16:28 +08:00
f4078cb985 feat(layout): add terminal layout with Tabs and ScrollArea for testcase display 2025-03-09 18:15:48 +08:00
a7506bed64 refactor(reset-button): remove unnecessary disabled state for button 2025-03-09 15:18:08 +08:00
b9ac439178 fix(header): improve layout and adjust z-index for settings button 2025-03-09 15:14:47 +08:00
dd2f4a733b feat(scroll-area): add horizontal scrollbar to problem description page 2025-03-09 15:04:54 +08:00
163dc4b57c feat(problem-description): add dynamic title to footer and fetch problem title 2025-03-09 14:49:59 +08:00
ef753dd6c8 style(problems, workspace): adjust ScrollArea height and flex layout 2025-03-09 14:46:43 +08:00
3a75c3d415 style(layout): update panel border-radius to rounded-xl 2025-03-09 14:31:26 +08:00
e224fae210 feat(layout): adjust resizable panel layout with equal distribution for workspace and terminal 2025-03-09 13:26:05 +08:00
e082aed9a1 feat(editor): add undo stack support for reset button 2025-03-09 12:13:29 +08:00