diff --git a/extensions/engine-management-extension/rolldown.config.mjs b/extensions/engine-management-extension/rolldown.config.mjs index 98a5445cf..27f4bae3e 100644 --- a/extensions/engine-management-extension/rolldown.config.mjs +++ b/extensions/engine-management-extension/rolldown.config.mjs @@ -15,7 +15,7 @@ export default defineConfig([ `http://127.0.0.1:${process.env.CORTEX_API_PORT ?? '39291'}` ), PLATFORM: JSON.stringify(process.platform), - CORTEX_ENGINE_VERSION: JSON.stringify('b5509'), + CORTEX_ENGINE_VERSION: JSON.stringify('b5857'), DEFAULT_REMOTE_ENGINES: JSON.stringify(engines), DEFAULT_REMOTE_MODELS: JSON.stringify(models), DEFAULT_REQUEST_PAYLOAD_TRANSFORM: JSON.stringify( @@ -38,7 +38,7 @@ export default defineConfig([ file: 'dist/node/index.cjs.js', }, define: { - CORTEX_ENGINE_VERSION: JSON.stringify('b5509'), + CORTEX_ENGINE_VERSION: JSON.stringify('b5857'), }, }, ]) diff --git a/extensions/inference-cortex-extension/download.bat b/extensions/inference-cortex-extension/download.bat index fe2df6645..d70dec08e 100644 --- a/extensions/inference-cortex-extension/download.bat +++ b/extensions/inference-cortex-extension/download.bat @@ -2,7 +2,7 @@ set BIN_PATH=./bin set SHARED_PATH=./../../electron/shared set /p CORTEX_VERSION=<./bin/version.txt -set ENGINE_VERSION=b5509 +set ENGINE_VERSION=b5857 @REM Download llama.cpp binaries set DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/%ENGINE_VERSION%/llama-%ENGINE_VERSION%-bin-win diff --git a/extensions/inference-cortex-extension/download.sh b/extensions/inference-cortex-extension/download.sh index 834c3315b..291b91085 100755 --- a/extensions/inference-cortex-extension/download.sh +++ b/extensions/inference-cortex-extension/download.sh @@ -2,7 +2,7 @@ # Read CORTEX_VERSION CORTEX_VERSION=$(cat ./bin/version.txt) -ENGINE_VERSION=b5509 +ENGINE_VERSION=b5857 CORTEX_RELEASE_URL="https://github.com/menloresearch/cortex.cpp/releases/download" ENGINE_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/${ENGINE_VERSION}/llama-${ENGINE_VERSION}-bin CUDA_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/${ENGINE_VERSION} diff --git a/extensions/inference-cortex-extension/rolldown.config.mjs b/extensions/inference-cortex-extension/rolldown.config.mjs index 6a62ddf74..b4947abb4 100644 --- a/extensions/inference-cortex-extension/rolldown.config.mjs +++ b/extensions/inference-cortex-extension/rolldown.config.mjs @@ -19,7 +19,7 @@ export default defineConfig([ CORTEX_SOCKET_URL: JSON.stringify( `ws://127.0.0.1:${process.env.CORTEX_API_PORT ?? '39291'}` ), - CORTEX_ENGINE_VERSION: JSON.stringify('b5509'), + CORTEX_ENGINE_VERSION: JSON.stringify('b5857'), }, }, { diff --git a/src-tauri/binaries/download.bat b/src-tauri/binaries/download.bat index c69ad7970..bf59b897d 100644 --- a/src-tauri/binaries/download.bat +++ b/src-tauri/binaries/download.bat @@ -1,7 +1,7 @@ @echo off set CORTEX_VERSION=1.0.14 -set ENGINE_VERSION=b5509 +set ENGINE_VERSION=b5857 set ENGINE_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/%ENGINE_VERSION%/llama-%ENGINE_VERSION%-bin-win set ENGINE_DOWNLOAD_GGML_URL=https://github.com/ggml-org/llama.cpp/releases/download/%ENGINE_VERSION%/llama-%ENGINE_VERSION%-bin-win set CUDA_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/%ENGINE_VERSION% @@ -35,7 +35,7 @@ for %%F in (%SUBFOLDERS%) do ( @REM Move cu*.dll files for %%D in (.\engines\engines\llama.cpp\%%F\%ENGINE_VERSION%\cu*.dll) do ( - move "%%D" "%BIN_PATH%" + move "%%D" "%BIN_PATH%" ) ) diff --git a/src-tauri/binaries/download.sh b/src-tauri/binaries/download.sh index 8ce0041f0..edc1d1466 100755 --- a/src-tauri/binaries/download.sh +++ b/src-tauri/binaries/download.sh @@ -15,7 +15,7 @@ download() { # Read CORTEX_VERSION CORTEX_VERSION=1.0.14 -ENGINE_VERSION=b5509 +ENGINE_VERSION=b5857 CORTEX_RELEASE_URL="https://github.com/menloresearch/cortex.cpp/releases/download" ENGINE_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/${ENGINE_VERSION}/llama-${ENGINE_VERSION}-bin CUDA_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/${ENGINE_VERSION} diff --git a/src-tauri/tauri.bundle.windows.nsis.template b/src-tauri/tauri.bundle.windows.nsis.template index 302b6c97c..5cbbe03a6 100644 --- a/src-tauri/tauri.bundle.windows.nsis.template +++ b/src-tauri/tauri.bundle.windows.nsis.template @@ -33,7 +33,7 @@ ${StrLoc} !define VERSION "jan_version" !define VERSIONWITHBUILD "jan_build" !define HOMEPAGE "" -!define INSTALLMODE "both" +!define INSTALLMODE "currentUser" !define LICENSE "" !define INSTALLERICON "D:\a\jan\jan\src-tauri\icons\icon.ico" !define SIDEBARIMAGE "" diff --git a/web-app/package.json b/web-app/package.json index 3fac4a411..9dae69670 100644 --- a/web-app/package.json +++ b/web-app/package.json @@ -58,6 +58,7 @@ "react-i18next": "^15.5.1", "react-joyride": "^2.9.3", "react-markdown": "^10.1.0", + "react-resizable-panels": "^3.0.3", "react-syntax-highlighter": "^15.6.1", "react-syntax-highlighter-virtualized-renderer": "^1.1.0", "react-textarea-autosize": "^8.5.9", @@ -68,7 +69,7 @@ "remark-math": "^6.0.0", "sonner": "^2.0.3", "tailwindcss": "^4.1.4", - "token.js": "npm:token.js-fork@0.7.12", + "token.js": "npm:token.js-fork@0.7.15", "tw-animate-css": "^1.2.7", "ulidx": "^2.4.1", "unified": "^11.0.5", diff --git a/web-app/src/components/ui/resizable.tsx b/web-app/src/components/ui/resizable.tsx new file mode 100644 index 000000000..a3d586cf1 --- /dev/null +++ b/web-app/src/components/ui/resizable.tsx @@ -0,0 +1,54 @@ +import * as React from 'react' +import { GripVerticalIcon } from 'lucide-react' +import * as ResizablePrimitive from 'react-resizable-panels' + +import { cn } from '@/lib/utils' + +function ResizablePanelGroup({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function ResizablePanel({ + ...props +}: React.ComponentProps) { + return +} + +function ResizableHandle({ + withHandle, + className, + ...props +}: React.ComponentProps & { + withHandle?: boolean +}) { + return ( + div]:rotate-90', + className + )} + {...props} + > + {withHandle && ( +
+ +
+ )} +
+ ) +} + +export { ResizablePanelGroup, ResizablePanel, ResizableHandle } diff --git a/web-app/src/containers/DownloadManegement.tsx b/web-app/src/containers/DownloadManegement.tsx index 4659f668d..acbc66bc2 100644 --- a/web-app/src/containers/DownloadManegement.tsx +++ b/web-app/src/containers/DownloadManegement.tsx @@ -182,7 +182,9 @@ export function DownloadManagement() { getProviders().then(setProviders) toast.success(t('common:toast.downloadComplete.title'), { id: 'download-complete', - description: t('common:toast.downloadComplete.description', { modelId: state.modelId }), + description: t('common:toast.downloadComplete.description', { + modelId: state.modelId, + }), }) }, [removeDownload, removeLocalDownloadingModel, setProviders, t] @@ -237,10 +239,14 @@ export function DownloadManagement() { {isLeftPanelOpen ? (
-
- {downloadCount} +
+ {t('downloads')} + +
+ {downloadCount} +
+
-

{t('downloads')}

@@ -252,7 +258,7 @@ export function DownloadManagement() {
@@ -272,7 +278,9 @@ export function DownloadManagement() { >
-

{t('downloading')}

+

+ {t('downloading')} +

{appUpdateState.isDownloading && ( @@ -309,10 +317,15 @@ export function DownloadManagement() { title="Cancel download" onClick={() => { abortDownload(download.name).then(() => { - toast.info(t('common:toast.downloadCancelled.title'), { - id: 'cancel-download', - description: t('common:toast.downloadCancelled.description'), - }) + toast.info( + t('common:toast.downloadCancelled.title'), + { + id: 'cancel-download', + description: t( + 'common:toast.downloadCancelled.description' + ), + } + ) if (downloadProcesses.length === 0) { setIsPopoverOpen(false) } diff --git a/web-app/src/containers/LeftPanel.tsx b/web-app/src/containers/LeftPanel.tsx index 748cb529f..fe07a71e5 100644 --- a/web-app/src/containers/LeftPanel.tsx +++ b/web-app/src/containers/LeftPanel.tsx @@ -79,6 +79,9 @@ const LeftPanel = () => { const searchContainerRef = useRef(null) const searchContainerMacRef = useRef(null) + // Determine if we're in a resizable context (large screen with panel open) + const isResizableContext = !isSmallScreen && open + // Use click outside hook for panel with debugging useClickOutside( () => { @@ -189,9 +192,17 @@ const LeftPanel = () => {