diff --git a/.github/workflows/jan-electron-build-nightly.yml b/.github/workflows/jan-electron-build-nightly.yml index 2a7f3eefd..15390b752 100644 --- a/.github/workflows/jan-electron-build-nightly.yml +++ b/.github/workflows/jan-electron-build-nightly.yml @@ -69,9 +69,9 @@ jobs: if: github.event_name == 'schedule' uses: ./.github/workflows/template-noti-discord-and-update-url-readme.yml with: - ref: refs/heads/main + ref: refs/heads/dev build_reason: Nightly - push_to_branch: main + push_to_branch: dev new_version: ${{ needs.get-update-version.outputs.new_version }} noti-discord-manual-and-update-url-readme: @@ -80,7 +80,7 @@ jobs: if: github.event_name == 'workflow_dispatch' && github.event.inputs.public_provider == 'cloudflare-r2' uses: ./.github/workflows/template-noti-discord-and-update-url-readme.yml with: - ref: refs/heads/main + ref: refs/heads/dev build_reason: Manual - push_to_branch: main + push_to_branch: dev new_version: ${{ needs.get-update-version.outputs.new_version }} diff --git a/.github/workflows/jan-electron-build-pre-release.yml b/.github/workflows/jan-electron-build-pre-release.yml index c3580105b..d37cda5ab 100644 --- a/.github/workflows/jan-electron-build-pre-release.yml +++ b/.github/workflows/jan-electron-build-pre-release.yml @@ -46,7 +46,7 @@ jobs: if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: ./.github/workflows/template-noti-discord-and-update-url-readme.yml with: - ref: refs/heads/main + ref: refs/heads/dev build_reason: Nightly - push_to_branch: main + push_to_branch: dev new_version: ${{ needs.get-update-version.outputs.new_version }} diff --git a/.github/workflows/template-build-linux-x64.yml b/.github/workflows/template-build-linux-x64.yml index f39f2302e..c6d1eac97 100644 --- a/.github/workflows/template-build-linux-x64.yml +++ b/.github/workflows/template-build-linux-x64.yml @@ -58,7 +58,7 @@ jobs: mv /tmp/package.json electron/package.json jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json mv /tmp/package.json web/package.json - jq '.build.publish = [{"provider": "s3", "bucket": "${{ secrets.CLOUDFLARE_R2_BUCKET_NAME }}", "region": "auto", "endpoint": "https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com", "path": "${{ inputs.cloudflare_r2_path }}", "channel": "latest"}]' electron/package.json > /tmp/package.json + jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "bucket": "${{ secrets.CLOUDFLARE_R2_BUCKET_NAME }}", "region": "auto", "endpoint": "https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com", "path": "${{ inputs.cloudflare_r2_path }}", "channel": "latest"}]' electron/package.json > /tmp/package.json mv /tmp/package.json electron/package.json cat electron/package.json diff --git a/.github/workflows/template-build-macos.yml b/.github/workflows/template-build-macos.yml index 8295947af..bc48e6c21 100644 --- a/.github/workflows/template-build-macos.yml +++ b/.github/workflows/template-build-macos.yml @@ -1,4 +1,4 @@ -name: build-linux-x64 +name: build-macos on: workflow_call: inputs: @@ -70,7 +70,7 @@ jobs: jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json mv /tmp/package.json web/package.json - jq '.build.publish = [{"provider": "s3", "bucket": "${{ secrets.CLOUDFLARE_R2_BUCKET_NAME }}", "region": "auto", "endpoint": "https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com", "path": "${{ inputs.cloudflare_r2_path }}", "channel": "latest"}]' electron/package.json > /tmp/package.json + jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "bucket": "${{ secrets.CLOUDFLARE_R2_BUCKET_NAME }}", "region": "auto", "endpoint": "https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com", "path": "${{ inputs.cloudflare_r2_path }}", "channel": "latest"}]' electron/package.json > /tmp/package.json mv /tmp/package.json electron/package.json cat electron/package.json diff --git a/.github/workflows/template-build-windows-x64.yml b/.github/workflows/template-build-windows-x64.yml index 83ca10e95..5d96b3f49 100644 --- a/.github/workflows/template-build-windows-x64.yml +++ b/.github/workflows/template-build-windows-x64.yml @@ -71,7 +71,7 @@ jobs: jq --arg version "${{ inputs.new_version }}" '.version = $version' web/package.json > /tmp/package.json mv /tmp/package.json web/package.json - jq '.build.publish = [{"provider": "s3", "bucket": "${{ secrets.CLOUDFLARE_R2_BUCKET_NAME }}", "region": "auto", "endpoint": "https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com", "path": "${{ inputs.cloudflare_r2_path }}", "channel": "latest"}]' electron/package.json > /tmp/package.json + jq '.build.publish = [{"provider": "generic", "url": "${{ secrets.CLOUDFLARE_R2_PUBLIC_URL }}", "channel": "latest"}, {"provider": "s3", "bucket": "${{ secrets.CLOUDFLARE_R2_BUCKET_NAME }}", "region": "auto", "endpoint": "https://${{ secrets.CLOUDFLARE_ACCOUNT_ID }}.r2.cloudflarestorage.com", "path": "${{ inputs.cloudflare_r2_path }}", "channel": "latest"}]' electron/package.json > /tmp/package.json mv /tmp/package.json electron/package.json jq '.build.win.sign = "./sign.js"' electron/package.json > /tmp/package.json diff --git a/README.md b/README.md index fee40a1b3..dc933eb9a 100644 --- a/README.md +++ b/README.md @@ -76,31 +76,31 @@ Jan is an open-source ChatGPT alternative that runs 100% offline on your compute Experimental (Nightly Build) - + jan.exe - + Intel - + M1/M2 - + jan.deb - + jan.AppImage diff --git a/docs/docs/guides/08-troubleshooting/06-unexpected-token.mdx b/docs/docs/guides/08-troubleshooting/06-unexpected-token.mdx new file mode 100644 index 000000000..973001f1b --- /dev/null +++ b/docs/docs/guides/08-troubleshooting/06-unexpected-token.mdx @@ -0,0 +1,20 @@ +--- +title: Unexpected Token +slug: /troubleshooting/unexpected-token +description: Unexpected token is not a valid JSON +keywords: + [ + Jan AI, + Jan, + ChatGPT alternative, + local AI, + private AI, + conversational AI, + no-subscription fee, + large language model, + troubleshooting, + unexpected token, + ] +--- + +1. You may receive an error response `Error occurred: Unexpected token '<', " { + async downloadModel( + model: Model, + network?: { ignoreSSL?: boolean; proxy?: string } + ): Promise { // create corresponding directory const modelDirPath = await joinPath([JanModelExtension._homeDir, model.id]) if (!(await fs.existsSync(modelDirPath))) await fs.mkdirSync(modelDirPath) @@ -294,6 +297,11 @@ export default class JanModelExtension extends ModelExtension { name: dirName, created: Date.now(), description: `${dirName} - user self import model`, + metadata: { + size: binaryFileSize, + author: 'User', + tags: [], + }, } const modelFilePath = await joinPath([ diff --git a/models/config/default-model.json b/models/config/default-model.json index 50bf067c1..2263625f4 100644 --- a/models/config/default-model.json +++ b/models/config/default-model.json @@ -9,7 +9,6 @@ "description": "User self import model", "settings": { "ctx_len": 4096, - "ngl": 0, "embedding": false, "prompt_template": "{system_message}\n### Instruction: {prompt}\n### Response:" }, diff --git a/server/index.ts b/server/index.ts index 1d3752680..05bfdca96 100644 --- a/server/index.ts +++ b/server/index.ts @@ -116,7 +116,7 @@ export const startServer = async (configs?: ServerConfig) => { // Log server listening if (isVerbose) logServer( - `Debug: JAN API listening at: http://${JAN_API_HOST}:${JAN_API_PORT}` + `Debug: JAN API listening at: http://${hostSetting}:${portSetting}` ); }); } catch (e) { diff --git a/web/screens/Chat/ErrorMessage/index.tsx b/web/screens/Chat/ErrorMessage/index.tsx index 41d58dbdd..8879b15be 100644 --- a/web/screens/Chat/ErrorMessage/index.tsx +++ b/web/screens/Chat/ErrorMessage/index.tsx @@ -9,6 +9,7 @@ import { Button } from '@janhq/uikit' import { useAtomValue, useSetAtom } from 'jotai' import { RefreshCcw } from 'lucide-react' +import { useActiveModel } from '@/hooks/useActiveModel' import useSendChatMessage from '@/hooks/useSendChatMessage' import { extensionManager } from '@/extension' @@ -16,6 +17,7 @@ import { deleteMessageAtom, getCurrentChatMessagesAtom, } from '@/helpers/atoms/ChatMessage.atom' +import { totalRamAtom } from '@/helpers/atoms/SystemBar.atom' import { activeThreadAtom } from '@/helpers/atoms/Thread.atom' const ErrorMessage = ({ message }: { message: ThreadMessage }) => { @@ -23,6 +25,8 @@ const ErrorMessage = ({ message }: { message: ThreadMessage }) => { const thread = useAtomValue(activeThreadAtom) const deleteMessage = useSetAtom(deleteMessageAtom) const { resendChatMessage } = useSendChatMessage() + const { activeModel } = useActiveModel() + const totalRam = useAtomValue(totalRamAtom) const regenerateMessage = async () => { const lastMessageIndex = messages.length - 1 @@ -66,24 +70,33 @@ const ErrorMessage = ({ message }: { message: ThreadMessage }) => { {message.status === MessageStatus.Error && (
-

Apologies, something's amiss!

- Jan's in beta. Find troubleshooting guides{' '} - - here - {' '} - or reach out to us on{' '} - - Discord - {' '} - for assistance. + {Number(activeModel?.metadata.size) > totalRam ? ( + <> + Oops! Model size exceeds available RAM. Consider selecting a + smaller model or upgrading your RAM for smoother performance. + + ) : ( + <> +

Apologies, something's amiss!

+ Jan's in beta. Find troubleshooting guides{' '} + + here + {' '} + or reach out to us on{' '} + + Discord + {' '} + for assistance. + + )}
)} diff --git a/web/screens/LocalServer/index.tsx b/web/screens/LocalServer/index.tsx index 83b5989af..600437b62 100644 --- a/web/screens/LocalServer/index.tsx +++ b/web/screens/LocalServer/index.tsx @@ -108,9 +108,7 @@ const LocalServerScreen = () => { window.core?.api?.stopServer() setServerEnabled(false) } else { - if (!activeModel) { - startModel(String(selectedModel?.id)) - } + startModel(String(selectedModel?.id)) window.core?.api?.startServer({ host, port, @@ -129,7 +127,7 @@ const LocalServerScreen = () => { {serverEnabled && (