Skip to content

On branch studio#80

Merged
cobel1024 merged 2 commits intomainfrom
studio
Mar 7, 2026
Merged

On branch studio#80
cobel1024 merged 2 commits intomainfrom
studio

Conversation

@cobel1024
Copy link
Copy Markdown
Owner

Your branch is behind 'origin/studio' by 17 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)

Changes to be committed:
modified: .github/workflows/core-ci.yml
renamed: .github/workflows/student-ci.yml -> .github/workflows/web-ci.yml
deleted: README-ko.md
modified: README.md
modified: core/Dockerfile
deleted: core/README-ko.md
modified: core/apps/account/api/middleware.py
modified: core/apps/account/api/schema.py
modified: core/apps/account/management/commands/create_roles.py
modified: core/apps/account/migrations/0001_initial.py
modified: core/apps/account/models.py
modified: core/apps/assignment/admin.py
modified: core/apps/assignment/api/schema.py
modified: core/apps/assignment/api/v1.py
new file: core/apps/assignment/fixtures/generic_rubric_en.json
new file: core/apps/assignment/fixtures/generic_rubric_ko.json
modified: core/apps/assignment/migrations/0001_initial.py
modified: core/apps/assignment/models.py
modified: core/apps/assignment/tests/factories.py
modified: core/apps/assistant/api/v1.py
modified: core/apps/assistant/migrations/0001_initial.py
modified: core/apps/common/admin.py
modified: core/apps/common/error.py
modified: core/apps/common/models.py
modified: core/apps/common/schema.py
modified: core/apps/common/util.py
modified: core/apps/competency/api/schema.py
modified: core/apps/competency/api/v1.py
modified: core/apps/competency/migrations/0001_initial.py
modified: core/apps/competency/models.py
modified: core/apps/content/api/schema.py
modified: core/apps/content/api/v1.py
modified: core/apps/content/documents.py
modified: core/apps/content/management/commands/import_youtube.py
modified: core/apps/content/migrations/0001_initial.py
modified: core/apps/content/models.py
modified: core/apps/content/tests/factories.py
modified: core/apps/course/admin.py
modified: core/apps/course/api/schema.py
modified: core/apps/course/api/v1.py
modified: core/apps/course/migrations/0001_initial.py
modified: core/apps/course/models.py
modified: core/apps/course/tests/factories.py
modified: core/apps/course/tests/test_course_api.py
modified: core/apps/course/trigger.py
modified: core/apps/discussion/api/schema.py
modified: core/apps/discussion/api/v1.py
modified: core/apps/discussion/migrations/0001_initial.py
modified: core/apps/discussion/models.py
modified: core/apps/discussion/tests/factories.py
modified: core/apps/discussion/tests/test_discussion_api.py
modified: core/apps/exam/api/schema.py
modified: core/apps/exam/api/v1.py
modified: core/apps/exam/migrations/0001_initial.py
modified: core/apps/exam/models.py
modified: core/apps/exam/tests/factories.py
modified: core/apps/learning/api/access_control.py
modified: core/apps/learning/management/commands/setup_demo_data.py
modified: core/apps/learning/migrations/0001_initial.py
modified: core/apps/learning/models.py
modified: core/apps/operation/api/schema.py
modified: core/apps/operation/api/v1.py
new file: core/apps/operation/fixtures/ncs_category_en.json
new file: core/apps/operation/fixtures/ncs_category_ko.json
renamed: core/apps/operation/management/commands/create_base_policies.py -> core/apps/operation/management/commands/setup_base_operation_data.py
modified: core/apps/operation/migrations/0001_initial.py
deleted: core/apps/operation/migrations/0002_notificationdevice_notificationdeviceevent_and_more.py
modified: core/apps/operation/models.py
modified: core/apps/operation/tests/factories.py
modified: core/apps/partner/api/schema.py
modified: core/apps/partner/migrations/0001_initial.py
modified: core/apps/partner/models.py
modified: core/apps/partner/tests/factories.py
modified: core/apps/quiz/api/schema.py
modified: core/apps/quiz/api/v1.py
modified: core/apps/quiz/migrations/0001_initial.py
modified: core/apps/quiz/models.py
modified: core/apps/quiz/tests/factories.py
modified: core/apps/sso/migrations/0001_initial.py
modified: core/apps/sso/providers/oidc.py
modified: core/apps/store/migrations/0001_initial.py
modified: core/apps/store/models.py
modified: core/apps/store/tests/factories.py
new file: core/apps/studio/init.py
new file: core/apps/studio/admin.py
new file: core/apps/studio/api/v1/init.py
new file: core/apps/studio/api/v1/assignment.py
new file: core/apps/studio/api/v1/course.py
new file: core/apps/studio/api/v1/discussion.py
new file: core/apps/studio/api/v1/exam.py
new file: core/apps/studio/api/v1/media.py
new file: core/apps/studio/api/v1/quiz.py
new file: core/apps/studio/api/v1/schema.py
new file: core/apps/studio/api/v1/survey.py
new file: core/apps/studio/apps.py
new file: core/apps/studio/decorator.py
new file: core/apps/studio/migrations/0001_initial.py
new file: core/apps/studio/migrations/init.py
new file: core/apps/studio/models.py
new file: core/apps/studio/tasks.py
new file: core/apps/studio/tests/test_studio_assignment_api.py
new file: core/apps/studio/tests/test_studio_course_api.py
new file: core/apps/studio/tests/test_studio_discussion_api.py
new file: core/apps/studio/tests/test_studio_exam_api.py
new file: core/apps/studio/tests/test_studio_media_api.py
new file: core/apps/studio/tests/test_studio_quiz_api.py
new file: core/apps/studio/tests/test_studio_survey_api.py
modified: core/apps/survey/admin.py
modified: core/apps/survey/api/schema.py
modified: core/apps/survey/api/v1.py
modified: core/apps/survey/migrations/0001_initial.py
modified: core/apps/survey/models.py
modified: core/apps/survey/tests/factories.py
modified: core/apps/survey/tests/test_survey_api.py
modified: core/apps/tracking/migrations/0001_initial.py
modified: core/apps/tracking/tasks.py
modified: core/apps/warehouse/migrations/0001_initial.py
modified: core/apps/warehouse/models.py
new file: core/apps/warehouse/tests/test_warehouse_model.py
modified: core/apps/warehouse/views.py
modified: core/dev.py
modified: core/locale/en/LC_MESSAGES/django.po
modified: core/locale/ko/LC_MESSAGES/django.mo
modified: core/locale/ko/LC_MESSAGES/django.po
modified: core/minima/settings.py
modified: core/pyproject.toml
modified: core/uv.lock
modified: dev.sh
modified: lefthook.yml
new file: screenshot/studio.webp
renamed: screenshot/student.webp -> screenshot/web.webp
deleted: student/README-ko.md
deleted: student/package.json
deleted: student/public/image/logo/logo-square.png
deleted: student/src/api/index.ts
deleted: student/src/routes/(app)/-shared/AccountButton.tsx
deleted: student/src/routes/(app)/-shared/editor/Attachment.ts
deleted: student/src/routes/(app)/-shared/editor/TextEditor.tsx
deleted: student/src/routes/(app)/account/-profile/AvatarEdit.tsx
deleted: student/src/routes/(app)/account/route.tsx
deleted: student/src/routes/(app)/dashboard/route.tsx
deleted: student/src/shared/AutocompleteInput.tsx
deleted: student/src/shared/CopyButton.tsx
deleted: student/src/shared/solid/cached-store.ts
deleted: student/src/styles.css
renamed: student/.gitignore -> web/.gitignore
renamed: student/README.md -> web/README.md
renamed: student/biome.json -> web/biome.json
renamed: student/docker-compose.yml -> web/docker-compose.yml
renamed: student/env.example -> web/env.example
renamed: student/i18next.config.ts -> web/i18next.config.ts
renamed: student/index.html -> web/index.html
renamed: student/openapi-ts.config.ts -> web/openapi-ts.config.ts
renamed: student/package-lock.json -> web/package-lock.json
new file: web/package.json
renamed: student/public/firebase-messaging-sw.js -> web/public/firebase-messaging-sw.js
renamed: student/public/image/favicon/android-chrome-192x192.png -> web/public/image/favicon/android-chrome-192x192.png
renamed: student/public/image/favicon/android-chrome-512x512.png -> web/public/image/favicon/android-chrome-512x512.png
renamed: student/public/image/favicon/apple-touch-icon.png -> web/public/image/favicon/apple-touch-icon.png
renamed: student/public/image/favicon/favicon-16x16.png -> web/public/image/favicon/favicon-16x16.png
renamed: student/public/image/favicon/favicon-32x32.png -> web/public/image/favicon/favicon-32x32.png
renamed: student/public/image/favicon/favicon.ico -> web/public/image/favicon/favicon.ico
renamed: student/public/image/favicon/site.webmanifest -> web/public/image/favicon/site.webmanifest
renamed: student/public/image/logo/logo-dark.png -> web/public/image/logo/logo-dark.png
renamed: student/public/image/logo/logo-icon.png -> web/public/image/logo/logo-icon.png
renamed: student/public/image/logo/logo-large.png -> web/public/image/logo/logo-large.png
new file: web/public/image/logo/logo-square.png
new file: web/public/image/logo/logo-studio-dark.png
new file: web/public/image/logo/logo-studio-large.png
new file: web/public/image/logo/logo-studio.png
renamed: student/public/image/logo/logo.png -> web/public/image/logo/logo.png
renamed: student/src/api/client.gen.ts -> web/src/api/client.gen.ts
renamed: student/src/api/client/client.gen.ts -> web/src/api/client/client.gen.ts
renamed: student/src/api/client/index.ts -> web/src/api/client/index.ts
renamed: student/src/api/client/types.gen.ts -> web/src/api/client/types.gen.ts
renamed: student/src/api/client/utils.gen.ts -> web/src/api/client/utils.gen.ts
renamed: student/src/api/core/auth.gen.ts -> web/src/api/core/auth.gen.ts
renamed: student/src/api/core/bodySerializer.gen.ts -> web/src/api/core/bodySerializer.gen.ts
renamed: student/src/api/core/params.gen.ts -> web/src/api/core/params.gen.ts
renamed: student/src/api/core/pathSerializer.gen.ts -> web/src/api/core/pathSerializer.gen.ts
renamed: student/src/api/core/queryKeySerializer.gen.ts -> web/src/api/core/queryKeySerializer.gen.ts
renamed: student/src/api/core/serverSentEvents.gen.ts -> web/src/api/core/serverSentEvents.gen.ts
renamed: student/src/api/core/types.gen.ts -> web/src/api/core/types.gen.ts
renamed: student/src/api/core/utils.gen.ts -> web/src/api/core/utils.gen.ts
new file: web/src/api/index.ts
renamed: student/src/api/sdk.gen.ts -> web/src/api/sdk.gen.ts
renamed: student/src/api/types.gen.ts -> web/src/api/types.gen.ts
renamed: student/src/api/valibot.gen.ts -> web/src/api/valibot.gen.ts
renamed: student/src/config.ts -> web/src/config.ts
renamed: student/src/context.ts -> web/src/context.ts
renamed: student/src/firebase.ts -> web/src/firebase.ts
renamed: student/src/i18n.ts -> web/src/i18n.ts
renamed: student/src/locale/en/translation.json -> web/src/locale/en/translation.json
renamed: student/src/locale/ko/translation.json -> web/src/locale/ko/translation.json
renamed: student/src/main.tsx -> web/src/main.tsx
renamed: student/src/routeTree.gen.ts -> web/src/routeTree.gen.ts
renamed: student/src/routes/(app)/-device.ts -> web/src/routes/(app)/-device.ts
new file: web/src/routes/(app)/-shared/AccountButton.tsx
renamed: student/src/routes/(app)/-shared/CertificateAwardList.tsx -> web/src/routes/(app)/-shared/CertificateAwardList.tsx
renamed: student/src/routes/(app)/-shared/Inquiry.tsx -> web/src/routes/(app)/-shared/Inquiry.tsx
renamed: student/src/routes/(app)/-shared/Notification.tsx -> web/src/routes/(app)/-shared/Notification.tsx
renamed: student/src/routes/(app)/-shared/OtpVerification.tsx -> web/src/routes/(app)/-shared/OtpVerification.tsx
renamed: student/src/routes/(app)/-shared/ProgressBar.tsx -> web/src/routes/(app)/-shared/ProgressBar.tsx
renamed: student/src/routes/(app)/-shared/SearchBox.tsx -> web/src/routes/(app)/-shared/SearchBox.tsx
renamed: student/src/routes/(app)/-shared/aichat/Chat.tsx -> web/src/routes/(app)/-shared/aichat/Chat.tsx
renamed: student/src/routes/(app)/-shared/aichat/Message.tsx -> web/src/routes/(app)/-shared/aichat/Message.tsx
renamed: student/src/routes/(app)/-shared/aichat/MessageEditor.tsx -> web/src/routes/(app)/-shared/aichat/MessageEditor.tsx
renamed: student/src/routes/(app)/-shared/aichat/MessageList.tsx -> web/src/routes/(app)/-shared/aichat/MessageList.tsx
renamed: student/src/routes/(app)/-shared/aichat/Settings.tsx -> web/src/routes/(app)/-shared/aichat/Settings.tsx
renamed: student/src/routes/(app)/-shared/aichat/context.ts -> web/src/routes/(app)/-shared/aichat/context.ts
renamed: student/src/routes/(app)/-shared/goal/CategorySelect.tsx -> web/src/routes/(app)/-shared/goal/CategorySelect.tsx
renamed: student/src/routes/(app)/-shared/goal/GoalForm.tsx -> web/src/routes/(app)/-shared/goal/GoalForm.tsx
renamed: student/src/routes/(app)/-shared/grading/Appeal.tsx -> web/src/routes/(app)/-shared/grading/Appeal.tsx
renamed: student/src/routes/(app)/-shared/grading/FinalScore.tsx -> web/src/routes/(app)/-shared/grading/FinalScore.tsx
renamed: student/src/routes/(app)/-shared/grading/ScorePanel.tsx -> web/src/routes/(app)/-shared/grading/ScorePanel.tsx
renamed: student/src/routes/(app)/-shared/grading/SessionStart.tsx -> web/src/routes/(app)/-shared/grading/SessionStart.tsx
renamed: student/src/routes/(app)/-shared/logout.ts -> web/src/routes/(app)/-shared/logout.ts
renamed: student/src/routes/(app)/-shared/quiz/GettingStarted.tsx -> web/src/routes/(app)/-shared/quiz/GettingStarted.tsx
renamed: student/src/routes/(app)/-shared/quiz/QuizDialog.tsx -> web/src/routes/(app)/-shared/quiz/QuizDialog.tsx
renamed: student/src/routes/(app)/-shared/quiz/QuizForm.tsx -> web/src/routes/(app)/-shared/quiz/QuizForm.tsx
renamed: student/src/routes/(app)/-shared/record.ts -> web/src/routes/(app)/-shared/record.ts
renamed: student/src/routes/(app)/-shared/thread/Comment.tsx -> web/src/routes/(app)/-shared/thread/Comment.tsx
renamed: student/src/routes/(app)/-shared/thread/CommentEditor.tsx -> web/src/routes/(app)/-shared/thread/CommentEditor.tsx
renamed: student/src/routes/(app)/-shared/thread/Rating.tsx -> web/src/routes/(app)/-shared/thread/Rating.tsx
renamed: student/src/routes/(app)/-shared/thread/Thread.tsx -> web/src/routes/(app)/-shared/thread/Thread.tsx
renamed: student/src/routes/(app)/-shared/thread/context.ts -> web/src/routes/(app)/-shared/thread/context.ts
new file: web/src/routes/(app)/account/-profile/AvatarEdit.tsx
renamed: student/src/routes/(app)/account/-profile/OtpSetup.tsx -> web/src/routes/(app)/account/-profile/OtpSetup.tsx
renamed: student/src/routes/(app)/account/-store.ts -> web/src/routes/(app)/account/-store.ts
renamed: student/src/routes/(app)/account/device.tsx -> web/src/routes/(app)/account/device.tsx
renamed: student/src/routes/(app)/account/email-change.tsx -> web/src/routes/(app)/account/email-change.tsx
renamed: student/src/routes/(app)/account/group.tsx -> web/src/routes/(app)/account/group.tsx
renamed: student/src/routes/(app)/account/link.tsx -> web/src/routes/(app)/account/link.tsx
renamed: student/src/routes/(app)/account/profile.tsx -> web/src/routes/(app)/account/profile.tsx
new file: web/src/routes/(app)/account/route.tsx
renamed: student/src/routes/(app)/assignment/$id.session.tsx -> web/src/routes/(app)/assignment/$id.session.tsx
renamed: student/src/routes/(app)/assignment/-session/GettingStarted.tsx -> web/src/routes/(app)/assignment/-session/GettingStarted.tsx
renamed: student/src/routes/(app)/assignment/-session/GradingReview.tsx -> web/src/routes/(app)/assignment/-session/GradingReview.tsx
renamed: student/src/routes/(app)/assignment/-session/Submission.tsx -> web/src/routes/(app)/assignment/-session/Submission.tsx
renamed: student/src/routes/(app)/assignment/-session/context.ts -> web/src/routes/(app)/assignment/-session/context.ts
renamed: student/src/routes/(app)/course/$id.session.tsx -> web/src/routes/(app)/course/$id.session.tsx
renamed: student/src/routes/(app)/course/-session/Achievement.tsx -> web/src/routes/(app)/course/-session/Achievement.tsx
renamed: student/src/routes/(app)/course/-session/Comment.tsx -> web/src/routes/(app)/course/-session/Comment.tsx
renamed: student/src/routes/(app)/course/-session/CourseDetail.tsx -> web/src/routes/(app)/course/-session/CourseDetail.tsx
renamed: student/src/routes/(app)/course/-session/GettingStarted.tsx -> web/src/routes/(app)/course/-session/GettingStarted.tsx
renamed: student/src/routes/(app)/course/-session/Outline.tsx -> web/src/routes/(app)/course/-session/Outline.tsx
renamed: student/src/routes/(app)/course/-session/Schedule.tsx -> web/src/routes/(app)/course/-session/Schedule.tsx
renamed: student/src/routes/(app)/course/-session/context.ts -> web/src/routes/(app)/course/-session/context.ts
renamed: student/src/routes/(app)/dashboard/-context.ts -> web/src/routes/(app)/dashboard/-context.ts
renamed: student/src/routes/(app)/dashboard/achievement.tsx -> web/src/routes/(app)/dashboard/achievement.tsx
renamed: student/src/routes/(app)/dashboard/announcement.tsx -> web/src/routes/(app)/dashboard/announcement.tsx
renamed: student/src/routes/(app)/dashboard/catalog.tsx -> web/src/routes/(app)/dashboard/catalog.tsx
renamed: student/src/routes/(app)/dashboard/goal.tsx -> web/src/routes/(app)/dashboard/goal.tsx
renamed: student/src/routes/(app)/dashboard/index.tsx -> web/src/routes/(app)/dashboard/index.tsx
renamed: student/src/routes/(app)/dashboard/inquiry.tsx -> web/src/routes/(app)/dashboard/inquiry.tsx
renamed: student/src/routes/(app)/dashboard/learning.tsx -> web/src/routes/(app)/dashboard/learning.tsx
renamed: student/src/routes/(app)/dashboard/report.tsx -> web/src/routes/(app)/dashboard/report.tsx
new file: web/src/routes/(app)/dashboard/route.tsx
renamed: student/src/routes/(app)/dashboard/search.tsx -> web/src/routes/(app)/dashboard/search.tsx
renamed: student/src/routes/(app)/discussion/$id.session.tsx -> web/src/routes/(app)/discussion/$id.session.tsx
renamed: student/src/routes/(app)/discussion/-session/Discussion.tsx -> web/src/routes/(app)/discussion/-session/Discussion.tsx
renamed: student/src/routes/(app)/discussion/-session/GettingStarted.tsx -> web/src/routes/(app)/discussion/-session/GettingStarted.tsx
renamed: student/src/routes/(app)/discussion/-session/GradingReview.tsx -> web/src/routes/(app)/discussion/-session/GradingReview.tsx
renamed: student/src/routes/(app)/discussion/-session/Thread.tsx -> web/src/routes/(app)/discussion/-session/Thread.tsx
renamed: student/src/routes/(app)/discussion/-session/context.ts -> web/src/routes/(app)/discussion/-session/context.ts
renamed: student/src/routes/(app)/exam/$id.session.tsx -> web/src/routes/(app)/exam/$id.session.tsx
renamed: student/src/routes/(app)/exam/-session/GettingStarted.tsx -> web/src/routes/(app)/exam/-session/GettingStarted.tsx
renamed: student/src/routes/(app)/exam/-session/GradingReview.tsx -> web/src/routes/(app)/exam/-session/GradingReview.tsx
renamed: student/src/routes/(app)/exam/-session/QuestionReview.tsx -> web/src/routes/(app)/exam/-session/QuestionReview.tsx
renamed: student/src/routes/(app)/exam/-session/StopWatch.tsx -> web/src/routes/(app)/exam/-session/StopWatch.tsx
renamed: student/src/routes/(app)/exam/-session/TakeExam.tsx -> web/src/routes/(app)/exam/-session/TakeExam.tsx
renamed: student/src/routes/(app)/exam/-session/context.ts -> web/src/routes/(app)/exam/-session/context.ts
renamed: student/src/routes/(app)/media/$id.tsx -> web/src/routes/(app)/media/$id.tsx
renamed: student/src/routes/(app)/media/-media/Note.tsx -> web/src/routes/(app)/media/-media/Note.tsx
renamed: student/src/routes/(app)/media/-media/Subtitle.tsx -> web/src/routes/(app)/media/-media/Subtitle.tsx
renamed: student/src/routes/(app)/media/-media/Watch.tsx -> web/src/routes/(app)/media/-media/Watch.tsx
renamed: student/src/routes/(app)/media/-media/store.ts -> web/src/routes/(app)/media/-media/store.ts
renamed: student/src/routes/(app)/route.tsx -> web/src/routes/(app)/route.tsx
renamed: student/src/routes/(auth)/-ActivationLink.tsx -> web/src/routes/(auth)/-ActivationLink.tsx
renamed: student/src/routes/(auth)/-LoginLink.tsx -> web/src/routes/(auth)/-LoginLink.tsx
renamed: student/src/routes/(auth)/-SSOButtons.tsx -> web/src/routes/(auth)/-SSOButtons.tsx
renamed: student/src/routes/(auth)/activate.tsx -> web/src/routes/(auth)/activate.tsx
renamed: student/src/routes/(auth)/join.tsx -> web/src/routes/(auth)/join.tsx
renamed: student/src/routes/(auth)/login.tsx -> web/src/routes/(auth)/login.tsx
renamed: student/src/routes/(auth)/password-change.tsx -> web/src/routes/(auth)/password-change.tsx
renamed: student/src/routes/(auth)/route.tsx -> web/src/routes/(auth)/route.tsx
renamed: student/src/routes/(public)/survey/$id.tsx -> web/src/routes/(public)/survey/$id.tsx
renamed: student/src/routes/(public)/survey/-SurveyForm.tsx -> web/src/routes/(public)/survey/-SurveyForm.tsx
renamed: student/src/routes/-SitePolicy.tsx -> web/src/routes/-SitePolicy.tsx
renamed: student/src/routes/__root.tsx -> web/src/routes/__root.tsx
renamed: student/src/routes/index.tsx -> web/src/routes/index.tsx
new file: web/src/routes/studio/$app.$id.tsx
new file: web/src/routes/studio/-assignment/App.tsx
new file: web/src/routes/studio/-assignment/Assignment.tsx
new file: web/src/routes/studio/-assignment/Question.tsx
new file: web/src/routes/studio/-assignment/QuestionPool.tsx
new file: web/src/routes/studio/-assignment/Rubric.tsx
new file: web/src/routes/studio/-assignment/data.ts
new file: web/src/routes/studio/-context/CollapseContext.tsx
new file: web/src/routes/studio/-context/editing.tsx
new file: web/src/routes/studio/-course/App.tsx
new file: web/src/routes/studio/-course/Assessments.tsx
new file: web/src/routes/studio/-course/Categories.tsx
new file: web/src/routes/studio/-course/Certificates.tsx
new file: web/src/routes/studio/-course/Course.tsx
new file: web/src/routes/studio/-course/CourseRelations.tsx
new file: web/src/routes/studio/-course/Instructors.tsx
new file: web/src/routes/studio/-course/Lessons.tsx
new file: web/src/routes/studio/-course/Surveys.tsx
new file: web/src/routes/studio/-course/data.ts
new file: web/src/routes/studio/-discussion/App.tsx
new file: web/src/routes/studio/-discussion/Discussion.tsx
new file: web/src/routes/studio/-discussion/Question.tsx
new file: web/src/routes/studio/-discussion/QuestionPool.tsx
new file: web/src/routes/studio/-discussion/data.ts
new file: web/src/routes/studio/-exam/App.tsx
new file: web/src/routes/studio/-exam/Exam.tsx
new file: web/src/routes/studio/-exam/Question.tsx
new file: web/src/routes/studio/-exam/QuestionPool.tsx
new file: web/src/routes/studio/-exam/data.ts
new file: web/src/routes/studio/-media/App.tsx
new file: web/src/routes/studio/-media/Media.tsx
new file: web/src/routes/studio/-media/SubtitleSet.tsx
new file: web/src/routes/studio/-media/data.ts
new file: web/src/routes/studio/-quiz/App.tsx
new file: web/src/routes/studio/-quiz/Question.tsx
new file: web/src/routes/studio/-quiz/QuestionPool.tsx
new file: web/src/routes/studio/-quiz/Quiz.tsx
new file: web/src/routes/studio/-quiz/data.ts
new file: web/src/routes/studio/-studio/DataAction.tsx
new file: web/src/routes/studio/-studio/InlineSuggestion.tsx
new file: web/src/routes/studio/-studio/Menu.tsx
new file: web/src/routes/studio/-studio/NavbarLogo.tsx
new file: web/src/routes/studio/-studio/Paper.tsx
new file: web/src/routes/studio/-studio/PublishStatus.tsx
new file: web/src/routes/studio/-studio/field.tsx
new file: web/src/routes/studio/-studio/helper.ts
new file: web/src/routes/studio/-studio/initEditing.ts
new file: web/src/routes/studio/-studio/questionPool.ts
new file: web/src/routes/studio/-survey/App.tsx
new file: web/src/routes/studio/-survey/Question.tsx
new file: web/src/routes/studio/-survey/QuestionPool.tsx
new file: web/src/routes/studio/-survey/Survey.tsx
new file: web/src/routes/studio/-survey/data.ts
new file: web/src/routes/studio/index.tsx
new file: web/src/routes/studio/route.tsx
new file: web/src/shared/AutocompleteInput.tsx
renamed: student/src/shared/Avatar.test.tsx -> web/src/shared/Avatar.test.tsx
renamed: student/src/shared/Avatar.tsx -> web/src/shared/Avatar.tsx
new file: web/src/shared/CollapseButton.tsx
renamed: student/src/shared/ContentViewer.tsx -> web/src/shared/ContentViewer.tsx
new file: web/src/shared/CopyButton.tsx
renamed: student/src/shared/DateLocaleProvider.tsx -> web/src/shared/DateLocaleProvider.tsx
renamed: student/src/shared/Diaglog.tsx -> web/src/shared/Diaglog.tsx
new file: web/src/shared/DraggableTable.tsx
renamed: student/src/shared/FormInput.test.tsx -> web/src/shared/FormInput.test.tsx
renamed: student/src/shared/FormInput.tsx -> web/src/shared/FormInput.tsx
renamed: student/src/shared/GitHubIcon.tsx -> web/src/shared/GitHubIcon.tsx
new file: web/src/shared/GoToTop.tsx
renamed: student/src/shared/LivePlayer.tsx -> web/src/shared/LivePlayer.tsx
renamed: student/src/shared/LoadingOverlay.tsx -> web/src/shared/LoadingOverlay.tsx
new file: web/src/shared/MainMenu.tsx
renamed: student/src/shared/MediaPlayerAPI.ts -> web/src/shared/MediaPlayerAPI.ts
new file: web/src/shared/NavbarLogo.tsx
renamed: student/src/shared/NoContent.tsx -> web/src/shared/NoContent.tsx
renamed: student/src/shared/PdfViewer.tsx -> web/src/shared/PdfViewer.tsx
renamed: student/src/shared/PinInput.test.tsx -> web/src/shared/PinInput.test.tsx
renamed: student/src/shared/PinInput.tsx -> web/src/shared/PinInput.tsx
renamed: student/src/shared/ResizableWindow.tsx -> web/src/shared/ResizableWindow.tsx
renamed: student/src/shared/SubmitButton.tsx -> web/src/shared/SubmitButton.tsx
renamed: student/src/shared/ThemeButton.tsx -> web/src/shared/ThemeButton.tsx
renamed: student/src/shared/VideoPlayer.tsx -> web/src/shared/VideoPlayer.tsx
renamed: student/src/shared/WindowButtion.tsx -> web/src/shared/WindowButtion.tsx
renamed: student/src/shared/WordFrequency.tsx -> web/src/shared/WordFrequency.tsx
new file: web/src/shared/editor/Attachment.ts
new file: web/src/shared/editor/FormTextEditor.tsx
new file: web/src/shared/editor/SafeUndo.tsx
renamed: student/src/routes/(app)/-shared/editor/Toolbar.tsx -> web/src/shared/editor/Toolbar.tsx
renamed: student/src/shared/error.ts -> web/src/shared/error.ts
renamed: student/src/shared/icon/GoogleIcon.tsx -> web/src/shared/icon/GoogleIcon.tsx
new file: web/src/shared/image/ImageCropDialog.tsx
new file: web/src/shared/image/resizeContainImage.ts
renamed: student/src/shared/resizable.tsx -> web/src/shared/resizable.tsx
renamed: student/src/shared/solid/cached-infinite-store.ts -> web/src/shared/solid/cached-infinite-store.ts
new file: web/src/shared/solid/cached-store.ts
renamed: student/src/shared/solid/form.test.tsx -> web/src/shared/solid/form.test.tsx
renamed: student/src/shared/solid/form.tsx -> web/src/shared/solid/form.tsx
renamed: student/src/shared/solid/i18n.tsx -> web/src/shared/solid/i18n.tsx
renamed: student/src/shared/solid/persistent-signal.ts -> web/src/shared/solid/persistent-signal.ts
renamed: student/src/shared/toast/ToastContainer.tsx -> web/src/shared/toast/ToastContainer.tsx
renamed: student/src/shared/toast/store.ts -> web/src/shared/toast/store.ts
renamed: student/src/shared/utils.test.ts -> web/src/shared/utils.test.ts
renamed: student/src/shared/utils.ts -> web/src/shared/utils.ts
new file: web/src/styles.css
renamed: student/src/types/global.d.ts -> web/src/types/global.d.ts
renamed: student/tsconfig.json -> web/tsconfig.json
renamed: student/vite.config.ts -> web/vite.config.ts
renamed: student/vitest.config.ts -> web/vitest.config.ts

