mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-05-23 06:00:17 +09:00

# Summary This commit completes the migration from Tauri v1 to v2, resolves configuration issues, upgrades Next.js, and adds test coverage for critical components to ensure stability during the transition. # Details ## Tauri v2 Migration - Updated Tauri dependencies to v2.3.0 series in package.json - Restructured build configuration in `/app/config/build.ts` to align with Tauri v2 requirements - Fixed imports and API usage patterns across the codebase - Added compatibility layer for window.__TAURI__ references to maintain backward compatibility ## Next.js Issues - Upgraded Next.js from 14.1.1 to 14.2.24 - Resolved caching problems with Server Actions - Updated eslint-config-next to match the new version - Cleared Next.js cache and temporary files to address build issues ## Testing & Stability - Added comprehensive tests for `stream.ts` to verify streaming functionality - Created mocks for Tauri API to support test environment - Verified that critical functionality continues to work correctly - Translated all comments to English for consistency ## Infrastructure - Fixed peer dependency warnings during installation - Ensured proper integration with Tauri v2 plugins (clipboard-manager, dialog, fs, http, notification, shell, updater, window-state) # Approach Prioritized stability by: 1. Making minimal necessary changes to configuration files 2. Preserving most `window.__TAURI__` calls as they still function in v2 3. Planning gradual migration to new APIs with test coverage for critical components 4. Documenting areas that will require future attention # Testing - Created unit tests for critical streaming functionality - Performed manual testing of key application features - Verified successful build and launch with Tauri v2 # Future Work - Future PRs will gradually replace deprecated Tauri v1 API calls with v2 equivalents - Additional test coverage will be added for other critical components
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import tauriConfig from "../../src-tauri/tauri.conf.json";
|
|
import { DEFAULT_INPUT_TEMPLATE } from "../constant";
|
|
|
|
export const getBuildConfig = () => {
|
|
if (typeof process === "undefined") {
|
|
throw Error(
|
|
"[Server Config] you are importing a nodejs-only module outside of nodejs",
|
|
);
|
|
}
|
|
|
|
const buildMode = process.env.BUILD_MODE ?? "standalone";
|
|
const isApp = !!process.env.BUILD_APP;
|
|
const version = "v" + tauriConfig.version;
|
|
|
|
const commitInfo = (() => {
|
|
try {
|
|
const childProcess = require("child_process");
|
|
const commitDate: string = childProcess
|
|
.execSync('git log -1 --format="%at000" --date=unix')
|
|
.toString()
|
|
.trim();
|
|
const commitHash: string = childProcess
|
|
.execSync('git log --pretty=format:"%H" -n 1')
|
|
.toString()
|
|
.trim();
|
|
|
|
return { commitDate, commitHash };
|
|
} catch (e) {
|
|
console.error("[Build Config] No git or not from git repo.");
|
|
return {
|
|
commitDate: "unknown",
|
|
commitHash: "unknown",
|
|
};
|
|
}
|
|
})();
|
|
|
|
return {
|
|
version,
|
|
...commitInfo,
|
|
buildMode,
|
|
isApp,
|
|
template: process.env.DEFAULT_INPUT_TEMPLATE ?? DEFAULT_INPUT_TEMPLATE,
|
|
};
|
|
};
|
|
|
|
export type BuildConfig = ReturnType<typeof getBuildConfig>;
|