@@ -343,9 +343,28 @@ function generateLinuxPackageName(name) {
343343 . replace ( / - + / g, '-' ) ;
344344}
345345function generateIdentifierSafeName ( name ) {
346- return name
347- . replace ( / [ ^ a - z A - Z 0 - 9 ] / g, '' )
346+ // Support Chinese characters (CJK Unified Ideographs: U+4E00-U+9FFF)
347+ // and other common Unicode letter categories
348+ const cleaned = name
349+ . replace ( / [ ^ a - z A - Z 0 - 9 \u4e00 - \u9fff ] / g, '' )
348350 . toLowerCase ( ) ;
351+ // If result is empty after cleaning, generate a fallback based on original name
352+ if ( cleaned === '' ) {
353+ // Convert to ASCII-safe representation using character codes
354+ const fallback = Array . from ( name )
355+ . map ( char => {
356+ const code = char . charCodeAt ( 0 ) ;
357+ // Keep ASCII alphanumeric, convert others to their hex codes
358+ if ( ( code >= 48 && code <= 57 ) || ( code >= 65 && code <= 90 ) || ( code >= 97 && code <= 122 ) ) {
359+ return char . toLowerCase ( ) ;
360+ }
361+ return code . toString ( 16 ) ;
362+ } )
363+ . join ( '' )
364+ . slice ( 0 , 50 ) ; // Limit length to avoid extremely long names
365+ return fallback || 'pake-app' ; // Ultimate fallback
366+ }
367+ return cleaned ;
349368}
350369
351370async function mergeConfig ( url , options , tauriConf ) {
@@ -1190,7 +1209,9 @@ const API_KEYS = {
11901209 brandfetch : [ '1idqvJC0CeFSeyp3Yf7' , '1idej-yhU_ThggIHFyG' ] ,
11911210} ;
11921211function generateIconPath ( appName , isDefault = false ) {
1193- const safeName = isDefault ? 'icon' : generateSafeFilename ( appName ) . toLowerCase ( ) ;
1212+ const safeName = isDefault
1213+ ? 'icon'
1214+ : generateSafeFilename ( appName ) . toLowerCase ( ) ;
11941215 const baseName = safeName ;
11951216 if ( IS_WIN ) {
11961217 return path . join ( npmDirectory , 'src-tauri' , 'png' , `${ baseName } _256.ico` ) ;
0 commit comments