Your branch is behind 'origin/studio' by 17 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes to be committed:
      modified:   .github/workflows/core-ci.yml
      renamed:    .github/workflows/student-ci.yml -> .github/workflows/web-ci.yml
      deleted:    README-ko.md
      modified:   README.md
      modified:   core/Dockerfile
      deleted:    core/README-ko.md
      modified:   core/apps/account/api/middleware.py
      modified:   core/apps/account/api/schema.py
      modified:   core/apps/account/management/commands/create_roles.py
      modified:   core/apps/account/migrations/0001_initial.py
      modified:   core/apps/account/models.py
      modified:   core/apps/assignment/admin.py
      modified:   core/apps/assignment/api/schema.py
      modified:   core/apps/assignment/api/v1.py
      new file:   core/apps/assignment/fixtures/generic_rubric_en.json
      new file:   core/apps/assignment/fixtures/generic_rubric_ko.json
      modified:   core/apps/assignment/migrations/0001_initial.py
      modified:   core/apps/assignment/models.py
      modified:   core/apps/assignment/tests/factories.py
      modified:   core/apps/assistant/api/v1.py
      modified:   core/apps/assistant/migrations/0001_initial.py
      modified:   core/apps/common/admin.py
      modified:   core/apps/common/error.py
      modified:   core/apps/common/models.py
      modified:   core/apps/common/schema.py
      modified:   core/apps/common/util.py
      modified:   core/apps/competency/api/schema.py
      modified:   core/apps/competency/api/v1.py
      modified:   core/apps/competency/migrations/0001_initial.py
      modified:   core/apps/competency/models.py
      modified:   core/apps/content/api/schema.py
      modified:   core/apps/content/api/v1.py
      modified:   core/apps/content/documents.py
      modified:   core/apps/content/management/commands/import_youtube.py
      modified:   core/apps/content/migrations/0001_initial.py
      modified:   core/apps/content/models.py
      modified:   core/apps/content/tests/factories.py
      modified:   core/apps/course/admin.py
      modified:   core/apps/course/api/schema.py
      modified:   core/apps/course/api/v1.py
      modified:   core/apps/course/migrations/0001_initial.py
      modified:   core/apps/course/models.py
      modified:   core/apps/course/tests/factories.py
      modified:   core/apps/course/tests/test_course_api.py
      modified:   core/apps/course/trigger.py
      modified:   core/apps/discussion/api/schema.py
      modified:   core/apps/discussion/api/v1.py
      modified:   core/apps/discussion/migrations/0001_initial.py
      modified:   core/apps/discussion/models.py
      modified:   core/apps/discussion/tests/factories.py
      modified:   core/apps/discussion/tests/test_discussion_api.py
      modified:   core/apps/exam/api/schema.py
      modified:   core/apps/exam/api/v1.py
      modified:   core/apps/exam/migrations/0001_initial.py
      modified:   core/apps/exam/models.py
      modified:   core/apps/exam/tests/factories.py
      modified:   core/apps/learning/api/access_control.py
      modified:   core/apps/learning/management/commands/setup_demo_data.py
      modified:   core/apps/learning/migrations/0001_initial.py
      modified:   core/apps/learning/models.py
      modified:   core/apps/operation/api/schema.py
      modified:   core/apps/operation/api/v1.py
      new file:   core/apps/operation/fixtures/ncs_category_en.json
      new file:   core/apps/operation/fixtures/ncs_category_ko.json
      renamed:    core/apps/operation/management/commands/create_base_policies.py -> core/apps/operation/management/commands/setup_base_operation_data.py
      modified:   core/apps/operation/migrations/0001_initial.py
      deleted:    core/apps/operation/migrations/0002_notificationdevice_notificationdeviceevent_and_more.py
      modified:   core/apps/operation/models.py
      modified:   core/apps/operation/tests/factories.py
      modified:   core/apps/partner/api/schema.py
      modified:   core/apps/partner/migrations/0001_initial.py
      modified:   core/apps/partner/models.py
      modified:   core/apps/partner/tests/factories.py
      modified:   core/apps/quiz/api/schema.py
      modified:   core/apps/quiz/api/v1.py
      modified:   core/apps/quiz/migrations/0001_initial.py
      modified:   core/apps/quiz/models.py
      modified:   core/apps/quiz/tests/factories.py
      modified:   core/apps/sso/migrations/0001_initial.py
      modified:   core/apps/sso/providers/oidc.py
      modified:   core/apps/store/migrations/0001_initial.py
      modified:   core/apps/store/models.py
      modified:   core/apps/store/tests/factories.py
      new file:   core/apps/studio/__init__.py
      new file:   core/apps/studio/admin.py
      new file:   core/apps/studio/api/v1/__init__.py
      new file:   core/apps/studio/api/v1/assignment.py
      new file:   core/apps/studio/api/v1/course.py
      new file:   core/apps/studio/api/v1/discussion.py
      new file:   core/apps/studio/api/v1/exam.py
      new file:   core/apps/studio/api/v1/media.py
      new file:   core/apps/studio/api/v1/quiz.py
      new file:   core/apps/studio/api/v1/schema.py
      new file:   core/apps/studio/api/v1/survey.py
      new file:   core/apps/studio/apps.py
      new file:   core/apps/studio/decorator.py
      new file:   core/apps/studio/migrations/0001_initial.py
      new file:   core/apps/studio/migrations/__init__.py
      new file:   core/apps/studio/models.py
      new file:   core/apps/studio/tasks.py
      new file:   core/apps/studio/tests/test_studio_assignment_api.py
      new file:   core/apps/studio/tests/test_studio_course_api.py
      new file:   core/apps/studio/tests/test_studio_discussion_api.py
      new file:   core/apps/studio/tests/test_studio_exam_api.py
      new file:   core/apps/studio/tests/test_studio_media_api.py
      new file:   core/apps/studio/tests/test_studio_quiz_api.py
      new file:   core/apps/studio/tests/test_studio_survey_api.py
      modified:   core/apps/survey/admin.py
      modified:   core/apps/survey/api/schema.py
      modified:   core/apps/survey/api/v1.py
      modified:   core/apps/survey/migrations/0001_initial.py
      modified:   core/apps/survey/models.py
      modified:   core/apps/survey/tests/factories.py
      modified:   core/apps/survey/tests/test_survey_api.py
      modified:   core/apps/tracking/migrations/0001_initial.py
      modified:   core/apps/tracking/tasks.py
      modified:   core/apps/warehouse/migrations/0001_initial.py
      modified:   core/apps/warehouse/models.py
      new file:   core/apps/warehouse/tests/test_warehouse_model.py
      modified:   core/apps/warehouse/views.py
      modified:   core/dev.py
      modified:   core/locale/en/LC_MESSAGES/django.po
      modified:   core/locale/ko/LC_MESSAGES/django.mo
      modified:   core/locale/ko/LC_MESSAGES/django.po
      modified:   core/minima/settings.py
      modified:   core/pyproject.toml
      modified:   core/uv.lock
      modified:   dev.sh
      modified:   lefthook.yml
      new file:   screenshot/studio.webp
      renamed:    screenshot/student.webp -> screenshot/web.webp
      deleted:    student/README-ko.md
      deleted:    student/package.json
      deleted:    student/public/image/logo/logo-square.png
      deleted:    student/src/api/index.ts
      deleted:    student/src/routes/(app)/-shared/AccountButton.tsx
      deleted:    student/src/routes/(app)/-shared/editor/Attachment.ts
      deleted:    student/src/routes/(app)/-shared/editor/TextEditor.tsx
      deleted:    student/src/routes/(app)/account/-profile/AvatarEdit.tsx
      deleted:    student/src/routes/(app)/account/route.tsx
      deleted:    student/src/routes/(app)/dashboard/route.tsx
      deleted:    student/src/shared/AutocompleteInput.tsx
      deleted:    student/src/shared/CopyButton.tsx
      deleted:    student/src/shared/solid/cached-store.ts
      deleted:    student/src/styles.css
      renamed:    student/.gitignore -> web/.gitignore
      renamed:    student/README.md -> web/README.md
      renamed:    student/biome.json -> web/biome.json
      renamed:    student/docker-compose.yml -> web/docker-compose.yml
      renamed:    student/env.example -> web/env.example
      renamed:    student/i18next.config.ts -> web/i18next.config.ts
      renamed:    student/index.html -> web/index.html
      renamed:    student/openapi-ts.config.ts -> web/openapi-ts.config.ts
      renamed:    student/package-lock.json -> web/package-lock.json
      new file:   web/package.json
      renamed:    student/public/firebase-messaging-sw.js -> web/public/firebase-messaging-sw.js
      renamed:    student/public/image/favicon/android-chrome-192x192.png -> web/public/image/favicon/android-chrome-192x192.png
      renamed:    student/public/image/favicon/android-chrome-512x512.png -> web/public/image/favicon/android-chrome-512x512.png
      renamed:    student/public/image/favicon/apple-touch-icon.png -> web/public/image/favicon/apple-touch-icon.png
      renamed:    student/public/image/favicon/favicon-16x16.png -> web/public/image/favicon/favicon-16x16.png
      renamed:    student/public/image/favicon/favicon-32x32.png -> web/public/image/favicon/favicon-32x32.png
      renamed:    student/public/image/favicon/favicon.ico -> web/public/image/favicon/favicon.ico
      renamed:    student/public/image/favicon/site.webmanifest -> web/public/image/favicon/site.webmanifest
      renamed:    student/public/image/logo/logo-dark.png -> web/public/image/logo/logo-dark.png
      renamed:    student/public/image/logo/logo-icon.png -> web/public/image/logo/logo-icon.png
      renamed:    student/public/image/logo/logo-large.png -> web/public/image/logo/logo-large.png
      new file:   web/public/image/logo/logo-square.png
      new file:   web/public/image/logo/logo-studio-dark.png
      new file:   web/public/image/logo/logo-studio-large.png
      new file:   web/public/image/logo/logo-studio.png
      renamed:    student/public/image/logo/logo.png -> web/public/image/logo/logo.png
      renamed:    student/src/api/client.gen.ts -> web/src/api/client.gen.ts
      renamed:    student/src/api/client/client.gen.ts -> web/src/api/client/client.gen.ts
      renamed:    student/src/api/client/index.ts -> web/src/api/client/index.ts
      renamed:    student/src/api/client/types.gen.ts -> web/src/api/client/types.gen.ts
      renamed:    student/src/api/client/utils.gen.ts -> web/src/api/client/utils.gen.ts
      renamed:    student/src/api/core/auth.gen.ts -> web/src/api/core/auth.gen.ts
      renamed:    student/src/api/core/bodySerializer.gen.ts -> web/src/api/core/bodySerializer.gen.ts
      renamed:    student/src/api/core/params.gen.ts -> web/src/api/core/params.gen.ts
      renamed:    student/src/api/core/pathSerializer.gen.ts -> web/src/api/core/pathSerializer.gen.ts
      renamed:    student/src/api/core/queryKeySerializer.gen.ts -> web/src/api/core/queryKeySerializer.gen.ts
      renamed:    student/src/api/core/serverSentEvents.gen.ts -> web/src/api/core/serverSentEvents.gen.ts
      renamed:    student/src/api/core/types.gen.ts -> web/src/api/core/types.gen.ts
      renamed:    student/src/api/core/utils.gen.ts -> web/src/api/core/utils.gen.ts
      new file:   web/src/api/index.ts
      renamed:    student/src/api/sdk.gen.ts -> web/src/api/sdk.gen.ts
      renamed:    student/src/api/types.gen.ts -> web/src/api/types.gen.ts
      renamed:    student/src/api/valibot.gen.ts -> web/src/api/valibot.gen.ts
      renamed:    student/src/config.ts -> web/src/config.ts
      renamed:    student/src/context.ts -> web/src/context.ts
      renamed:    student/src/firebase.ts -> web/src/firebase.ts
      renamed:    student/src/i18n.ts -> web/src/i18n.ts
      renamed:    student/src/locale/en/translation.json -> web/src/locale/en/translation.json
      renamed:    student/src/locale/ko/translation.json -> web/src/locale/ko/translation.json
      renamed:    student/src/main.tsx -> web/src/main.tsx
      renamed:    student/src/routeTree.gen.ts -> web/src/routeTree.gen.ts
      renamed:    student/src/routes/(app)/-device.ts -> web/src/routes/(app)/-device.ts
      new file:   web/src/routes/(app)/-shared/AccountButton.tsx
      renamed:    student/src/routes/(app)/-shared/CertificateAwardList.tsx -> web/src/routes/(app)/-shared/CertificateAwardList.tsx
      renamed:    student/src/routes/(app)/-shared/Inquiry.tsx -> web/src/routes/(app)/-shared/Inquiry.tsx
      renamed:    student/src/routes/(app)/-shared/Notification.tsx -> web/src/routes/(app)/-shared/Notification.tsx
      renamed:    student/src/routes/(app)/-shared/OtpVerification.tsx -> web/src/routes/(app)/-shared/OtpVerification.tsx
      renamed:    student/src/routes/(app)/-shared/ProgressBar.tsx -> web/src/routes/(app)/-shared/ProgressBar.tsx
      renamed:    student/src/routes/(app)/-shared/SearchBox.tsx -> web/src/routes/(app)/-shared/SearchBox.tsx
      renamed:    student/src/routes/(app)/-shared/aichat/Chat.tsx -> web/src/routes/(app)/-shared/aichat/Chat.tsx
      renamed:    student/src/routes/(app)/-shared/aichat/Message.tsx -> web/src/routes/(app)/-shared/aichat/Message.tsx
      renamed:    student/src/routes/(app)/-shared/aichat/MessageEditor.tsx -> web/src/routes/(app)/-shared/aichat/MessageEditor.tsx
      renamed:    student/src/routes/(app)/-shared/aichat/MessageList.tsx -> web/src/routes/(app)/-shared/aichat/MessageList.tsx
      renamed:    student/src/routes/(app)/-shared/aichat/Settings.tsx -> web/src/routes/(app)/-shared/aichat/Settings.tsx
      renamed:    student/src/routes/(app)/-shared/aichat/context.ts -> web/src/routes/(app)/-shared/aichat/context.ts
      renamed:    student/src/routes/(app)/-shared/goal/CategorySelect.tsx -> web/src/routes/(app)/-shared/goal/CategorySelect.tsx
      renamed:    student/src/routes/(app)/-shared/goal/GoalForm.tsx -> web/src/routes/(app)/-shared/goal/GoalForm.tsx
      renamed:    student/src/routes/(app)/-shared/grading/Appeal.tsx -> web/src/routes/(app)/-shared/grading/Appeal.tsx
      renamed:    student/src/routes/(app)/-shared/grading/FinalScore.tsx -> web/src/routes/(app)/-shared/grading/FinalScore.tsx
      renamed:    student/src/routes/(app)/-shared/grading/ScorePanel.tsx -> web/src/routes/(app)/-shared/grading/ScorePanel.tsx
      renamed:    student/src/routes/(app)/-shared/grading/SessionStart.tsx -> web/src/routes/(app)/-shared/grading/SessionStart.tsx
      renamed:    student/src/routes/(app)/-shared/logout.ts -> web/src/routes/(app)/-shared/logout.ts
      renamed:    student/src/routes/(app)/-shared/quiz/GettingStarted.tsx -> web/src/routes/(app)/-shared/quiz/GettingStarted.tsx
      renamed:    student/src/routes/(app)/-shared/quiz/QuizDialog.tsx -> web/src/routes/(app)/-shared/quiz/QuizDialog.tsx
      renamed:    student/src/routes/(app)/-shared/quiz/QuizForm.tsx -> web/src/routes/(app)/-shared/quiz/QuizForm.tsx
      renamed:    student/src/routes/(app)/-shared/record.ts -> web/src/routes/(app)/-shared/record.ts
      renamed:    student/src/routes/(app)/-shared/thread/Comment.tsx -> web/src/routes/(app)/-shared/thread/Comment.tsx
      renamed:    student/src/routes/(app)/-shared/thread/CommentEditor.tsx -> web/src/routes/(app)/-shared/thread/CommentEditor.tsx
      renamed:    student/src/routes/(app)/-shared/thread/Rating.tsx -> web/src/routes/(app)/-shared/thread/Rating.tsx
      renamed:    student/src/routes/(app)/-shared/thread/Thread.tsx -> web/src/routes/(app)/-shared/thread/Thread.tsx
      renamed:    student/src/routes/(app)/-shared/thread/context.ts -> web/src/routes/(app)/-shared/thread/context.ts
      new file:   web/src/routes/(app)/account/-profile/AvatarEdit.tsx
      renamed:    student/src/routes/(app)/account/-profile/OtpSetup.tsx -> web/src/routes/(app)/account/-profile/OtpSetup.tsx
      renamed:    student/src/routes/(app)/account/-store.ts -> web/src/routes/(app)/account/-store.ts
      renamed:    student/src/routes/(app)/account/device.tsx -> web/src/routes/(app)/account/device.tsx
      renamed:    student/src/routes/(app)/account/email-change.tsx -> web/src/routes/(app)/account/email-change.tsx
      renamed:    student/src/routes/(app)/account/group.tsx -> web/src/routes/(app)/account/group.tsx
      renamed:    student/src/routes/(app)/account/link.tsx -> web/src/routes/(app)/account/link.tsx
      renamed:    student/src/routes/(app)/account/profile.tsx -> web/src/routes/(app)/account/profile.tsx
      new file:   web/src/routes/(app)/account/route.tsx
      renamed:    student/src/routes/(app)/assignment/$id.session.tsx -> web/src/routes/(app)/assignment/$id.session.tsx
      renamed:    student/src/routes/(app)/assignment/-session/GettingStarted.tsx -> web/src/routes/(app)/assignment/-session/GettingStarted.tsx
      renamed:    student/src/routes/(app)/assignment/-session/GradingReview.tsx -> web/src/routes/(app)/assignment/-session/GradingReview.tsx
      renamed:    student/src/routes/(app)/assignment/-session/Submission.tsx -> web/src/routes/(app)/assignment/-session/Submission.tsx
      renamed:    student/src/routes/(app)/assignment/-session/context.ts -> web/src/routes/(app)/assignment/-session/context.ts
      renamed:    student/src/routes/(app)/course/$id.session.tsx -> web/src/routes/(app)/course/$id.session.tsx
      renamed:    student/src/routes/(app)/course/-session/Achievement.tsx -> web/src/routes/(app)/course/-session/Achievement.tsx
      renamed:    student/src/routes/(app)/course/-session/Comment.tsx -> web/src/routes/(app)/course/-session/Comment.tsx
      renamed:    student/src/routes/(app)/course/-session/CourseDetail.tsx -> web/src/routes/(app)/course/-session/CourseDetail.tsx
      renamed:    student/src/routes/(app)/course/-session/GettingStarted.tsx -> web/src/routes/(app)/course/-session/GettingStarted.tsx
      renamed:    student/src/routes/(app)/course/-session/Outline.tsx -> web/src/routes/(app)/course/-session/Outline.tsx
      renamed:    student/src/routes/(app)/course/-session/Schedule.tsx -> web/src/routes/(app)/course/-session/Schedule.tsx
      renamed:    student/src/routes/(app)/course/-session/context.ts -> web/src/routes/(app)/course/-session/context.ts
      renamed:    student/src/routes/(app)/dashboard/-context.ts -> web/src/routes/(app)/dashboard/-context.ts
      renamed:    student/src/routes/(app)/dashboard/achievement.tsx -> web/src/routes/(app)/dashboard/achievement.tsx
      renamed:    student/src/routes/(app)/dashboard/announcement.tsx -> web/src/routes/(app)/dashboard/announcement.tsx
      renamed:    student/src/routes/(app)/dashboard/catalog.tsx -> web/src/routes/(app)/dashboard/catalog.tsx
      renamed:    student/src/routes/(app)/dashboard/goal.tsx -> web/src/routes/(app)/dashboard/goal.tsx
      renamed:    student/src/routes/(app)/dashboard/index.tsx -> web/src/routes/(app)/dashboard/index.tsx
      renamed:    student/src/routes/(app)/dashboard/inquiry.tsx -> web/src/routes/(app)/dashboard/inquiry.tsx
      renamed:    student/src/routes/(app)/dashboard/learning.tsx -> web/src/routes/(app)/dashboard/learning.tsx
      renamed:    student/src/routes/(app)/dashboard/report.tsx -> web/src/routes/(app)/dashboard/report.tsx
      new file:   web/src/routes/(app)/dashboard/route.tsx
      renamed:    student/src/routes/(app)/dashboard/search.tsx -> web/src/routes/(app)/dashboard/search.tsx
      renamed:    student/src/routes/(app)/discussion/$id.session.tsx -> web/src/routes/(app)/discussion/$id.session.tsx
      renamed:    student/src/routes/(app)/discussion/-session/Discussion.tsx -> web/src/routes/(app)/discussion/-session/Discussion.tsx
      renamed:    student/src/routes/(app)/discussion/-session/GettingStarted.tsx -> web/src/routes/(app)/discussion/-session/GettingStarted.tsx
      renamed:    student/src/routes/(app)/discussion/-session/GradingReview.tsx -> web/src/routes/(app)/discussion/-session/GradingReview.tsx
      renamed:    student/src/routes/(app)/discussion/-session/Thread.tsx -> web/src/routes/(app)/discussion/-session/Thread.tsx
      renamed:    student/src/routes/(app)/discussion/-session/context.ts -> web/src/routes/(app)/discussion/-session/context.ts
      renamed:    student/src/routes/(app)/exam/$id.session.tsx -> web/src/routes/(app)/exam/$id.session.tsx
      renamed:    student/src/routes/(app)/exam/-session/GettingStarted.tsx -> web/src/routes/(app)/exam/-session/GettingStarted.tsx
      renamed:    student/src/routes/(app)/exam/-session/GradingReview.tsx -> web/src/routes/(app)/exam/-session/GradingReview.tsx
      renamed:    student/src/routes/(app)/exam/-session/QuestionReview.tsx -> web/src/routes/(app)/exam/-session/QuestionReview.tsx
      renamed:    student/src/routes/(app)/exam/-session/StopWatch.tsx -> web/src/routes/(app)/exam/-session/StopWatch.tsx
      renamed:    student/src/routes/(app)/exam/-session/TakeExam.tsx -> web/src/routes/(app)/exam/-session/TakeExam.tsx
      renamed:    student/src/routes/(app)/exam/-session/context.ts -> web/src/routes/(app)/exam/-session/context.ts
      renamed:    student/src/routes/(app)/media/$id.tsx -> web/src/routes/(app)/media/$id.tsx
      renamed:    student/src/routes/(app)/media/-media/Note.tsx -> web/src/routes/(app)/media/-media/Note.tsx
      renamed:    student/src/routes/(app)/media/-media/Subtitle.tsx -> web/src/routes/(app)/media/-media/Subtitle.tsx
      renamed:    student/src/routes/(app)/media/-media/Watch.tsx -> web/src/routes/(app)/media/-media/Watch.tsx
      renamed:    student/src/routes/(app)/media/-media/store.ts -> web/src/routes/(app)/media/-media/store.ts
      renamed:    student/src/routes/(app)/route.tsx -> web/src/routes/(app)/route.tsx
      renamed:    student/src/routes/(auth)/-ActivationLink.tsx -> web/src/routes/(auth)/-ActivationLink.tsx
      renamed:    student/src/routes/(auth)/-LoginLink.tsx -> web/src/routes/(auth)/-LoginLink.tsx
      renamed:    student/src/routes/(auth)/-SSOButtons.tsx -> web/src/routes/(auth)/-SSOButtons.tsx
      renamed:    student/src/routes/(auth)/activate.tsx -> web/src/routes/(auth)/activate.tsx
      renamed:    student/src/routes/(auth)/join.tsx -> web/src/routes/(auth)/join.tsx
      renamed:    student/src/routes/(auth)/login.tsx -> web/src/routes/(auth)/login.tsx
      renamed:    student/src/routes/(auth)/password-change.tsx -> web/src/routes/(auth)/password-change.tsx
      renamed:    student/src/routes/(auth)/route.tsx -> web/src/routes/(auth)/route.tsx
      renamed:    student/src/routes/(public)/survey/$id.tsx -> web/src/routes/(public)/survey/$id.tsx
      renamed:    student/src/routes/(public)/survey/-SurveyForm.tsx -> web/src/routes/(public)/survey/-SurveyForm.tsx
      renamed:    student/src/routes/-SitePolicy.tsx -> web/src/routes/-SitePolicy.tsx
      renamed:    student/src/routes/__root.tsx -> web/src/routes/__root.tsx
      renamed:    student/src/routes/index.tsx -> web/src/routes/index.tsx
      new file:   web/src/routes/studio/$app.$id.tsx
      new file:   web/src/routes/studio/-assignment/App.tsx
      new file:   web/src/routes/studio/-assignment/Assignment.tsx
      new file:   web/src/routes/studio/-assignment/Question.tsx
      new file:   web/src/routes/studio/-assignment/QuestionPool.tsx
      new file:   web/src/routes/studio/-assignment/Rubric.tsx
      new file:   web/src/routes/studio/-assignment/data.ts
      new file:   web/src/routes/studio/-context/CollapseContext.tsx
      new file:   web/src/routes/studio/-context/editing.tsx
      new file:   web/src/routes/studio/-course/App.tsx
      new file:   web/src/routes/studio/-course/Assessments.tsx
      new file:   web/src/routes/studio/-course/Categories.tsx
      new file:   web/src/routes/studio/-course/Certificates.tsx
      new file:   web/src/routes/studio/-course/Course.tsx
      new file:   web/src/routes/studio/-course/CourseRelations.tsx
      new file:   web/src/routes/studio/-course/Instructors.tsx
      new file:   web/src/routes/studio/-course/Lessons.tsx
      new file:   web/src/routes/studio/-course/Surveys.tsx
      new file:   web/src/routes/studio/-course/data.ts
      new file:   web/src/routes/studio/-discussion/App.tsx
      new file:   web/src/routes/studio/-discussion/Discussion.tsx
      new file:   web/src/routes/studio/-discussion/Question.tsx
      new file:   web/src/routes/studio/-discussion/QuestionPool.tsx
      new file:   web/src/routes/studio/-discussion/data.ts
      new file:   web/src/routes/studio/-exam/App.tsx
      new file:   web/src/routes/studio/-exam/Exam.tsx
      new file:   web/src/routes/studio/-exam/Question.tsx
      new file:   web/src/routes/studio/-exam/QuestionPool.tsx
      new file:   web/src/routes/studio/-exam/data.ts
      new file:   web/src/routes/studio/-media/App.tsx
      new file:   web/src/routes/studio/-media/Media.tsx
      new file:   web/src/routes/studio/-media/SubtitleSet.tsx
      new file:   web/src/routes/studio/-media/data.ts
      new file:   web/src/routes/studio/-quiz/App.tsx
      new file:   web/src/routes/studio/-quiz/Question.tsx
      new file:   web/src/routes/studio/-quiz/QuestionPool.tsx
      new file:   web/src/routes/studio/-quiz/Quiz.tsx
      new file:   web/src/routes/studio/-quiz/data.ts
      new file:   web/src/routes/studio/-studio/DataAction.tsx
      new file:   web/src/routes/studio/-studio/InlineSuggestion.tsx
      new file:   web/src/routes/studio/-studio/Menu.tsx
      new file:   web/src/routes/studio/-studio/NavbarLogo.tsx
      new file:   web/src/routes/studio/-studio/Paper.tsx
      new file:   web/src/routes/studio/-studio/PublishStatus.tsx
      new file:   web/src/routes/studio/-studio/field.tsx
      new file:   web/src/routes/studio/-studio/helper.ts
      new file:   web/src/routes/studio/-studio/initEditing.ts
      new file:   web/src/routes/studio/-studio/questionPool.ts
      new file:   web/src/routes/studio/-survey/App.tsx
      new file:   web/src/routes/studio/-survey/Question.tsx
      new file:   web/src/routes/studio/-survey/QuestionPool.tsx
      new file:   web/src/routes/studio/-survey/Survey.tsx
      new file:   web/src/routes/studio/-survey/data.ts
      new file:   web/src/routes/studio/index.tsx
      new file:   web/src/routes/studio/route.tsx
      new file:   web/src/shared/AutocompleteInput.tsx
      renamed:    student/src/shared/Avatar.test.tsx -> web/src/shared/Avatar.test.tsx
      renamed:    student/src/shared/Avatar.tsx -> web/src/shared/Avatar.tsx
      new file:   web/src/shared/CollapseButton.tsx
      renamed:    student/src/shared/ContentViewer.tsx -> web/src/shared/ContentViewer.tsx
      new file:   web/src/shared/CopyButton.tsx
      renamed:    student/src/shared/DateLocaleProvider.tsx -> web/src/shared/DateLocaleProvider.tsx
      renamed:    student/src/shared/Diaglog.tsx -> web/src/shared/Diaglog.tsx
      new file:   web/src/shared/DraggableTable.tsx
      renamed:    student/src/shared/FormInput.test.tsx -> web/src/shared/FormInput.test.tsx
      renamed:    student/src/shared/FormInput.tsx -> web/src/shared/FormInput.tsx
      renamed:    student/src/shared/GitHubIcon.tsx -> web/src/shared/GitHubIcon.tsx
      new file:   web/src/shared/GoToTop.tsx
      renamed:    student/src/shared/LivePlayer.tsx -> web/src/shared/LivePlayer.tsx
      renamed:    student/src/shared/LoadingOverlay.tsx -> web/src/shared/LoadingOverlay.tsx
      new file:   web/src/shared/MainMenu.tsx
      renamed:    student/src/shared/MediaPlayerAPI.ts -> web/src/shared/MediaPlayerAPI.ts
      new file:   web/src/shared/NavbarLogo.tsx
      renamed:    student/src/shared/NoContent.tsx -> web/src/shared/NoContent.tsx
      renamed:    student/src/shared/PdfViewer.tsx -> web/src/shared/PdfViewer.tsx
      renamed:    student/src/shared/PinInput.test.tsx -> web/src/shared/PinInput.test.tsx
      renamed:    student/src/shared/PinInput.tsx -> web/src/shared/PinInput.tsx
      renamed:    student/src/shared/ResizableWindow.tsx -> web/src/shared/ResizableWindow.tsx
      renamed:    student/src/shared/SubmitButton.tsx -> web/src/shared/SubmitButton.tsx
      renamed:    student/src/shared/ThemeButton.tsx -> web/src/shared/ThemeButton.tsx
      renamed:    student/src/shared/VideoPlayer.tsx -> web/src/shared/VideoPlayer.tsx
      renamed:    student/src/shared/WindowButtion.tsx -> web/src/shared/WindowButtion.tsx
      renamed:    student/src/shared/WordFrequency.tsx -> web/src/shared/WordFrequency.tsx
      new file:   web/src/shared/editor/Attachment.ts
      new file:   web/src/shared/editor/FormTextEditor.tsx
      new file:   web/src/shared/editor/SafeUndo.tsx
      renamed:    student/src/routes/(app)/-shared/editor/Toolbar.tsx -> web/src/shared/editor/Toolbar.tsx
      renamed:    student/src/shared/error.ts -> web/src/shared/error.ts
      renamed:    student/src/shared/icon/GoogleIcon.tsx -> web/src/shared/icon/GoogleIcon.tsx
      new file:   web/src/shared/image/ImageCropDialog.tsx
      new file:   web/src/shared/image/resizeContainImage.ts
      renamed:    student/src/shared/resizable.tsx -> web/src/shared/resizable.tsx
      renamed:    student/src/shared/solid/cached-infinite-store.ts -> web/src/shared/solid/cached-infinite-store.ts
      new file:   web/src/shared/solid/cached-store.ts
      renamed:    student/src/shared/solid/form.test.tsx -> web/src/shared/solid/form.test.tsx
      renamed:    student/src/shared/solid/form.tsx -> web/src/shared/solid/form.tsx
      renamed:    student/src/shared/solid/i18n.tsx -> web/src/shared/solid/i18n.tsx
      renamed:    student/src/shared/solid/persistent-signal.ts -> web/src/shared/solid/persistent-signal.ts
      renamed:    student/src/shared/toast/ToastContainer.tsx -> web/src/shared/toast/ToastContainer.tsx
      renamed:    student/src/shared/toast/store.ts -> web/src/shared/toast/store.ts
      renamed:    student/src/shared/utils.test.ts -> web/src/shared/utils.test.ts
      renamed:    student/src/shared/utils.ts -> web/src/shared/utils.ts
      new file:   web/src/styles.css
      renamed:    student/src/types/global.d.ts -> web/src/types/global.d.ts
      renamed:    student/tsconfig.json -> web/tsconfig.json
      renamed:    student/vite.config.ts -> web/vite.config.ts
      renamed:    student/vitest.config.ts -> web/vitest.config.ts
@cobel1024 cobel1024 merged commit d71a4ea into main Mar 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant