Merge branch 'main' of https://github.com/janhq/jan into framework
This commit is contained in:
commit
358bc98137
@ -36,7 +36,7 @@ Our life-long mission is to **eliminate work - so human can focus on creation, i
|
||||
|
||||
### Ideal Customer
|
||||
|
||||
Our ideal customer is an AI enthusiast or business who has experienced some limitations with OpenAI, and is keen to find open source alternatives.
|
||||
Our ideal customer is an AI enthusiast or business who has experienced some limitations with current AI solutions and is keen to find open source alternatives.
|
||||
|
||||
### Problems
|
||||
|
||||
@ -53,7 +53,7 @@ _Privacy_
|
||||
- Data protection (e.g. personal data or company data)
|
||||
- Privacy (e.g. nsfw)
|
||||
|
||||
_Customizability_
|
||||
_Customisability_
|
||||
|
||||
- Tinkerability (e.g. ability to change model, experiment)
|
||||
- Niche Models (e.g. fine-tuned, domain-specific models that outperform OpenAI)
|
||||
@ -85,10 +85,11 @@ Jan is a startup with an open source business model. We believe in the need for
|
||||
|
||||
### Build in Public
|
||||
|
||||
We use Github to build in public, and welcome anyone to join in.
|
||||
We use GitHub to build in public and welcome anyone to join in.
|
||||
|
||||
- [Jan's Kanban](https://github.com/orgs/janhq/projects/5)
|
||||
- [Jan's Roadmap](https://github.com/orgs/janhq/projects/5/views/29)
|
||||
- [Jan's Newsletter](https://newsletter.jan.ai)
|
||||
|
||||
### Bootstrapped
|
||||
|
||||
@ -98,7 +99,7 @@ We appreciate any business that can balance growth with cashflow/profitability.
|
||||
|
||||
### Remote Team
|
||||
|
||||
Jan has a fully-remote team. We are mainly based in the Asia timezone. We use [Discord](https://discord.gg/af6SaTdzpx) and [Github](https://github.com/janhq) to work.
|
||||
Jan has a fully-remote team. We are mainly based in the APAC timezone. We use [Discord](https://discord.gg/af6SaTdzpx) and [Github](https://github.com/janhq) to work.
|
||||
|
||||
## Contact
|
||||
|
||||
@ -109,6 +110,7 @@ Drop us a message in our [Discord](https://discord.gg/af6SaTdzpx) and we'll get
|
||||
- `#general`: for general discussion
|
||||
- `#jan-dev`: for Jan-related questions
|
||||
- `#nitro-dev`: for Nitro-related questions
|
||||
- '#bd-inquiries': for enterprise license queries
|
||||
|
||||
### Careers
|
||||
|
||||
|
||||
@ -1,20 +1,22 @@
|
||||
import { useState } from 'react'
|
||||
|
||||
import { getUserSpace, joinPath, openFileExplorer } from '@janhq/core'
|
||||
import { useAtomValue, useSetAtom } from 'jotai'
|
||||
import { useAtom, useAtomValue } from 'jotai'
|
||||
import {
|
||||
PanelLeftIcon,
|
||||
PenSquareIcon,
|
||||
PanelRightIcon,
|
||||
MoreVerticalIcon,
|
||||
FolderOpenIcon,
|
||||
Code2Icon,
|
||||
PanelLeftCloseIcon,
|
||||
PanelRightCloseIcon,
|
||||
} from 'lucide-react'
|
||||
|
||||
import { twMerge } from 'tailwind-merge'
|
||||
|
||||
import CommandSearch from '@/containers/Layout/TopBar/CommandSearch'
|
||||
|
||||
import { showLeftSideBarAtom } from '@/containers/Providers/KeyListener'
|
||||
|
||||
import { MainViewState } from '@/constants/screens'
|
||||
|
||||
import { useClickOutside } from '@/hooks/useClickOutside'
|
||||
@ -31,7 +33,8 @@ const TopBar = () => {
|
||||
const { mainViewState } = useMainViewState()
|
||||
const { requestCreateNewThread } = useCreateNewThread()
|
||||
const { assistants } = useGetAssistants()
|
||||
const setShowRightSideBar = useSetAtom(showRightSideBarAtom)
|
||||
const [showRightSideBar, setShowRightSideBar] = useAtom(showRightSideBarAtom)
|
||||
const [showLeftSideBar, setShowLeftSideBar] = useAtom(showLeftSideBarAtom)
|
||||
const showing = useAtomValue(showRightSideBarAtom)
|
||||
const threadStates = useAtomValue(threadStatesAtom)
|
||||
const [more, setMore] = useState(false)
|
||||
@ -105,10 +108,16 @@ const TopBar = () => {
|
||||
<div className="relative w-full">
|
||||
<div className="absolute left-16 h-full w-60 border-r border-border">
|
||||
<div className="flex h-full w-full items-center justify-between">
|
||||
<div className="cursor-pointer">
|
||||
<PanelLeftIcon
|
||||
<div
|
||||
className="unset-drag cursor-pointer"
|
||||
onClick={() => setShowLeftSideBar((show) => !show)}
|
||||
>
|
||||
<PanelRightCloseIcon
|
||||
size={20}
|
||||
className="invisible text-muted-foreground"
|
||||
className={twMerge(
|
||||
'ml-4 text-muted-foreground',
|
||||
showLeftSideBar && 'rotate-180'
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
@ -196,7 +205,13 @@ const TopBar = () => {
|
||||
className="unset-drag absolute right-4 cursor-pointer"
|
||||
onClick={() => setShowRightSideBar((show) => !show)}
|
||||
>
|
||||
<PanelRightIcon size={20} className="text-muted-foreground" />
|
||||
<PanelLeftCloseIcon
|
||||
size={20}
|
||||
className={twMerge(
|
||||
'text-muted-foreground',
|
||||
showRightSideBar && 'rotate-180'
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -149,7 +149,7 @@ const Advanced = () => {
|
||||
</p>
|
||||
</div>
|
||||
<Modal>
|
||||
<ModalTrigger>
|
||||
<ModalTrigger asChild>
|
||||
<Button size="sm" themes="secondary">
|
||||
Show
|
||||
</Button>
|
||||
@ -207,6 +207,30 @@ const Advanced = () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex w-full gap-4 border-b border-border pb-2">
|
||||
<div className="w-1/2">
|
||||
<div className="py-2">
|
||||
<ShortCut menu="B" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-full">
|
||||
<div className="py-2">
|
||||
<p>Toggle collapsible left panel</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex w-full gap-4 border-b border-border pb-2">
|
||||
<div className="w-1/2">
|
||||
<div className="py-2">
|
||||
<ShortCut menu="," />
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-full">
|
||||
<div className="py-2">
|
||||
<p>Navigate to setting page</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex w-full gap-4 border-b border-border pb-2">
|
||||
<div className="w-1/2">
|
||||
<div className="py-2">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user