diff --git a/.github/workflows/jan-docs-new-release.yaml b/.github/workflows/jan-docs-new-release.yaml index 2acca92de..a8e94b6d7 100644 --- a/.github/workflows/jan-docs-new-release.yaml +++ b/.github/workflows/jan-docs-new-release.yaml @@ -58,6 +58,6 @@ jobs: accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} projectName: ${{ env.CLOUDFLARE_PROJECT_NAME }} directory: ./docs/out - branch: dev + branch: main # Optional: Enable this if you want to have GitHub Deployments triggered gitHubToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/jan-electron-build-beta.yml b/.github/workflows/jan-electron-build-beta.yml index 4f2625266..67496b355 100644 --- a/.github/workflows/jan-electron-build-beta.yml +++ b/.github/workflows/jan-electron-build-beta.yml @@ -133,4 +133,26 @@ jobs: run: | gh release edit v${{ needs.create-draft-release.outputs.version }} --draft=false --prerelease env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + noti-discord-and-update-url-readme: + needs: [build-macos-x64, build-macos-arm64, create-draft-release, build-windows-x64, build-linux-x64, combine-beta-mac-yml] + runs-on: ubuntu-latest + steps: + - name: Set version to environment variable + run: | + echo "VERSION=${{ needs.create-draft-release.outputs.version }}" >> $GITHUB_ENV + + - name: Notify Discord + uses: Ilshidur/action-discord@master + with: + args: | + Jan-beta App version {{ VERSION }}, has been released, use the following links to download the app with faster speed or visit the Github release page for more information: + - Windows: https://delta.jan.ai/beta/jan-beta-win-x64-{{ VERSION }}.exe + - macOS Intel: https://delta.jan.ai/beta/jan-beta-mac-x64-{{ VERSION }}.dmg + - macOS Apple Silicon: https://delta.jan.ai/beta/jan-beta-mac-arm64-{{ VERSION }}.dmg + - Linux Deb: https://delta.jan.ai/beta/jan-beta-linux-amd64-{{ VERSION }}.deb + - Linux AppImage: https://delta.jan.ai/beta/jan-beta-linux-x86_64-{{ VERSION }}.AppImage + - Github Release URL: https://github.com/janhq/jan/releases/tag/v{{ VERSION }} + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_JAN_BETA }} \ No newline at end of file diff --git a/JanBanner.png b/JanBanner.png new file mode 100644 index 000000000..165831871 Binary files /dev/null and b/JanBanner.png differ diff --git a/README.md b/README.md index ecede5bd9..043960537 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Jan - Turn your computer into an AI computer +# Jan - Local AI Assistant - +
@@ -12,18 +12,22 @@
- Getting Started + Getting Started - Docs - Changelog - Bug reports - Discord
-> [!Warning] >**Jan is currently in Development**: Expect breaking changes and bugs! ++⚠️ Jan is currently in Development: Expect breaking changes and bugs! +
-Jan is an open-source ChatGPT alternative that runs 100% offline on your computer. -**Jan runs on any hardware.** From PCs to multi-GPU clusters, Jan supports universal architectures: +Jan is a ChatGPT-alternative that runs 100% offline on your device. Our goal is to make it easy for a layperson to download and run LLMs and use AI with **full control** and **privacy**. + +Jan is powered by [Cortex](https://github.com/janhq/cortex.cpp), our embeddable local AI engine that runs on any hardware. +From PCs to multi-GPU clusters, Jan & Cortex supports universal architectures: - [x] NVIDIA GPUs (fast) - [x] Apple M-series (fast) @@ -31,6 +35,12 @@ Jan is an open-source ChatGPT alternative that runs 100% offline on your compute - [x] Linux Debian - [x] Windows x64 +#### Features: +- [Model Library](https://jan.ai/docs/models/manage-models#add-models) with popular LLMs like Llama, Gemma, Mistral, or Qwen +- Connect to [Remote AI APIs](https://jan.ai/docs/remote-models/openai) like Groq and OpenRouter +- Local API Server with OpenAI-equivalent API +- [Extensions](https://jan.ai/docs/extensions) for customizing Jan + ## Download| Experimental (Nightly Build) | +Beta (Preview) | +
+
+
+ jan.exe
+
+ |
+
+
+
+ Intel
+
+ |
+
+
+
+ M1/M2/M3/M4
+
+ |
+
+
+
+ jan.deb
+
+ |
+
+
+
+ jan.AppImage
+
+ |
+
| Nightly Build (Experimental) |
@@ -108,79 +151,64 @@ Jan is an open-source ChatGPT alternative that runs 100% offline on your compute
|
| - {col} - | - ) - })} -
|---|
|
{activeModel.name} diff --git a/web/containers/Layout/RibbonPanel/index.tsx b/web/containers/Layout/RibbonPanel/index.tsx index 2eb1bad70..ee00b2237 100644 --- a/web/containers/Layout/RibbonPanel/index.tsx +++ b/web/containers/Layout/RibbonPanel/index.tsx @@ -95,10 +95,11 @@ export default function RibbonPanel() { return ( onMenuClick(menu.state)}
>
diff --git a/web/screens/LocalServer/LocalServerRightPanel/index.tsx b/web/screens/LocalServer/LocalServerRightPanel/index.tsx
index 13e3cad57..628a61512 100644
--- a/web/screens/LocalServer/LocalServerRightPanel/index.tsx
+++ b/web/screens/LocalServer/LocalServerRightPanel/index.tsx
@@ -1,8 +1,8 @@
import { useCallback, useEffect, useMemo, useState } from 'react'
-import { Accordion, AccordionItem } from '@janhq/joi'
+import { Accordion, AccordionItem, Input, Tooltip } from '@janhq/joi'
import { useAtomValue, useSetAtom } from 'jotai'
-import { AlertTriangleIcon, InfoIcon } from 'lucide-react'
+import { AlertTriangleIcon, CheckIcon, CopyIcon, InfoIcon } from 'lucide-react'
import EngineSetting from '@/containers/EngineSetting'
import { modalTroubleShootingAtom } from '@/containers/ModalTroubleShoot'
@@ -12,6 +12,8 @@ import RightPanelContainer from '@/containers/RightPanelContainer'
import { loadModelErrorAtom } from '@/hooks/useActiveModel'
+import { useClipboard } from '@/hooks/useClipboard'
+
import { getConfigurationsData } from '@/utils/componentSettings'
import {
@@ -29,6 +31,8 @@ const LocalServerRightPanel = () => {
const selectedModel = useAtomValue(selectedModelAtom)
+ const clipboard = useClipboard({ timeout: 1000 })
+
const [currentModelSettingParams, setCurrentModelSettingParams] = useState(
extractModelLoadParams(selectedModel?.settings)
)
@@ -92,6 +96,35 @@ const LocalServerRightPanel = () => {
+
+ ) : (
+
+
{loadModelError && serverEnabled && (
-
-
- )}
+
)}
diff --git a/web/screens/Settings/HuggingFaceRepoDetailModal/ModelDownloadRow/index.tsx b/web/screens/Settings/HuggingFaceRepoDetailModal/ModelDownloadRow/index.tsx
index c3f09f171..9c2ff14a5 100644
--- a/web/screens/Settings/HuggingFaceRepoDetailModal/ModelDownloadRow/index.tsx
+++ b/web/screens/Settings/HuggingFaceRepoDetailModal/ModelDownloadRow/index.tsx
@@ -117,7 +117,7 @@ const ModelDownloadRow: React.FC
-
- }
- onClick={() => setOpen(!open)}
- />
+
+ )}
+
+
-
+
+ }
+ onClick={() => setOpen(!open)}
+ />
+ {gpuList.length > 0 && (
{
-
+
{quantization && (
diff --git a/web/screens/Settings/MyModels/MyModelList/index.tsx b/web/screens/Settings/MyModels/MyModelList/index.tsx
index c9ca6e867..7557e9952 100644
--- a/web/screens/Settings/MyModels/MyModelList/index.tsx
+++ b/web/screens/Settings/MyModels/MyModelList/index.tsx
@@ -85,7 +85,7 @@ const MyModelList = ({ model }: Props) => {
{renderPreview(fileUpload)}
-
)}
- {editMessage === props.id && (
+ {editMessage === props.id ? (
|