50 Commits

Author SHA1 Message Date
Sam Hoang Van
7df7d8ffa0
feat: Implement Cortex server auto-restart and webview notification (#5074)
* feat: Implement Cortex server auto-restart and webview notification

Implements a robust auto-restart mechanism for the Cortex server (sidecar)
managed by the Tauri backend.

Key changes:

Backend (src-tauri):
- Modified `core/setup.rs` to:
  - Loop sidecar spawning, attempting up to `MAX_RESTARTS` (5) times with a
    `RESTART_DELAY_MS` (5 seconds) between attempts.
  - Monitor the sidecar process for unexpected termination (crashes or
    non-zero exit codes).
  - Reset the restart attempt count to 0 in `AppState` upon a successful
    server spawn.
  - Emit a "cortex_max_restarts_reached" event to the webview if the
    server fails to start after `MAX_RESTARTS`.
- Updated `core/state.rs` to include `cortex_restart_count: Arc<Mutex<u32>>`
  in `AppState` to track restart attempts.
- Added a new Tauri command `reset_cortex_restart_count` in `core/cmd.rs`
  to allow the webview (or other parts of the app) to reset this counter.
- Registered the new command and initialized the `cortex_restart_count`
  in `lib.rs`.

Frontend (web-app):
- Created a new component `CortexFailureDialog.tsx` in
  `src/containers/dialogs/` to:
  - Listen for the "cortex_max_restarts_reached" event from Tauri.
  - Display a dialog informing the user that the local AI engine (Cortex)
    failed to start after multiple attempts.
  - Offer options to "Contact Support" (opens jan.ai/support),
    "Restart Jan" (invokes the `relaunch` Tauri command), or "Okay"
    (dismisses the dialog).
- Integrated the `CortexFailureDialog` into the `RootLayout` in
  `src/routes/__root.tsx` so it's globally available.
- Corrected button variants in `__root.tsx` to use `variant="default"`
  with appropriate classNames for outline styling, resolving TypeScript
  errors.

* refactor: Improve async handling and logging in setup_sidecar function
2025-05-22 23:09:43 +07:00
Louis
942f2f51b7
chore: send chat completion with messages history (#5070)
* chore: send chat completion with messages history

* chore: handle abort controllers

* chore: change max attempts setting

* chore: handle stop running models in system monitor screen

* Update web-app/src/services/models.ts

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* chore: format time

* chore: handle stop model load action

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-05-22 20:13:50 +07:00
Louis
4d66eaf0a7
chore: handle local models chat with MCP (#5065)
* chore: handle local models chat with MCP

* chore: update MCP server connection status in the settings page

* chore: error handling

* chore: normalize message

* chore: update finally block
2025-05-22 16:06:55 +07:00
Faisal Amir
aba75a7d2c
fix: allow dialog triggered by tooltip (#5066) 2025-05-22 15:52:29 +07:00
Faisal Amir
d3c6d7cfaa
enhancement: wrap long line codeblock (#5069) 2025-05-22 15:52:17 +07:00
Faisal Amir
12ad61aaa8
enhancement: show assistant info on message (#5064) 2025-05-22 14:45:58 +07:00
Faisal Amir
dde4e97d8b
enhance: setup screen redirect to hub (#5061) 2025-05-22 11:55:34 +07:00
Faisal Amir
434abaaca6
chore: app updater UI (#5054)
* chore: initial app updater UI and download management enhance

* chore: revert package version

* chore: update conditional app updater

* chore: remove console

* chore: add utils isDev

* chore: close popup when user click download

* revert yarn lock
2025-05-22 11:54:06 +07:00
Faisal Amir
bd0d2a5cec
Merge pull request #5057 from menloresearch/feat/assistant-emoji
feat: add assistant emoji picker
2025-05-22 10:56:01 +07:00
Faisal Amir
80cfd57dbd chore: cleanup unused code 2025-05-21 23:52:30 +07:00
Faisal Amir
974f7901e6 feat: add assistant emoji picker 2025-05-21 23:45:49 +07:00
Faisal Amir
fa1a71cc01 chore: copy update 2025-05-21 22:38:19 +07:00
Faisal Amir
9d5e670344 enhancement: message toolbar using tooltip 2025-05-21 22:38:19 +07:00
Sam Hoang Van
ad962c2cf6
feat(webapp): Replace Fuse.js with Fzf for thread search and enhance highlighting (#5052)
This commit replaces Fuse.js with Fzf for client-side thread searching
within the web application, offering potentially improved performance and
a different fuzzy matching algorithm.

Key changes include:

- Updated `package.json` to remove `fuse.js` and add `fzf`.
- Refactored `useThreads.ts` hook:
    - Replaced Fuse.js instantiation and search logic with Fzf.
    - Integrated a new `highlightFzfMatch` utility to return thread
      titles with HTML highlighting for matched characters.
- Created `utils/highlight.ts` for the `highlightFzfMatch` function.
- Updated `ThreadList.tsx`:
    - Renders highlighted thread titles using `dangerouslySetInnerHTML`.
    - Ensures the rename functionality uses and edits a plain text
      version of the title, stripping any highlight tags.
- Updated `index.css`:
    - Modified the `.search-highlight` class to use `font-bold` and
      `color-mix(in srgb, currentColor 80%, white 20%)` for a
      subtly brighter text effect on highlighted matches, replacing
      previous styling.

This provides a more robust search experience with clear visual feedback
for matched terms in the thread list.
2025-05-21 22:31:01 +07:00
Sam Hoang Van
4b77548eb9
Fix/thread sorted and drag drop (#5046)
Modified the `onDragEnd` handler in `ThreadList.tsx` to use the complete global thread list from the `useThreads` store. This resolves a bug where dragging and dropping threads could lead to items disappearing from "Favorites" or "Recents" sections by ensuring the reordering logic operates on the full dataset.

Additionally, the default `order: 1` initialization for new threads in `useThreads.ts` and `services/threads.ts` has been commented out this make thread sorted by newest to oldest
2025-05-21 12:42:29 +07:00
Louis
6676e0ced8
chore: add relocate jan data folder function to new FE (#5043)
* chore: typo

* fix: linter issues

* chore: fix linter

* chore: fix linter

* chore: add relocate data folder
2025-05-21 10:48:10 +07:00
Faisal Amir
c0cef78ef2 chore: add inline message chat input 2025-05-20 21:36:19 +07:00
David
22298f46a3
Merge pull request #5030 from samhvw8/fix/type-rename-thread
fix: type rename thread
2025-05-20 17:36:22 +07:00
sam hoang
06ba2f178b chore: update dialog title from "Rename Title" to "Rename Thread" 2025-05-20 14:45:44 +07:00
Faisal Amir
421c24bf4b
Merge pull request #5036 from menloresearch/chore/auto-focus-chat-input
chore: fix auto focus chat input
2025-05-20 14:42:14 +07:00
Louis
d5393e4563
feat: add custom OpenAI provider (#5033)
* feat: add custom OpenAI provider

* chore: add HF token setting

* chore: move HF token setting to llama.cpp provider - later deprecate model extension
2025-05-20 14:30:51 +07:00
Faisal Amir
adc90167d4 chore: fix auto focus chat input 2025-05-20 14:29:44 +07:00
Louis
46943a1cf7
chore: token speed and edit message (#5031)
* chore: add token speed measurement

* chore: add edit message handler

* chore: add DialogClose wrapper around save button
2025-05-20 14:09:25 +07:00
Faisal Amir
76827d42f5
Merge pull request #5032 from menloresearch/chore/model-loading
chore: model loading and truncate dropdown assiatant title
2025-05-20 12:44:51 +07:00
Faisal Amir
d95439e3f4 chore: update copy 2025-05-20 12:21:30 +07:00
Faisal Amir
ead591d3b8
Merge pull request #5029 from menloresearch/chore/hardware
chore: add setting hardware
2025-05-20 11:30:03 +07:00
Faisal Amir
97728734a7 chore: model loading and truncate dropdown assiatant title 2025-05-20 11:29:18 +07:00
Faisal Amir
4c50ebfe0a chore: add setting hardware 2025-05-20 10:43:36 +07:00
vansangpfiev
837d3ab0e3
chore: remove electron nightly/manual (#5027)
* chore: remove electron nightly/manual

* chore: change nightly pull request branch
2025-05-20 10:22:13 +07:00
Louis
9047d0df4f
chore: remove unnecessary imports 2025-05-20 09:42:34 +07:00
Louis
2dac53e9ca
feat: Jan supports multiple assistants (#5024)
* feat: Jan supports multiple assistants

* chore: persists current assistant to threads.json

* chore: update assistant persistence

* chore: simplify persistence objects
2025-05-20 00:57:26 +07:00
Louis
f6433544af
feat: handle stop streaming message, scroll to bottom and model loads (#5023) 2025-05-19 23:32:55 +07:00
Faisal Amir
afb8ff716a chore: add functiond delete and params type assistant 2025-05-19 22:47:57 +07:00
vansangpfiev
90da49f873
chore: add some ts-ignore to make tauri build works (#5010)
* chore: add some ts-ignore to make build works

* chore: remove tauri build nightly script

* chore: update core package.json

* chore: fix build

* chore: add devtools for tauri beta, nightly

* chore: change transport-sse to transport-sse-server

* chore: comment out dll files

* chore: add ts-ignore

* chore: update nightly CI
2025-05-19 14:49:03 +07:00
Faisal Amir
1507f220e5 chore: cleanup whitespace left panel on thread list 2025-05-19 13:55:46 +07:00
Faisal Amir
1c81e5a95e chore: remove lock 2025-05-19 13:00:28 +07:00
Faisal Amir
1435cd3162 chore: add functional use button when download complete 2025-05-19 12:35:18 +07:00
Faisal Amir
53f5729674 chore: update hub progress download, added toaster 2025-05-19 11:17:16 +07:00
Louis
2345ff172d
chore: update model handlers on the new frontend (#5011)
* chore: provide model handlers to new frontend

* chore: add API server function to the new front end
2025-05-19 10:39:43 +07:00
Louis
74c2c59c90
chore: handle chat functions (#5009) 2025-05-18 20:41:10 +07:00
Louis
c1091ce812
feat: new frontend with model download function (#5008) 2025-05-18 20:00:17 +07:00
Faisal Amir
bc327c40d4 chore: update empty state thread list, search, and no model 2025-05-18 14:58:15 +07:00
Faisal Amir
314bfb2313
Merge pull request #5005 from menloresearch/feat/setup-screen
chore: initial setup screen for remote provider
2025-05-16 22:20:52 +07:00
Faisal Amir
589de63328
Merge pull request #5004 from menloresearch/feat/tool-use
feat: tool use render UI
2025-05-16 22:20:46 +07:00
Faisal Amir
9299e772ba wip: initial setup screen 2025-05-16 22:13:16 +07:00
Faisal Amir
05ce85d9b1 chore: styling tool call funtion render UI 2025-05-16 22:10:27 +07:00
Louis
95f90f601d feat: tool use 2025-05-16 22:10:27 +07:00
Faisal Amir
759d5c7257 chore: increase hight of drag area window 2025-05-16 09:17:06 +07:00
Louis
bf3f22c854
fix: should not spawn many llama.cpp servers for the same model (#4994)
* fix: should not spawn many llama.cpp servers for the same model

* chore: test step placeholder for the new revamp

* chore: coverage check should not fail pipeline
2025-05-15 21:27:41 +07:00
Faisal Amir
852ea84cd8
epic: Jan with new UI/UX (#4964)
* chore: initial new FE setup

* chore: update namespace text-left-panel foreground variable

* chore: enable dynamic mainview color

* chore: remove greetings new chat

* chore: fix chat input style

* chore: simplify hook useAppearance

* chore: enable internationalization

* chore: prepare vn locale

* chore: keyboardshortcut layout

* chore: update keyboard shortcut exclude pathname

* chore: update state active setting route

* chore: fix update theme by system

* chore: handle dynamic primary color

* chore: fix left panel navigation active state and styled item privacy analytic

* chore: reorder general setting being a first

* chore: add function reset appearance

* chore: update scrollbar

* chore: update delete thread with dialog confirmation

* chore: update state dialog inside dropdown menu

* chore: wip thread detail or chat page

* chore: wip model dropdown

* chore: prepare model dropdown select

* chore: update model providers setting

* chore: show provider on model dropdown based isActive toogle

* chore: update layout model provider

* chore: update state active on storage

* chore: update gap of item dropdown model

* chore: update select model base on id

* chore: update edit model capabilities

* chore: add dialog to add model

* chore: update sheet for model setting

* chore: add sheet setting each model

* chore: make dynamic syntax highlight

* chore: fix menu setting appearance theme

* chore: markdown render support emoji

* chore: markdown support latex

* chore: change codeblock default theme

* chore: update ui codeblock

* chore: custom render link taget new window

* chore: fix copy button codeblock

* chore: update accent and desctructive color

* chore: setup user chat message

* chore: prepare some page settings

* chore: simple list extension and prepare mcp, local api, and hardware

* chore: mcp-serve

* chore: MCP server UI

* chore: update local api server config

* chore: adjust chat input

* chore: update local api server log

* chore: prepare hub page

* chore: remove help page

* chore: update mock

* chore: prepare http proxy setting UI

* chore: adjust local api server and title every action

* fix: chore FE package (#4962)

* fix: update command which referred to non-existent web app

* fix: added commented out macos platform for now

* fix: remove the platform name as macos

* fix: remove unnecessary line for platform name in HeaderPage component

* fix: update dev script to specify port 3000 for Vite

* feat: model providers and chat completion

* enhancement: threads performance

* fix: thread content update

* chore: clean up threads

* fix: performance issue with streaming and state loop

* fix: streaming

* fix: react markdow

* feat: extension manager

* chore: add nodePolyfills include path

* chore: improve performance avoid unhandle rejection

* chore: update pre margin bottom

* chore: swith thread should be deafult scroll to bottom

* chore: wip scroll to bottom

* chore: add model loader

* chore: add platform utils

* feat: threads functionality

* chore: setup toaster

* chore: persist threads deletion

* fix: create thread with new message

* chore: create new thread should change route path

* chore: navigate after delet dialog thread

* chore: thread favorites and orders

* chore: dismiss deleting modal on delete

* chore: remove undefined properties

* chore: remove deprecated run step

* chore: fix delete thread

* chore: create empty thread content on started streaming

* chore: correct messages store key

* chore: stuck at generating state

* chore: preapre chat toolbar

* chore: introduce in-memory app state

* chore: update extensions migration logic

* chore: remove redundant extensions migration gate

* chore: message toolbar user and assistant

* chore: add logo gemini

* feat: remote providers with model capabilities

* chore: maintain provider settings

* chore: move speed token into chat input

* chore: temp harcoded model loader

* chore: make chat text selectable and truncate model list

* chore: update shortcut UI

* Feat/implement threads (#4977)

* chore: add fuse.js library for enhanced search functionality

* feat: implement thread filtering with Fuse.js for improved search capabilities

* fix: update the fuseOptions

* feat: add search functionality to LeftPanel and refactor thread retrieval logic

* refactor: optimize thread filtering and improve search functionality in LeftPanel

* fix: more edits

* refactor: remove duplicate import of useAppState in StreamingContent component

* chore: update navigate after delete all thread

* chore: pass prop speedToken from new chat input

* chore: persist provider general settings

* chore: styling search left panel

* chore: cleanup margin

* chore: update size icon

* chore: improve chat input

* chore: imprve list markdown

* chore: animate border

* feat: local model provider work

* chore: persist manually added model

* chore: prepare download management ui and show version on general setting

* chore: improve pre tag

* chore: remove buton install extension and improve light theme download

* chore: add missing hardware information handler

* chore: cleanup small ui

* chore: update default provider settings

* fix: missing fs commands

* chore: correct provider models

* chore: prepare delete model

* chore: handle thinking block

* chore: fix conditional message toolbar

* chore: pophover download select none

* enhancement: add prune mode

* chore: model settings

* chore: bump engine version tauri

* chore: update style thinking

* chore: add indicator and toogle mcp server

* chore: wip hub

* chore: update model settings

* chore: mvp hub

* chore: add function rename title

* chore: update function delete message

* chore: update rename title

* chore: update model settings

* chore: persist MCP configs

* refactor: clean up utils

* chore: add tools to completion request

* chore: clean up

* chore: ignore assets

---------

Co-authored-by: Ivan Leo <ivanleomk@gmail.com>
Co-authored-by: Louis <louis@jan.ai>
2025-05-15 19:38:59 +07:00