From 48aa0533a5c4189c3e440af7933e1668ceaf68ea Mon Sep 17 00:00:00 2001 From: Faisal Amir Date: Thu, 9 Jan 2025 14:44:35 +0700 Subject: [PATCH 1/8] fix: add per_page params on github releases endpoint (#4425) --- docs/src/pages/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/pages/index.mdx b/docs/src/pages/index.mdx index 43c0875d7..4a22a7174 100644 --- a/docs/src/pages/index.mdx +++ b/docs/src/pages/index.mdx @@ -20,7 +20,7 @@ import Home from "@/components/Home" export const getStaticProps = async() => { const resReleaseLatest = await fetch('https://api.github.com/repos/janhq/jan/releases/latest') - const resRelease = await fetch('https://api.github.com/repos/janhq/jan/releases') + const resRelease = await fetch('https://api.github.com/repos/janhq/jan/releases?per_page=500') const resRepo = await fetch('https://api.github.com/repos/janhq/jan') const repo = await resRepo.json() const latestRelease = await resReleaseLatest.json() From 7af18cf51f187766fdc30d3b88daa72d6e499164 Mon Sep 17 00:00:00 2001 From: Doan Bui Date: Fri, 10 Jan 2025 15:59:28 +0700 Subject: [PATCH 2/8] Add support version patch and restore support for all platforms --- electron/package.json | 8 ++++---- electron/scripts/version-patch.js | 18 ++++++++++++++++++ electron/scripts/version-restore.js | 20 ++++++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 electron/scripts/version-patch.js create mode 100644 electron/scripts/version-restore.js diff --git a/electron/package.json b/electron/package.json index c058370a7..57637e955 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,6 +1,6 @@ { "name": "jan", - "version": "0.1.3", + "version": "0.1.1736498766", "main": "./build/main.js", "author": "Jan ", "license": "MIT", @@ -80,8 +80,8 @@ "lint": "eslint . --ext \".js,.jsx,.ts,.tsx\"", "test:e2e": "DEBUG=pw:browser xvfb-maybe -- playwright test --workers=1", "copy:assets": "rimraf --glob \"./pre-install/*.tgz\" && cpx \"../pre-install/*.tgz\" \"./pre-install\"", - "version-patch": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", - "version-restore": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", + "version-patch": "node scripts/version-patch.js", + "version-restore": "node scripts/version-restore.js", "dev": "yarn copy:assets && tsc -p . && yarn version-patch && electron . && yarn version-restore", "compile": "tsc -p .", "start": "electron .", @@ -138,4 +138,4 @@ "hoistingLimits": "workspaces" }, "packageManager": "yarn@4.5.3" -} +} \ No newline at end of file diff --git a/electron/scripts/version-patch.js b/electron/scripts/version-patch.js new file mode 100644 index 000000000..33bdc7f0e --- /dev/null +++ b/electron/scripts/version-patch.js @@ -0,0 +1,18 @@ +const fs = require('fs'); +const path = require('path'); + +const packagePath = path.join(__dirname, '..', 'package.json'); +const backupPath = path.join(__dirname, '..', '.version.bak'); + +// Read package.json +const package = require(packagePath); + +// Backup current version +fs.writeFileSync(backupPath, package.version); + +// Update version +const timestamp = Math.floor(Date.now() / 1000); +package.version = `0.1.${timestamp}`; + +// Write back to package.json +fs.writeFileSync(packagePath, JSON.stringify(package, null, 2)); \ No newline at end of file diff --git a/electron/scripts/version-restore.js b/electron/scripts/version-restore.js new file mode 100644 index 000000000..6dc8d78b6 --- /dev/null +++ b/electron/scripts/version-restore.js @@ -0,0 +1,20 @@ +const fs = require('fs'); +const path = require('path'); + +const packagePath = path.join(__dirname, '..', 'package.json'); +const backupPath = path.join(__dirname, '..', '.version.bak'); + +// Read backup version +const backupVersion = fs.readFileSync(backupPath, 'utf8'); + +// Read package.json +const package = require(packagePath); + +// Restore version +package.version = backupVersion; + +// Write back to package.json +fs.writeFileSync(packagePath, JSON.stringify(package, null, 2)); + +// Delete backup file +fs.unlinkSync(backupPath); \ No newline at end of file From d2717fb8df0359d8fea164dc7907d8e3eaba72b4 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 12 Jan 2025 16:10:37 +0700 Subject: [PATCH 3/8] fix: load model fail on windows --- electron/package.json | 5 +++- .../engine-management-extension/package.json | 6 ++++- .../src/node/index.ts | 27 ++++++++++++++++++- package.json | 1 - 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/electron/package.json b/electron/package.json index c058370a7..54e34f247 100644 --- a/electron/package.json +++ b/electron/package.json @@ -82,7 +82,9 @@ "copy:assets": "rimraf --glob \"./pre-install/*.tgz\" && cpx \"../pre-install/*.tgz\" \"./pre-install\"", "version-patch": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", "version-restore": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", - "dev": "yarn copy:assets && tsc -p . && yarn version-patch && electron . && yarn version-restore", + "dev:darwin:linux": "yarn copy:assets && tsc -p . && yarn version-patch && electron . && yarn version-restore", + "dev:windows": "yarn copy:assets && tsc -p . && electron .", + "dev": "run-script-os", "compile": "tsc -p .", "start": "electron .", "build": "yarn copy:assets && run-script-os", @@ -129,6 +131,7 @@ "electron-playwright-helpers": "^1.6.0", "eslint": "8.57.0", "eslint-plugin-react": "^7.34.0", + "jq": "^1.7.2", "rimraf": "^5.0.5", "run-script-os": "^1.1.6", "typescript": "^5.3.3", diff --git a/extensions/engine-management-extension/package.json b/extensions/engine-management-extension/package.json index 2a9da41ec..5ffe2d42a 100644 --- a/extensions/engine-management-extension/package.json +++ b/extensions/engine-management-extension/package.json @@ -10,7 +10,10 @@ "scripts": { "test": "jest", "build": "rolldown -c rolldown.config.mjs", - "build:publish": "rimraf *.tgz --glob || true && yarn build && ../../.github/scripts/auto-sign.sh && npm pack && cpx *.tgz ../../pre-install" + "codesign:darwin": "../../.github/scripts/auto-sign.sh", + "codesign:win32:linux": "echo 'No codesigning required'", + "codesign": "run-script-os", + "build:publish": "rimraf *.tgz --glob || true && yarn build && yarn codesign && npm pack && cpx *.tgz ../../pre-install" }, "exports": { ".": "./dist/index.js", @@ -20,6 +23,7 @@ "cpx": "^1.5.0", "rimraf": "^3.0.2", "rolldown": "^1.0.0-beta.1", + "run-script-os": "^1.1.6", "ts-loader": "^9.5.0", "typescript": "^5.3.3" }, diff --git a/extensions/inference-cortex-extension/src/node/index.ts b/extensions/inference-cortex-extension/src/node/index.ts index 4ce35c83d..dda92fbcf 100644 --- a/extensions/inference-cortex-extension/src/node/index.ts +++ b/extensions/inference-cortex-extension/src/node/index.ts @@ -1,6 +1,7 @@ import path from 'path' -import { getJanDataFolderPath, log, SystemInformation } from '@janhq/core/node' +import { appResourcePath, getJanDataFolderPath, log, SystemInformation } from '@janhq/core/node' import { ProcessWatchdog } from './watchdog' +import { readdir, symlink } from 'fs/promises' // The HOST address to use for the Nitro subprocess const LOCAL_PORT = '39291' @@ -17,7 +18,13 @@ function run(systemInfo?: SystemInformation): Promise { let gpuVisibleDevices = systemInfo?.gpuSetting?.gpus_in_use.join(',') ?? '' let binaryName = `cortex-server${process.platform === 'win32' ? '.exe' : ''}` const binPath = path.join(__dirname, '..', 'bin') + await createEngineSymlinks(binPath) + const executablePath = path.join(binPath, binaryName) + const sharedPath = path.join( + appResourcePath(), + 'shared' + ) // Execute the binary log(`[CORTEX]:: Spawn cortex at path: ${executablePath}`) @@ -46,6 +53,7 @@ function run(systemInfo?: SystemInformation): Promise { GGML_VK_VISIBLE_DEVICES: gpuVisibleDevices, }), }, + cwd: sharedPath, } ) watchdog.start() @@ -53,6 +61,23 @@ function run(systemInfo?: SystemInformation): Promise { }) } +/** + * Create symlinks for the engine shared libraries + * @param binPath + */ +async function createEngineSymlinks(binPath: string) { + const sharedPath = path.join(appResourcePath(), 'shared') + const sharedLibFiles = await readdir(sharedPath) + for (const sharedLibFile of sharedLibFiles) { + if (sharedLibFile.endsWith('.dll') || sharedLibFile.endsWith('.so')) { + const targetDllPath = path.join(sharedPath, sharedLibFile) + const symlinkDllPath = path.join(binPath, sharedLibFile) + await symlink(targetDllPath, symlinkDllPath).catch(console.error) + console.log(`Symlink created: ${targetDllPath} -> ${symlinkDllPath}`) + } + } +} + /** * Every module should have a dispose function * This will be called when the extension is unloaded and should clean up any resources diff --git a/package.json b/package.json index 174b39d96..743406122 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,6 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "rimraf": "^3.0.2", - "run-script-os": "^1.1.6", "wait-on": "^7.0.1" }, "version": "0.0.0", From 55804caeaca7e0ebbbde90105051cf8c87b53266 Mon Sep 17 00:00:00 2001 From: Doan Bui Date: Mon, 13 Jan 2025 08:50:29 +0700 Subject: [PATCH 4/8] Add support version patch and restore support for all platforms --- electron/package.json | 12 +++++++++--- electron/scripts/version-patch.js | 18 ------------------ electron/scripts/version-restore.js | 20 -------------------- 3 files changed, 9 insertions(+), 41 deletions(-) delete mode 100644 electron/scripts/version-patch.js delete mode 100644 electron/scripts/version-restore.js diff --git a/electron/package.json b/electron/package.json index 57637e955..9c4ee9350 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,6 +1,6 @@ { "name": "jan", - "version": "0.1.1736498766", + "version": "0.1.3", "main": "./build/main.js", "author": "Jan ", "license": "MIT", @@ -80,8 +80,14 @@ "lint": "eslint . --ext \".js,.jsx,.ts,.tsx\"", "test:e2e": "DEBUG=pw:browser xvfb-maybe -- playwright test --workers=1", "copy:assets": "rimraf --glob \"./pre-install/*.tgz\" && cpx \"../pre-install/*.tgz\" \"./pre-install\"", - "version-patch": "node scripts/version-patch.js", - "version-restore": "node scripts/version-restore.js", + "version-patch": "run-script-os", + "version-patch:darwin": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", + "version-patch:linux": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", + "version-patch:win32": "node -e \"const fs=require('fs');const pkg=require('./package.json');const bak=pkg.version;fs.writeFileSync('.version.bak',bak);pkg.version='0.1.'+Math.floor(Date.now()/1000);fs.writeFileSync('package.json',JSON.stringify(pkg,null,2));\"", + "version-restore": "run-script-os", + "version-restore:darwin": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", + "version-restore:linux": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", + "version-restore:win32": "node -e \"const fs=require('fs');const pkg=require('./package.json');const bak=fs.readFileSync('.version.bak','utf8');pkg.version=bak;fs.writeFileSync('package.json',JSON.stringify(pkg,null,2));\"", "dev": "yarn copy:assets && tsc -p . && yarn version-patch && electron . && yarn version-restore", "compile": "tsc -p .", "start": "electron .", diff --git a/electron/scripts/version-patch.js b/electron/scripts/version-patch.js deleted file mode 100644 index 33bdc7f0e..000000000 --- a/electron/scripts/version-patch.js +++ /dev/null @@ -1,18 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const packagePath = path.join(__dirname, '..', 'package.json'); -const backupPath = path.join(__dirname, '..', '.version.bak'); - -// Read package.json -const package = require(packagePath); - -// Backup current version -fs.writeFileSync(backupPath, package.version); - -// Update version -const timestamp = Math.floor(Date.now() / 1000); -package.version = `0.1.${timestamp}`; - -// Write back to package.json -fs.writeFileSync(packagePath, JSON.stringify(package, null, 2)); \ No newline at end of file diff --git a/electron/scripts/version-restore.js b/electron/scripts/version-restore.js deleted file mode 100644 index 6dc8d78b6..000000000 --- a/electron/scripts/version-restore.js +++ /dev/null @@ -1,20 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const packagePath = path.join(__dirname, '..', 'package.json'); -const backupPath = path.join(__dirname, '..', '.version.bak'); - -// Read backup version -const backupVersion = fs.readFileSync(backupPath, 'utf8'); - -// Read package.json -const package = require(packagePath); - -// Restore version -package.version = backupVersion; - -// Write back to package.json -fs.writeFileSync(packagePath, JSON.stringify(package, null, 2)); - -// Delete backup file -fs.unlinkSync(backupPath); \ No newline at end of file From 1d349ff03fd63c5dffebb195324b40c64a9014f9 Mon Sep 17 00:00:00 2001 From: Doan Bui Date: Mon, 13 Jan 2025 08:59:14 +0700 Subject: [PATCH 5/8] Add support version patch and restore support for all platforms --- electron/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/electron/package.json b/electron/package.json index 9c4ee9350..ae7e81c5d 100644 --- a/electron/package.json +++ b/electron/package.json @@ -85,8 +85,8 @@ "version-patch:linux": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", "version-patch:win32": "node -e \"const fs=require('fs');const pkg=require('./package.json');const bak=pkg.version;fs.writeFileSync('.version.bak',bak);pkg.version='0.1.'+Math.floor(Date.now()/1000);fs.writeFileSync('package.json',JSON.stringify(pkg,null,2));\"", "version-restore": "run-script-os", - "version-restore:darwin": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", - "version-restore:linux": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", + "version-restore:darwin": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", + "version-restore:linux": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", "version-restore:win32": "node -e \"const fs=require('fs');const pkg=require('./package.json');const bak=fs.readFileSync('.version.bak','utf8');pkg.version=bak;fs.writeFileSync('package.json',JSON.stringify(pkg,null,2));\"", "dev": "yarn copy:assets && tsc -p . && yarn version-patch && electron . && yarn version-restore", "compile": "tsc -p .", From a3077ea4a51ed910037793b214de34c01726b297 Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 13 Jan 2025 09:15:45 +0700 Subject: [PATCH 6/8] chore: bump engine version to 0.1.43 --- extensions/inference-cortex-extension/rolldown.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/inference-cortex-extension/rolldown.config.mjs b/extensions/inference-cortex-extension/rolldown.config.mjs index 4f8a4ac06..c20bf7ed0 100644 --- a/extensions/inference-cortex-extension/rolldown.config.mjs +++ b/extensions/inference-cortex-extension/rolldown.config.mjs @@ -111,7 +111,7 @@ export default defineConfig([ SETTINGS: JSON.stringify(defaultSettingJson), CORTEX_API_URL: JSON.stringify('http://127.0.0.1:39291'), CORTEX_SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), - CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.42'), + CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.43'), }, }, { From 5812fd798f23c6107f4b3a98b42f9d2138ccc2c4 Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 13 Jan 2025 13:04:27 +0700 Subject: [PATCH 7/8] Update electron/package.json --- electron/package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/electron/package.json b/electron/package.json index 33d0a8554..a80a41160 100644 --- a/electron/package.json +++ b/electron/package.json @@ -81,8 +81,7 @@ "test:e2e": "DEBUG=pw:browser xvfb-maybe -- playwright test --workers=1", "copy:assets": "rimraf --glob \"./pre-install/*.tgz\" && cpx \"../pre-install/*.tgz\" \"./pre-install\"", "version-patch": "run-script-os", - "version-patch:darwin": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", - "version-patch:linux": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", + "version-patch:darwin:linux": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", "version-patch:win32": "node -e \"const fs=require('fs');const pkg=require('./package.json');const bak=pkg.version;fs.writeFileSync('.version.bak',bak);pkg.version='0.1.'+Math.floor(Date.now()/1000);fs.writeFileSync('package.json',JSON.stringify(pkg,null,2));\"", "version-restore": "run-script-os", "version-restore:darwin": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", From 53cd8a49da5863e3d0fcf0344031a637b320a1d6 Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 13 Jan 2025 13:04:35 +0700 Subject: [PATCH 8/8] Update electron/package.json --- electron/package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/electron/package.json b/electron/package.json index a80a41160..b8ab96dd4 100644 --- a/electron/package.json +++ b/electron/package.json @@ -84,8 +84,7 @@ "version-patch:darwin:linux": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", "version-patch:win32": "node -e \"const fs=require('fs');const pkg=require('./package.json');const bak=pkg.version;fs.writeFileSync('.version.bak',bak);pkg.version='0.1.'+Math.floor(Date.now()/1000);fs.writeFileSync('package.json',JSON.stringify(pkg,null,2));\"", "version-restore": "run-script-os", - "version-restore:darwin": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", - "version-restore:linux": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", + "version-restore:darwin:linux": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", "version-restore:win32": "node -e \"const fs=require('fs');const pkg=require('./package.json');const bak=fs.readFileSync('.version.bak','utf8');pkg.version=bak;fs.writeFileSync('package.json',JSON.stringify(pkg,null,2));\"", "dev:darwin:linux": "yarn copy:assets && tsc -p . && yarn version-patch && electron . && yarn version-restore", "dev:windows": "yarn copy:assets && tsc -p . && electron .",