feat: add new version notice in tabby-ui (#640)
* refactor: extract useHealth hook * feat: add new version noticeadd-llama-model-converter
parent
9ecbf9031f
commit
62054cb4f1
|
|
@ -1,19 +1,15 @@
|
|||
"use client";
|
||||
"use client"
|
||||
|
||||
import { buttonVariants } from "@/components/ui/button"
|
||||
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog";
|
||||
import { IconSlack } from "@/components/ui/icons"
|
||||
import { Separator } from "@/components/ui/separator";
|
||||
import { useHealth } from "@/lib/hooks/use-health";
|
||||
import { PropsWithChildren, useEffect, useState } from "react";
|
||||
|
||||
const COMMUNITY_DIALOG_SHOWN_KEY = "community-dialog-shown";
|
||||
|
||||
export default function IndexPage() {
|
||||
const [healthInfo, setHealthInfo] = useState<HealthInfo | undefined>();
|
||||
useEffect(() => {
|
||||
fetchHealth().then(setHealthInfo);
|
||||
}, []);
|
||||
|
||||
const [open, setOpen] = useState(false);
|
||||
useEffect(() => {
|
||||
if (!localStorage.getItem(COMMUNITY_DIALOG_SHOWN_KEY)) {
|
||||
|
|
@ -22,31 +18,8 @@ export default function IndexPage() {
|
|||
}
|
||||
}, []);
|
||||
|
||||
const gettingStartedMarkDown = `
|
||||
You can find our documentation [here](https://tabby.tabbyml.com/docs/getting-started).
|
||||
- 💻 [IDE/Editor Extensions](https://tabby.tabbyml.com/docs/extensions/)
|
||||
- ⚙️ [Configuration](https://tabby.tabbyml.com/docs/configuration)`;
|
||||
return <div className="grow flex justify-center items-center">
|
||||
<div className="w-2/3 lg:w-1/3 flex flex-col gap-3">
|
||||
{healthInfo && <>
|
||||
<h1><span className="font-bold">Congratulations</span>, your tabby instance is running!</h1>
|
||||
<span className="flex gap-1">
|
||||
<a target="_blank" href={`https://github.com/TabbyML/tabby/releases/tag/${healthInfo.version.git_describe}`}><img src={`https://img.shields.io/badge/version-${toBadgeString(healthInfo.version.git_describe)}-green`} /></a>
|
||||
<img src={`https://img.shields.io/badge/device-${healthInfo.device}-blue`} />
|
||||
<img src={`https://img.shields.io/badge/model-${toBadgeString(healthInfo.model)}-red`} />
|
||||
</span>
|
||||
<Separator />
|
||||
|
||||
<p>
|
||||
You can find our documentation <Link href="https://tabby.tabbyml.com/docs/getting-started">here</Link>.
|
||||
<ul className="mt-2">
|
||||
<li>💻 <Link href="https://tabby.tabbyml.com/docs/extensions/">IDE/Editor Extensions</Link></li>
|
||||
<li>⚙️ <Link href="https://tabby.tabbyml.com/docs/configuration">Configuration</Link></li>
|
||||
</ul>
|
||||
</p>
|
||||
</>
|
||||
}
|
||||
</div>
|
||||
return <div className="grow flex justify-center items-center" >
|
||||
<MainPanel />
|
||||
<Dialog open={open} onOpenChange={setOpen}>
|
||||
<DialogContent>
|
||||
<DialogHeader className="gap-3">
|
||||
|
|
@ -63,32 +36,6 @@ export default function IndexPage() {
|
|||
</div>
|
||||
}
|
||||
|
||||
interface HealthInfo {
|
||||
device: string,
|
||||
model: string,
|
||||
version: {
|
||||
build_date: string,
|
||||
git_describe: string,
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchHealth(): Promise<HealthInfo> {
|
||||
if (process.env.NODE_ENV === "production") {
|
||||
const resp = await fetch("/v1/health");
|
||||
return await resp.json() as HealthInfo;
|
||||
} else {
|
||||
return {
|
||||
"device": "metal",
|
||||
"model": "TabbyML/StarCoder-1B",
|
||||
"version": {
|
||||
"build_date": "2023-10-21",
|
||||
"git_describe": "v0.3.1",
|
||||
"git_sha": "d5fdcf3a2cbe0f6b45d6e8ef3255e6a18f840132"
|
||||
}
|
||||
} as HealthInfo
|
||||
}
|
||||
}
|
||||
|
||||
interface LinkProps {
|
||||
href: string
|
||||
}
|
||||
|
|
@ -99,4 +46,29 @@ function Link({ href, children }: PropsWithChildren<LinkProps>) {
|
|||
|
||||
function toBadgeString(str: string) {
|
||||
return encodeURIComponent(str.replaceAll("-", "--"));
|
||||
}
|
||||
|
||||
function MainPanel() {
|
||||
const { data: healthInfo } = useHealth();
|
||||
|
||||
if (!healthInfo) return
|
||||
|
||||
return <div className="w-2/3 lg:w-1/3 flex flex-col gap-3">
|
||||
<h1><span className="font-bold">Congratulations</span>, your tabby instance is running!</h1>
|
||||
<span className="flex gap-1">
|
||||
<a target="_blank" href={`https://github.com/TabbyML/tabby/releases/tag/${healthInfo.version.git_describe}`}><img src={`https://img.shields.io/badge/version-${toBadgeString(healthInfo.version.git_describe)}-green`} /></a>
|
||||
<img src={`https://img.shields.io/badge/device-${healthInfo.device}-blue`} />
|
||||
<img src={`https://img.shields.io/badge/model-${toBadgeString(healthInfo.model)}-red`} />
|
||||
</span>
|
||||
|
||||
<Separator />
|
||||
|
||||
<span>
|
||||
You can find our documentation <Link href="https://tabby.tabbyml.com/docs/getting-started">here</Link>.
|
||||
<ul className="mt-2">
|
||||
<li>💻 <Link href="https://tabby.tabbyml.com/docs/extensions/">IDE/Editor Extensions</Link></li>
|
||||
<li>⚙️ <Link href="https://tabby.tabbyml.com/docs/configuration">Configuration</Link></li>
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
}
|
||||
|
|
@ -4,9 +4,12 @@ import * as React from 'react'
|
|||
|
||||
import { cn } from '@/lib/utils'
|
||||
import { buttonVariants } from '@/components/ui/button'
|
||||
import { IconGitHub, IconExternalLink } from '@/components/ui/icons'
|
||||
import { IconGitHub, IconExternalLink, IconNotice } from '@/components/ui/icons'
|
||||
import dynamic from 'next/dynamic'
|
||||
import Link from 'next/link'
|
||||
import { useHealth } from '@/lib/hooks/use-health'
|
||||
import { useLatestRelease } from '@/lib/hooks/use-latest-release'
|
||||
import { compare } from 'compare-versions'
|
||||
|
||||
const ThemeToggle = dynamic(
|
||||
() => import('@/components/theme-toggle').then(x => x.ThemeToggle),
|
||||
|
|
@ -14,10 +17,12 @@ const ThemeToggle = dynamic(
|
|||
)
|
||||
|
||||
export function Header() {
|
||||
const [isChatEnabled, setIsChatEnabled] = React.useState(false);
|
||||
React.useEffect(() => {
|
||||
fetchIsChatEnabled().then(setIsChatEnabled);
|
||||
}, []);
|
||||
const { data } = useHealth();
|
||||
const isChatEnabled = !!data?.chat_model;
|
||||
const version = data?.version?.git_describe;
|
||||
const { data: latestRelease } = useLatestRelease();
|
||||
const newVersionAvailable = version && latestRelease && compare(latestRelease.name, version, '>');
|
||||
|
||||
return (
|
||||
<header className="sticky top-0 z-50 flex items-center justify-between w-full h-16 px-4 border-b shrink-0 bg-gradient-to-b from-background/10 via-background/50 to-background/80 backdrop-blur-xl">
|
||||
<div className="flex items-center">
|
||||
|
|
@ -30,6 +35,15 @@ export function Header() {
|
|||
</Link>}
|
||||
</div>
|
||||
<div className="flex items-center justify-end space-x-2">
|
||||
{newVersionAvailable && <a
|
||||
target="_blank"
|
||||
href="https://github.com/TabbyML/tabby/releases/latest"
|
||||
rel="noopener noreferrer"
|
||||
className={buttonVariants({ variant: 'ghost' })}
|
||||
>
|
||||
<IconNotice className='text-yellow-600 dark:text-yellow-400' />
|
||||
<span className="hidden ml-2 md:flex">New version ({latestRelease.name}) available</span>
|
||||
</a>}
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://github.com/TabbyML/tabby"
|
||||
|
|
@ -51,14 +65,4 @@ export function Header() {
|
|||
</div>
|
||||
</header>
|
||||
)
|
||||
}
|
||||
|
||||
async function fetchIsChatEnabled() {
|
||||
if (process.env.NODE_ENV === "production") {
|
||||
const resp = await fetch("/v1/health");
|
||||
const json = await resp.json();
|
||||
return !!json.chat_model;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -513,6 +513,26 @@ function IconSlack({
|
|||
</svg>
|
||||
)
|
||||
}
|
||||
function IconNotice({
|
||||
className,
|
||||
...props
|
||||
}: React.ComponentProps<'svg'>) {
|
||||
return (<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
className={cn('h-4 w-4', className)}
|
||||
viewBox="0 0 24 24"
|
||||
{...props}
|
||||
>
|
||||
<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/>
|
||||
</svg>)
|
||||
}
|
||||
|
||||
|
||||
|
||||
export {
|
||||
IconEdit,
|
||||
|
|
@ -542,5 +562,6 @@ export {
|
|||
IconUsers,
|
||||
IconExternalLink,
|
||||
IconChevronUpDown,
|
||||
IconSlack
|
||||
IconSlack,
|
||||
IconNotice
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
"use client"
|
||||
|
||||
import useSWRImmutable from 'swr/immutable';
|
||||
import { SWRResponse } from 'swr'
|
||||
|
||||
export interface HealthInfo {
|
||||
device: string,
|
||||
model: string,
|
||||
chat_model?: string,
|
||||
version: {
|
||||
build_date: string,
|
||||
git_describe: string,
|
||||
}
|
||||
}
|
||||
|
||||
export function useHealth(): SWRResponse<HealthInfo> {
|
||||
let fetcher = (url: string) => fetch(url).then(x => x.json());
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
fetcher = async (url: string) => ({
|
||||
"device": "metal",
|
||||
"model": "TabbyML/StarCoder-1B",
|
||||
"version": {
|
||||
"build_date": "2023-10-21",
|
||||
"git_describe": "v0.3.1",
|
||||
"git_sha": "d5fdcf3a2cbe0f6b45d6e8ef3255e6a18f840132"
|
||||
}
|
||||
});
|
||||
}
|
||||
return useSWRImmutable('/v1/health', fetcher);
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
"use client"
|
||||
|
||||
import useSWRImmutable from 'swr/immutable';
|
||||
import { SWRResponse } from 'swr'
|
||||
|
||||
interface ReleaseInfo {
|
||||
name: string
|
||||
}
|
||||
|
||||
export function useLatestRelease(): SWRResponse<ReleaseInfo> {
|
||||
const fetcher = (url: string) => fetch(url).then(x => x.json());
|
||||
return useSWRImmutable('https://api.github.com/repos/TabbyML/tabby/releases/latest', fetcher)
|
||||
}
|
||||
|
|
@ -29,6 +29,7 @@
|
|||
"ai": "^2.1.6",
|
||||
"class-variance-authority": "^0.4.0",
|
||||
"clsx": "^1.2.1",
|
||||
"compare-versions": "^6.1.0",
|
||||
"focus-trap-react": "^10.1.1",
|
||||
"nanoid": "^4.0.2",
|
||||
"next": "^13.4.7",
|
||||
|
|
@ -43,7 +44,8 @@
|
|||
"react-syntax-highlighter": "^15.5.0",
|
||||
"react-textarea-autosize": "^8.4.1",
|
||||
"remark-gfm": "^3.0.1",
|
||||
"remark-math": "^5.1.1"
|
||||
"remark-math": "^5.1.1",
|
||||
"swr": "^2.2.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/typography": "^0.5.9",
|
||||
|
|
|
|||
|
|
@ -1215,7 +1215,7 @@ class-variance-authority@^0.4.0:
|
|||
resolved "https://registry.yarnpkg.com/class-variance-authority/-/class-variance-authority-0.4.0.tgz#2ff1b5a836a68ce7a2dac0cc12f6fdc50e47f666"
|
||||
integrity sha512-74enNN8O9ZNieycac/y8FxqgyzZhZbxmCitAtAeUrLPlxjSd5zA7LfpprmxEcOmQBnaGs5hYhiSGnJ0mqrtBLQ==
|
||||
|
||||
client-only@0.0.1:
|
||||
client-only@0.0.1, client-only@^0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
|
||||
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
|
||||
|
|
@ -1264,6 +1264,11 @@ commander@^8.3.0:
|
|||
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
|
||||
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
|
||||
|
||||
compare-versions@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a"
|
||||
integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
|
@ -4042,6 +4047,14 @@ swr@2.2.0:
|
|||
dependencies:
|
||||
use-sync-external-store "^1.2.0"
|
||||
|
||||
swr@^2.2.4:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/swr/-/swr-2.2.4.tgz#03ec4c56019902fbdc904d78544bd7a9a6fa3f07"
|
||||
integrity sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==
|
||||
dependencies:
|
||||
client-only "^0.0.1"
|
||||
use-sync-external-store "^1.2.0"
|
||||
|
||||
swrev@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/swrev/-/swrev-4.0.0.tgz#83da6983c7ef9d71ac984a9b169fc197cbf18ff8"
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{21050:function(e,n,r){Promise.resolve().then(r.t.bind(r,58877,23)),Promise.resolve().then(r.bind(r,79446)),Promise.resolve().then(r.bind(r,78495)),Promise.resolve().then(r.t.bind(r,6928,23)),Promise.resolve().then(r.t.bind(r,33195,23)),Promise.resolve().then(r.bind(r,5925))},79446:function(e,n,r){"use strict";r.r(n),r.d(n,{Header:function(){return b}});var t=r(57437);r(2265);var s=r(39311),a=r(93023),i=r(84168),l=r(30415),o=r.n(l),d=r(61396),c=r.n(d),u=r(13287),f=r(45362),h=r(73737);let m=o()(()=>r.e(376).then(r.bind(r,15376)).then(e=>e.ThemeToggle),{loadableGenerated:{webpack:()=>[15376]},ssr:!1});function b(){var e;let{data:n}=(0,u.Q)(),r=!!(null==n?void 0:n.chat_model),l=null==n?void 0:null===(e=n.version)||void 0===e?void 0:e.git_describe,{data:o}=(0,f.Z)("https://api.github.com/repos/TabbyML/tabby/releases/latest",e=>fetch(e).then(e=>e.json())),d=l&&o&&(0,h.q)(o.name,l,">");return(0,t.jsxs)("header",{className:"sticky top-0 z-50 flex items-center justify-between w-full h-16 px-4 border-b shrink-0 bg-gradient-to-b from-background/10 via-background/50 to-background/80 backdrop-blur-xl",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(m,{}),(0,t.jsx)(c(),{href:"/",className:(0,s.cn)((0,a.d)({variant:"link"})),children:"Home"}),r&&(0,t.jsx)(c(),{href:"/playground",className:(0,s.cn)((0,a.d)({variant:"link"})),children:"Playground"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-end space-x-2",children:[d&&(0,t.jsxs)("a",{target:"_blank",href:"https://github.com/TabbyML/tabby/releases/latest",rel:"noopener noreferrer",className:(0,a.d)({variant:"ghost"}),children:[(0,t.jsx)(i.Qs,{className:"text-yellow-600 dark:text-yellow-400"}),(0,t.jsxs)("span",{className:"hidden ml-2 md:flex",children:["New version (",o.name,") available"]})]}),(0,t.jsxs)("a",{target:"_blank",href:"https://github.com/TabbyML/tabby",rel:"noopener noreferrer",className:(0,s.cn)((0,a.d)({variant:"outline"})),children:[(0,t.jsx)(i.Mr,{}),(0,t.jsx)("span",{className:"hidden ml-2 md:flex",children:"GitHub"})]}),(0,t.jsxs)("a",{target:"_blank",href:"/swagger-ui",rel:"noopener noreferrer",className:(0,s.cn)((0,a.d)({variant:"outline"})),children:[(0,t.jsx)(i.Tq,{}),(0,t.jsx)("span",{className:"hidden ml-2 md:flex",children:"OpenAPI"})]})]})]})}},78495:function(e,n,r){"use strict";r.r(n),r.d(n,{Providers:function(){return i}});var t=r(57437);r(2265);var s=r(6435),a=r(95482);function i(e){let{children:n,...r}=e;return(0,t.jsx)(s.f,{...r,children:(0,t.jsx)(a.pn,{children:n})})}},95482:function(e,n,r){"use strict";r.d(n,{_v:function(){return c},aJ:function(){return d},pn:function(){return l},u:function(){return o}});var t=r(57437),s=r(2265),a=r(43212),i=r(39311);let l=a.zt,o=a.fC,d=a.xz,c=s.forwardRef((e,n)=>{let{className:r,sideOffset:s=4,...l}=e;return(0,t.jsx)(a.VY,{ref:n,sideOffset:s,className:(0,i.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",r),...l})});c.displayName=a.VY.displayName},13287:function(e,n,r){"use strict";r.d(n,{Q:function(){return s}});var t=r(45362);function s(){return(0,t.Z)("/v1/health",e=>fetch(e).then(e=>e.json()),{fallbackData:void 0})}},58877:function(){}},function(e){e.O(0,[400,406,362,563,894,971,864,744],function(){return e(e.s=21050)}),_N_E=e.O()}]);
|
||||
|
|
@ -1 +0,0 @@
|
|||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{21050:function(e,n,r){Promise.resolve().then(r.t.bind(r,58877,23)),Promise.resolve().then(r.bind(r,78963)),Promise.resolve().then(r.bind(r,78495)),Promise.resolve().then(r.t.bind(r,6928,23)),Promise.resolve().then(r.t.bind(r,33195,23)),Promise.resolve().then(r.bind(r,5925))},78963:function(e,n,r){"use strict";r.r(n),r.d(n,{Header:function(){return h}});var t=r(57437),s=r(2265),i=r(39311),a=r(93023),o=r(84168),d=r(30415),l=r.n(d),c=r(61396),f=r.n(c);let u=l()(()=>r.e(376).then(r.bind(r,15376)).then(e=>e.ThemeToggle),{loadableGenerated:{webpack:()=>[15376]},ssr:!1});function h(){let[e,n]=s.useState(!1);return s.useEffect(()=>{m().then(n)},[]),(0,t.jsxs)("header",{className:"sticky top-0 z-50 flex items-center justify-between w-full h-16 px-4 border-b shrink-0 bg-gradient-to-b from-background/10 via-background/50 to-background/80 backdrop-blur-xl",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(u,{}),(0,t.jsx)(f(),{href:"/",className:(0,i.cn)((0,a.d)({variant:"link"})),children:"Home"}),e&&(0,t.jsx)(f(),{href:"/playground",className:(0,i.cn)((0,a.d)({variant:"link"})),children:"Playground"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-end space-x-2",children:[(0,t.jsxs)("a",{target:"_blank",href:"https://github.com/TabbyML/tabby",rel:"noopener noreferrer",className:(0,i.cn)((0,a.d)({variant:"outline"})),children:[(0,t.jsx)(o.Mr,{}),(0,t.jsx)("span",{className:"hidden ml-2 md:flex",children:"GitHub"})]}),(0,t.jsxs)("a",{target:"_blank",href:"/swagger-ui",rel:"noopener noreferrer",className:(0,i.cn)((0,a.d)({variant:"outline"})),children:[(0,t.jsx)(o.Tq,{}),(0,t.jsx)("span",{className:"hidden ml-2 md:flex",children:"OpenAPI"})]})]})]})}async function m(){{let e=await fetch("/v1/health"),n=await e.json();return!!n.chat_model}}},78495:function(e,n,r){"use strict";r.r(n),r.d(n,{Providers:function(){return a}});var t=r(57437);r(2265);var s=r(6435),i=r(95482);function a(e){let{children:n,...r}=e;return(0,t.jsx)(s.f,{...r,children:(0,t.jsx)(i.pn,{children:n})})}},95482:function(e,n,r){"use strict";r.d(n,{_v:function(){return c},aJ:function(){return l},pn:function(){return o},u:function(){return d}});var t=r(57437),s=r(2265),i=r(43212),a=r(39311);let o=i.zt,d=i.fC,l=i.xz,c=s.forwardRef((e,n)=>{let{className:r,sideOffset:s=4,...o}=e;return(0,t.jsx)(i.VY,{ref:n,sideOffset:s,className:(0,a.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",r),...o})});c.displayName=i.VY.displayName},58877:function(){}},function(e){e.O(0,[358,406,832,894,971,864,744],function(){return e(e.s=21050)}),_N_E=e.O()}]);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
!function(){"use strict";var t,e,n,r,o,u,i,c,f,a={},l={};function s(t){var e=l[t];if(void 0!==e)return e.exports;var n=l[t]={exports:{}},r=!0;try{a[t](n,n.exports,s),r=!1}finally{r&&delete l[t]}return n.exports}s.m=a,t=[],s.O=function(e,n,r,o){if(n){o=o||0;for(var u=t.length;u>0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,r,o];return}for(var i=1/0,u=0;u<t.length;u++){for(var n=t[u][0],r=t[u][1],o=t[u][2],c=!0,f=0;f<n.length;f++)i>=o&&Object.keys(s.O).every(function(t){return s.O[t](n[f])})?n.splice(f--,1):(c=!1,o<i&&(i=o));if(c){t.splice(u--,1);var a=r()}}return a},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,{a:e}),e},n=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__},s.t=function(t,r){if(1&r&&(t=this(t)),8&r||"object"==typeof t&&t&&(4&r&&t.__esModule||16&r&&"function"==typeof t.then))return t;var o=Object.create(null);s.r(o);var u={};e=e||[null,n({}),n([]),n(n)];for(var i=2&r&&t;"object"==typeof i&&!~e.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(e){u[e]=function(){return t[e]}});return u.default=function(){return t},s.d(o,u),o},s.d=function(t,e){for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.f={},s.e=function(t){return Promise.all(Object.keys(s.f).reduce(function(e,n){return s.f[n](t,e),e},[]))},s.u=function(t){return"static/chunks/"+t+".2b6536d53b303d15.js"},s.miniCssF=function(t){return"static/css/616b1d8d470f862f.css"},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r={},o="_N_E:",s.l=function(t,e,n,u){if(r[t]){r[t].push(e);return}if(void 0!==n)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==t||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+n),i.src=s.tu(t)),r[t]=[e];var d=function(e,n){i.onerror=i.onload=null,clearTimeout(p);var o=r[t];if(delete r[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(t){return t(n)}),e)return e(n)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(t){return s.tt().createScriptURL(t)},s.p="/_next/",i={272:0},s.f.j=function(t,e){var n=s.o(i,t)?i[t]:void 0;if(0!==n){if(n)e.push(n[2]);else if(272!=t){var r=new Promise(function(e,r){n=i[t]=[e,r]});e.push(n[2]=r);var o=s.p+s.u(t),u=Error();s.l(o,function(e){if(s.o(i,t)&&(0!==(n=i[t])&&(i[t]=void 0),n)){var r=e&&("load"===e.type?"missing":e.type),o=e&&e.target&&e.target.src;u.message="Loading chunk "+t+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+t,t)}else i[t]=0}},s.O.j=function(t){return 0===i[t]},c=function(t,e){var n,r,o=e[0],u=e[1],c=e[2],f=0;if(o.some(function(t){return 0!==i[t]})){for(n in u)s.o(u,n)&&(s.m[n]=u[n]);if(c)var a=c(s)}for(t&&t(e);f<o.length;f++)r=o[f],s.o(i,r)&&i[r]&&i[r][0](),i[r]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f)),s.nc=void 0}();
|
||||
|
|
@ -0,0 +1 @@
|
|||
!function(){"use strict";var e,t,n,r,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}},r=!0;try{a[e](n,n.exports,s),r=!1}finally{r&&delete l[e]}return n.exports}s.m=a,e=[],s.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],c=!0,f=0;f<n.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](n[f])})?n.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=r()}}return a},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,n){return s.f[n](e,t),t},[]))},s.u=function(e){return"static/chunks/"+e+".2b6536d53b303d15.js"},s.miniCssF=function(e){return"static/css/ea73550058928240.css"},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",s.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+n),i.src=s.tu(e)),r[e]=[t];var d=function(t,n){i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/_next/",i={272:0},s.f.j=function(e,t){var n=s.o(i,e)?i[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(272!=e){var r=new Promise(function(t,r){n=i[e]=[t,r]});t.push(n[2]=r);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(n=i[e])&&(i[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var n,r,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(n in u)s.o(u,n)&&(s.m[n]=u[n]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)r=o[f],s.o(i,r)&&i[r]&&i[r][0](),i[r]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f)),s.nc=void 0}();
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,14 +1,14 @@
|
|||
1:HL["/_next/static/media/86fdec36ddd9097e-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
2:HL["/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
3:HL["/_next/static/css/616b1d8d470f862f.css","style"]
|
||||
0:["5Ardx8NLn9MFJ4mWUnSbO",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/616b1d8d470f862f.css","precedence":"next"}]],"$L5"]]]]
|
||||
6:I{"id":5925,"chunks":["358:static/chunks/358-dc819165169f937b.js","406:static/chunks/406-35481e1b86c5b377.js","832:static/chunks/832-06362e8382d18069.js","894:static/chunks/894-25d9916957b869f3.js","185:static/chunks/app/layout-ac85f503669d9498.js"],"name":"Toaster","async":false}
|
||||
7:I{"id":78495,"chunks":["358:static/chunks/358-dc819165169f937b.js","406:static/chunks/406-35481e1b86c5b377.js","832:static/chunks/832-06362e8382d18069.js","894:static/chunks/894-25d9916957b869f3.js","185:static/chunks/app/layout-ac85f503669d9498.js"],"name":"Providers","async":false}
|
||||
8:I{"id":78963,"chunks":["358:static/chunks/358-dc819165169f937b.js","406:static/chunks/406-35481e1b86c5b377.js","832:static/chunks/832-06362e8382d18069.js","894:static/chunks/894-25d9916957b869f3.js","185:static/chunks/app/layout-ac85f503669d9498.js"],"name":"Header","async":false}
|
||||
9:I{"id":81443,"chunks":["272:static/chunks/webpack-425a00248a63a7de.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
a:I{"id":18639,"chunks":["272:static/chunks/webpack-425a00248a63a7de.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
c:I{"id":65146,"chunks":["272:static/chunks/webpack-425a00248a63a7de.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
d:I{"id":25454,"chunks":["358:static/chunks/358-dc819165169f937b.js","703:static/chunks/703-35aa8c1eaf8df6ef.js","894:static/chunks/894-25d9916957b869f3.js","931:static/chunks/app/page-31b02197d46dcfe5.js"],"name":"","async":false}
|
||||
3:HL["/_next/static/css/ea73550058928240.css","style"]
|
||||
0:["Ij3G3VZs37tE5vfE2Vg4Q",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ea73550058928240.css","precedence":"next"}]],"$L5"]]]]
|
||||
6:I{"id":5925,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","406:static/chunks/406-35481e1b86c5b377.js","362:static/chunks/362-ae0994d279f3f3bb.js","563:static/chunks/563-52218f82bb9eb225.js","894:static/chunks/894-06b613a845aedd59.js","185:static/chunks/app/layout-3e48d1573c0ecb11.js"],"name":"Toaster","async":false}
|
||||
7:I{"id":78495,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","406:static/chunks/406-35481e1b86c5b377.js","362:static/chunks/362-ae0994d279f3f3bb.js","563:static/chunks/563-52218f82bb9eb225.js","894:static/chunks/894-06b613a845aedd59.js","185:static/chunks/app/layout-3e48d1573c0ecb11.js"],"name":"Providers","async":false}
|
||||
8:I{"id":79446,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","406:static/chunks/406-35481e1b86c5b377.js","362:static/chunks/362-ae0994d279f3f3bb.js","563:static/chunks/563-52218f82bb9eb225.js","894:static/chunks/894-06b613a845aedd59.js","185:static/chunks/app/layout-3e48d1573c0ecb11.js"],"name":"Header","async":false}
|
||||
9:I{"id":81443,"chunks":["272:static/chunks/webpack-8526d963d32b72d9.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
a:I{"id":18639,"chunks":["272:static/chunks/webpack-8526d963d32b72d9.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
c:I{"id":65146,"chunks":["272:static/chunks/webpack-8526d963d32b72d9.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
d:I{"id":25454,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","362:static/chunks/362-ae0994d279f3f3bb.js","703:static/chunks/703-35aa8c1eaf8df6ef.js","894:static/chunks/894-06b613a845aedd59.js","931:static/chunks/app/page-e7141b56a55588af.js"],"name":"","async":false}
|
||||
4:[null,["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{}],["$","body",null,{"className":"font-sans antialiased __variable_e66fe9 __variable_bd9c35","children":[["$","$L6",null,{}],["$","$L7",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","div",null,{"className":"flex flex-col min-h-screen","children":[["$","$L8",null,{}],["$","main",null,{"className":"flex flex-col flex-1 bg-muted/50","children":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$Lb",["$","$Lc",null,{"propsForComponent":{"params":{}},"Component":"$d"}],null],"segment":"__PAGE__"},"styles":[]}]}]]}],null]}]]}]]}],null]
|
||||
5:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Tabby - Home"}],["$","meta","2",{"name":"description","content":"Tabby, an opensource, self-hosted AI coding assistant."}],["$","meta","3",{"name":"theme-color","media":"(prefers-color-scheme: light)","content":"white"}],["$","meta","4",{"name":"theme-color","media":"(prefers-color-scheme: dark)","content":"black"}],["$","meta","5",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","6",{"name":"next-size-adjust"}]]
|
||||
b:null
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,13 +1,13 @@
|
|||
1:HL["/_next/static/media/86fdec36ddd9097e-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
2:HL["/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
3:HL["/_next/static/css/616b1d8d470f862f.css","style"]
|
||||
0:["5Ardx8NLn9MFJ4mWUnSbO",[[["",{"children":["playground",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/616b1d8d470f862f.css","precedence":"next"}]],"$L5"]]]]
|
||||
6:I{"id":5925,"chunks":["358:static/chunks/358-dc819165169f937b.js","406:static/chunks/406-35481e1b86c5b377.js","832:static/chunks/832-06362e8382d18069.js","894:static/chunks/894-25d9916957b869f3.js","185:static/chunks/app/layout-ac85f503669d9498.js"],"name":"Toaster","async":false}
|
||||
7:I{"id":78495,"chunks":["358:static/chunks/358-dc819165169f937b.js","406:static/chunks/406-35481e1b86c5b377.js","832:static/chunks/832-06362e8382d18069.js","894:static/chunks/894-25d9916957b869f3.js","185:static/chunks/app/layout-ac85f503669d9498.js"],"name":"Providers","async":false}
|
||||
8:I{"id":78963,"chunks":["358:static/chunks/358-dc819165169f937b.js","406:static/chunks/406-35481e1b86c5b377.js","832:static/chunks/832-06362e8382d18069.js","894:static/chunks/894-25d9916957b869f3.js","185:static/chunks/app/layout-ac85f503669d9498.js"],"name":"Header","async":false}
|
||||
9:I{"id":81443,"chunks":["272:static/chunks/webpack-425a00248a63a7de.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
a:I{"id":18639,"chunks":["272:static/chunks/webpack-425a00248a63a7de.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
c:I{"id":12202,"chunks":["358:static/chunks/358-dc819165169f937b.js","406:static/chunks/406-35481e1b86c5b377.js","978:static/chunks/978-6768c629d09f4ba9.js","894:static/chunks/894-25d9916957b869f3.js","383:static/chunks/app/playground/page-5dcb481453d0a823.js"],"name":"Chat","async":false}
|
||||
3:HL["/_next/static/css/ea73550058928240.css","style"]
|
||||
0:["Ij3G3VZs37tE5vfE2Vg4Q",[[["",{"children":["playground",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ea73550058928240.css","precedence":"next"}]],"$L5"]]]]
|
||||
6:I{"id":5925,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","406:static/chunks/406-35481e1b86c5b377.js","362:static/chunks/362-ae0994d279f3f3bb.js","563:static/chunks/563-52218f82bb9eb225.js","894:static/chunks/894-06b613a845aedd59.js","185:static/chunks/app/layout-3e48d1573c0ecb11.js"],"name":"Toaster","async":false}
|
||||
7:I{"id":78495,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","406:static/chunks/406-35481e1b86c5b377.js","362:static/chunks/362-ae0994d279f3f3bb.js","563:static/chunks/563-52218f82bb9eb225.js","894:static/chunks/894-06b613a845aedd59.js","185:static/chunks/app/layout-3e48d1573c0ecb11.js"],"name":"Providers","async":false}
|
||||
8:I{"id":79446,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","406:static/chunks/406-35481e1b86c5b377.js","362:static/chunks/362-ae0994d279f3f3bb.js","563:static/chunks/563-52218f82bb9eb225.js","894:static/chunks/894-06b613a845aedd59.js","185:static/chunks/app/layout-3e48d1573c0ecb11.js"],"name":"Header","async":false}
|
||||
9:I{"id":81443,"chunks":["272:static/chunks/webpack-8526d963d32b72d9.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
a:I{"id":18639,"chunks":["272:static/chunks/webpack-8526d963d32b72d9.js","971:static/chunks/fd9d1056-5dfc77aa37d8c76f.js","864:static/chunks/864-bf315a5307aba1d7.js"],"name":"","async":false}
|
||||
c:I{"id":12202,"chunks":["400:static/chunks/400-bab9e88e0219f9f5.js","406:static/chunks/406-35481e1b86c5b377.js","28:static/chunks/28-27d0fe8a88c4cbfb.js","894:static/chunks/894-06b613a845aedd59.js","383:static/chunks/app/playground/page-e2c85638af29803a.js"],"name":"Chat","async":false}
|
||||
5:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Tabby - Playground"}],["$","meta","2",{"name":"description","content":"Tabby, an opensource, self-hosted AI coding assistant."}],["$","meta","3",{"name":"theme-color","media":"(prefers-color-scheme: light)","content":"white"}],["$","meta","4",{"name":"theme-color","media":"(prefers-color-scheme: dark)","content":"black"}],["$","meta","5",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","6",{"name":"next-size-adjust"}]]
|
||||
4:[null,["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{}],["$","body",null,{"className":"font-sans antialiased __variable_e66fe9 __variable_bd9c35","children":[["$","$L6",null,{}],["$","$L7",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","div",null,{"className":"flex flex-col min-h-screen","children":[["$","$L8",null,{}],["$","main",null,{"className":"flex flex-col flex-1 bg-muted/50","children":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children","playground","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$Lb",["$","$Lc",null,{"id":"AGsp3Mj"}],null],"segment":"__PAGE__"},"styles":[]}],"segment":"playground"},"styles":[]}]}]]}],null]}]]}]]}],null]
|
||||
4:[null,["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{}],["$","body",null,{"className":"font-sans antialiased __variable_e66fe9 __variable_bd9c35","children":[["$","$L6",null,{}],["$","$L7",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","div",null,{"className":"flex flex-col min-h-screen","children":[["$","$L8",null,{}],["$","main",null,{"className":"flex flex-col flex-1 bg-muted/50","children":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L9",null,{"parallelRouterKey":"children","segmentPath":["children","playground","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$Lb",["$","$Lc",null,{"id":"hiHurcM"}],null],"segment":"__PAGE__"},"styles":[]}],"segment":"playground"},"styles":[]}]}]]}],null]}]]}]]}],null]
|
||||
b:null
|
||||
|
|
|
|||
Loading…
Reference in New Issue