Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
231 commits
Select commit Hold shift + click to select a range
e389011
🐛 fix: add back a couple of major fixes (#5469) (#5470)
louis-jan Jun 24, 2025
be465ec
Merge pull request #5569 from menloresearch/dev
louis-jan Jun 27, 2025
c288e75
Merge pull request #5671 from menloresearch/dev
louis-jan Jul 2, 2025
9016fbf
feat: inference-llamacpp-extension: backend implementation
qnixsynapse May 6, 2025
5c9e8dc
Add spaces before EOF
qnixsynapse May 6, 2025
f5b5596
add thiserror to Cargo.toml
qnixsynapse May 7, 2025
0551b0b
Fix import
qnixsynapse May 7, 2025
15f0b11
make it compile
gau-nernst May 7, 2025
3f08237
add llamacpp-extension. can list some models
gau-nernst May 7, 2025
19274f7
update settings
qnixsynapse May 12, 2025
a8abc9f
Resolved conflicts by keeping HEAD changes
qnixsynapse May 17, 2025
ed6f86d
Change scripts to download only llama.cpp engine
qnixsynapse May 19, 2025
021f8ae
Fixup: llama-server load
qnixsynapse May 19, 2025
47881db
remove cortex from tauri.conf.json
qnixsynapse May 19, 2025
b4670b5
remove cortex engine dirs
qnixsynapse May 19, 2025
bbbf477
refactor load/unload
qnixsynapse May 20, 2025
0e9a8a2
fixup from refactoring
qnixsynapse May 20, 2025
ee2cb9e
remove override from localOAIEngine and OAIEngine
qnixsynapse May 20, 2025
a7a2dcc
refactor load/unload again; move types to core and refactor AIEngine …
qnixsynapse May 20, 2025
ded9ae7
feat: Model import (download + local import) for llama.cpp extension …
gau-nernst May 23, 2025
587ed3c
refactor OAI request payload type to support image and audio
qnixsynapse May 23, 2025
d523166
implement delete
gau-nernst May 26, 2025
cd36b42
add basic model list
gau-nernst May 26, 2025
c5a0ee7
refactor unload and implement a destructor to clean up sessions
qnixsynapse May 26, 2025
fe457a5
slight modelbasepath refactoring
qnixsynapse May 26, 2025
742e731
Add --reasoning_budget option
qnixsynapse May 26, 2025
77f6770
update fileStat()
gau-nernst May 26, 2025
d01cbe4
use PathBuf to check exists()
gau-nernst May 26, 2025
5803fcd
add read_yaml. use buffered reader/writer
gau-nernst May 26, 2025
9bb4dee
update model config (import and list)
gau-nernst May 26, 2025
d5c07ac
feat: add `LlamacppConfig` for llama.cpp extension to improve setting…
gau-nernst May 28, 2025
77d861f
Fixup: change key to ctx_size to align with upstream and remove dupli…
qnixsynapse May 28, 2025
7481fae
remove ununsed imports and remove n_ctx key from loadOptions
qnixsynapse May 28, 2025
1dd762f
remove parseGGUFFileName function as it is not used
qnixsynapse May 28, 2025
31971e7
(WIP)randomly generate api-key hash each session
qnixsynapse May 28, 2025
39bb3f3
patch failing calls to cortex
gau-nernst May 28, 2025
d6edb1e
If checking for proper ctx_len settings after refactoring
qnixsynapse May 29, 2025
da23673
feat: Add API key generation for Llama.cpp
qnixsynapse May 29, 2025
40cd7e9
feat: download backend for llama.cpp extension (#5123)
gau-nernst May 29, 2025
fbfaaf4
download CUDA libs if needed
gau-nernst May 29, 2025
07d76dc
feat: Allow specifying mmproj path during model loading
qnixsynapse May 29, 2025
267bbbf
feat: add model and mmproj paths to ImportOptions
qnixsynapse May 29, 2025
3490299
refactor get supported features. check driver version for cu11 and cu12
gau-nernst May 30, 2025
a75d13f
fix version compare
gau-nernst May 30, 2025
27146eb
fix feature parsing
gau-nernst May 30, 2025
f32ae40
fix CUDA version URL
gau-nernst May 30, 2025
494a47a
fix download condition
gau-nernst May 30, 2025
070d853
add some string validation
gau-nernst May 30, 2025
9e24e28
add await to config
gau-nernst May 30, 2025
fd9e034
feat: update AIEngine load method and backend path handling
qnixsynapse May 30, 2025
1ae7c0b
update version/backend format. fix bugs around load()
gau-nernst May 30, 2025
6679deb
mkdir before write yaml
gau-nernst May 30, 2025
5d61062
feat: enhance argument parsing and add API key generation
qnixsynapse May 30, 2025
f9d3935
feat: allow specifying port via command line argument
qnixsynapse May 30, 2025
4dfdcd6
refactor: rename session identifiers to pid and modelId
qnixsynapse May 30, 2025
e3d6cbd
feat: add port parameter to generateApiKey for secure model-specific …
qnixsynapse Jun 1, 2025
331c0e0
fix: use modelId instead of sessionId for unloading
qnixsynapse Jun 2, 2025
3b72d80
fix wrong key for `backend`
gau-nernst Jun 2, 2025
f7bcf43
update folde structure. small refactoring
gau-nernst Jun 2, 2025
622f411
add placeholder for windows and linux arm
gau-nernst Jun 3, 2025
1eb4935
add is_library_available command
gau-nernst Jun 3, 2025
65d6f34
check for system libraries
gau-nernst Jun 3, 2025
95944fa
add Jan's library path to path
gau-nernst Jun 3, 2025
ae34915
remove yarn install:cortex
gau-nernst Jun 4, 2025
525cc93
fix system cudart detection on linux
gau-nernst Jun 4, 2025
8bf4a5e
remove migration
gau-nernst Jun 4, 2025
6c769c5
feat: refactor llama server process storage to use HashMap
qnixsynapse Jun 4, 2025
c2b606a
feat: enhance chatCompletionRequest with advanced sampling parameters
qnixsynapse Jun 5, 2025
4ffc504
style: Rename camelCase to snake_case in llamacpp extension code
qnixsynapse Jun 6, 2025
dbcce86
refactor: rename interfaces and add getLoadedModels
qnixsynapse Jun 8, 2025
d60257e
Revert: extension/yarn.lock
qnixsynapse Jun 10, 2025
9d4e7cb
fix: correct model_id to model_id in console error message
qnixsynapse Jun 11, 2025
f463008
feat: add model load wait to ensure model is ready before use
qnixsynapse Jun 11, 2025
2eeabf8
fix: ensure server process is properly terminated and reaped
qnixsynapse Jun 11, 2025
48d1164
feat: add embedding support to llamacpp extension
qnixsynapse Jun 16, 2025
7dbc2c3
download lib at build time
gau-nernst Jun 16, 2025
01d49a4
fix: Update server process handling for Windows and Unix systems
qnixsynapse Jun 23, 2025
62ba503
chore: cleanup llama-server processes upon app exit
qnixsynapse Jun 23, 2025
7de694c
add missing import during rebase
qnixsynapse Jun 23, 2025
ad06b2a
Move llama-server cleanup code to a separate file
qnixsynapse Jun 23, 2025
8bd4a33
refactor: frontend uses new engine extension
louis-jan Jun 23, 2025
7f25311
Add tool type to chat completion requests
qnixsynapse Jun 23, 2025
6d5251d
Fixup tool type definition
qnixsynapse Jun 23, 2025
6b86baa
Add tool choice type
qnixsynapse Jun 23, 2025
ae58c42
fix: tool call params
louis-jan Jun 23, 2025
5469104
Add missing --jinja flag
qnixsynapse Jun 23, 2025
5edc773
fix: wait for model start
louis-jan Jun 23, 2025
f70bb27
🔧test: util and lib unit tests
louis-jan Jun 23, 2025
0cbf35d
Add auto unload setting to llamacpp-extension
qnixsynapse Jun 23, 2025
b538d57
✨feat: auto unload models on model start
louis-jan Jun 23, 2025
c9c1ff1
✨refactor: clean up core node packages
louis-jan Jun 23, 2025
c6ac9f1
feat: sync hub with model catalog
louis-jan Jun 24, 2025
2bdbce2
refactor: clean up unused apis
louis-jan Jun 27, 2025
d264220
fix: restrict Windows-specific code to x86_64 and update scripts
louis-jan Jun 27, 2025
9b73005
feat: use hardware information api
louis-jan Jun 30, 2025
66bae2a
chore: clean up
louis-jan Jun 30, 2025
0dbfde4
refactor: wait for extension load
louis-jan Jul 2, 2025
449bf17
Add process aliveness check
qnixsynapse Jul 2, 2025
663c720
Add windows-sys to cargo.toml
qnixsynapse Jul 2, 2025
e123d22
fix: deprecate sidecar run
louis-jan Jul 2, 2025
37151ba
Feat: Auto load and download default backend during first launch
qnixsynapse Jun 30, 2025
3965730
Address bot's review comment and minor refactoring
qnixsynapse Jun 30, 2025
c2493fc
Fix camelCase
qnixsynapse Jun 30, 2025
0343c09
🧹cleanup: hub model title should not truncate just let make another line
urmauur Jul 3, 2025
c342912
✨enhancement: add hub detail page
urmauur Jul 3, 2025
6ab7d37
fix: Update Cargo.toml dependencies on Windows & fix Ctrl+C handling …
qnixsynapse Jul 3, 2025
11db1ec
fix: server-side Ctrl-C handling for Windows x86_64 targets (attempt 2)
qnixsynapse Jul 3, 2025
03f0c5a
fix: remove unsupported BOOL for windows_sys in cleanup to fix window…
qnixsynapse Jul 3, 2025
40f1fd4
feat: Auto update backend implementation
qnixsynapse Jul 3, 2025
19fc399
enhancement: gpu list based on backend
urmauur Jul 3, 2025
3a197d5
enhancement: filter active gpu on system monitor
urmauur Jul 3, 2025
ffef7b9
enhancement: Add custom Jinja chat template option
qnixsynapse Jul 2, 2025
dbdc031
chore: store session_info in backend as well for API server(WIP)
qnixsynapse Jul 4, 2025
d4a3d6a
Refactor session PID types from string to number across backend and e…
qnixsynapse Jul 4, 2025
a0be23b
enhancement: show readme on detail each model (#5705)
urmauur Jul 7, 2025
6b496ae
fix: build issues
louis-jan Jul 7, 2025
e75bb0d
fix: libvulkan download
louis-jan Jul 7, 2025
5ce9bbb
fix: linux build without cortex binaries
louis-jan Jul 7, 2025
e3faf09
chore: try fixing CI
louis-jan Jul 7, 2025
d5ffc6a
feat: Migrate Jan's API server to llamacpp-extension
qnixsynapse Jul 7, 2025
b26ae7d
ci: remove cortex build steps
louis-jan Jul 7, 2025
2f02a22
fix: download on windows
louis-jan Jul 8, 2025
a8ed759
fix: model download - windows path issue
louis-jan Jul 10, 2025
94d9304
Merge branch 'dev' into release/v0.7.0
louis-jan Jul 10, 2025
6e0218c
Merge branch 'release/v0.7.0' into feat/inference-llamacpp-extension
louis-jan Jul 10, 2025
ca6f4f8
test: fix failed tests
louis-jan Jul 10, 2025
389721b
fix: build step
louis-jan Jul 10, 2025
5fe4cc6
chore: remove cortex install step
louis-jan Jul 10, 2025
af8404d
fix: tests
louis-jan Jul 10, 2025
37718d1
fix: build issue with legacy libs
louis-jan Jul 10, 2025
bc0ea34
fix: remove legacy build step
louis-jan Jul 10, 2025
1c7a20b
fix: linux build
louis-jan Jul 10, 2025
a770e08
test: migrate jest to vitest
louis-jan Jul 10, 2025
963ad44
fix: build
louis-jan Jul 10, 2025
114f2b9
ci: attempt to upload cov
louis-jan Jul 10, 2025
9cea579
fix: build issue
louis-jan Jul 10, 2025
b8259e7
feat: add HF token setting
louis-jan Jul 10, 2025
b2ce138
test: add tests
louis-jan Jul 11, 2025
c23c345
Merge pull request #4965 from menloresearch/feat/inference-llamacpp-e…
louis-jan Jul 11, 2025
09a45ba
fix: vitest config - coverage lcov
louis-jan Jul 12, 2025
1915378
Merge pull request #5759 from menloresearch/fix/test-coverage-upload-…
louis-jan Jul 12, 2025
c5fd964
test: add missing tests
louis-jan Jul 11, 2025
864ad50
test: add missing tests
louis-jan Jul 12, 2025
c2790d9
test: remove route tests
louis-jan Jul 12, 2025
03bcd02
test: add missing unit tests
louis-jan Jul 12, 2025
eaf4b1b
Merge pull request #5757 from menloresearch/test/add-tests
louis-jan Jul 14, 2025
96ba42e
feat: Add missing ctx-shift toggle (#5765)
qnixsynapse Jul 14, 2025
dee98f4
✨ Feat: Improved llamacpp Server Stability and Diagnostics (#5761)
qnixsynapse Jul 14, 2025
9a76c94
update rmcp to fix issues (#5290)
samhvw8 Jul 14, 2025
9872a6e
test: add missing unit tests
louis-jan Jul 14, 2025
bd3b8bf
Merge pull request #5781 from menloresearch/test/add-missing-tests
louis-jan Jul 15, 2025
b736d09
fix: Prevent spamming /health endpoint and improve startup and resolv…
qnixsynapse Jul 16, 2025
4699b07
Merge pull request #5797 from menloresearch/test/deprecate-webdriver-…
louis-jan Jul 17, 2025
92703bc
refactor: move thinking toggle to runtime settings for dynamic contro…
qnixsynapse Jul 17, 2025
8ca507c
feat: proxy support for the new downloader (#5795)
louis-jan Jul 17, 2025
bcb6037
fix: Add --reasoning-format none to support rendering of reasoning co…
qnixsynapse Jul 18, 2025
8d84c3b
feat: add model load error handling to improve UX (#5802)
louis-jan Jul 18, 2025
59ad2eb
Merge branch 'dev' into release/v0.6.6
qnixsynapse Jul 18, 2025
8f1a36c
fix: Improve stream error handling and parsing (#5807)
qnixsynapse Jul 18, 2025
c550f6c
Merge pull request #5809 from menloresearch/refactor/simplify-proxy-s…
louis-jan Jul 19, 2025
b7b3eb9
fix: autoqa requirements.txt (#5812)
hiento09 Jul 19, 2025
19cb1c9
fix: llama.cpp backend download on windows (#5813)
louis-jan Jul 20, 2025
5696e95
fix: Legacy threads show on top of new threads (#5696) (#5810)
louis-jan Jul 20, 2025
bc4fe52
fix: llama.cpp integration model load and chat experience (#5823)
louis-jan Jul 21, 2025
81d6ed3
feat: support per-model overrides in llama.cpp load() (#5820)
qnixsynapse Jul 21, 2025
05b9d4e
feat: add claude-4 (#5829)
louis-jan Jul 21, 2025
08de0fa
fix: prevent terminal window from opening on model load on WindowsOS …
qnixsynapse Jul 21, 2025
db962b2
fix: update @taur-apps/cli to newest verison to fix appimage download…
Minh141120 Jul 21, 2025
275cab7
Merge pull request #5839 from menloresearch/fix/appimage-url-with-lat…
Minh141120 Jul 21, 2025
9ea0815
fix: custom tauri nsis template CheckIfAppIsRunning macro (#5840)
Minh141120 Jul 21, 2025
af89242
chore: sync make build with dev (#5847)
Minh141120 Jul 22, 2025
78df0a2
enhancement: better error page component (#5834)
urmauur Jul 22, 2025
25952f2
✨enhancement: auto focus always allow action from tool approval dialo…
urmauur Jul 22, 2025
fceecff
feat: add vcruntime for windows installer (#5852)
Minh141120 Jul 22, 2025
e424938
Merge branch 'dev' into release/v0.6.6
louis-jan Jul 22, 2025
e3813ab
fix: autoqa prompt template (#5854)
Minh141120 Jul 22, 2025
f59739d
refactor: Improve Llama.cpp backend management and auto-update (#5845)
qnixsynapse Jul 22, 2025
1dd5b81
Chore: enrich autoqa log (#5862)
hiento09 Jul 22, 2025
7b3b6cc
🐛fix: delete all should not include fav thread (#5864)
urmauur Jul 22, 2025
1d443e1
fix: support load model configurations (#5843)
urmauur Jul 22, 2025
5553096
✨enhancement: dialog model error trigger from provider screen and imp…
urmauur Jul 22, 2025
7d3811f
chore: update build appimage script (#5866)
Minh141120 Jul 22, 2025
1eaec5e
Fix: engine unable to find dlls on when running on Windows (#5863)
qnixsynapse Jul 22, 2025
8e9cd25
fix: gemini tool call support (#5848)
louis-jan Jul 22, 2025
d347058
fix: HuggingFace provider should be non-deletable (#5856)
louis-jan Jul 22, 2025
5cbd79b
fix: charmap encoding (#5865)
Minh141120 Jul 22, 2025
fe95031
feat: migrate cortex models to llamacpp extension (#5838)
louis-jan Jul 22, 2025
3e30c61
fix: app should refresh local provider models list on launch (#5868)
louis-jan Jul 23, 2025
fd26270
🐛fix/update vulkan active syntax (#5869)
urmauur Jul 23, 2025
43b7eb6
🐛fix: remove sampling parameters from llamacpp extension (#5871)
urmauur Jul 23, 2025
3afdd0f
fix: tmp download file should be removed on cancel (#5849)
louis-jan Jul 23, 2025
af116dd
fix: jan should have a general assistant instruction (#5872)
louis-jan Jul 23, 2025
3a8af3c
ci: autoqa github artifact (#5873)
Minh141120 Jul 23, 2025
9a511fd
ci: resolve nested template expression in artifact names (#5875)
Minh141120 Jul 23, 2025
d6ad797
fix: llama.cpp backend shows blank list sometime (#5876)
louis-jan Jul 23, 2025
1d0bb53
feat: add support for querying available backend devices (#5877)
qnixsynapse Jul 23, 2025
d8b6b10
chore: revert app artifact name for macos linux and windows builds (#…
Minh141120 Jul 23, 2025
6599d91
fix: bring back HF repo ID search in Hub (#5880)
louis-jan Jul 24, 2025
3996714
fix: gpu detected from backend version (#5882)
urmauur Jul 24, 2025
5d00cf6
🐛fix: get system info and system usage (#5884)
urmauur Jul 24, 2025
ce6af62
fix: provider settings should be refreshed on page load (#5887)
louis-jan Jul 24, 2025
d51f904
chore: update cua mac runner (#5888)
hiento09 Jul 24, 2025
a1af70f
feat: Enhance Llama.cpp backend management with persistence (#5886)
qnixsynapse Jul 24, 2025
4d4cf89
fix: Persist 'Auto-Unload Old Models' setting in llama.cpp (#5906)
qnixsynapse Jul 25, 2025
0c53ad0
fix: models hub should show latest data only (#5925)
louis-jan Jul 25, 2025
3982ed4
fix: Allow N-GPU Layers (NGL) to be set to 0 in llama.cpp (#5907)
qnixsynapse Jul 25, 2025
6c15129
fix: validate name assistant and improve area clickable (#5920)
urmauur Jul 25, 2025
7dec980
fix: persist model capabilities refresh app (#5918)
urmauur Jul 25, 2025
2e870ad
fix: calculation memory on hardware and system monitor (#5922)
urmauur Jul 26, 2025
8ec4a36
fix: Frontend updates when llama.cpp backend auto-downloads (#5926)
qnixsynapse Jul 26, 2025
b89d9d0
fix: update ui version_backend, mem usage hardware (#5932)
urmauur Jul 26, 2025
c3fa04f
chore: revert back to passive mode on windows installer (#5934)
Minh141120 Jul 26, 2025
54d44ce
fix: update default GPU toggle, and simplify state (#5937)
urmauur Jul 27, 2025
c9b44ee
fix: Remove sInfo from activeSessions before unloading (#5938)
qnixsynapse Jul 27, 2025
1fc37a9
fix: migrate app settings to the new version (#5936)
louis-jan Jul 27, 2025
08af8a4
fix: tool approval params scrollable (#5941)
urmauur Jul 28, 2025
fdaa3b1
fix: openrouter unselect itself (#5943)
louis-jan Jul 28, 2025
a4e5973
chore: uninstall when upgrading windows installer (#5945)
Minh141120 Jul 28, 2025
432c942
fix: Prevent race condition with auto-unload during rapid model loadi…
qnixsynapse Jul 28, 2025
fa896b3
fix: correctly apply `auto_unload` setting from config (#5953)
qnixsynapse Jul 28, 2025
1c74bfd
fix: update edge case experimental feature MCP (#5951)
urmauur Jul 28, 2025
07421d7
fix: set autoUnload in onLoad() (#5956)
qnixsynapse Jul 28, 2025
812a808
fix: factory reset fail with access denied error (#5952)
louis-jan Jul 28, 2025
160d158
fix: search models result in hub should be sorted by weight (#5954)
louis-jan Jul 28, 2025
63cb4fb
fix: assistant with last used and fix metadata (#5955)
urmauur Jul 29, 2025
210ace7
ci: tolerate artifact upload (#5969)
Minh141120 Jul 29, 2025
eb71477
fix: csp including img.shields.io and cdn-uploads.huggingface.co in i…
Minh141120 Jul 29, 2025
f61ce88
feat: Enhance port selection with availability check (#5966)
qnixsynapse Jul 29, 2025
ee582a8
chore: allow all HTTPS image sources in img-src directive (#5970)
Minh141120 Jul 29, 2025
0797599
fix: rename thread dialog shows previous thread (#5963)
urmauur Jul 30, 2025
0aaaca0
fix: use direct process termination instead of console events on Wind…
qnixsynapse Jul 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
99 changes: 87 additions & 12 deletions .github/workflows/autoqa-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ jobs:
# Find the exe file in the artifact
$exeFile = Get-ChildItem -Path "${{ runner.temp }}/windows-artifact" -Recurse -Filter "*.exe" | Select-Object -First 1
if ($exeFile) {
Write-Host " Found local installer: $($exeFile.FullName)"
Write-Host "[SUCCESS] Found local installer: $($exeFile.FullName)"
Copy-Item -Path $exeFile.FullName -Destination "$env:TEMP\jan-installer.exe" -Force
Write-Host " Installer copied to: $env:TEMP\jan-installer.exe"
Write-Host "[SUCCESS] Installer copied to: $env:TEMP\jan-installer.exe"
# Don't set JAN_APP_PATH here - let the install script set it to the correct installed app path
echo "IS_NIGHTLY=${{ inputs.is_nightly }}" >> $env:GITHUB_ENV
} else {
Write-Error " No .exe file found in artifact"
Write-Error "[FAILED] No .exe file found in artifact"
exit 1
}
} else {
Expand Down Expand Up @@ -127,6 +127,37 @@ jobs:
run: |
.\scripts\run_tests.ps1 -JanAppPath "$env:JAN_APP_PATH" -ProcessName "$env:JAN_PROCESS_NAME" -RpToken "$env:RP_TOKEN"

- name: Collect Jan logs for artifact upload
if: always()
shell: powershell
run: |
$logDirs = @(
"$env:APPDATA\Jan-nightly\data\logs",
"$env:APPDATA\Jan\data\logs"
)
$dest = "autoqa\jan-logs"
mkdir $dest -Force | Out-Null
foreach ($dir in $logDirs) {
if (Test-Path $dir) {
Copy-Item "$dir\*.log" $dest -Force -ErrorAction SilentlyContinue
}
}

- name: Upload screen recordings
if: always()
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: ${{ inputs.is_nightly && 'jan-nightly' || 'jan' }}-recordings-${{ github.run_number }}-${{ runner.os }}
path: autoqa/recordings/

- name: Upload Jan logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.is_nightly && 'jan-nightly' || 'jan' }}-logs-${{ github.run_number }}-${{ runner.os }}
path: autoqa/jan-logs/

- name: Cleanup after tests
if: always()
shell: powershell
Expand Down Expand Up @@ -196,9 +227,9 @@ jobs:
# Find the deb file in the artifact
DEB_FILE=$(find "${{ runner.temp }}/ubuntu-artifact" -name "*.deb" -type f | head -1)
if [ -n "$DEB_FILE" ]; then
echo " Found local installer: $DEB_FILE"
echo "[SUCCESS] Found local installer: $DEB_FILE"
cp "$DEB_FILE" "/tmp/jan-installer.deb"
echo " Installer copied to: /tmp/jan-installer.deb"
echo "[SUCCESS] Installer copied to: /tmp/jan-installer.deb"
echo "JAN_APP_PATH=/tmp/jan-installer.deb" >> $GITHUB_ENV
echo "IS_NIGHTLY=${{ inputs.is_nightly }}" >> $GITHUB_ENV
if [ "${{ inputs.is_nightly }}" = "true" ]; then
Expand All @@ -207,7 +238,7 @@ jobs:
echo "JAN_PROCESS_NAME=Jan" >> $GITHUB_ENV
fi
else
echo " No .deb file found in artifact"
echo "[FAILED] No .deb file found in artifact"
exit 1
fi
else
Expand Down Expand Up @@ -252,13 +283,35 @@ jobs:
run: |
./scripts/run_tests.sh "$JAN_APP_PATH" "$JAN_PROCESS_NAME" "$RP_TOKEN" "ubuntu"

- name: Collect Jan logs for artifact upload
if: always()
run: |
mkdir -p autoqa/jan-logs
cp ~/.local/share/Jan-nightly/data/logs/*.log autoqa/jan-logs/ 2>/dev/null || true
cp ~/.local/share/Jan/data/logs/*.log autoqa/jan-logs/ 2>/dev/null || true

- name: Upload screen recordings
if: always()
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: ${{ inputs.is_nightly && 'jan-nightly' || 'jan' }}-recordings-${{ github.run_number }}-${{ runner.os }}
path: autoqa/recordings/

- name: Upload Jan logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.is_nightly && 'jan-nightly' || 'jan' }}-logs-${{ github.run_number }}-${{ runner.os }}
path: autoqa/jan-logs/

- name: Cleanup after tests
if: always()
run: |
./autoqa/scripts/ubuntu_post_cleanup.sh "$IS_NIGHTLY"

macos:
runs-on: macos-selfhosted-15-arm64
runs-on: macos-selfhosted-15-arm64-cua
timeout-minutes: 60

env:
Expand Down Expand Up @@ -296,9 +349,9 @@ jobs:
# Find the dmg file in the artifact
DMG_FILE=$(find "${{ runner.temp }}/macos-artifact" -name "*.dmg" -type f | head -1)
if [ -n "$DMG_FILE" ]; then
echo " Found local installer: $DMG_FILE"
echo "[SUCCESS] Found local installer: $DMG_FILE"
cp "$DMG_FILE" "/tmp/jan-installer.dmg"
echo " Installer copied to: /tmp/jan-installer.dmg"
echo "[SUCCESS] Installer copied to: /tmp/jan-installer.dmg"
echo "JAN_APP_PATH=/tmp/jan-installer.dmg" >> $GITHUB_ENV
echo "IS_NIGHTLY=${{ inputs.is_nightly }}" >> $GITHUB_ENV
if [ "${{ inputs.is_nightly }}" = "true" ]; then
Expand All @@ -307,7 +360,7 @@ jobs:
echo "PROCESS_NAME=Jan" >> $GITHUB_ENV
fi
else
echo " No .dmg file found in artifact"
echo "[FAILED] No .dmg file found in artifact"
exit 1
fi
else
Expand Down Expand Up @@ -349,7 +402,7 @@ jobs:
else
echo "Homebrew not available, checking if tkinter works..."
python3 -c "import tkinter" || {
echo "⚠️ tkinter not available and Homebrew not found"
echo "[WARNING] tkinter not available and Homebrew not found"
echo "This may cause issues with mouse control"
}
fi
Expand All @@ -362,7 +415,7 @@ jobs:
echo "Installing Python dependencies..."
pip install --upgrade pip
pip install -r requirements.txt
echo " Python dependencies installed"
echo "[SUCCESS] Python dependencies installed"

- name: Setup ReportPortal environment
run: |
Expand Down Expand Up @@ -390,6 +443,28 @@ jobs:

./scripts/run_tests.sh "$JAN_APP_PATH" "$PROCESS_NAME" "$RP_TOKEN" "macos"

- name: Collect Jan logs for artifact upload
if: always()
run: |
mkdir -p autoqa/jan-logs
cp ~/Library/Application\ Support/Jan-nightly/data/logs/*.log autoqa/jan-logs/ 2>/dev/null || true
cp ~/Library/Application\ Support/Jan/data/logs/*.log autoqa/jan-logs/ 2>/dev/null || true

- name: Upload screen recordings
if: always()
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: ${{ inputs.is_nightly && 'jan-nightly' || 'jan' }}-recordings-${{ github.run_number }}-${{ runner.os }}
path: autoqa/recordings/

- name: Upload Jan logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.is_nightly && 'jan-nightly' || 'jan' }}-logs-${{ github.run_number }}-${{ runner.os }}
path: autoqa/jan-logs/

- name: Cleanup after tests
if: always()
run: |
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/jan-linter-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ref-lcov.info
path: coverage/merged/lcov.info
path: coverage/lcov.info

test-on-macos:
runs-on: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) && 'macos-latest' || 'macos-selfhosted-12-arm64' }}
runs-on: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) && 'macos-latest' || 'macos-selfhosted-15-arm64' }}
if: github.event_name == 'pull_request' || github.event_name == 'push' || github.event_name == 'workflow_dispatch'
steps:
- name: Getting the repo
Expand Down Expand Up @@ -251,7 +251,7 @@ jobs:
uses: barecheck/code-coverage-action@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
lcov-file: './coverage/merged/lcov.info'
lcov-file: './coverage/lcov.info'
base-lcov-file: './lcov.info'
send-summary-comment: true
show-annotations: 'warning'
4 changes: 1 addition & 3 deletions .github/workflows/template-tauri-build-linux-x64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,7 @@ jobs:
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
if [ "${{ inputs.channel }}" != "stable" ]; then
jq '.bundle.linux.deb.files = {"usr/bin/bun": "resources/bin/bun",
"usr/lib/Jan-${{ inputs.channel }}/binaries": "binaries/deps",
"usr/lib/Jan-${{ inputs.channel }}/binaries/engines": "binaries/engines",
"usr/lib/Jan-${{ inputs.channel }}/binaries/libvulkan.so": "binaries/libvulkan.so"}' ./src-tauri/tauri.linux.conf.json > /tmp/tauri.linux.conf.json
"usr/lib/Jan-${{ inputs.channel }}/resources/lib/libvulkan.so": "resources/lib/libvulkan.so"}' ./src-tauri/tauri.linux.conf.json > /tmp/tauri.linux.conf.json
mv /tmp/tauri.linux.conf.json ./src-tauri/tauri.linux.conf.json
fi
jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/template-tauri-build-windows-x64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,6 @@ jobs:
- name: Build app
shell: bash
run: |
curl -L -o ./src-tauri/binaries/vcomp140.dll https://catalog.jan.ai/vcomp140.dll
curl -L -o ./src-tauri/binaries/msvcp140_codecvt_ids.dll https://catalog.jan.ai/msvcp140_codecvt_ids.dll
ls ./src-tauri/binaries
make build
env:
AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }}
Expand Down
37 changes: 19 additions & 18 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,8 @@ endif
yarn build:extensions

dev: install-and-build
yarn install:cortex
yarn download:bin
yarn copy:lib
yarn download:lib
yarn dev

# Linting
Expand All @@ -41,6 +40,8 @@ lint: install-and-build

# Testing
test: lint
yarn download:bin
yarn download:lib
yarn test

# Builds and publishes the app
Expand All @@ -49,7 +50,7 @@ build-and-publish: install-and-build

# Build
build: install-and-build
yarn copy:lib
yarn download:lib
yarn build

clean:
Expand Down Expand Up @@ -81,19 +82,19 @@ else ifeq ($(shell uname -s),Linux)
rm -rf "~/.cache/jan*"
rm -rf "./.cache"
else
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
find . -name ".next" -type d -exec rm -rf '{}' +
find . -name "dist" -type d -exec rm -rf '{}' +
find . -name "build" -type d -exec rm -rf '{}' +
find . -name "out" -type d -exec rm -rf '{}' +
find . -name ".turbo" -type d -exec rm -rf '{}' +
find . -name ".yarn" -type d -exec rm -rf '{}' +
find . -name "package-lock.json" -type f -exec rm -rf '{}' +
rm -rf ./pre-install/*.tgz
rm -rf ./extensions/*/*.tgz
rm -rf ./electron/pre-install/*.tgz
rm -rf ./src-tauri/resources
rm -rf ./src-tauri/target
rm -rf ~/jan/extensions
rm -rf ~/Library/Caches/jan*
find . -name "node_modules" -type d -prune -exec rm -rfv '{}' +
find . -name ".next" -type d -exec rm -rfv '{}' +
find . -name "dist" -type d -exec rm -rfv '{}' +
find . -name "build" -type d -exec rm -rfv '{}' +
find . -name "out" -type d -exec rm -rfv '{}' +
find . -name ".turbo" -type d -exec rm -rfv '{}' +
find . -name ".yarn" -type d -exec rm -rfv '{}' +
find . -name "package-lock.json" -type f -exec rm -rfv '{}' +
rm -rfv ./pre-install/*.tgz
rm -rfv ./extensions/*/*.tgz
rm -rfv ./electron/pre-install/*.tgz
rm -rfv ./src-tauri/resources
rm -rfv ./src-tauri/target
rm -rfv ~/jan/extensions
rm -rfv ~/Library/Caches/jan*
endif
12 changes: 6 additions & 6 deletions autoqa/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -449,17 +449,17 @@ async def main():
# Update counters and log result
if test_passed:
test_results["passed"] += 1
logger.info(f" Test {i} PASSED: {test_data['path']}")
logger.info(f"[SUCCESS] Test {i} PASSED: {test_data['path']}")
else:
test_results["failed"] += 1
logger.error(f" Test {i} FAILED: {test_data['path']}")
logger.error(f"[FAILED] Test {i} FAILED: {test_data['path']}")

# Debug log for troubleshooting
logger.info(f"🔍 Debug - Test result: type={type(test_result)}, value={test_result}, success_field={test_result.get('success', 'N/A') if isinstance(test_result, dict) else 'N/A'}, final_passed={test_passed}")
logger.info(f"[INFO] Debug - Test result: type={type(test_result)}, value={test_result}, success_field={test_result.get('success', 'N/A') if isinstance(test_result, dict) else 'N/A'}, final_passed={test_passed}")

except Exception as e:
test_results["failed"] += 1
logger.error(f" Test {i} FAILED with exception: {test_data['path']} - {e}")
logger.error(f"[FAILED] Test {i} FAILED with exception: {test_data['path']} - {e}")

# Add delay between tests
if i < len(test_files):
Expand All @@ -477,10 +477,10 @@ async def main():
logger.info("=" * 50)

if test_results["failed"] > 0:
logger.error(f" Test execution completed with {test_results['failed']} failures!")
logger.error(f"[FAILED] Test execution completed with {test_results['failed']} failures!")
final_exit_code = 1
else:
logger.info(" All tests completed successfully!")
logger.info("[SUCCESS] All tests completed successfully!")
final_exit_code = 0

except KeyboardInterrupt:
Expand Down
Loading
Loading