Merge branch 'dev' into eckartal-patch-2
This commit is contained in:
commit
729767c55d
10
README.md
10
README.md
@ -76,31 +76,31 @@ Jan is an open-source ChatGPT alternative that runs 100% offline on your compute
|
||||
<tr style="text-align:center">
|
||||
<td style="text-align:center"><b>Experimental (Nightly Build)</b></td>
|
||||
<td style="text-align:center">
|
||||
<a href='https://delta.jan.ai/latest/jan-win-x64-0.4.8-323.exe'>
|
||||
<a href='https://delta.jan.ai/latest/jan-win-x64-0.4.8-324.exe'>
|
||||
<img src='./docs/static/img/windows.png' style="height:14px; width: 14px" />
|
||||
<b>jan.exe</b>
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align:center">
|
||||
<a href='https://delta.jan.ai/latest/jan-mac-x64-0.4.8-323.dmg'>
|
||||
<a href='https://delta.jan.ai/latest/jan-mac-x64-0.4.8-324.dmg'>
|
||||
<img src='./docs/static/img/mac.png' style="height:15px; width: 15px" />
|
||||
<b>Intel</b>
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align:center">
|
||||
<a href='https://delta.jan.ai/latest/jan-mac-arm64-0.4.8-323.dmg'>
|
||||
<a href='https://delta.jan.ai/latest/jan-mac-arm64-0.4.8-324.dmg'>
|
||||
<img src='./docs/static/img/mac.png' style="height:15px; width: 15px" />
|
||||
<b>M1/M2</b>
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align:center">
|
||||
<a href='https://delta.jan.ai/latest/jan-linux-amd64-0.4.8-323.deb'>
|
||||
<a href='https://delta.jan.ai/latest/jan-linux-amd64-0.4.8-324.deb'>
|
||||
<img src='./docs/static/img/linux.png' style="height:14px; width: 14px" />
|
||||
<b>jan.deb</b>
|
||||
</a>
|
||||
</td>
|
||||
<td style="text-align:center">
|
||||
<a href='https://delta.jan.ai/latest/jan-linux-x86_64-0.4.8-323.AppImage'>
|
||||
<a href='https://delta.jan.ai/latest/jan-linux-x86_64-0.4.8-324.AppImage'>
|
||||
<img src='./docs/static/img/linux.png' style="height:14px; width: 14px" />
|
||||
<b>jan.AppImage</b>
|
||||
</a>
|
||||
|
||||
65
docs/docs/about/faq.md
Normal file
65
docs/docs/about/faq.md
Normal file
@ -0,0 +1,65 @@
|
||||
# Frequently Asked Questions (FAQ)
|
||||
|
||||
## What is Jan?
|
||||
|
||||
Jan is software that helps you run large language models (LLMs) on your everyday tasks. For details, read the [About page](https://jan.ai/about/).
|
||||
|
||||
## How do I use Jan?
|
||||
|
||||
Download Jan to your computer, choose a compatible LLM, or connect to a remote AI with the API code to start. You can switch between them as needed.
|
||||
|
||||
## Is Jan compatible with my operating system?
|
||||
|
||||
Jan is available for Mac, Windows, and Linux, ensuring wide compatibility.
|
||||
|
||||
## Do you use my data?
|
||||
|
||||
No. See our data and analytics policy [here](https://jan.ai/privacy/#:~:text=We%20do%20not%20share%20your,with%20a%20better%20user%20experience.).
|
||||
|
||||
## Do you sell my data?
|
||||
|
||||
No. We don't even track your data. Jan is yours.
|
||||
|
||||
## How does Jan ensure my data remains private?
|
||||
|
||||
Jan prioritizes your privacy by running open-source AI models 100% offline on your computer, ensuring all conversations, documents, and files stay private.
|
||||
|
||||
## What does "Jan" stand for?
|
||||
|
||||
Jan stands for “Just Another Neuron”, as we are passionate about building software that complements in your existing neural pathways. But in the spirit of full transparency, it was also just a nice 3 letter domain name we owned 😂.
|
||||
|
||||
## Can I use Jan without an internet connection?
|
||||
|
||||
Yes, Jan can run locally without an internet connection for many features.
|
||||
|
||||
## Are there any costs associated with using Jan?
|
||||
|
||||
Jan is free to use. However, if you want to connect to remote APIs, like GPT-4, you will need to put in your own API key.
|
||||
|
||||
## What types of AI models can I download or import with Jan?
|
||||
|
||||
You can download popular AI models or import any model of your choice through Jan's Hub.
|
||||
|
||||
## How do I customize Jan using the programmable API?
|
||||
|
||||
The API allows you to tailor Jan to your needs, but specific details on usage would require consulting Jan's documentation.
|
||||
|
||||
## How can I contribute to Jan's development or suggest features?
|
||||
|
||||
Contributions can be made through [GitHub](https://github.com/janhq/jan) and [Discord](https://discord.gg/Exe46xPMbK), where you can also suggest features and contribute.
|
||||
|
||||
## How can I get involved with the Jan community?
|
||||
|
||||
Joining [Jan's Discord server](https://discord.gg/qSwXFx6Krr) is a great way to get involved with the community.
|
||||
|
||||
## How do I troubleshoot issues with installing or using Jan?
|
||||
|
||||
For troubleshooting, you should reach out on Discord and check GitHub for assistance and support from the community and the development team.
|
||||
|
||||
## Can I self-host?
|
||||
|
||||
Yes! We love the self-hosted movement. Jan is available as a Helm chart/ Docker composes which can be run across home servers or even production-level environments.
|
||||
|
||||
## Are you hiring?
|
||||
|
||||
We often hire directly from our community. If you are interested in applying, please see our careers page [here](https://janai.bamboohr.com/careers).
|
||||
@ -19,4 +19,4 @@ keywords:
|
||||
|
||||
:::caution
|
||||
This is currently under development.
|
||||
:::
|
||||
:::
|
||||
BIN
docs/docs/developer/03-build-engine/asset/plugin.png
Normal file
BIN
docs/docs/developer/03-build-engine/asset/plugin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 108 KiB |
@ -23,7 +23,8 @@ HTTPS Proxy encrypts data between your browser and the internet, making it hard
|
||||
|
||||
:::note
|
||||
|
||||
When configuring Jan using an HTTPS proxy, the speed of the downloading model may be affected due to the encryption and decryption process. It also depends on the networking of the cloud service provider.
|
||||
- When configuring Jan using an HTTPS proxy, the speed of the downloading model may be affected due to the encryption and decryption process. It also depends on the networking of the cloud service provider.
|
||||
- HTTPS Proxy does not affect the remote model usage.
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -68,8 +68,8 @@ This guide provides you steps to troubleshoot and to resolve the issue where you
|
||||
|
||||
```sh
|
||||
# You can delete the `/Jan` directory in Windows's AppData Directory by visiting the following path `%APPDATA%\Jan`
|
||||
cd C:\Users\%USERNAME%\AppData\Roaming
|
||||
rmdir /S jan
|
||||
cd C:\Users\YOUR_USERNAME\AppData\Roaming
|
||||
rm -r ./Jan
|
||||
```
|
||||
|
||||
### 3. Additional Step for Versions Before 0.4.2
|
||||
@ -156,4 +156,4 @@ By following these steps, you can cleanly uninstall and reinstall Jan, ensuring
|
||||
|
||||
Before reinstalling Jan, ensure it's completely removed from all shared spaces if it's installed on multiple user accounts on your device.
|
||||
|
||||
:::
|
||||
:::
|
||||
|
||||
@ -24,7 +24,10 @@ import installImageURL from './assets/jan-ai-download.png';
|
||||
<TabItem value="mac" label = "Mac" default>
|
||||
|
||||
### Pre-requisites
|
||||
Ensure that your MacOS version is 13 or higher to run Jan.
|
||||
Before installing Jan, ensure :
|
||||
- You have a Mac with an Apple Silicon Processor.
|
||||
- Homebrew and its dependencies are installed. (for Installing Jan with Homebrew Package)
|
||||
- Your macOS version is 10.15 or higher.
|
||||
|
||||
### Stable Releases
|
||||
|
||||
@ -42,9 +45,16 @@ import installImageURL from './assets/jan-ai-download.png';
|
||||
|
||||
To enable the experimental mode, go to **Settings** > **Advanced Settings** and toggle the **Experimental Mode**
|
||||
|
||||
### Install with Homebrew
|
||||
Install Jan with the following Homebrew command:
|
||||
|
||||
```brew
|
||||
brew install --cask jan
|
||||
```
|
||||
|
||||
:::warning
|
||||
|
||||
If you are stuck in a broken build, go to the [Broken Build](/guides/common-error/broken-build) section of Common Errors.
|
||||
Homebrew package installation is currently limited to **Apple Silicon Macs**, with upcoming support for Windows and Linux.
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
---
|
||||
title: Manual Import
|
||||
slug: /guides/using-models/import-manually/
|
||||
sidebar_position: 3
|
||||
description: A step-by-step guide on how to perform manual import feature.
|
||||
keywords:
|
||||
@ -25,6 +24,23 @@ import janModel from './assets/jan-model-hub.png';
|
||||
|
||||
This guide will show you how to perform manual import. In this guide, we are using a GGUF model from [HuggingFace](https://huggingface.co/) and our latest model, [Trinity](https://huggingface.co/janhq/trinity-v1-GGUF), as an example.
|
||||
|
||||
## Newer versions - nightly versions and v0.4.8+
|
||||
|
||||
Starting with version 0.4.8, Jan has introduced the capability to import models using a UI drag-and-drop method. This allows you to import models directly into the Jan application UI by dragging the `.GGUF` file from your directory into the Jan application.
|
||||
|
||||
### 1. Get the Model
|
||||
Download the model from HuggingFace in the `.GGUF` format.
|
||||
|
||||
### 2. Import the Model
|
||||
1. Open your Jan application.
|
||||
2. Click the **Import Model** button.
|
||||
3. Open your downloaded model.
|
||||
4. Drag the `.GGUF` file from your directory into the Jan **Import Model** window.
|
||||
|
||||
### 3. Done!
|
||||
|
||||
If your model doesn't show up in the **Model Selector** in conversations, **restart the app** or contact us via our [Discord community](https://discord.gg/Dt7MxDyNNZ).
|
||||
|
||||
## Newer versions - nightly versions and v0.4.7+
|
||||
|
||||
Starting from version 0.4.7, Jan has introduced the capability to import models using an absolute file path. It allows you to import models from any directory on your computer.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 16
|
||||
slug: /changelog/changelog-v0.2.0
|
||||
---
|
||||
# v0.2.0
|
||||
|
||||
For more details, [GitHub Issues](https://github.com/janhq/jan/releases/tag/v0.2.0)
|
||||
|
||||
Highlighted Issue: [Issue #342: feat: Add Jan Hacker House event page to Docs](https://github.com/janhq/jan/pull/342)
|
||||
|
||||
---
|
||||
sidebar_position: 17
|
||||
slug: /changelog/changelog-v0.2.0
|
||||
---
|
||||
# v0.2.0
|
||||
|
||||
For more details, [GitHub Issues](https://github.com/janhq/jan/releases/tag/v0.2.0)
|
||||
|
||||
Highlighted Issue: [Issue #342: feat: Add Jan Hacker House event page to Docs](https://github.com/janhq/jan/pull/342)
|
||||
|
||||
## Changes
|
||||
|
||||
- feat: Add Jan Hacker House event page to Docs @dan-jan (#342)
|
||||
@ -44,4 +44,4 @@ Highlighted Issue: [Issue #342: feat: Add Jan Hacker House event page to Docs](
|
||||
## Contributor
|
||||
|
||||
@0xSage, @Its-Alamin-H, @dan-jan, @drakehere, @hiento09, @hientominh, @louis-jan, @namchuai, Hien To and James
|
||||
|
||||
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 15
|
||||
slug: /changelog/changelog-v0.2.1
|
||||
---
|
||||
# v0.2.1
|
||||
|
||||
For more details, [GitHub Issues](https://github.com/janhq/jan/releases/tag/v0.2.1)
|
||||
|
||||
Highlighted Issue: [Issue #446: fix: model is started but the indicator is not stopped loading](https://github.com/janhq/jan/pull/446)
|
||||
|
||||
---
|
||||
sidebar_position: 16
|
||||
slug: /changelog/changelog-v0.2.1
|
||||
---
|
||||
# v0.2.1
|
||||
|
||||
For more details, [GitHub Issues](https://github.com/janhq/jan/releases/tag/v0.2.1)
|
||||
|
||||
Highlighted Issue: [Issue #446: fix: model is started but the indicator is not stopped loading](https://github.com/janhq/jan/pull/446)
|
||||
|
||||
## Changes
|
||||
|
||||
- fix: model is started but the indicator is not stopped loading @louis-jan (#446)
|
||||
@ -90,4 +90,4 @@ Highlighted Issue: [Issue #446: fix: model is started but the indicator is not
|
||||
## Contributor
|
||||
|
||||
@0xSage, @dan-jan, @hiento09, @jan-service-account, @louis-jan, @nam-john-ho, @namchuai, @tikikun, @urmauur, @vuonghoainam and Hien To
|
||||
|
||||
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
---
|
||||
sidebar_position: 14
|
||||
slug: /changelog/changelog-v0.2.2
|
||||
---
|
||||
# v0.2.2
|
||||
|
||||
For more details, [GitHub Issues](https://github.com/janhq/jan/releases/tag/v0.2.2)
|
||||
|
||||
Highlighted Issue: [Issue #469: chore: plugin and app version dependency](https://github.com/janhq/jan/pull/469)
|
||||
|
||||
---
|
||||
sidebar_position: 15
|
||||
slug: /changelog/changelog-v0.2.2
|
||||
---
|
||||
# v0.2.2
|
||||
|
||||
For more details, [GitHub Issues](https://github.com/janhq/jan/releases/tag/v0.2.2)
|
||||
|
||||
Highlighted Issue: [Issue #469: chore: plugin and app version dependency](https://github.com/janhq/jan/pull/469)
|
||||
|
||||
## Changes
|
||||
|
||||
- chore: plugin and app version dependency @louis-jan (#469)
|
||||
@ -40,4 +40,4 @@ Highlighted Issue: [Issue #469: chore: plugin and app version dependency](https
|
||||
## Contributor
|
||||
|
||||
@hiento09, @jan-service-account, @louis-jan, @namchuai, @urmauur and @vuonghoainam
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 13
|
||||
sidebar_position: 14
|
||||
slug: /changelog/changelog-v0.2.3
|
||||
---
|
||||
# v0.2.3
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 12
|
||||
sidebar_position: 13
|
||||
slug: /changelog/changelog-v0.3.0
|
||||
---
|
||||
# v0.3.0
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 11
|
||||
sidebar_position: 12
|
||||
slug: /changelog/changelog-v0.3.1
|
||||
---
|
||||
# v0.3.1
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 10
|
||||
sidebar_position: 11
|
||||
slug: /changelog/changelog-v0.3.2
|
||||
---
|
||||
# v0.3.2
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
sidebar_position: 10
|
||||
slug: /changelog/changelog-v0.3.3
|
||||
---
|
||||
# v0.3.3
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
sidebar_position: 9
|
||||
slug: /changelog/changelog-v0.4.0
|
||||
---
|
||||
# v0.4.0
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 7
|
||||
sidebar_position: 8
|
||||
slug: /changelog/changelog-v0.4.1
|
||||
---
|
||||
# v0.4.1
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 7
|
||||
slug: /changelog/changelog-v0.4.2
|
||||
---
|
||||
# v0.4.2
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
sidebar_position: 6
|
||||
slug: /changelog/changelog-v0.4.3
|
||||
---
|
||||
# v0.4.3
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
sidebar_position: 5
|
||||
slug: /changelog/changelog-v0.4.4
|
||||
---
|
||||
# v0.4.4
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
sidebar_position: 4
|
||||
slug: /changelog/changelog-v0.4.5
|
||||
---
|
||||
# v0.4.5
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
sidebar_position: 3
|
||||
slug: /changelog/changelog-v0.4.6
|
||||
---
|
||||
# v0.4.6
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
sidebar_position: 2
|
||||
slug: /changelog/changelog-v0.4.7
|
||||
---
|
||||
# v0.4.7
|
||||
|
||||
98
docs/docs/releases/changelog/changelog-v0.4.8.mdx
Normal file
98
docs/docs/releases/changelog/changelog-v0.4.8.mdx
Normal file
@ -0,0 +1,98 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
slug: /changelog/changelog-v0.4.8
|
||||
---
|
||||
# v0.4.8
|
||||
|
||||
For more details, [GitHub Issues](https://github.com/janhq/jan/releases/tag/v0.4.8)
|
||||
|
||||
Highlighted Issue: [Issue #2267: Release cut v0.4.8](https://github.com/janhq/jan/pull/2267)
|
||||
|
||||
## Changes
|
||||
|
||||
- Release cut v0.4.8 @louis-jan (#2267)
|
||||
- Add modify notary team in CI @hiento09 (#2265)
|
||||
- Chore: Update new models to model hub @hahuyhoang411 (#2192)
|
||||
- Macos Notarize migrage to new Team ID @hiento09 (#2228)
|
||||
- docs: update API Reference assistants\_id endpoint from DevDocs @avb-is-me (#2195)
|
||||
- docs: update API Reference assistants endpoint from DevDocs @avb-is-me (#2194)
|
||||
- docs: update API Reference threads endpoint from DevDocs @avb-is-me (#2182)
|
||||
- fix: wrong profile parameter in docker command @mooncool (#2159)
|
||||
- Sync release 0.4.7 to dev @louis-jan (#2151)
|
||||
- docs: add upstream acknowledgements @hieu-jan (#2136)
|
||||
- Sync dev branch to docs branch @hieu-jan (#2131)
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
- feat: prompt user to download an update manually @louis-jan (#2261)
|
||||
- feat: Jan can see @hiro-v (#2069)
|
||||
- Revert feat: temporary remove dark mode @urmauur (#2221)
|
||||
- feat: add turborepo @louis-jan (#2220)
|
||||
- fix: change button import model on hub page @urmauur (#2178)
|
||||
- feat: temporary remove dark mode :( @urmauur (#2168)
|
||||
- feat: add import model feature @namchuai (#2104)
|
||||
- feat: restore docusaurus style @urmauur (#2152)
|
||||
- feat: add a simple way to convert Hugging Face model to GGUF @Helloyunho (#1972)
|
||||
|
||||
## 🐛 Fixes
|
||||
|
||||
- codesign script force sign @hiento09 (#2291)
|
||||
- fix: should not attach error messages to the completion request @louis-jan (#2258)
|
||||
- fix: image upload button and drag event are not enabled @louis-jan (#2248)
|
||||
- fix: error message being sent along with conversation when inference @namchuai (#2242)
|
||||
- fix: replaced user path from app log @namchuai (#2238)
|
||||
- fix: drag and drop support image format to support vision model @urmauur (#2237)
|
||||
- fix: re-configure changelog sections @hieu-jan (#2230)
|
||||
- fix: import from HuggingFace with random string is causing app crash @louis-jan (#2214)
|
||||
- fix: comment from QA regarding import model @namchuai (#2213)
|
||||
- fix: download model error does not reset state in model hub @namchuai (#2199)
|
||||
- fix: minor ui missing secondary background @urmauur (#2198)
|
||||
- docs: update docker command @hieu-jan (#2180)
|
||||
- fix: some bugs for import model @namchuai (#2181)
|
||||
- fix: change button import model on hub page @urmauur (#2178)
|
||||
- fix space between progress bar and title list of gpu @urmauur (#2177)
|
||||
- fix: disabled prompt user using dangerouslySetInnerHTML @urmauur (#2176)
|
||||
- fix: style list of gpus on system monitor @urmauur (#2172)
|
||||
- fix: system monitor expand overlap tooltip ribbon @urmauur (#2158)
|
||||
- Huggingface extension add codesign step for building on darwin @hiento09 (#2166)
|
||||
- Add run codesign for huggingface extension @hiento09 (#2163)
|
||||
- fix: system monitor ui @urmauur (#2135)
|
||||
|
||||
## 🧰 Maintenance
|
||||
|
||||
- chore: temporary remove convert model @namchuai (#2266)
|
||||
- docs: sync slug fix from dev branch to docs branch @hieu-jan (#2264)
|
||||
- docs: Update broken link and fix the slug @aindrajaya (#2260)
|
||||
- docs: Fix navbar issues. Keep stay when clicked other menu items from the sidebar @aindrajaya (#2253)
|
||||
- docs: sync docs hub fixes from dev to docs branch @hieu-jan (#2247)
|
||||
- docs: Update content for Hub page and Guides section @aindrajaya (#2245)
|
||||
- docs: Fix Dark Mode on the Hub page and Update the Navbar functionality @aindrajaya (#2243)
|
||||
- chore: sync dev branch to docs branch @hieu-jan (#2239)
|
||||
- Chore: add prefix latest for task clean r2 bucket @hiento09 (#2233)
|
||||
- fix: re-configure changelog sections @hieu-jan (#2230)
|
||||
- docs: add command run API server without frontend @hieu-jan (#2231)
|
||||
- docs: revamp entire Jan guides @hieu-jan (#2139)
|
||||
- chore: clean up some redundant code @namchuai (#2215)
|
||||
- docs: update API Reference chatCompletions from DevDocs @avb-is-me (#2171)
|
||||
- docs: update API Reference download model from DevDocs @avb-is-me (#2170)
|
||||
- docs: update API Reference model\_id from DevDocs @avb-is-me (#2169)
|
||||
- docs: update API Reference listModel from DevDocs @avb-is-me (#2161)
|
||||
- docs: Update 08-antivirus-compatibility-testing.md @0xSage (#2186)
|
||||
- docs: adding new feature for v0.4.7 to release checklist @Van-QA (#2189)
|
||||
- docs: Update 01-integrate-continue.mdx @0xSage (#2187)
|
||||
- chore: bump nitro 0.3.14 @louis-jan (#2183)
|
||||
- docs: Sync dev branch to docs branch @hieu-jan (#2185)
|
||||
- docs: update docker command @hieu-jan (#2180)
|
||||
- docs: update wall of love @hieu-jan (#2179)
|
||||
- docs: add Jan newsletter @hieu-jan (#2174)
|
||||
- chore: make convert gguf as experimental feature @namchuai (#2156)
|
||||
- docs: update acknowledgements @hieu-jan (#2147)
|
||||
- feat: restore docusaurus style @urmauur (#2152)
|
||||
- docs: update run Jan in Docker mode @hieu-jan (#2150)
|
||||
- Docs pena team - Add Quickstart Docs @aindrajaya (#2138)
|
||||
- docs: hide incomplete pages @hieu-jan (#2127)
|
||||
|
||||
## Contributor
|
||||
|
||||
@0xSage, @Helloyunho, @Van-QA, @aindrajaya, @avb-is-me, @hahuyhoang411, @hiento09, @hieu-jan, @hiro-v, @jan-service-account, @louis-jan, @mooncool, @namchuai and @urmauur
|
||||
|
||||
@ -1,36 +1,36 @@
|
||||
// @ts-check
|
||||
// Note: type annotations allow type checking and IDEs autocompletion
|
||||
require("dotenv").config();
|
||||
require('dotenv').config()
|
||||
|
||||
const darkCodeTheme = require("prism-react-renderer/themes/dracula");
|
||||
const path = require('path');
|
||||
const darkCodeTheme = require('prism-react-renderer/themes/dracula')
|
||||
const path = require('path')
|
||||
|
||||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
title: "Jan",
|
||||
tagline: "Run your own AI",
|
||||
favicon: "img/favicon.ico",
|
||||
title: 'Jan',
|
||||
tagline: 'Run your own AI',
|
||||
favicon: 'img/favicon.ico',
|
||||
|
||||
// Set the production url of your site here
|
||||
url: "https://jan.ai",
|
||||
url: 'https://jan.ai',
|
||||
// Set the /<baseUrl>/ pathname under which your site is served
|
||||
// For GitHub pages deployment, it is often '/<projectName>/'
|
||||
baseUrl: "/",
|
||||
baseUrl: '/',
|
||||
|
||||
// GitHub pages deployment config.
|
||||
// If you aren't using GitHub pages, you don't need these.
|
||||
organizationName: "janhq", // Usually your GitHub org/user name.
|
||||
projectName: "jan", // Usually your repo name.
|
||||
organizationName: 'janhq', // Usually your GitHub org/user name.
|
||||
projectName: 'jan', // Usually your repo name.
|
||||
|
||||
onBrokenLinks: "warn",
|
||||
onBrokenMarkdownLinks: "warn",
|
||||
onBrokenLinks: 'warn',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
trailingSlash: true,
|
||||
// Even if you don't use internalization, you can use this field to set useful
|
||||
// metadata like html lang. For example, if your site is Chinese, you may want
|
||||
// to replace "en" with "zh-Hans".
|
||||
i18n: {
|
||||
defaultLocale: "en",
|
||||
locales: ["en"],
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
|
||||
markdown: {
|
||||
@ -41,72 +41,81 @@ const config = {
|
||||
|
||||
// Plugins we added
|
||||
plugins: [
|
||||
"docusaurus-plugin-sass",
|
||||
'docusaurus-plugin-sass',
|
||||
async function myPlugin(context, options) {
|
||||
return {
|
||||
name: "docusaurus-tailwindcss",
|
||||
name: 'docusaurus-tailwindcss',
|
||||
configurePostCss(postcssOptions) {
|
||||
// Appends TailwindCSS and AutoPrefixer.
|
||||
postcssOptions.plugins.push(require("tailwindcss"));
|
||||
postcssOptions.plugins.push(require("autoprefixer"));
|
||||
return postcssOptions;
|
||||
postcssOptions.plugins.push(require('tailwindcss'))
|
||||
postcssOptions.plugins.push(require('autoprefixer'))
|
||||
return postcssOptions
|
||||
},
|
||||
};
|
||||
}
|
||||
},
|
||||
[
|
||||
"posthog-docusaurus",
|
||||
'posthog-docusaurus',
|
||||
{
|
||||
apiKey: process.env.POSTHOG_PROJECT_API_KEY || "XXX",
|
||||
appUrl: process.env.POSTHOG_APP_URL || "XXX", // optional
|
||||
apiKey: process.env.POSTHOG_PROJECT_API_KEY || 'XXX',
|
||||
appUrl: process.env.POSTHOG_APP_URL || 'XXX', // optional
|
||||
enableInDevelopment: false, // optional
|
||||
},
|
||||
],
|
||||
[
|
||||
"@docusaurus/plugin-client-redirects",
|
||||
'@docusaurus/plugin-client-redirects',
|
||||
{
|
||||
redirects: [
|
||||
{
|
||||
from: "/troubleshooting/failed-to-fetch",
|
||||
to: "/guides/error-codes/something-amiss/",
|
||||
from: '/troubleshooting/failed-to-fetch',
|
||||
to: '/guides/error-codes/something-amiss/',
|
||||
},
|
||||
{
|
||||
from: "/guides/troubleshooting/gpu-not-used/",
|
||||
to: "/guides/common-error/not-using-gpu/",
|
||||
from: '/guides/troubleshooting/gpu-not-used/',
|
||||
to: '/guides/common-error/not-using-gpu/',
|
||||
},
|
||||
{
|
||||
from: "/guides/troubleshooting/",
|
||||
to: "/guides/error-codes/",
|
||||
from: '/guides/troubleshooting/',
|
||||
to: '/guides/error-codes/',
|
||||
},
|
||||
{
|
||||
from: "/troubleshooting/stuck-on-broken-build/",
|
||||
to: "/guides/common-error/broken-build/",
|
||||
from: '/troubleshooting/stuck-on-broken-build/',
|
||||
to: '/guides/common-error/broken-build/',
|
||||
},
|
||||
{
|
||||
from: "/guides/troubleshooting/",
|
||||
to: "/guides/error-codes/",
|
||||
from: '/guides/troubleshooting/',
|
||||
to: '/guides/error-codes/',
|
||||
},
|
||||
{
|
||||
from: "/troubleshooting/somethings-amiss/",
|
||||
to: "/guides/error-codes/something-amiss/",
|
||||
from: '/troubleshooting/somethings-amiss/',
|
||||
to: '/guides/error-codes/something-amiss/',
|
||||
},
|
||||
{
|
||||
from: "/troubleshooting/how-to-get-error-logs/",
|
||||
to: "/guides/error-codes/how-to-get-error-logs/",
|
||||
from: '/troubleshooting/how-to-get-error-logs/',
|
||||
to: '/guides/error-codes/how-to-get-error-logs/',
|
||||
},
|
||||
{
|
||||
from: "/troubleshooting/permission-denied/",
|
||||
to: "/guides/error-codes/permission-denied/",
|
||||
from: '/troubleshooting/permission-denied/',
|
||||
to: '/guides/error-codes/permission-denied/',
|
||||
},
|
||||
{
|
||||
from: "/troubleshooting/unexpected-token/",
|
||||
to: "/guides/error-codes/unexpected-token/",
|
||||
from: '/troubleshooting/unexpected-token/',
|
||||
to: '/guides/error-codes/unexpected-token/',
|
||||
},
|
||||
{
|
||||
from: "/troubleshooting/undefined-issue/",
|
||||
to: "/guides/error-codes/undefined-issue/",
|
||||
}, {
|
||||
from: "/install/",
|
||||
to: "/guides/install/",
|
||||
from: '/troubleshooting/undefined-issue/',
|
||||
to: '/guides/error-codes/undefined-issue/',
|
||||
},
|
||||
{
|
||||
from: '/install/',
|
||||
to: '/guides/install/',
|
||||
},
|
||||
{
|
||||
from: '/guides/using-models/',
|
||||
to: '/guides/models-setup/',
|
||||
},
|
||||
{
|
||||
from: '/guides/using-extensions/',
|
||||
to: '/guides/extensions/',
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -114,40 +123,52 @@ const config = {
|
||||
|
||||
//To input custom Plugin
|
||||
path.resolve(__dirname, 'plugins', 'changelog-plugin'),
|
||||
[
|
||||
'@scalar/docusaurus',
|
||||
{
|
||||
label: '',
|
||||
route: '/api-reference',
|
||||
configuration: {
|
||||
spec: {
|
||||
url: 'https://raw.githubusercontent.com/janhq/jan/dev/docs/openapi/jan.json',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
],
|
||||
|
||||
// The classic preset will relay each option entry to the respective sub plugin/theme.
|
||||
presets: [
|
||||
[
|
||||
"@docusaurus/preset-classic",
|
||||
'@docusaurus/preset-classic',
|
||||
{
|
||||
// Will be passed to @docusaurus/plugin-content-docs (false to disable)
|
||||
docs: {
|
||||
routeBasePath: "/",
|
||||
sidebarPath: require.resolve("./sidebars.js"),
|
||||
editUrl: "https://github.com/janhq/jan/tree/dev/docs",
|
||||
routeBasePath: '/',
|
||||
sidebarPath: require.resolve('./sidebars.js'),
|
||||
editUrl: 'https://github.com/janhq/jan/tree/dev/docs',
|
||||
showLastUpdateAuthor: true,
|
||||
showLastUpdateTime: true,
|
||||
},
|
||||
// Will be passed to @docusaurus/plugin-content-sitemap (false to disable)
|
||||
sitemap: {
|
||||
changefreq: "daily",
|
||||
changefreq: 'daily',
|
||||
priority: 1.0,
|
||||
ignorePatterns: ["/tags/**"],
|
||||
filename: "sitemap.xml",
|
||||
ignorePatterns: ['/tags/**'],
|
||||
filename: 'sitemap.xml',
|
||||
},
|
||||
// Will be passed to @docusaurus/plugin-content-blog (false to disable)
|
||||
blog: {
|
||||
blogSidebarTitle: "All Posts",
|
||||
blogSidebarCount: "ALL",
|
||||
blogSidebarTitle: 'All Posts',
|
||||
blogSidebarCount: 'ALL',
|
||||
},
|
||||
// Will be passed to @docusaurus/theme-classic.
|
||||
theme: {
|
||||
customCss: require.resolve("./src/styles/main.scss"),
|
||||
customCss: require.resolve('./src/styles/main.scss'),
|
||||
},
|
||||
// GTM is always inactive in development and only active in production to avoid polluting the analytics statistics.
|
||||
googleTagManager: {
|
||||
containerId: process.env.GTM_ID || "XXX",
|
||||
containerId: process.env.GTM_ID || 'XXX',
|
||||
},
|
||||
// Will be passed to @docusaurus/plugin-content-pages (false to disable)
|
||||
// pages: {},
|
||||
@ -155,17 +176,17 @@ const config = {
|
||||
],
|
||||
// Redoc preset
|
||||
[
|
||||
"redocusaurus",
|
||||
'redocusaurus',
|
||||
{
|
||||
specs: [
|
||||
{
|
||||
spec: "openapi/jan.yaml", // can be local file, url, or parsed json object
|
||||
route: "/api-reference/", // path where to render docs
|
||||
spec: 'openapi/jan.yaml', // can be local file, url, or parsed json object
|
||||
route: '/api-reference-1.0/', // path where to render docs
|
||||
},
|
||||
],
|
||||
theme: {
|
||||
primaryColor: "#1a73e8",
|
||||
primaryColorDark: "#1a73e8",
|
||||
primaryColor: '#1a73e8',
|
||||
primaryColorDark: '#1a73e8',
|
||||
options: {
|
||||
requiredPropsFirst: true,
|
||||
noAutoAuth: true,
|
||||
@ -178,10 +199,10 @@ const config = {
|
||||
|
||||
// Docs: https://docusaurus.io/docs/api/themes/configuration
|
||||
themeConfig: {
|
||||
image: "img/og-image.png",
|
||||
image: 'img/og-image.png',
|
||||
// Only for react live
|
||||
liveCodeBlock: {
|
||||
playgroundPosition: "bottom",
|
||||
playgroundPosition: 'bottom',
|
||||
},
|
||||
docs: {
|
||||
sidebar: {
|
||||
@ -191,89 +212,89 @@ const config = {
|
||||
},
|
||||
// Algolia Search Configuration
|
||||
algolia: {
|
||||
appId: process.env.ALGOLIA_APP_ID || "XXX",
|
||||
apiKey: process.env.ALGOLIA_API_KEY || "XXX",
|
||||
indexName: "jan_docs",
|
||||
appId: process.env.ALGOLIA_APP_ID || 'XXX',
|
||||
apiKey: process.env.ALGOLIA_API_KEY || 'XXX',
|
||||
indexName: 'jan_docs',
|
||||
contextualSearch: true,
|
||||
insights: true,
|
||||
},
|
||||
// SEO Docusarus
|
||||
metadata: [
|
||||
{
|
||||
name: "description",
|
||||
name: 'description',
|
||||
content:
|
||||
"Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
|
||||
'Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.',
|
||||
},
|
||||
{
|
||||
name: "keywords",
|
||||
name: 'keywords',
|
||||
content:
|
||||
"Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ",
|
||||
'Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ',
|
||||
},
|
||||
{ name: "robots", content: "index, follow" },
|
||||
{ name: 'robots', content: 'index, follow' },
|
||||
{
|
||||
property: "og:title",
|
||||
content: "Jan | Open-source ChatGPT Alternative",
|
||||
property: 'og:title',
|
||||
content: 'Jan | Open-source ChatGPT Alternative',
|
||||
},
|
||||
{
|
||||
property: "og:description",
|
||||
property: 'og:description',
|
||||
content:
|
||||
"Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
|
||||
'Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.',
|
||||
},
|
||||
{
|
||||
property: "og:image",
|
||||
content: "https://jan.ai/img/og-image.png",
|
||||
property: 'og:image',
|
||||
content: 'https://jan.ai/img/og-image.png',
|
||||
},
|
||||
{ property: "og:type", content: "website" },
|
||||
{ property: "twitter:card", content: "summary_large_image" },
|
||||
{ property: "twitter:site", content: "@janframework" },
|
||||
{ property: 'og:type', content: 'website' },
|
||||
{ property: 'twitter:card', content: 'summary_large_image' },
|
||||
{ property: 'twitter:site', content: '@janframework' },
|
||||
{
|
||||
property: "twitter:title",
|
||||
content: "Jan | Open-source ChatGPT Alternative",
|
||||
property: 'twitter:title',
|
||||
content: 'Jan | Open-source ChatGPT Alternative',
|
||||
},
|
||||
{
|
||||
property: "twitter:description",
|
||||
property: 'twitter:description',
|
||||
content:
|
||||
"Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
|
||||
'Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.',
|
||||
},
|
||||
{
|
||||
property: "twitter:image",
|
||||
content: "https://jan.ai/img/og-image.png",
|
||||
property: 'twitter:image',
|
||||
content: 'https://jan.ai/img/og-image.png',
|
||||
},
|
||||
],
|
||||
headTags: [
|
||||
// Declare a <link> preconnect tag
|
||||
{
|
||||
tagName: "link",
|
||||
tagName: 'link',
|
||||
attributes: {
|
||||
rel: "preconnect",
|
||||
href: "https://jan.ai/",
|
||||
rel: 'preconnect',
|
||||
href: 'https://jan.ai/',
|
||||
},
|
||||
},
|
||||
// Declare some json-ld structured data
|
||||
{
|
||||
tagName: "script",
|
||||
tagName: 'script',
|
||||
attributes: {
|
||||
type: "application/ld+json",
|
||||
type: 'application/ld+json',
|
||||
},
|
||||
innerHTML: JSON.stringify({
|
||||
"@context": "https://schema.org/",
|
||||
"@type": "localAI",
|
||||
name: "Jan",
|
||||
description:
|
||||
"Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.",
|
||||
keywords:
|
||||
"Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ",
|
||||
applicationCategory: "BusinessApplication",
|
||||
operatingSystem: "Multiple",
|
||||
url: "https://jan.ai/",
|
||||
'@context': 'https://schema.org/',
|
||||
'@type': 'localAI',
|
||||
'name': 'Jan',
|
||||
'description':
|
||||
'Jan runs 100% offline on your computer, utilizes open-source AI models, prioritizes privacy, and is highly customizable.',
|
||||
'keywords':
|
||||
'Jan AI, Jan, ChatGPT alternative, local AI, private AI, conversational AI, no-subscription fee, large language model ',
|
||||
'applicationCategory': 'BusinessApplication',
|
||||
'operatingSystem': 'Multiple',
|
||||
'url': 'https://jan.ai/',
|
||||
}),
|
||||
},
|
||||
],
|
||||
navbar: {
|
||||
title: "Jan",
|
||||
title: 'Jan',
|
||||
logo: {
|
||||
alt: "Jan Logo",
|
||||
src: "img/logo.svg",
|
||||
alt: 'Jan Logo',
|
||||
src: 'img/logo.svg',
|
||||
},
|
||||
items: [
|
||||
// Navbar Left
|
||||
@ -284,38 +305,38 @@ const config = {
|
||||
// label: "About",
|
||||
// },
|
||||
{
|
||||
type: "dropdown",
|
||||
label: "About",
|
||||
position: "left",
|
||||
type: 'dropdown',
|
||||
label: 'About',
|
||||
position: 'left',
|
||||
items: [
|
||||
{
|
||||
type: "doc",
|
||||
label: "What is Jan?",
|
||||
docId: "about/about",
|
||||
type: 'doc',
|
||||
label: 'What is Jan?',
|
||||
docId: 'about/about',
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "Who we are",
|
||||
docId: "team/team",
|
||||
type: 'doc',
|
||||
label: 'Who we are',
|
||||
docId: 'team/team',
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "Wall of love",
|
||||
docId: "wall-of-love",
|
||||
type: 'doc',
|
||||
label: 'Wall of love',
|
||||
docId: 'wall-of-love',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "docSidebar",
|
||||
sidebarId: "productSidebar",
|
||||
positionL: "left",
|
||||
label: "Product",
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'productSidebar',
|
||||
positionL: 'left',
|
||||
label: 'Product',
|
||||
},
|
||||
{
|
||||
type: "docSidebar",
|
||||
sidebarId: "ecosystemSidebar",
|
||||
position: "left",
|
||||
label: "Ecosystem",
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'ecosystemSidebar',
|
||||
position: 'left',
|
||||
label: 'Ecosystem',
|
||||
},
|
||||
// {
|
||||
// type: "docSidebar",
|
||||
@ -325,29 +346,29 @@ const config = {
|
||||
// },
|
||||
// Navbar right
|
||||
{
|
||||
type: "dropdown",
|
||||
label: "Docs",
|
||||
to: "docs",
|
||||
position: "right",
|
||||
type: 'dropdown',
|
||||
label: 'Docs',
|
||||
to: 'docs',
|
||||
position: 'right',
|
||||
items: [
|
||||
{
|
||||
type: "docSidebar",
|
||||
sidebarId: "guidesSidebar",
|
||||
label: "Guides",
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'guidesSidebar',
|
||||
label: 'Guides',
|
||||
},
|
||||
{
|
||||
type: "docSidebar",
|
||||
sidebarId: "developerSidebar",
|
||||
label: "Developer",
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'developerSidebar',
|
||||
label: 'Developer',
|
||||
},
|
||||
{
|
||||
to: "/api-reference",
|
||||
label: "API Reference",
|
||||
to: '/api-reference',
|
||||
label: 'API Reference',
|
||||
},
|
||||
{
|
||||
type: "docSidebar",
|
||||
sidebarId: "releasesSidebar",
|
||||
label: "Changelog",
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'releasesSidebar',
|
||||
label: 'Changelog',
|
||||
},
|
||||
// {
|
||||
// type: "docSidebar",
|
||||
@ -357,9 +378,9 @@ const config = {
|
||||
],
|
||||
},
|
||||
{
|
||||
to: "blog",
|
||||
label: "Blog",
|
||||
position: "right",
|
||||
to: 'blog',
|
||||
label: 'Blog',
|
||||
position: 'right',
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -367,22 +388,22 @@ const config = {
|
||||
theme: darkCodeTheme,
|
||||
darkTheme: darkCodeTheme,
|
||||
additionalLanguages: [
|
||||
"python",
|
||||
"powershell",
|
||||
"bash",
|
||||
"json",
|
||||
"javascript",
|
||||
"jsx",
|
||||
'python',
|
||||
'powershell',
|
||||
'bash',
|
||||
'json',
|
||||
'javascript',
|
||||
'jsx',
|
||||
],
|
||||
},
|
||||
colorMode: {
|
||||
defaultMode: "light",
|
||||
defaultMode: 'light',
|
||||
disableSwitch: false,
|
||||
respectPrefersColorScheme: false,
|
||||
},
|
||||
},
|
||||
|
||||
themes: ["@docusaurus/theme-live-codeblock", "@docusaurus/theme-mermaid"],
|
||||
};
|
||||
themes: ['@docusaurus/theme-live-codeblock', '@docusaurus/theme-mermaid'],
|
||||
}
|
||||
|
||||
module.exports = config;
|
||||
module.exports = config
|
||||
|
||||
2486
docs/openapi/jan.json
Normal file
2486
docs/openapi/jan.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -26,6 +26,7 @@
|
||||
"@heroicons/react": "^2.0.18",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"@redocly/cli": "^1.4.1",
|
||||
"@scalar/docusaurus": "^0.1.3",
|
||||
"autoprefixer": "^10.4.16",
|
||||
"axios": "^1.5.1",
|
||||
"clsx": "^1.2.1",
|
||||
|
||||
@ -2,7 +2,7 @@ const fs = require('fs');
|
||||
const path = require('path');
|
||||
const fetch = require('node-fetch');
|
||||
|
||||
async function fetchData(siteConfig) {
|
||||
async function fetchData(siteConfig, forceRefresh = false) {
|
||||
const owner = siteConfig.organizationName;
|
||||
const repo = siteConfig.projectName;
|
||||
const apiUrl = `https://api.github.com/repos/${owner}/${repo}/releases`;
|
||||
@ -17,7 +17,7 @@ async function fetchData(siteConfig) {
|
||||
const cacheFilePath = path.join(outputDirectory, 'cache.json');
|
||||
|
||||
let cachedData = {};
|
||||
if (fs.existsSync(cacheFilePath)) {
|
||||
if (fs.existsSync(cacheFilePath) && !forceRefresh) {
|
||||
cachedData = JSON.parse(fs.readFileSync(cacheFilePath, 'utf-8'));
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ async function fetchData(siteConfig) {
|
||||
// Fetch releases from GitHub API or load from cache
|
||||
let releases = [];
|
||||
try {
|
||||
if (cachedData.releases) {
|
||||
if (cachedData.releases && !forceRefresh) {
|
||||
console.log('Loading releases from cache...');
|
||||
releases = cachedData.releases;
|
||||
} else {
|
||||
@ -68,6 +68,36 @@ async function fetchData(siteConfig) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if there are new releases
|
||||
const newReleases = releases.filter(release => {
|
||||
const version = release.tag_name;
|
||||
const existingChangelogPath = path.join(outputDirectory, `changelog-${version}.mdx`);
|
||||
return !fs.existsSync(existingChangelogPath);
|
||||
});
|
||||
|
||||
// If there are new releases, update existing changelog files' sidebar positions
|
||||
if (newReleases.length > 0) {
|
||||
console.log(`Updating sidebar positions for ${newReleases.length} new releases...`);
|
||||
const existingChangelogFiles = fs.readdirSync(outputDirectory)
|
||||
.filter(file => file.startsWith('changelog-'));
|
||||
|
||||
existingChangelogFiles.forEach((filename, index) => {
|
||||
const version = filename.substring(10, filename.length - 4);
|
||||
const existingChangelogPath = path.join(outputDirectory, filename);
|
||||
const content = fs.readFileSync(existingChangelogPath, 'utf-8');
|
||||
const sidebarPositionMatch = content.match(/sidebar_position: (\d+)/);
|
||||
let sidebarPosition = index + 1;
|
||||
|
||||
if (sidebarPositionMatch) {
|
||||
sidebarPosition = parseInt(sidebarPositionMatch[1]);
|
||||
}
|
||||
|
||||
const updatedContent = content.replace(/sidebar_position: (\d+)/, `sidebar_position: ${sidebarPosition}`);
|
||||
fs.writeFileSync(existingChangelogPath, updatedContent, 'utf-8');
|
||||
console.log(`Sidebar position updated for changelog-${version}`);
|
||||
});
|
||||
}
|
||||
|
||||
// Process the GitHub releases data here
|
||||
for (const release of releases) {
|
||||
const version = release.tag_name;
|
||||
|
||||
@ -24,7 +24,7 @@ module.exports = function (context, options) {
|
||||
|
||||
async onPostBuild() {
|
||||
// If you need additional actions after the build, you can include them here.
|
||||
await fetchData(siteConfig);
|
||||
await fetchData(siteConfig, true);
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@ -52,6 +52,13 @@ const sidebars = {
|
||||
],
|
||||
},
|
||||
"acknowledgements",
|
||||
{
|
||||
type: "category",
|
||||
label: "FAQ",
|
||||
link: { type: "doc", id: "about/faq" },
|
||||
items:
|
||||
[],
|
||||
},
|
||||
],
|
||||
productSidebar: [
|
||||
{
|
||||
@ -185,6 +192,18 @@ const sidebars = {
|
||||
collapsible: false,
|
||||
className: "head_Menu",
|
||||
items: [
|
||||
{
|
||||
type: "category",
|
||||
label: "Advanced Settings",
|
||||
className: "head_SubMenu",
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: "guides/advanced-settings/advanced-settings",
|
||||
},
|
||||
items: [
|
||||
"guides/advanced-settings/http-proxy",
|
||||
]
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Advanced Model Setup",
|
||||
@ -222,10 +241,10 @@ const sidebars = {
|
||||
},
|
||||
items: [
|
||||
"guides/extensions/import-ext",
|
||||
"guides/extensions/setup-ext",
|
||||
"guides/extensions/setup-ext",
|
||||
]
|
||||
},
|
||||
{
|
||||
{
|
||||
type: "category",
|
||||
label: "Integrations",
|
||||
className: "head_SubMenu",
|
||||
@ -233,7 +252,7 @@ const sidebars = {
|
||||
type: 'doc',
|
||||
id: "guides/integration/README",
|
||||
},
|
||||
items: [
|
||||
items: [
|
||||
"guides/integration/azure",
|
||||
"guides/integration/discord",
|
||||
"guides/integration/groq",
|
||||
@ -243,7 +262,7 @@ const sidebars = {
|
||||
"guides/integration/openinterpreter",
|
||||
"guides/integration/openrouter",
|
||||
"guides/integration/raycast",
|
||||
"guides/integration/vscode",
|
||||
"guides/integration/vscode",
|
||||
]
|
||||
},
|
||||
]
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
h1,
|
||||
.h1 {
|
||||
line-height: 48px;
|
||||
font-size: 40px;
|
||||
@apply font-bold text-black dark:text-white;
|
||||
}
|
||||
@ -8,35 +7,24 @@ h2,
|
||||
.h2 {
|
||||
font-size: 32px;
|
||||
@apply font-bold text-black dark:text-white;
|
||||
line-height: 40px;
|
||||
}
|
||||
h3,
|
||||
.h3 {
|
||||
font-size: 28px;
|
||||
@apply font-bold text-black dark:text-white;
|
||||
line-height: 40px;
|
||||
}
|
||||
h4,
|
||||
.h4 {
|
||||
font-size: 24px;
|
||||
@apply font-bold text-black dark:text-white;
|
||||
line-height: 32px;
|
||||
}
|
||||
h5,
|
||||
.h5 {
|
||||
font-size: 20px;
|
||||
@apply font-bold text-black dark:text-white;
|
||||
line-height: 28px;
|
||||
}
|
||||
h6,
|
||||
.h6 {
|
||||
font-size: 16px;
|
||||
@apply font-bold text-black dark:text-white;
|
||||
line-height: 24px;
|
||||
}
|
||||
p {
|
||||
line-height: 24px;
|
||||
}
|
||||
.paragraph {
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
.theme-doc-markdown {
|
||||
.theme-doc-markdown,
|
||||
.markdown {
|
||||
a,
|
||||
p,
|
||||
span,
|
||||
li {
|
||||
@apply leading-loose;
|
||||
@apply leading-relaxed;
|
||||
}
|
||||
a {
|
||||
@apply text-blue-600 dark:text-blue-400;
|
||||
@ -18,7 +19,6 @@
|
||||
ol {
|
||||
padding-left: 28px;
|
||||
li {
|
||||
@apply leading-loose;
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@ -34,14 +34,19 @@
|
||||
}
|
||||
|
||||
h1,
|
||||
h2 {
|
||||
@apply mb-3;
|
||||
h2,
|
||||
h3 {
|
||||
@apply mb-2;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
display: table;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.task-list-item {
|
||||
|
||||
1192
docs/yarn.lock
1192
docs/yarn.lock
File diff suppressed because it is too large
Load Diff
@ -321,7 +321,7 @@ export default class JanModelExtension extends ModelExtension {
|
||||
.toLowerCase()
|
||||
.includes(JanModelExtension._tensorRtEngineFormat)
|
||||
)
|
||||
})?.length > 0 // TODO: NamH find better way (can use basename to check the file name with source url)
|
||||
})?.length > 0 // TODO: find better way (can use basename to check the file name with source url)
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
@ -50,27 +50,27 @@
|
||||
"sources": [
|
||||
{
|
||||
"filename": "config.json",
|
||||
"url": "https://delta.jan.ai/dist/models/turing/windows/TinyJensen-1.1B-Chat-fp16/config.json"
|
||||
"url": "https://delta.jan.ai/dist/models/<gpuarch>/<os>/TinyJensen-1.1B-Chat-fp16/config.json"
|
||||
},
|
||||
{
|
||||
"filename": "rank0.engine",
|
||||
"url": "https://delta.jan.ai/dist/models/turing/windows/TinyJensen-1.1B-Chat-fp16/rank0.engine"
|
||||
"url": "https://delta.jan.ai/dist/models/<gpuarch>/<os>/TinyJensen-1.1B-Chat-fp16/rank0.engine"
|
||||
},
|
||||
{
|
||||
"filename": "tokenizer.model",
|
||||
"url": "https://delta.jan.ai/dist/models/turing/windows/TinyJensen-1.1B-Chat-fp16/tokenizer.model"
|
||||
"url": "https://delta.jan.ai/dist/models/<gpuarch>/<os>/TinyJensen-1.1B-Chat-fp16/tokenizer.model"
|
||||
},
|
||||
{
|
||||
"filename": "special_tokens_map.json",
|
||||
"url": "https://delta.jan.ai/dist/models/turing/windows/TinyJensen-1.1B-Chat-fp16/special_tokens_map.json"
|
||||
"url": "https://delta.jan.ai/dist/models/<gpuarch>/<os>/TinyJensen-1.1B-Chat-fp16/special_tokens_map.json"
|
||||
},
|
||||
{
|
||||
"filename": "tokenizer.json",
|
||||
"url": "https://delta.jan.ai/dist/models/turing/windows/TinyJensen-1.1B-Chat-fp16/tokenizer.json"
|
||||
"url": "https://delta.jan.ai/dist/models/<gpuarch>/<os>/TinyJensen-1.1B-Chat-fp16/tokenizer.json"
|
||||
},
|
||||
{
|
||||
"filename": "tokenizer_config.json",
|
||||
"url": "https://delta.jan.ai/dist/models/turing/windows/TinyJensen-1.1B-Chat-fp16/tokenizer_config.json"
|
||||
"url": "https://delta.jan.ai/dist/models/<gpuarch>/<os>/TinyJensen-1.1B-Chat-fp16/tokenizer_config.json"
|
||||
}
|
||||
],
|
||||
"id": "tinyjensen-1.1b-chat-fp16",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@janhq/tensorrt-llm-extension",
|
||||
"version": "0.0.3",
|
||||
"description": "Enables accelerated inference leveraging Nvidia's TensorRT-LLM for optimal GPU hardware optimizations. Compatible with models in TensorRT-LLM format. Requires Nvidia GPU driver and CUDA Toolkit installation.",
|
||||
"description": "This extension enables Nvidia's TensorRT-LLM for the fastest GPU acceleration. See the [setup guide](https://jan.ai/guides/providers/tensorrt-llm/) for next steps.",
|
||||
"main": "dist/index.js",
|
||||
"node": "dist/node/index.cjs.js",
|
||||
"author": "Jan <service@jan.ai>",
|
||||
@ -12,8 +12,7 @@
|
||||
},
|
||||
"compatibility": {
|
||||
"platform": [
|
||||
"win32",
|
||||
"linux"
|
||||
"win32"
|
||||
],
|
||||
"app": [
|
||||
"0.1.0"
|
||||
|
||||
@ -74,11 +74,15 @@ export const useCreateNewThread = () => {
|
||||
|
||||
const defaultModel = model ?? recommendedModel ?? downloadedModels[0]
|
||||
|
||||
// check last thread message, if there empty last message use can not create thread
|
||||
const lastMessage = threads[0]?.metadata?.lastMessage
|
||||
if (!model) {
|
||||
// if we have model, which means user wants to create new thread from Model hub. Allow them.
|
||||
|
||||
if (!lastMessage && threads.length) {
|
||||
return null
|
||||
// check last thread message, if there empty last message use can not create thread
|
||||
const lastMessage = threads[0]?.metadata?.lastMessage
|
||||
|
||||
if (!lastMessage && threads.length) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
// modify assistant tools when experimental on, retieval toggle enabled in default
|
||||
|
||||
@ -246,7 +246,8 @@ const Advanced = () => {
|
||||
setGpuEnabled(true)
|
||||
setShowNotification(false)
|
||||
snackbar({
|
||||
description: 'Successfully turned on GPU Accelertion',
|
||||
description:
|
||||
'Successfully turned on GPU Acceleration',
|
||||
type: 'success',
|
||||
})
|
||||
setTimeout(() => {
|
||||
@ -257,7 +258,7 @@ const Advanced = () => {
|
||||
setGpuEnabled(false)
|
||||
snackbar({
|
||||
description:
|
||||
'Successfully turned off GPU Accelertion',
|
||||
'Successfully turned off GPU Acceleration',
|
||||
type: 'success',
|
||||
})
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import {
|
||||
systemInformations,
|
||||
} from '@janhq/core'
|
||||
import {
|
||||
Badge,
|
||||
Button,
|
||||
Progress,
|
||||
Tooltip,
|
||||
@ -20,6 +21,8 @@ import {
|
||||
import { InfoCircledIcon } from '@radix-ui/react-icons'
|
||||
import { useAtomValue } from 'jotai'
|
||||
|
||||
import { Marked, Renderer } from 'marked'
|
||||
|
||||
import { extensionManager } from '@/extension'
|
||||
import Extension from '@/extension/Extension'
|
||||
import { installingExtensionAtom } from '@/helpers/atoms/Extension.atom'
|
||||
@ -108,6 +111,8 @@ const TensorRtExtensionItem: React.FC<Props> = ({ item }) => {
|
||||
}
|
||||
}
|
||||
|
||||
const description = marked.parse(item.description ?? '', { async: false })
|
||||
console.log(description)
|
||||
return (
|
||||
<div className="flex w-full items-start justify-between border-b border-border py-4 first:pt-4 last:border-none">
|
||||
<div className="flex-1 flex-shrink-0 space-y-1.5">
|
||||
@ -118,10 +123,12 @@ const TensorRtExtensionItem: React.FC<Props> = ({ item }) => {
|
||||
<p className="whitespace-pre-wrap text-sm font-semibold leading-relaxed">
|
||||
v{item.version}
|
||||
</p>
|
||||
<Badge>Experimental</Badge>
|
||||
</div>
|
||||
<p className="whitespace-pre-wrap leading-relaxed">
|
||||
{item.description}
|
||||
</p>
|
||||
{
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
<div dangerouslySetInnerHTML={{ __html: description }} />
|
||||
}
|
||||
</div>
|
||||
|
||||
{(!compatibility || compatibility['platform']?.includes(PLATFORM)) &&
|
||||
@ -204,7 +211,6 @@ const InstallStateIndicator: React.FC<InstallStateProps> = ({
|
||||
)
|
||||
}
|
||||
|
||||
// TODO: NamH check for dark mode here
|
||||
switch (installState) {
|
||||
case 'Installed':
|
||||
return (
|
||||
@ -223,4 +229,14 @@ const InstallStateIndicator: React.FC<InstallStateProps> = ({
|
||||
}
|
||||
}
|
||||
|
||||
const marked: Marked = new Marked({
|
||||
renderer: {
|
||||
link: (href, title, text) => {
|
||||
return Renderer.prototype.link
|
||||
?.apply(this, [href, title, text])
|
||||
.replace('<a', "<a class='text-blue-500' target='_blank'")
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
export default TensorRtExtensionItem
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user