From 4b79a8d0311d0283cd973588ebc063253adc1e28 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 19:55:50 +0300 Subject: [PATCH 1/3] Initial commit with task details for issue #380 Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: https://github.com/deep-assistant/GPTutor/issues/380 --- CLAUDE.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..7c7e207e --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Issue to solve: https://github.com/deep-assistant/GPTutor/issues/380 +Your prepared branch: issue-380-016c2410 +Your prepared working directory: /tmp/gh-issue-solver-1757523331474 + +Proceed. \ No newline at end of file From a3f5a308bbca7c07e02ca49b890fae72122689df Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 19:56:06 +0300 Subject: [PATCH 2/3] Remove CLAUDE.md - PR created successfully --- CLAUDE.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 7c7e207e..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1,5 +0,0 @@ -Issue to solve: https://github.com/deep-assistant/GPTutor/issues/380 -Your prepared branch: issue-380-016c2410 -Your prepared working directory: /tmp/gh-issue-solver-1757523331474 - -Proceed. \ No newline at end of file From dc4e9b94625d576e5e2841a2313a60086d773b03 Mon Sep 17 00:00:00 2001 From: konard Date: Wed, 10 Sep 2025 20:11:09 +0300 Subject: [PATCH 3/3] Migrate from React Scripts + Craco to Vite build system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace react-scripts and craco with Vite v4.4.5 - Add @vitejs/plugin-react for React support - Create vite.config.ts with proper alias configuration - Update TypeScript config for Vite compatibility - Add tsconfig.node.json for Vite config files - Create missing env.js file referenced in index.tsx - Update npm scripts to use Vite commands - Remove craco.config.js (no longer needed) - Configure HTTPS and port 10888 to match original setup - Test development server and build process 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- GPTutor-Frontend/craco.config.js | 19 ----------------- GPTutor-Frontend/package.json | 12 ++++++----- GPTutor-Frontend/src/env.js | 7 ++++++ GPTutor-Frontend/tsconfig.json | 23 ++++++++++---------- GPTutor-Frontend/tsconfig.node.json | 10 +++++++++ GPTutor-Frontend/vite.config.ts | 33 +++++++++++++++++++++++++++++ 6 files changed, 69 insertions(+), 35 deletions(-) delete mode 100644 GPTutor-Frontend/craco.config.js create mode 100644 GPTutor-Frontend/src/env.js create mode 100644 GPTutor-Frontend/tsconfig.node.json create mode 100644 GPTutor-Frontend/vite.config.ts diff --git a/GPTutor-Frontend/craco.config.js b/GPTutor-Frontend/craco.config.js deleted file mode 100644 index e8bdef12..00000000 --- a/GPTutor-Frontend/craco.config.js +++ /dev/null @@ -1,19 +0,0 @@ -const path = require("path"); - -module.exports = { - webpack: { - alias: { - "$/api": path.resolve(__dirname, "src/api"), - "$/components": path.resolve(__dirname, "src/components"), - "$/entity": path.resolve(__dirname, "src/entity"), - "$/hooks": path.resolve(__dirname, "src/hooks"), - "$/icons": path.resolve(__dirname, "src/icons"), - "$/panels": path.resolve(__dirname, "src/panels"), - "$/modals": path.resolve(__dirname, "src/modals"), - "$/services": path.resolve(__dirname, "src/services"), - "$/utility": path.resolve(__dirname, "src/utility"), - "$/NavigationContext": path.resolve(__dirname, "src/NavigationContext"), - "$/TabbarApp": path.resolve(__dirname, "src/TabbarApp"), - }, - }, -}; diff --git a/GPTutor-Frontend/package.json b/GPTutor-Frontend/package.json index 6f051c44..9ff0636e 100644 --- a/GPTutor-Frontend/package.json +++ b/GPTutor-Frontend/package.json @@ -2,9 +2,10 @@ "name": "chat", "version": "0.0.0", "scripts": { - "start": "cross-env GENERATE_SOURCEMAP=false PORT=10888 HTTPS=true craco start", - "build": "cross-env GENERATE_SOURCEMAP=false craco build", - "test": "craco test", + "start": "vite", + "build": "vite build", + "preview": "vite preview", + "test": "vitest", "predeploy": "npm run build", "deploy": "vk-miniapps-deploy" }, @@ -63,7 +64,7 @@ }, "devDependencies": { "@babel/runtime": "^7.21.5", - "@craco/craco": "^7.1.0", + "@vitejs/plugin-react": "^4.0.3", "@types/jest": "^29.5.1", "@types/katex": "^0.16.7", "@types/lodash.debounce": "^4.0.7", @@ -80,7 +81,8 @@ "jest": "^27.5.1", "prettier": "^2.8.7", "react-hot-loader": "^4.13.0", - "react-scripts": "^5.0.1", + "vite": "^4.4.5", + "vitest": "^0.34.1", "ts-jest": "^29.1.0", "typescript": "^5.0.4" }, diff --git a/GPTutor-Frontend/src/env.js b/GPTutor-Frontend/src/env.js new file mode 100644 index 00000000..d054a176 --- /dev/null +++ b/GPTutor-Frontend/src/env.js @@ -0,0 +1,7 @@ +// Environment variables configuration +// This file is imported by index.tsx but was missing from the original codebase + +// For Vite, environment variables are available via import.meta.env +// This file can be used for additional environment configuration if needed + +export default {}; \ No newline at end of file diff --git a/GPTutor-Frontend/tsconfig.json b/GPTutor-Frontend/tsconfig.json index 7f00fc97..9ada823f 100644 --- a/GPTutor-Frontend/tsconfig.json +++ b/GPTutor-Frontend/tsconfig.json @@ -1,29 +1,30 @@ { "compilerOptions": { - "target": "es5", + "target": "ES2020", + "useDefineForClassFields": true, "lib": [ - "dom", - "dom.iterable", - "esnext" + "ES2020", + "DOM", + "DOM.Iterable" ], "downlevelIteration": true, "allowJs": false, "skipLibCheck": true, - "esModuleInterop": true, + "esModuleInterop": false, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", + "module": "ESNext", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx", + "jsx": "react-jsx" }, "extends": "./tsconfig.paths.json", "include": [ - "src", - "node_modules/eslint-plugin-react/lib/types.d.ts" - ] + "src" + ], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/GPTutor-Frontend/tsconfig.node.json b/GPTutor-Frontend/tsconfig.node.json new file mode 100644 index 00000000..099658cf --- /dev/null +++ b/GPTutor-Frontend/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} \ No newline at end of file diff --git a/GPTutor-Frontend/vite.config.ts b/GPTutor-Frontend/vite.config.ts new file mode 100644 index 00000000..f5cbfcfc --- /dev/null +++ b/GPTutor-Frontend/vite.config.ts @@ -0,0 +1,33 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import * as path from 'path' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + '$/api': path.resolve(__dirname, 'src/api'), + '$/components': path.resolve(__dirname, 'src/components'), + '$/entity': path.resolve(__dirname, 'src/entity'), + '$/hooks': path.resolve(__dirname, 'src/hooks'), + '$/icons': path.resolve(__dirname, 'src/icons'), + '$/panels': path.resolve(__dirname, 'src/panels'), + '$/modals': path.resolve(__dirname, 'src/modals'), + '$/services': path.resolve(__dirname, 'src/services'), + '$/utility': path.resolve(__dirname, 'src/utility'), + '$/NavigationContext': path.resolve(__dirname, 'src/NavigationContext'), + '$/TabbarApp': path.resolve(__dirname, 'src/TabbarApp'), + }, + }, + server: { + port: 10888, + https: true, + }, + build: { + sourcemap: false, + }, + define: { + global: 'globalThis', + }, +}) \ No newline at end of file