9remote 3.0.43 → 3.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +3 -3
- package/dist/server.cjs +254 -255
- package/dist/ui/assets/index-BNIwtLEB.js +8 -0
- package/dist/ui/assets/index-DvsANh5-.css +1 -0
- package/dist/ui/index.html +2 -2
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +2 -2
- package/dist/web/__next._full.txt +9 -9
- package/dist/web/__next._head.txt +1 -1
- package/dist/web/__next._index.txt +12 -10
- package/dist/web/__next._tree.txt +2 -2
- package/dist/web/_next/static/JqEpEzbDmfkGn0nekxxy5/_buildManifest.js +1 -0
- package/dist/web/_next/static/chunks/1772-46c2fa68cf486d14.js +1 -0
- package/dist/web/_next/static/chunks/1920-64e4610715fd991d.js +1 -0
- package/dist/web/_next/static/chunks/1968-90d80a8543ed4f21.js +32 -0
- package/dist/web/_next/static/chunks/556-1dec70a3f28ddbe8.js +1 -0
- package/dist/web/_next/static/chunks/5587-b8f18d331fdde617.js +1 -0
- package/dist/web/_next/static/chunks/6153.189180c190f90b2f.js +1 -0
- package/dist/web/_next/static/chunks/6221-2be9b41ee97fc1e6.js +11 -0
- package/dist/web/_next/static/chunks/7489.c1e8656da3738df7.js +1 -0
- package/dist/web/_next/static/chunks/8126-5be4c3eccbdb4c66.js +1 -0
- package/dist/web/_next/static/chunks/820-c1bd7547f2433453.js +1 -0
- package/dist/web/_next/static/chunks/8534.189180c190f90b2f.js +1 -0
- package/dist/web/_next/static/chunks/9121-cf1e65bb26b0908b.js +1 -0
- package/dist/web/_next/static/chunks/{9491-6dc334192080d071.js → 9491-970597f510e71615.js} +1 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/_not-found/page-bfa58c699e86fa7c.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/access/page-79e70c584b6e2150.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/login/page-4a768b6df8ed5259.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/ota/page-e4d26a8db9968a98.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/page-1c13a4c1567ed18e.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/turn/page-dbd8be78d0941005.js +5 -0
- package/dist/web/_next/static/chunks/app/download/page-e27de0a4170f4b73.js +1 -0
- package/dist/web/_next/static/chunks/app/layout-a65a70a4500177c7.js +1 -0
- package/dist/web/_next/static/chunks/app/login/page-8216ac4904ee3551.js +1 -0
- package/dist/web/_next/static/chunks/app/{page-1e67d8a5f3775276.js → page-fde2c88f21078fca.js} +2 -2
- package/dist/web/_next/static/chunks/app/workspace/browse/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/editor/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/files/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/git/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/layout-75bbd11623918276.js +23 -0
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/pair/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/remote/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/settings/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/main-72206f0a3cb91ecb.js +5 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/{webpack-dd1f7a5ae02e5d84.js → webpack-31691f9bc04b8076.js} +1 -1
- package/dist/web/_next/static/css/10234b0587e8a07a.css +1 -0
- package/dist/web/_next/static/css/{adc0ee53b89bee3c.css → 2072cba9849e7093.css} +1 -1
- package/dist/web/_not-found/__next._full.txt +20 -22
- package/dist/web/_not-found/__next._head.txt +1 -1
- package/dist/web/_not-found/__next._index.txt +7 -7
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web/_not-found/__next._not-found.txt +1 -1
- package/dist/web/_not-found/__next._tree.txt +2 -2
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +20 -22
- package/dist/web/admin/__next._full.txt +9 -9
- package/dist/web/admin/__next._head.txt +1 -1
- package/dist/web/admin/__next._index.txt +12 -10
- package/dist/web/admin/__next._tree.txt +2 -2
- package/dist/web/admin/__next.admin.__PAGE__.txt +2 -2
- package/dist/web/admin/__next.admin.txt +1 -1
- package/dist/web/admin/access/__next._full.txt +9 -9
- package/dist/web/admin/access/__next._head.txt +1 -1
- package/dist/web/admin/access/__next._index.txt +12 -10
- package/dist/web/admin/access/__next._tree.txt +2 -2
- package/dist/web/admin/access/__next.admin.access.__PAGE__.txt +2 -2
- package/dist/web/admin/access/__next.admin.access.txt +1 -1
- package/dist/web/admin/access/__next.admin.txt +1 -1
- package/dist/web/admin/access.html +1 -1
- package/dist/web/admin/access.txt +9 -9
- package/dist/web/admin/login/__next._full.txt +9 -9
- package/dist/web/admin/login/__next._head.txt +1 -1
- package/dist/web/admin/login/__next._index.txt +12 -10
- package/dist/web/admin/login/__next._tree.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.txt +1 -1
- package/dist/web/admin/login/__next.admin.txt +1 -1
- package/dist/web/admin/login.html +1 -1
- package/dist/web/admin/login.txt +9 -9
- package/dist/web/admin/ota/__next._full.txt +9 -9
- package/dist/web/admin/ota/__next._head.txt +1 -1
- package/dist/web/admin/ota/__next._index.txt +12 -10
- package/dist/web/admin/ota/__next._tree.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.txt +1 -1
- package/dist/web/admin/ota/__next.admin.txt +1 -1
- package/dist/web/admin/ota.html +1 -1
- package/dist/web/admin/ota.txt +9 -9
- package/dist/web/admin/turn/__next._full.txt +9 -9
- package/dist/web/admin/turn/__next._head.txt +1 -1
- package/dist/web/admin/turn/__next._index.txt +12 -10
- package/dist/web/admin/turn/__next._tree.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.txt +1 -1
- package/dist/web/admin/turn/__next.admin.txt +1 -1
- package/dist/web/admin/turn.html +1 -1
- package/dist/web/admin/turn.txt +9 -9
- package/dist/web/admin.html +1 -1
- package/dist/web/admin.txt +9 -9
- package/dist/web/download/__next._full.txt +9 -9
- package/dist/web/download/__next._head.txt +1 -1
- package/dist/web/download/__next._index.txt +12 -10
- package/dist/web/download/__next._tree.txt +2 -2
- package/dist/web/download/__next.download.__PAGE__.txt +2 -2
- package/dist/web/download/__next.download.txt +1 -1
- package/dist/web/download.html +1 -1
- package/dist/web/download.txt +9 -9
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +9 -9
- package/dist/web/login/__next._full.txt +9 -9
- package/dist/web/login/__next._head.txt +1 -1
- package/dist/web/login/__next._index.txt +12 -10
- package/dist/web/login/__next._tree.txt +2 -2
- package/dist/web/login/__next.login.__PAGE__.txt +2 -2
- package/dist/web/login/__next.login.txt +1 -1
- package/dist/web/login.html +1 -1
- package/dist/web/login.txt +9 -9
- package/dist/web/workspace/__next._full.txt +11 -11
- package/dist/web/workspace/__next._head.txt +1 -1
- package/dist/web/workspace/__next._index.txt +12 -10
- package/dist/web/workspace/__next._tree.txt +3 -3
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +1 -1
- package/dist/web/workspace/__next.workspace.txt +3 -3
- package/dist/web/workspace/browse/__next._full.txt +11 -11
- package/dist/web/workspace/browse/__next._head.txt +1 -1
- package/dist/web/workspace/browse/__next._index.txt +12 -10
- package/dist/web/workspace/browse/__next._tree.txt +3 -3
- package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.browse.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.txt +3 -3
- package/dist/web/workspace/browse.html +1 -1
- package/dist/web/workspace/browse.txt +11 -11
- package/dist/web/workspace/editor/__next._full.txt +11 -11
- package/dist/web/workspace/editor/__next._head.txt +1 -1
- package/dist/web/workspace/editor/__next._index.txt +12 -10
- package/dist/web/workspace/editor/__next._tree.txt +3 -3
- package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.editor.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.txt +3 -3
- package/dist/web/workspace/editor.html +1 -1
- package/dist/web/workspace/editor.txt +11 -11
- package/dist/web/workspace/files/__next._full.txt +11 -11
- package/dist/web/workspace/files/__next._head.txt +1 -1
- package/dist/web/workspace/files/__next._index.txt +12 -10
- package/dist/web/workspace/files/__next._tree.txt +3 -3
- package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.files.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.txt +3 -3
- package/dist/web/workspace/files.html +1 -1
- package/dist/web/workspace/files.txt +11 -11
- package/dist/web/workspace/git/__next._full.txt +11 -11
- package/dist/web/workspace/git/__next._head.txt +1 -1
- package/dist/web/workspace/git/__next._index.txt +12 -10
- package/dist/web/workspace/git/__next._tree.txt +3 -3
- package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.git.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.txt +3 -3
- package/dist/web/workspace/git.html +1 -1
- package/dist/web/workspace/git.txt +11 -11
- package/dist/web/workspace/mobile/__next._full.txt +11 -11
- package/dist/web/workspace/mobile/__next._head.txt +1 -1
- package/dist/web/workspace/mobile/__next._index.txt +12 -10
- package/dist/web/workspace/mobile/__next._tree.txt +3 -3
- package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.mobile.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.txt +3 -3
- package/dist/web/workspace/mobile.html +1 -1
- package/dist/web/workspace/mobile.txt +11 -11
- package/dist/web/workspace/pair/__next._full.txt +11 -11
- package/dist/web/workspace/pair/__next._head.txt +1 -1
- package/dist/web/workspace/pair/__next._index.txt +12 -10
- package/dist/web/workspace/pair/__next._tree.txt +3 -3
- package/dist/web/workspace/pair/__next.workspace.pair.__PAGE__.txt +1 -1
- package/dist/web/workspace/pair/__next.workspace.pair.txt +1 -1
- package/dist/web/workspace/pair/__next.workspace.txt +3 -3
- package/dist/web/workspace/pair.html +1 -1
- package/dist/web/workspace/pair.txt +11 -11
- package/dist/web/workspace/remote/__next._full.txt +11 -11
- package/dist/web/workspace/remote/__next._head.txt +1 -1
- package/dist/web/workspace/remote/__next._index.txt +12 -10
- package/dist/web/workspace/remote/__next._tree.txt +3 -3
- package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.remote.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.txt +3 -3
- package/dist/web/workspace/remote.html +1 -1
- package/dist/web/workspace/remote.txt +11 -11
- package/dist/web/workspace/settings/__next._full.txt +37 -0
- package/dist/web/workspace/settings/__next._head.txt +6 -0
- package/dist/web/workspace/settings/__next._index.txt +17 -0
- package/dist/web/workspace/settings/__next._tree.txt +7 -0
- package/dist/web/workspace/settings/__next.workspace.settings.__PAGE__.txt +5 -0
- package/dist/web/workspace/settings/__next.workspace.settings.txt +5 -0
- package/dist/web/workspace/settings/__next.workspace.txt +8 -0
- package/dist/web/workspace/settings.html +1 -0
- package/dist/web/workspace/settings.txt +37 -0
- package/dist/web/workspace/terminal/default/__next._full.txt +11 -11
- package/dist/web/workspace/terminal/default/__next._head.txt +1 -1
- package/dist/web/workspace/terminal/default/__next._index.txt +12 -10
- package/dist/web/workspace/terminal/default/__next._tree.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.txt +3 -3
- package/dist/web/workspace/terminal/default.html +1 -1
- package/dist/web/workspace/terminal/default.txt +11 -11
- package/dist/web/workspace/welcome/__next._full.txt +11 -11
- package/dist/web/workspace/welcome/__next._head.txt +1 -1
- package/dist/web/workspace/welcome/__next._index.txt +12 -10
- package/dist/web/workspace/welcome/__next._tree.txt +3 -3
- package/dist/web/workspace/welcome/__next.workspace.txt +3 -3
- package/dist/web/workspace/welcome/__next.workspace.welcome.__PAGE__.txt +1 -1
- package/dist/web/workspace/welcome/__next.workspace.welcome.txt +1 -1
- package/dist/web/workspace/welcome.html +1 -1
- package/dist/web/workspace/welcome.txt +11 -11
- package/dist/web/workspace/workspaces/__next._full.txt +11 -11
- package/dist/web/workspace/workspaces/__next._head.txt +1 -1
- package/dist/web/workspace/workspaces/__next._index.txt +12 -10
- package/dist/web/workspace/workspaces/__next._tree.txt +3 -3
- package/dist/web/workspace/workspaces/__next.workspace.txt +3 -3
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +1 -1
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +1 -1
- package/dist/web/workspace/workspaces.html +1 -1
- package/dist/web/workspace/workspaces.txt +11 -11
- package/dist/web/workspace.html +1 -1
- package/dist/web/workspace.txt +11 -11
- package/package.json +1 -1
- package/dist/ui/assets/index-DQvkcQ8W.js +0 -8
- package/dist/ui/assets/index-SHlsPzjb.css +0 -1
- package/dist/web/_next/static/AhLhl9t958vI0woNHnp3P/_buildManifest.js +0 -1
- package/dist/web/_next/static/chunks/1772-ef73c166e83f5eff.js +0 -1
- package/dist/web/_next/static/chunks/1920-5ead25286846df83.js +0 -1
- package/dist/web/_next/static/chunks/1968-4d2969f0b7112e0b.js +0 -32
- package/dist/web/_next/static/chunks/556-a8f04c41c5663ee8.js +0 -1
- package/dist/web/_next/static/chunks/5587-fc5af8c76df14222.js +0 -1
- package/dist/web/_next/static/chunks/6153.8c6b8930e22ceea0.js +0 -1
- package/dist/web/_next/static/chunks/6221-cf883148bf8a4c1e.js +0 -11
- package/dist/web/_next/static/chunks/7489.24938d89538cd03e.js +0 -1
- package/dist/web/_next/static/chunks/8126-8e53bfff5a06af4e.js +0 -1
- package/dist/web/_next/static/chunks/820-99036fb63c5462c8.js +0 -1
- package/dist/web/_next/static/chunks/8534.8c6b8930e22ceea0.js +0 -1
- package/dist/web/_next/static/chunks/9121-897f98b646fc2ac0.js +0 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/_not-found/page-9f829d2c4beb1840.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/access/page-45f45ad529e5b691.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/login/page-382072b5b43d3c29.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/ota/page-293c0743bd60f454.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/page-fc676dae451dd646.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/turn/page-2ab33033fc7f0919.js +0 -5
- package/dist/web/_next/static/chunks/app/download/page-a65d1c7fcf6397af.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-f1429d22e935695f.js +0 -1
- package/dist/web/_next/static/chunks/app/login/page-a5dd37d1cbbb394e.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/browse/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/editor/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/files/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/git/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/layout-336820247249f65c.js +0 -20
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/pair/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/remote/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/main-e10b0dbebb4de0a8.js +0 -5
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/css/7b03063e80720027.css +0 -1
- /package/dist/web/_next/static/{AhLhl9t958vI0woNHnp3P → JqEpEzbDmfkGn0nekxxy5}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2351],{36284:(e,r,t)=>{"use strict";t.d(r,{default:()=>y});var s=t(54568),o=t(7620),l=t(39634),a=t(85317),n=t(54024),d=t(92673),i=t(71049);let c="9remote_desktop_releases",x=e=>!e.draft&&!e.prerelease&&i.UP.every(r=>e.assets?.some(e=>e.name===r.asset)),m=e=>({tag:e.tag_name,date:(e.published_at||"").slice(0,10)}),b=null,h=null,p=new Set;function u(){for(let e of p)e()}function f(e){return p.add(e),b||function(){if(h)return;let e=function(){try{let e=localStorage.getItem(c);if(!e)return null;let{releases:r,timestamp:t}=JSON.parse(e);if(!Array.isArray(r)||!r.length)return null;return{releases:r,fresh:Date.now()-t<36e5}}catch{return null}}();e&&(b=e.releases,u(),e.fresh)||(h=fetch(d.el).then(e=>e.ok?e.json():null).then(e=>{if(!Array.isArray(e))return;let r=e.filter(x).map(m);if(r.length){b=r,u();try{localStorage.setItem(c,JSON.stringify({releases:r,timestamp:Date.now()}))}catch{}}}).catch(()=>{}).finally(()=>{h=null}))}(),()=>p.delete(e)}let g=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C({href:e,children:r,primary:t}){return(0,s.jsxs)("a",{href:e,className:"flex items-center justify-center gap-2 px-4 py-2.5 rounded-lg text-[13px] font-semibold border transition-transform hover:scale-[1.02] whitespace-nowrap",style:t?{background:"var(--color-text)",color:"var(--color-bg)",borderColor:"transparent"}:{background:i.CV.bgPanel,color:i.CV.text,borderColor:i.CV.border},children:[r,(0,s.jsx)("svg",{className:"w-3.5 h-3.5 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 3v12m0 0l-4-4m4 4l4-4M4 21h16"})})]})}function j({installer:e,tag:r,mine:t,href:o}){return(0,s.jsxs)("div",{className:"p-5 rounded-2xl border flex flex-col transition-all duration-300 hover:-translate-y-0.5",style:{background:i.CV.bgElevated,borderColor:t?i.CV.borderAccent:i.CV.border},children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,s.jsx)("span",{className:"text-base font-bold",style:{color:i.CV.text},children:e.os}),(0,s.jsx)("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded border",style:{borderColor:i.CV.border,color:i.CV.textMuted},children:r}),t&&(0,s.jsx)("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded-full border",style:{borderColor:i.CV.borderAccent,color:i.CV.accent},children:"Your system"})]}),(0,s.jsx)("p",{className:"text-xs mb-4",style:{color:i.CV.textDim},children:e.label}),(0,s.jsx)("div",{className:"mt-auto",children:(0,s.jsxs)(C,{href:o||(0,i.Is)(r,e.asset),primary:t,children:["Download ",e.ext]})})]})}function y(){let e=(0,o.useSyncExternalStore)(()=>()=>{},i.UH,()=>"other"),r=(0,o.useSyncExternalStore)(f,()=>b,()=>null),t=(0,i.Kd)(r||i.Yu).slice(1);return(0,s.jsxs)("div",{className:"min-h-screen overflow-x-hidden safe-area-insets",style:{color:i.CV.text},children:[(0,s.jsx)(l.A,{}),(0,s.jsx)("div",{className:"landing-light","aria-hidden":!0}),(0,s.jsx)(a.A,{}),(0,s.jsx)("main",{className:"relative z-10 pt-28 pb-24 px-4 sm:px-6 lg:px-8",children:(0,s.jsxs)("div",{className:"max-w-5xl mx-auto",children:[(0,s.jsxs)("div",{className:"text-center mb-12",children:[(0,s.jsx)("h1",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold mb-3",style:{color:i.CV.text},children:"Download 9Remote"}),(0,s.jsx)("p",{className:"text-base sm:text-lg max-w-xl mx-auto",style:{color:i.CV.textDim},children:"The host app serves your terminals, screen and files. Install it on the machine you leave running."})]}),(0,s.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 mb-4",children:i.UP.map(r=>(0,s.jsx)(j,{installer:r,tag:i.Ji.tag,mine:"other"!==e&&r.os.toLowerCase().startsWith(e),href:i.Ji.assets[r.id]||(0,i.Is)(i.Ji.tag,r.asset)},r.id))}),(0,s.jsxs)("div",{className:"p-5 rounded-2xl border mb-16",style:{background:i.CV.bgElevated,borderColor:i.CV.border},children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-2",children:[(0,s.jsx)("span",{className:"text-base font-bold",style:{color:i.CV.text},children:"Linux"}),(0,s.jsx)("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded border",style:{borderColor:i.CV.border,color:i.CV.textMuted},children:i.Ji.tag})]}),(0,s.jsxs)("p",{className:"text-xs mb-4",style:{color:i.CV.textDim},children:["Debian/Ubuntu (.deb) or any distro via AppImage (arm64). x64 AppImage: use the CLI ",(0,s.jsx)("code",{children:"npm i -g 9remote"}),"."]}),(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:[["deb \xb7 x64",i.Ji.assets.debAmd64],["deb \xb7 arm64",i.Ji.assets.debArm64],["AppImage \xb7 arm64",i.Ji.assets.appImageArm64]].map(([e,r])=>(0,s.jsx)("a",{href:r,className:"text-xs font-medium px-3 py-1.5 rounded-lg border transition-colors",style:{background:i.CV.bgPanel,color:i.CV.textDim,borderColor:i.CV.border},children:e},e))})]}),(0,s.jsxs)("section",{className:"mb-16",children:[(0,s.jsx)("h2",{className:"text-[11px] font-mono uppercase tracking-[0.12em] pb-2.5 mb-1 border-b",style:{color:i.CV.textMuted,borderColor:i.CV.border},children:"Older versions"}),t.map(e=>(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-2 py-3.5 border-b",style:{borderColor:i.CV.border},children:[(0,s.jsx)("span",{className:"text-sm font-bold font-mono",style:{color:i.CV.text},children:e.tag}),(0,s.jsx)("span",{className:"text-xs",style:{color:i.CV.textMuted},children:(e=>{let[r,t,s]=e.split("-");return`${g[Number(t)-1]} ${Number(s)}, ${r}`})(e.date)}),(0,s.jsx)("div",{className:"flex flex-wrap gap-2 ml-auto",children:i.UP.map(r=>(0,s.jsx)("a",{href:(0,i.Is)(e.tag,r.asset),className:"text-xs font-medium px-3 py-1.5 rounded-lg border transition-colors",style:{background:i.CV.bgPanel,color:i.CV.textDim,borderColor:i.CV.border},children:r.short},r.id))})]},e.tag))]}),(0,s.jsxs)("section",{className:"text-center",children:[(0,s.jsx)("h2",{className:"text-lg font-bold mb-2",style:{color:i.CV.text},children:"On a phone or tablet?"}),(0,s.jsx)("p",{className:"text-sm mb-4",style:{color:i.CV.textDim},children:"9Remote is a client on mobile — pair it with a host using the QR code."}),(0,s.jsxs)("div",{className:"flex flex-wrap justify-center gap-3",children:[(0,s.jsx)("a",{href:i.od,target:"_blank",rel:"noopener noreferrer",className:"text-sm font-semibold px-4 py-2 rounded-lg border",style:{background:i.CV.bgPanel,color:i.CV.text,borderColor:i.CV.border},children:"App Store"}),(0,s.jsx)("a",{href:i.JN,target:"_blank",rel:"noopener noreferrer",className:"text-sm font-semibold px-4 py-2 rounded-lg border",style:{background:i.CV.bgPanel,color:i.CV.text,borderColor:i.CV.border},children:"Google Play"}),(0,s.jsx)("a",{href:i.rl,target:"_blank",rel:"noopener noreferrer",className:"text-sm font-semibold px-4 py-2 rounded-lg border",style:{background:i.CV.bgPanel,color:i.CV.textDim,borderColor:i.CV.border},children:"All releases on GitHub"})]})]})]})}),(0,s.jsx)(n.A,{})]})}},40612:(e,r,t)=>{Promise.resolve().then(t.bind(t,36284))},46891:(e,r,t)=>{"use strict";t.d(r,{A:()=>d});var s=t(54568),o=t(38118),l=t(14652);let a=({size:e=18})=>(0,s.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,s.jsx)("path",{d:"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"})]}),n=({size:e=18})=>(0,s.jsx)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,s.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})});function d({className:e="",size:r=18}){let{theme:t,toggleTheme:i}=(0,o.D)(),c="dark"===t;return(0,s.jsx)("button",{type:"button",onClick:()=>{(0,l.e)(),i()},"aria-label":c?"Switch to light theme":"Switch to dark theme",title:c?"Light mode":"Dark mode",className:`p-1.5 rounded-brand transition-colors text-[var(--color-text-muted)] hover:text-[var(--color-text)] hover:bg-[var(--color-surface-2)] ${e}`,children:c?(0,s.jsx)(a,{size:r}):(0,s.jsx)(n,{size:r})})}}},e=>{e.O(0,[5587,1772,1920,587,1968,7358],()=>e(e.s=40612)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{36629:(e,t,a)=>{"use strict";a.d(t,{default:()=>l});var r=a(7620);function l(){let[e,t]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let e=window.matchMedia("(pointer: coarse) and (max-width: 900px)"),a=window.matchMedia("(orientation: landscape)"),r=()=>{t(e.matches),l(a.matches)};return r(),e.addEventListener("change",r),a.addEventListener("change",r),()=>{e.removeEventListener("change",r),a.removeEventListener("change",r)}},[]),(0,r.useEffect)(()=>{let t=!!window.ReactNativeWebView||/9Remote-Mobile/i.test(navigator.userAgent);if(!e||t)return;let a=!1;return(async()=>{try{await window.screen?.orientation?.lock?.("portrait"),a=!0}catch{}})(),()=>{a&&window.screen?.orientation?.unlock?.()}},[e]),null}},38118:(e,t,a)=>{"use strict";a.d(t,{D:()=>s,ThemeProvider:()=>o});var r=a(54568),l=a(7620),c=a(86377);let n=(0,l.createContext)({theme:c.SS,setTheme:()=>{},toggleTheme:()=>{}}),u=e=>{if("u"<typeof document)return;let t=document.documentElement;t.classList.remove("light","dark"),t.classList.add(e),t.style.colorScheme=e;try{let t=window.__TAURI__?.window?.getCurrentWindow?.();t&&(t.setTheme?.(e)?.catch?.(()=>{}),t.setBackgroundColor?.("light"===e?"#e7e7e9":"#2a2a2a")?.catch?.(()=>{}))}catch{}},i=e=>{if(window.ReactNativeWebView)try{window.ReactNativeWebView.postMessage(JSON.stringify({type:"THEME_CHANGE",theme:e}))}catch(e){}};function o({children:e}){let[t,a]=(0,l.useState)(c.SS);(0,l.useEffect)(()=>{let e=localStorage.getItem(c.AQ)||localStorage.getItem("9remote-theme"),t=c.$.includes(e)?e:c.SS;a(t),u(t),i(t)},[]);let s=(0,l.useCallback)(e=>{c.$.includes(e)&&(a(e),u(e),i(e),localStorage.setItem(c.AQ,e),localStorage.setItem("9remote-theme",e))},[]),F=(0,l.useCallback)(()=>{s("dark"===t?"light":"dark")},[t,s]);return(0,r.jsx)(n.Provider,{value:{theme:t,setTheme:s,toggleTheme:F},children:e})}let s=()=>(0,l.useContext)(n)},74255:(e,t,a)=>{Promise.resolve().then(a.bind(a,5092)),Promise.resolve().then(a.bind(a,22546)),Promise.resolve().then(a.bind(a,87341)),Promise.resolve().then(a.t.bind(a,10594,23)),Promise.resolve().then(a.t.bind(a,36138,23)),Promise.resolve().then(a.t.bind(a,10918,23)),Promise.resolve().then(a.t.bind(a,76944,23)),Promise.resolve().then(a.bind(a,82355)),Promise.resolve().then(a.bind(a,36629)),Promise.resolve().then(a.bind(a,88654)),Promise.resolve().then(a.bind(a,38118))},76944:()=>{},82355:(e,t,a)=>{"use strict";a.d(t,{default:()=>s});var r=a(54568),l=a(7620),c=a(9121);let n=/9Remote-Mobile\/(\d+(?:\.\d+){0,2})/i,u=/^\d+(?:\.\d+){0,2}$/,i={android:"market://details?id=cc.remote9.app",ios:"itms-apps://apps.apple.com/app/id6796664210"};function o(){return"u"<typeof navigator?"android":window.DEVICE_INFO?.platform?window.DEVICE_INFO.platform:/iPhone|iPad|iPod/i.test(navigator.userAgent)||/^iP/.test(navigator.platform||"")||window.webkit?.messageHandlers?"ios":"android"}function s(){let{t:e}=(0,c.s)(),[t,a]=(0,l.useState)(!1);if((0,l.useEffect)(()=>{let e=navigator.userAgent;if(!window.ReactNativeWebView&&!n.test(String(e||"")))return;let t=o(),r=!1;return(async()=>{try{let l=await fetch(`/api/version?platform=${t}&_t=${Date.now()}`);if(!l.ok||r)return;let c=await l.json(),i=c?.minAppVersion;if(r||!i)return;let o=function(e,t){let a=t?.version;if("string"==typeof a&&u.test(a))return a;let r=n.exec(String(e||""));return r?r[1]:null}(e,window.DEVICE_INFO);(null===o||function(e,t){if(!u.test(String(e))||!u.test(String(t)))return!1;let a=String(e).split(".").map(Number),r=String(t).split(".").map(Number);for(let e=0;e<3;e++){let t=(a[e]||0)-(r[e]||0);if(0!==t)return t<0}return!1}(o,i))&&a(!0)}catch{}})(),()=>{r=!0}},[]),!t)return null;let s=i[o()]||i.android;return(0,r.jsxs)("div",{className:"fixed inset-0 z-[300] flex flex-col items-center justify-center gap-4 bg-[#0b0d0c] px-8 text-center",children:[(0,r.jsx)("span",{className:"material-symbols-rounded text-[56px] text-[#E56A4A]",children:"system_update_alt"}),(0,r.jsx)("h2",{className:"text-lg font-semibold text-white",children:e("appUpdate.title")}),(0,r.jsx)("p",{className:"max-w-xs text-sm text-white/60",children:e("appUpdate.body")}),(0,r.jsx)("a",{href:s,className:"mt-2 rounded-brand bg-[#E56A4A] px-6 py-2.5 text-sm font-semibold text-white",children:e("appUpdate.action")})]})}},86377:(e,t,a)=>{"use strict";a.d(t,{$:()=>r,AQ:()=>c,In:()=>s,SS:()=>l,aC:()=>u,g4:()=>o});let r=["dark","light"],l="dark",c="app_theme_v2";function n(e){return{background:e.bg,foreground:e.text,cursor:e.accent||e.peach||e.blue,cursorAccent:e.bg,selectionBackground:e.surface1,black:e.surfaceDim||e.bg,red:e.red,green:e.green,yellow:e.yellow,blue:e.blue,magenta:e.mauve,cyan:e.teal,white:e.subtext0||e.text,brightBlack:e.overlay0,brightRed:e.red,brightGreen:e.green,brightYellow:e.yellow,brightBlue:e.blue,brightMagenta:e.mauve,brightCyan:e.teal,brightWhite:e.text}}let u={dark:n({bg:"#1A1A1A",surface0:"#232323",surface1:"#2A2A2A",surfaceDim:"#101010",overlay0:"#5C5C5C",text:"#FFFFFF",subtext0:"#A0A0A0",red:"#FF8080",green:"#99FFE4",yellow:"#FFC799",blue:"#B0B0B0",mauve:"#FFD1A8",teal:"#66DDCC",peach:"#FFC799",accent:"#FFC799"}),light:n({bg:"#F5F5F5",surface0:"#E8E8E8",surface1:"#DDDDDD",surfaceDim:"#EFEFEF",overlay0:"#999999",text:"#1A1A1A",subtext0:"#5A5A5A",red:"#D9534F",green:"#2A9D8F",yellow:"#E07A3C",blue:"#6B6B6B",mauve:"#C97B5A",teal:"#3A9B8E",peach:"#E07A3C",accent:"#E07A3C"})},i={catppuccinMocha:n({bg:"#181825",surface0:"#31324A",surface1:"#45475A",surfaceDim:"#1E1E2E",overlay0:"#6C708E",text:"#CDD6F4",subtext0:"#A6ADC8",red:"#F38BA8",green:"#A6E3A1",yellow:"#F9E2AF",blue:"#89B4FA",mauve:"#CBA7F7",teal:"#94E2D5",peach:"#FAB387",accent:"#89B4FA"}),monokaiPro:n({bg:"#2D2A2E",surface0:"#353034",surface1:"#3D383C",surfaceDim:"#221F22",overlay0:"#72696A",text:"#FFF1F3",subtext0:"#C8C5C8",red:"#FD6883",green:"#ADDA78",yellow:"#F9CC6C",blue:"#F38D70",mauve:"#A8A9EB",teal:"#85DACC",peach:"#F38D70",accent:"#A8A9EB"}),gruvboxMaterial:n({bg:"#282828",surface0:"#3C3836",surface1:"#504945",surfaceDim:"#1D2021",overlay0:"#928374",text:"#D4BE98",subtext0:"#A89984",red:"#EA6962",green:"#A9B665",yellow:"#D8A657",blue:"#7DAEA3",mauve:"#D3869B",teal:"#89B482",peach:"#E78A4E",accent:"#E78A4E"}),dracula:n({bg:"#282A36",surface0:"#44475A",surface1:"#6272A4",surfaceDim:"#282A36",overlay0:"#6272A4",text:"#F8F8F2",subtext0:"#D2D2DC",red:"#FF5555",green:"#50FA7B",yellow:"#F1FA8C",blue:"#8BE9FD",mauve:"#FF79C6",teal:"#8BE9FD",peach:"#FFB86C",accent:"#BD93F9"}),everforest:n({bg:"#2D353B",surface0:"#343F44",surface1:"#3D484D",surfaceDim:"#232A2E",overlay0:"#7A8478",text:"#D3C6AA",subtext0:"#9DA9A0",red:"#E67E80",green:"#A7C080",yellow:"#DBBC7F",blue:"#7FBBB3",mauve:"#D699B6",teal:"#83C092",peach:"#E69875",accent:"#A7C080"}),linear:n({bg:"#08090A",surface0:"#0F1011",surface1:"#141516",surfaceDim:"#010102",overlay0:"#3E3E44",text:"#F7F8F8",subtext0:"#B4B4B8",red:"#F34E52",green:"#27A644",yellow:"#E4F222",blue:"#8FA6FF",mauve:"#8B5CF6",teal:"#02B8CC",peach:"#F7BF8B",accent:"#5E6AD2"}),synthwave:n({bg:"#262335",surface0:"#241B2F",surface1:"#34294F",surfaceDim:"#171520",overlay0:"#9D8BCA",text:"#FFFFFF",subtext0:"#FFFFFF99",red:"#FE4450",green:"#72F1B8",yellow:"#FEDE5D",blue:"#03EDF9",mauve:"#FF7EDB",teal:"#03EDF9",peach:"#F97E72",accent:"#FF7EDB"}),poimandres:n({bg:"#1B1E28",surface0:"#303340",surface1:"#3A4050",surfaceDim:"#14161F",overlay0:"#506477",text:"#E4F0FB",subtext0:"#A6ACCD",red:"#D0679D",green:"#5DE4C7",yellow:"#FFFAC2",blue:"#ADD7FF",mauve:"#F087BD",teal:"#5DE4C7",peach:"#F087BD",accent:"#5DE4C7"}),ayuMirage:n({bg:"#1F2430",surface0:"#212733",surface1:"#272D3A",surfaceDim:"#161B26",overlay0:"#686868",text:"#CBCCC6",subtext0:"#9A9B95",red:"#F08778",green:"#53BF97",yellow:"#FDCC60",blue:"#60B8D6",mauve:"#EC7171",teal:"#98E6CA",peach:"#FFA759",accent:"#FFCC66"}),githubDarkDimmed:n({bg:"#22272E",surface0:"#2D333B",surface1:"#373E47",surfaceDim:"#1C2128",overlay0:"#545D68",text:"#CDD9E5",subtext0:"#909DAB",red:"#F47067",green:"#57AB5A",yellow:"#C69026",blue:"#539BF5",mauve:"#B083F0",teal:"#39C5CF",peach:"#DAAA3F",accent:"#539BF5"}),palenight:n({bg:"#292D3E",surface0:"#313553",surface1:"#3A3F5F",surfaceDim:"#1F2233",overlay0:"#676E95",text:"#D0D0D0",subtext0:"#A0A0C0",red:"#E05252",green:"#2BE8A8",yellow:"#FFCB6B",blue:"#3FD0E0",mauve:"#C792EA",teal:"#3FD0E0",peach:"#FFCB6B",accent:"#82AAFF"}),nordDark:n({bg:"#2E3440",surface0:"#3B4252",surface1:"#434C5E",surfaceDim:"#232831",overlay0:"#4C566A",text:"#ECEFF4",subtext0:"#D8DEE9",red:"#BF616A",green:"#A3BE8C",yellow:"#EBCB8B",blue:"#81A1C1",mauve:"#B48EAD",teal:"#88C0D0",peach:"#D08770",accent:"#88C0D0"}),horizon:n({bg:"#1C1E26",surface0:"#232530",surface1:"#2E303E",surfaceDim:"#16161C",overlay0:"#6B6F8A",text:"#E0E0E0",subtext0:"#C5C8DA",red:"#E95678",green:"#29D398",yellow:"#FAB795",blue:"#26BBD9",mauve:"#EE64AC",teal:"#59E1E3",peach:"#FAB795",accent:"#EE64AC"}),kanagawaDragon:n({bg:"#181616",surface0:"#1D1C1C",surface1:"#252424",surfaceDim:"#0D0C0C",overlay0:"#7A6F7A",text:"#C5C9C5",subtext0:"#A6A69C",red:"#C4746E",green:"#87A987",yellow:"#E6C384",blue:"#8BA4B0",mauve:"#938AA9",teal:"#7AA89F",peach:"#FFA066",accent:"#8BA4B0"}),catppuccinLatte:n({bg:"#EFF1F5",surface0:"#CCD0DA",surface1:"#BCC0CC",surfaceDim:"#E6E9EF",overlay0:"#9CA0B0",text:"#4C4F69",subtext0:"#6C6F85",red:"#D20F39",green:"#40A02B",yellow:"#DF8E1D",blue:"#1E66F5",mauve:"#8839EF",teal:"#179299",peach:"#FE640B",accent:"#1E66F5"}),gruvboxLight:n({bg:"#FBF1C7",surface0:"#EBDBB2",surface1:"#D5C4A1",surfaceDim:"#F2E5BC",overlay0:"#928374",text:"#3C3836",subtext0:"#504945",red:"#9D0006",green:"#79740E",yellow:"#B57614",blue:"#076678",mauve:"#8F3F71",teal:"#427B58",peach:"#AF3A03",accent:"#B57614"}),githubLight:n({bg:"#FFFFFF",surface0:"#F6F8FA",surface1:"#EAEEF2",surfaceDim:"#EFF2F5",overlay0:"#8C959F",text:"#24292F",subtext0:"#57606A",red:"#CF222E",green:"#1A7F37",yellow:"#9A6700",blue:"#0969DA",mauve:"#8250DF",teal:"#1B7C83",peach:"#BC4C00",accent:"#0969DA"}),everforestLight:n({bg:"#FDF6E3",surface0:"#F4F0D9",surface1:"#EFEBD4",surfaceDim:"#E6E2CC",overlay0:"#9DA9A0",text:"#5C6A72",subtext0:"#7A8478",red:"#F85552",green:"#8DA101",yellow:"#DFA000",blue:"#3A94C5",mauve:"#DF69BA",teal:"#35A77C",peach:"#F57D3A",accent:"#8DA101"}),ayuLight:n({bg:"#FCFCFC",surface0:"#F3F3F3",surface1:"#E8E8E8",surfaceDim:"#F7F7F7",overlay0:"#C1C1C1",text:"#5C6166",subtext0:"#8A8F94",red:"#E7666A",green:"#80AB24",yellow:"#EBA54D",blue:"#4196DF",mauve:"#9870C3",teal:"#51B891",peach:"#E78F4D",accent:"#FF8552"}),tokyoDay:n({bg:"#D6D8DF",surface0:"#C8CBD4",surface1:"#B5B8C5",surfaceDim:"#E1E3EA",overlay0:"#9699AE",text:"#343B58",subtext0:"#565C70",red:"#C24242",green:"#41A6B5",yellow:"#8F5E15",blue:"#2959AA",mauve:"#7B43BA",teal:"#006C86",peach:"#D68910",accent:"#2959AA"}),roseDawn:n({bg:"#FAF4ED",surface0:"#F2E9E1",surface1:"#E9DDD2",surfaceDim:"#F5EBE0",overlay0:"#9893A5",text:"#576279",subtext0:"#797593",red:"#B4637A",green:"#618774",yellow:"#EA9D34",blue:"#286983",mauve:"#907AA9",teal:"#56949F",peach:"#D7827E",accent:"#D7827E"}),lavenderMist:n({bg:"#F6F3FB",surface0:"#EAE5F5",surface1:"#DDD6EE",surfaceDim:"#F0ECF8",overlay0:"#9B95B8",text:"#4A4467",subtext0:"#6B6491",red:"#C95D77",green:"#5FA17A",yellow:"#D9A441",blue:"#5B7FBE",mauve:"#8B7AB8",teal:"#5FA6A8",peach:"#D08A66",accent:"#8B7AB8"}),mintCream:n({bg:"#ECF6F0",surface0:"#DCEEE3",surface1:"#C9E3D2",surfaceDim:"#E2F1E9",overlay0:"#7FA396",text:"#2F4A40",subtext0:"#4E6B5F",red:"#C76B6B",green:"#3FA17A",yellow:"#C9A93E",blue:"#4A8DB8",mauve:"#9B6FA8",teal:"#3FA17A",peach:"#D58560",accent:"#3FA17A"})},o=[{key:"catppuccinMocha",label:"Catppuccin Mocha",mode:"dark"},{key:"monokaiPro",label:"Monokai Pro",mode:"dark"},{key:"dracula",label:"Dracula",mode:"dark"},{key:"everforest",label:"Everforest",mode:"dark"},{key:"gruvboxMaterial",label:"Gruvbox Material",mode:"dark"},{key:"linear",label:"Linear",mode:"dark"},{key:"synthwave",label:"Synthwave '84",mode:"dark"},{key:"poimandres",label:"Poimandres",mode:"dark"},{key:"ayuMirage",label:"Ayu Mirage",mode:"dark"},{key:"githubDarkDimmed",label:"GitHub Dimmed",mode:"dark"},{key:"palenight",label:"Palenight",mode:"dark"},{key:"nordDark",label:"Nord",mode:"dark"},{key:"horizon",label:"Horizon",mode:"dark"},{key:"kanagawaDragon",label:"Kanagawa Dragon",mode:"dark"},{key:"catppuccinLatte",label:"Catppuccin Latte",mode:"light"},{key:"gruvboxLight",label:"Gruvbox Light",mode:"light"},{key:"githubLight",label:"GitHub Light",mode:"light"},{key:"everforestLight",label:"Everforest Light",mode:"light"},{key:"ayuLight",label:"Ayu Light",mode:"light"},{key:"tokyoDay",label:"Tokyo Day",mode:"light"},{key:"roseDawn",label:"Rose Dawn",mode:"light"},{key:"lavenderMist",label:"Lavender Mist",mode:"light"},{key:"mintCream",label:"Mint Cream",mode:"light"}];function s(e,t){let a="light"===e?i.everforestLight:i.palenight;return t&&"default"!==t&&o.find(a=>a.key===t&&a.mode===e)&&i[t]||a}},88654:(e,t,a)=>{"use strict";a.d(t,{default:()=>n});var r=a(54568),l=a(7620);let c=()=>()=>{};function n({id:e,html:t}){return(0,l.useSyncExternalStore)(c,()=>!1,()=>!0)?(0,r.jsx)("script",{id:e,dangerouslySetInnerHTML:{__html:t}}):null}}},e=>{e.O(0,[5675,1317,6221,9121,587,1968,7358],()=>e(e.s=74255)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4520],{23607:(e,t,s)=>{Promise.resolve().then(s.bind(s,46994))},46891:(e,t,s)=>{"use strict";s.d(t,{A:()=>i});var a=s(54568),n=s(38118),r=s(14652);let l=({size:e=18})=>(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"4"}),(0,a.jsx)("path",{d:"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"})]}),o=({size:e=18})=>(0,a.jsx)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,a.jsx)("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})});function i({className:e="",size:t=18}){let{theme:s,toggleTheme:c}=(0,n.D)(),d="dark"===s;return(0,a.jsx)("button",{type:"button",onClick:()=>{(0,r.e)(),c()},"aria-label":d?"Switch to light theme":"Switch to dark theme",title:d?"Light mode":"Dark mode",className:`p-1.5 rounded-brand transition-colors text-[var(--color-text-muted)] hover:text-[var(--color-text)] hover:bg-[var(--color-surface-2)] ${e}`,children:d?(0,a.jsx)(l,{size:t}):(0,a.jsx)(o,{size:t})})}},46994:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>J});var a=s(54568),n=s(7620),r=s(79748),l=s(70658),o=s(44964),i=s(75677),c=s(51467),d=s(96605),x=s(32763),m=s(56156),u=s(14337),p=s(23084),h=s(39634),g=s(14652),b=s(9121),f=s(33879),j=s(18179);function y({className:e="",showLabel:t=!0}){let{locale:s}=(0,b.s)(),[r,l]=(0,n.useState)(!1),o=f.dI.find(e=>e.code===s)||f.dI[0];return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("button",{onClick:()=>{(0,g.e)(),l(!0)},className:`flex items-center gap-1.5 bg-surface-2 hover:bg-surface-3 rounded-brand text-text text-sm px-2 py-1 transition-all duration-150 ease-out active:scale-[0.96] ${e}`,title:o.label,children:[(0,a.jsx)("img",{src:`https://flagcdn.com/w40/${o.country}.png`,alt:o.label,className:"w-[17px] h-[12px] object-cover rounded-[2px]",loading:"lazy"}),t&&(0,a.jsx)("span",{className:"hidden sm:inline",children:o.code.toUpperCase()})]}),(0,a.jsx)(j.A,{isOpen:r,onClose:()=>l(!1)})]})}var v=s(46891),w=s(92673),N=s(85957);let k=null;async function C(){k||(k=N.Ay.ready),await k}async function S(e,t){await C();let s=N.Ay.from_base64(e,N.Ay.base64_variants.ORIGINAL),a=N.Ay.from_string(t),n=N.Ay.crypto_box_seal(a,s);return N.Ay.to_base64(n,N.Ay.base64_variants.ORIGINAL)}function _(e=24){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}let A="9remote_github_token",L="9remote:githubTokenChange";async function z(e,t,s={}){let a=await fetch(`${w.pe}${t}`,{...s,headers:{...{Authorization:`Bearer ${e}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},...s.headers||{}}});if(!a.ok){let e=await a.text().catch(()=>"");throw Error(`GitHub ${a.status}: ${e||a.statusText}`)}return 204===a.status?null:a.json()}function I(){let[e,t]=(0,n.useState)(()=>localStorage.getItem(A)||""),[s,a]=(0,n.useState)(!1),[r,l]=(0,n.useState)(null);(0,n.useEffect)(()=>{let e=()=>{t(localStorage.getItem(A)||"")};return window.addEventListener(L,e),window.addEventListener("storage",e),()=>{window.removeEventListener(L,e),window.removeEventListener("storage",e)}},[!0]);let o=(0,n.useCallback)(e=>{t(e),e?localStorage.setItem(A,e):localStorage.removeItem(A),window.dispatchEvent(new Event(L))},[!0]),i=(0,n.useCallback)(()=>{o("")},[o]),c=(0,n.useCallback)(async(t=e)=>z(t,w.no.user),[e]),d=(0,n.useCallback)(async()=>{a(!0),l(null);try{return(await z(e,w.no.codespaces)).codespaces||[]}catch(e){return l(e.message),[]}finally{a(!1)}},[e]),x=(0,n.useCallback)(async t=>z(e,w.no.codespaceByName(t)),[e]),m=(0,n.useCallback)(async t=>z(e,w.no.startCodespace(t),{method:"POST"}),[e]),u=(0,n.useCallback)(async()=>z(e,w.no.userReposList),[e]),p=(0,n.useCallback)(async(t,s)=>z(e,w.no.createCodespaceForRepo(t,s),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),[e]),h=(0,n.useCallback)(async(t,s)=>{let a=await z(e,w.no.codespaceSecretsPublicKey),n=await S(a.key,s);await z(e,w.no.codespaceSecret(w.Gf),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({encrypted_value:n,key_id:a.key_id,selected_repository_ids:[t]})})},[e]),g=(0,n.useCallback)(async(t,s)=>{let a=w.no.repoContents(t,s,w.Hu),n=!1;try{await z(e,a),n=!0}catch{}if(n)return{existed:!0};let r=JSON.stringify(w.cu,null,2);return await z(e,a,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"Add 9remote devcontainer",content:btoa(unescape(encodeURIComponent(r)))})}),{existed:!1}},[e]),b=(0,n.useCallback)(async(e,t)=>{for(let s=0;s<w.ij;s++){let s=await x(e);if(t?.(s.state),s.state===w.Gi.available)return s;await new Promise(e=>setTimeout(e,w.Nn))}throw Error("Codespace start timeout")},[x]);return{token:e,setToken:o,clearToken:i,loading:s,error:r,getUser:c,listCodespaces:d,getCodespace:x,startCodespace:m,waitUntilAvailable:b,listRepos:u,createCodespace:p,ensureDevcontainer:g,setApiKeySecret:h,generateApiKey:_}}function K({isOpen:e,onClose:t,onCreated:s}){let{listRepos:r,createCodespace:l,ensureDevcontainer:o,setApiKeySecret:i,generateApiKey:c,error:x}=I(),[p,h]=(0,n.useState)([]),[g,b]=(0,n.useState)(!1),[f,j]=(0,n.useState)(null),[y,v]=(0,n.useState)(""),[w,N]=(0,n.useState)(null),[k,C]=(0,n.useState)("");(0,n.useEffect)(()=>{e&&(N(null),b(!0),r().then(e=>h(Array.isArray(e)?e:[])).catch(e=>N(e.message)).finally(()=>b(!1)))},[e,r]),(0,n.useEffect)(()=>{if(!e||f)return;let s=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),t?.())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[e,f,t]);let S=(0,n.useMemo)(()=>{let e=y.trim().toLowerCase();return e?p.filter(t=>t.full_name.toLowerCase().includes(e)):p},[p,y]),_=async e=>{j(e.full_name),N(null),C("Generating API key...");try{let t=c();C("Setting codespace secret..."),await i(e.id,t),C("Setting up devcontainer..."),await o(e.owner.login,e.name),C("Creating codespace...");let a=await l(e.owner.login,e.name);s({codespace:a,apiKey:t})}catch(e){N(e.message)}finally{j(null),C("")}};return e?(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-[2px] p-4",onClick:t,children:(0,a.jsxs)("div",{className:"card-elev p-6 max-w-md w-full max-h-[80dvh] flex flex-col border border-border",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsx)("h3",{className:"text-lg font-bold text-text",children:"Select repository"}),(0,a.jsx)("button",{onClick:t,className:"p-1 text-text-muted hover:text-text",children:(0,a.jsx)(d.X,{size:20})})]}),(0,a.jsxs)("div",{className:"relative mb-3",children:[(0,a.jsx)(d.vj,{size:16,className:"absolute left-3 top-1/2 -translate-y-1/2 text-text-muted"}),(0,a.jsx)("input",{type:"text",value:y,onChange:e=>v(e.target.value),placeholder:"Search repos...",className:"w-full pl-9 pr-3 py-2 bg-surface-2 rounded-brand text-text placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-brand-500/40 text-sm"})]}),(w||x)&&(0,a.jsxs)("div",{className:"flex items-start gap-2 mb-3 p-2 bg-danger/10 rounded-brand text-xs text-danger",children:[(0,a.jsx)(d.RI,{size:14,className:"flex-shrink-0 mt-0.5"}),(0,a.jsx)("span",{className:"break-words",children:w||x})]}),(0,a.jsx)("div",{className:"flex-1 overflow-auto space-y-1",children:g?(0,a.jsx)(u.A,{text:"Loading repos..."}):0===S.length?(0,a.jsx)("div",{className:"text-center py-6 text-text-muted text-sm",children:"No repos"}):S.map(e=>{let t=f===e.full_name;return(0,a.jsxs)("div",{className:"p-2 bg-surface-2 hover:bg-surface-3 rounded-brand transition-colors",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-sm text-text font-medium truncate",title:e.full_name,children:e.full_name}),e.private&&(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"private"})]}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>_(e),disabled:!!f,loading:t,className:"!py-1 !px-2 text-xs",children:[(0,a.jsx)(d.FW,{size:12}),"Create"]})]}),t&&k&&(0,a.jsx)("div",{className:"mt-1 text-xs text-text-muted",children:k})]},e.id)})})]})}):null}let E="9remote_codespace_keys";function R(){try{return JSON.parse(localStorage.getItem(E)||"{}")}catch{return{}}}function M({onConnect:e,onLogout:t}){let{listCodespaces:s,startCodespace:r,waitUntilAvailable:l,loading:o,error:i,getUser:c}=I(),[x,p]=(0,n.useState)([]),[h,g]=(0,n.useState)(null),[b,f]=(0,n.useState)(null),[j,y]=(0,n.useState)(""),[v,N]=(0,n.useState)(!1),k=(0,n.useCallback)(async()=>{try{let e=await c();g(e)}catch{}p(await s())},[c,s]);(0,n.useEffect)(()=>{k()},[k]);let C=async t=>{var s;let a=(s=t.name,R()[s]||null);if(!a){y("No saved key for this codespace. Recreate it from web to enable auto-connect."),f(t.name),setTimeout(()=>{f(null),y("")},4e3);return}f(t.name),y("");try{let s=t;t.state!==w.Gi.available&&(y("Starting codespace..."),await r(t.name),s=await l(t.name,e=>{y(`State: ${e}`)})),e(s,a)}catch(e){y(`Error: ${e.message}`)}finally{f(null)}};return(0,a.jsxs)("div",{className:"card-elev p-8 max-w-md w-full border border-border",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-6",children:[(0,a.jsx)("div",{className:"p-2 bg-brand-500/10 rounded-brand",children:(0,a.jsx)(d.Cp,{className:"text-brand-500",size:24})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h2",{className:"text-xl font-bold text-text",children:"Codespaces"}),h&&(0,a.jsxs)("p",{className:"text-sm text-text-muted truncate",children:["@",h.login]})]}),(0,a.jsx)("button",{onClick:()=>N(!0),className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"New codespace",children:(0,a.jsx)(d.FW,{size:18})}),(0,a.jsx)("button",{onClick:k,disabled:o,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"Refresh",children:(0,a.jsx)(d.e9,{size:18,className:o?"animate-spin":""})}),(0,a.jsx)("button",{onClick:t,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-colors",title:"Logout",children:(0,a.jsx)(d.nU,{size:18})})]}),i&&(0,a.jsxs)("div",{className:"flex items-start gap-2 mb-4 p-3 bg-danger/10 rounded-brand text-sm text-danger",children:[(0,a.jsx)(d.RI,{size:16,className:"flex-shrink-0 mt-0.5"}),(0,a.jsx)("span",{className:"break-words",children:i})]}),o&&0===x.length?(0,a.jsx)(u.A,{text:"Loading codespaces..."}):0===x.length?(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-text-muted text-sm mb-4",children:"No codespaces yet."}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>N(!0),children:[(0,a.jsx)(d.FW,{size:16}),"Create new codespace"]})]}):(0,a.jsx)("div",{className:"space-y-2",children:x.map(e=>{let t=b===e.name,s=e.state===w.Gi.available;return(0,a.jsxs)("div",{className:"bg-surface-2 rounded-brand p-3 hover:bg-surface-3 transition-colors",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-text font-medium truncate",title:e.display_name||e.name,children:e.display_name||e.name}),(0,a.jsxs)("div",{className:"text-xs text-text-muted truncate",title:`${e.repository?.full_name} \xb7 ${e.state}`,children:[e.repository?.full_name," \xb7 ",e.state]})]}),(0,a.jsxs)(m.A,{variant:"primary",onClick:()=>C(e),disabled:t,loading:t,className:"!py-1.5 !px-3 text-sm",children:[(0,a.jsx)(d.jG,{size:14}),s?"Connect":"Start"]})]}),t&&j&&(0,a.jsx)("div",{className:"mt-2 text-xs text-text-muted",children:j})]},e.name)})}),(0,a.jsx)(K,{isOpen:v,onClose:()=>N(!1),onCreated:({codespace:e,apiKey:t})=>{var s;let a;s=e.name,(a=R())[s]=t,localStorage.setItem(E,JSON.stringify(a)),N(!1),k()}})]})}var T=s(189),O=s(99022),P=s(81851),U=s(69469),F=s(96631),$=s(14757),D=s(31856),G=s(30562);function W(){let{t:e}=(0,b.s)(),[t,s]=(0,n.useState)(""),[g,f]=(0,n.useState)(!0),[j,N]=(0,n.useState)([]),[k,C]=(0,n.useState)(!1),[S,_]=(0,n.useState)(!1),[A,L]=(0,n.useState)("local"),[z,K]=(0,n.useState)(null),[E,R]=(0,n.useState)(""),[W,B]=(0,n.useState)(null),[J,H]=(0,n.useState)(null),[Q,V]=(0,n.useState)(null),X="2.4.0",{token:q,clearToken:Y}=I(),{getAuth:Z,setAuth:ee}=(0,T.Fo)(),et=(0,r.useSearchParams)(),es=(0,r.useRouter)(),{loading:ea,error:en,setError:er,authenticateWithToken:el,authenticateWithApiKey:eo}=(0,l.As)(),[ei,ec]=(0,n.useState)(!1),{loadKeys:ed,saveKey:ex,removeKey:em,renameKey:eu,hasStoredKeys:ep,updateLastLogin:eh}=(0,o.u)(),eg=(0,n.useMemo)(()=>j.some(e=>(0,U.PF)(e.key)),[j]),eb=(0,n.useMemo)(()=>et.get("t"),[et]),[ef]=(0,n.useState)(()=>{try{let e=sessionStorage.getItem("9remote_url_pairing");if(e)return e;let t=(0,$.k)(window.location.hash)||(0,$.k)(window.location.search);if(t?.tempKey)return sessionStorage.setItem("9remote_url_pairing",t.tempKey+(t.tail||"")),t.tempKey+(t.tail||"")}catch{}return null}),ej=!!eb||!!ef,ey=(0,n.useRef)(!1);(0,n.useEffect)(()=>{ey.current||eb||ef||sessionStorage.getItem(P.Jd)||(0,F._r)()&&window.location.port===String(G._8)||"1"===sessionStorage.getItem("9remote_manual_disconnect")||Z()?.apiKey&&(ey.current=!0,es.replace("/workspace/"))},[eb,ef,Z,es]),(0,n.useEffect)(()=>{if(window.location.hash||window.location.search){let e=(0,$.k)(window.location.hash)||(0,$.k)(window.location.search);e?.tempKey&&window.history.replaceState(null,"",window.location.pathname)}f("false"!==localStorage.getItem("9remote_remember_key_preference")),N(ed()),C(!0),sessionStorage.getItem(P.Jd)&&(sessionStorage.removeItem(P.Jd),ec(!0)),q&&L("github"),(0,F._r)()&&window.location.port===String(G._8)&&fetch("/api/ui/state").then(e=>e.ok?e.json():null).then(e=>{if(e?.permanentKey){V(e.permanentKey);let t="remote"===et.get("mode");if(t)try{sessionStorage.setItem("9remote_manual_disconnect","1")}catch{}if(!(t||"1"===sessionStorage.getItem("9remote_manual_disconnect"))){let t=e.permanentKey,s=(0,U.Uo)(t),a=(0,U.Cj)(t);(0,O.LG)(s,{tail:a}),ee({apiKey:s,tunnelUrl:window.location.origin,mode:"local",tempKey:null,localIp:null}),es.push("/workspace/")}}}).catch(()=>{})},[ed,q,es,ee,et]);let ev=(0,n.useCallback)(async e=>{let t=(0,$.k)(e);(0,D.U)("false"!==localStorage.getItem("9remote_remember_key_preference"));let s=await el(t?.tempKey||e,!0,t?.tail);try{sessionStorage.removeItem("9remote_url_pairing")}catch{}s.success&&(0,D.zm)(t,{remember:"false"!==localStorage.getItem("9remote_remember_key_preference")})},[el]),ew=(0,n.useRef)(!1);(0,n.useEffect)(()=>{(eb||ef)&&(ew.current||(ew.current=!0,eb?el(eb):ev(ef)))},[eb,ef,el,ev]);let eN=async()=>{let s=t.trim();if(!s)return;if((0,U.PF)(s))return void er(e("login.legacyKeyError"));let a=(0,$.k)(s),n=!!a?.tempKey,r=n?a.tempKey:(0,U.Uo)(s),l=n?a.tail:(0,U.Cj)(s);if(n&&(0,D.U)(g),(n?await el(a.tempKey,!0,a.tail):await eo(s)).success){if(n)return void(0,D.zm)(a,{remember:g});l&&(0,O.LG)(r,{tail:l}),g&&sessionStorage.setItem(P.El,s),es.push("/workspace/")}},ek=async t=>{let s;if(!t)return;if((0,U.PF)(t))return void er(e("login.legacyKeyError"));let a=(0,U.Cj)(t);a&&(0,O.LG)((0,U.Uo)(t),{tail:a});let n=a?t:(0,O.$4)(t);H(t);try{s=await eo(n)}finally{H(null)}s?.success&&(n!==t&&ex(n),eh(t),es.push("/workspace/"))},eC=e=>{eu(e,E.trim()),N(ed()),K(null)},eS=()=>{K(null)},e_=async e=>{let t=(0,$.k)(e);return!!t?.tempKey&&((0,D.U)("false"!==localStorage.getItem("9remote_remember_key_preference")),!!(await el(t.tempKey,!0,t.tail)).success&&((0,D.zm)(t,{remember:"false"!==localStorage.getItem("9remote_remember_key_preference")}),!0))};return ej&&ea?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsx)("div",{className:"card-elev p-8 max-w-md w-full border border-border",children:(0,a.jsx)(u.A,{size:"lg",text:e("login.authenticating")})})})]}):"github"===A&&q?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsx)(M,{onConnect:(e,t)=>{let s=(0,w.xO)(e.name);ee({apiKey:(0,U.Uo)(t),tunnelUrl:s,mode:"remote"}),es.push("/workspace/")},onLogout:()=>{Y()}})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),k&&(0,F._r)()&&(0,a.jsxs)("a",{href:"/",className:"fixed top-4 left-4 z-50 inline-flex items-center gap-2 px-3 py-1.5 text-xs font-medium text-text hover:text-white bg-surface-2/90 hover:bg-surface-3 border border-border-subtle rounded-brand-lg backdrop-blur-md transition-all shadow-sm active:scale-[0.97]",title:"Back to Host QR",children:[(0,a.jsx)(d.Ay,{name:"ChevronLeft",size:15,className:"opacity-70"}),(0,a.jsx)(d.Ay,{name:"QrCode",size:15,className:"text-brand-500"}),(0,a.jsx)("span",{children:"Host QR"})]}),(0,a.jsxs)("div",{className:"min-h-screen grid lg:grid-cols-2",children:[(0,a.jsxs)("section",{className:"hidden lg:flex flex-col justify-between px-12 xl:px-20 py-12 relative overflow-hidden",children:[(0,a.jsx)("div",{className:"login-hero-glow","aria-hidden":!0}),(0,a.jsxs)("div",{className:"my-auto max-w-xl relative z-10",children:[(0,a.jsxs)("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-surface-2/60 border border-border-subtle font-mono text-[11px] text-text-muted mb-7",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-brand-500 animate-pulse-glow"}),e("login.termConnected")," \xb7 ",e("login.termTunnel")]}),(0,a.jsxs)("h1",{className:"text-6xl xl:text-7xl font-extrabold tracking-tight leading-[0.98] mb-6 text-text",children:[e("login.heroLine1"),(0,a.jsx)("br",{}),e("login.heroLine2"),(0,a.jsx)("br",{}),(0,a.jsx)("span",{className:"login-hero-grad",children:e("login.heroLine3")})]}),(0,a.jsx)("p",{className:"text-text-muted text-base lg:text-lg leading-relaxed max-w-md mb-8",children:e("login.tagline")}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 mb-9",children:["Terminal","Desktop","Files","WebRTC low-latency","iOS \xb7 Android \xb7 Web"].map(e=>(0,a.jsx)("span",{className:"font-mono text-xs text-text-muted px-3 py-1.5 rounded-full border border-border-subtle",children:e},e))}),(0,a.jsxs)("div",{className:"rounded-xl border border-border-subtle bg-surface-2/60 overflow-hidden max-w-md shadow-lg",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-2 border-b border-border-subtle",children:[(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#ff5f57]"}),(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#febc2e]"}),(0,a.jsx)("span",{className:"w-2.5 h-2.5 rounded-full bg-[#28c840]"}),(0,a.jsx)("span",{className:"ml-2 font-mono text-[10px] text-text-subtle",children:"dev@mac — zsh"})]}),(0,a.jsxs)("div",{className:"p-3.5 font-mono text-[12px] leading-relaxed",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-text-subtle",children:"➜"})," 9remote start"]}),(0,a.jsx)("div",{className:"text-text-subtle",children:"↳ tunnel up \xb7 pairing open"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-brand-500",children:"[ok]"})," ",(0,a.jsx)("span",{className:"text-text",children:"machine"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"macbook-pro-m3"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-brand-500",children:"[ok]"})," ",(0,a.jsx)("span",{className:"text-text",children:"pty"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"daemon v3.1 \xb7 12 warm"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[#6aab6a]",children:"●"})," ",(0,a.jsx)("span",{className:"text-text-subtle",children:"waiting for phone…"})," ",(0,a.jsx)("span",{className:"inline-block w-[7px] h-[13px] bg-brand-500 align-middle animate-cursor-blink"})]})]})]})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-x-5 gap-y-1 font-mono text-[11px] text-text-subtle pt-8 relative z-10",children:[(0,a.jsx)("span",{children:"› PTY persistent"}),(0,a.jsx)("span",{children:"› end-to-end encrypted"}),(0,a.jsx)("span",{children:"› open source"})]})]}),(0,a.jsxs)("section",{className:"flex items-center justify-center p-6 sm:p-10 lg:border-l lg:border-border-subtle lg:bg-surface-1 relative",children:[(0,a.jsx)("div",{className:"login-mobile-glow lg:hidden","aria-hidden":!0}),(0,a.jsxs)("div",{className:"relative z-10 w-full max-w-sm space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-6",children:[(0,a.jsx)("img",{src:"/icon-192.png",alt:"9Remote Logo",className:"w-10 h-10 rounded-[11px] object-contain shadow-lg shadow-brand-500/20"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h1",{className:"text-[22px] font-bold tracking-tight text-text leading-none",children:"9Remote"}),X&&(0,a.jsxs)("p",{className:"font-mono text-[11px] text-text-subtle mt-1",children:["v",X]})]}),(0,a.jsx)(y,{}),(0,a.jsx)(v.A,{})]}),(0,a.jsx)("p",{className:"text-text-muted text-lg font-medium leading-snug pr-4 mb-6 lg:hidden",children:e("login.tagline")}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-2.5",children:[(0,a.jsx)(d.Ay,{name:"KeyRound",className:"text-text-muted opacity-70",size:14}),(0,a.jsx)("span",{className:"text-[13px] font-semibold text-text",children:e("login.accessKey")})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{id:"accessKeyInput",type:"text",value:t,onChange:e=>{let t=e.target.value;s(t.length<=P.qM?t.toUpperCase():t.toLowerCase())},onKeyDown:e=>"Enter"===e.key&&t&&eN(),placeholder:e("login.placeholder"),className:"w-full pl-3.5 pr-20 py-3 bg-surface-2 border border-border-subtle rounded-[10px] font-mono text-sm text-text placeholder-text-subtle focus:outline-none focus:border-brand-500 focus:ring-2 focus:ring-brand-500/20 transition-all duration-150"}),(0,a.jsxs)("div",{className:"absolute right-2.5 top-1/2 -translate-y-1/2 flex items-center gap-1",children:[t&&(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("button",{onMouseDown:e=>e.preventDefault(),onClick:()=>{s("")},className:"w-7 h-7 grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-text transition-colors",type:"button",children:(0,a.jsx)(d.X,{size:16})})}),(0,a.jsx)("button",{onMouseDown:e=>e.preventDefault(),onClick:()=>_(!0),className:"w-7 h-7 grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-brand-500 transition-colors",type:"button","aria-label":e("login.scanQr"),children:(0,a.jsx)(d.Ay,{name:"QrCode",size:16})})]})]}),(en||ei)&&(0,a.jsx)("p",{className:"mt-2 text-xs font-mono text-danger",children:"agent-offline"===en?e("login.agentOffline"):en&&"wrong-key-tail"!==en?en:e("login.invalidKeyTail")}),(0,a.jsxs)("label",{className:"flex items-center gap-2.5 cursor-pointer mt-4 select-none",children:[(0,a.jsx)("input",{type:"checkbox",checked:g,onChange:e=>{var t;return f(t=e.target.checked),void(localStorage.setItem("9remote_remember_key_preference",t),!t&&(0,T.U0)())},className:"w-[15px] h-[15px] accent-brand-500"}),(0,a.jsx)("span",{className:"text-[13px] text-text-muted",children:e("login.rememberKey")})]}),(0,a.jsx)(m.A,{variant:"primary",onClick:eN,loading:ea,className:"btn-cta w-full mt-4",children:(0,a.jsxs)("span",{className:"inline-flex items-center justify-center gap-2",children:[e("login.connect"),(0,a.jsx)(d.Ay,{name:"ArrowRight",size:16})]})}),k&&j.length>0&&(0,a.jsxs)("div",{className:"mt-5 pt-5 border-t border-border-subtle",children:[(0,a.jsx)("div",{className:"font-mono text-[11px] uppercase tracking-wider text-text-subtle mb-1 px-1",children:e("login.savedKeys")}),eg&&(0,a.jsxs)("div",{className:"my-2.5 px-3 py-2.5 bg-amber-500/10 border border-amber-500/30 rounded-brand-lg flex items-start gap-2.5",children:[(0,a.jsx)(d.Ay,{name:"AlertCircle",size:16,className:"text-amber-500 shrink-0 mt-0.5"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"text-xs font-medium text-text",children:e("login.legacyKeyUpdateRequired")}),(0,a.jsx)("div",{className:"text-xs text-text-muted mt-0.5",children:e("login.legacyKeyUpdateHint")}),(0,a.jsx)("code",{className:"inline-block mt-1.5 px-2 py-0.5 bg-surface-2 border border-border text-text text-xs rounded font-mono select-all",children:"npm i -g 9remote@latest"})]})]}),j.map(t=>{let s=z===t.id,n=J===t.key,r=(0,U.PF)(t.key);return(0,a.jsxs)("div",{className:`flex items-center gap-3 px-1 py-2 rounded-[10px] hover:bg-surface-2 transition-colors cursor-pointer ${r?"opacity-85":""}`,onClick:()=>!s&&!n&&ek(t.key),role:"button",tabIndex:0,children:[(0,a.jsx)("div",{className:`w-12 h-12 rounded-[12px] bg-surface-2 border ${r?"border-amber-500/40 text-amber-500":"border-border-subtle text-text-muted"} grid place-items-center flex-shrink-0`,children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round",className:"w-[26px] h-[26px]",children:[(0,a.jsx)("rect",{x:"2",y:"4",width:"20",height:"13",rx:"2"}),(0,a.jsx)("line",{x1:"2",y1:"20",x2:"22",y2:"20"})]})}),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:s?(0,a.jsxs)("div",{className:"flex items-center gap-1",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("input",{autoFocus:!0,value:E,onChange:e=>R(e.target.value),onKeyDown:e=>{"Enter"===e.key&&eC(t.id),"Escape"===e.key&&eS()},placeholder:e("login.namePlaceholder"),className:"flex-1 min-w-0 bg-surface-2 border border-brand-500 rounded-md text-text text-[13px] px-2 py-1 outline-none"}),(0,a.jsx)("button",{onClick:()=>eC(t.id),className:"w-6 h-6 grid place-items-center rounded-md bg-brand-500 text-white","aria-label":e("common.done"),children:(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3 h-3",children:(0,a.jsx)("polyline",{points:"20 6 9 17 4 12"})})}),(0,a.jsx)("button",{onClick:eS,className:"w-6 h-6 grid place-items-center rounded-md bg-surface-2 text-text-muted","aria-label":e("common.cancel"),children:(0,a.jsx)(d.X,{size:13})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[13px] font-medium text-text truncate",title:t.label||e("agentSwitcher.unnamed"),children:t.label||e("agentSwitcher.unnamed")}),r&&(0,a.jsx)("span",{className:"shrink-0 px-1.5 py-0.5 text-[9px] font-semibold font-mono uppercase rounded bg-amber-500/15 text-amber-500 border border-amber-500/30",children:e("login.updateRequired")})]}),(0,a.jsx)("div",{className:"font-mono text-[11px] text-text-subtle mt-0.5 truncate",children:(0,i.o)(t.key)})]})}),!s&&(0,a.jsx)("span",{className:"font-mono text-[11px] text-text-subtle whitespace-nowrap",children:n?e("agentSwitcher.connecting"):(t=>{if(!t)return"";try{let s=new Date(t),a=new Date-s,n=Math.floor(a/6e4),r=Math.floor(a/36e5),l=Math.floor(a/864e5);if(n<1)return e("login.justNow");if(n<60)return e("login.minutesAgo",{n:n});if(r<24)return e("login.hoursAgo",{n:r});if(l<7)return e("login.daysAgo",{n:l});return s.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}catch{return""}})(t.lastLoginDate)}),!s&&(0,a.jsxs)("div",{className:"flex gap-0.5",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("button",{onClick:()=>{K(t.id),R(t.label||"")},title:e("common.edit"),className:"w-[26px] h-[26px] grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-text transition-colors",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:[(0,a.jsx)("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),(0,a.jsx)("path",{d:"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z"})]})}),(0,a.jsx)("button",{onClick:()=>B(t),title:e("common.delete"),className:"w-[26px] h-[26px] grid place-items-center rounded-[7px] text-text-subtle hover:bg-surface-3 hover:text-danger transition-colors",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:[(0,a.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,a.jsx)("path",{d:"M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})]},t.id)})]}),(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2 pt-1 text-text-subtle",children:[(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:"w-3.5 h-3.5",children:(0,a.jsx)("path",{d:"M12 2l9 4v6c0 5-3.8 9.7-9 11-5.2-1.3-9-6-9-11V6l9-4z"})}),(0,a.jsx)("span",{className:"font-mono text-[11px]",children:e("login.secureTitle")})]})]})]})]}),(0,a.jsx)(x.A,{isOpen:S,onClose:()=>_(!1),onScan:e_}),(0,a.jsx)(p.A,{isOpen:!!W,onClose:()=>B(null),onConfirm:()=>{W&&(em(W.id),N(ed()))},title:e("login.deleteKeyTitle"),message:e("login.deleteKeyConfirm",{name:W?.label}),confirmText:e("common.delete")})]})}function B(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h.A,{}),(0,a.jsx)(c.A,{children:(0,a.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,a.jsx)(u.A,{text:"Loading..."}),(0,a.jsx)("a",{href:"/login",className:"text-sm text-text-muted hover:text-brand-500 underline underline-offset-4 transition-colors",children:"Reload"})]})})]})}function J(){return(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)(B,{}),children:(0,a.jsx)(W,{})})}},51467:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});var a=s(54568);function n({children:e,centered:t=!0,className:s=""}){return(0,a.jsx)("div",{className:`min-h-screen ${t?"flex items-center justify-center p-4":""} ${s}`,children:e})}}},e=>{e.O(0,[3243,820,6925,5957,1772,9121,8126,587,1968,7358],()=>e(e.s=23607)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1447,1984,4896,5348,5711,6364,6399,6819,6913,6988,7427,7711,7851,8167,8655,8983],{51680:()=>{}},_=>{_.O(0,[587,1968,7358],()=>_(_.s=51680)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1447,1984,4896,5348,5711,6364,6399,6819,6913,6988,7427,7711,7851,8167,8655,8983],{51680:()=>{}},_=>{_.O(0,[587,1968,7358],()=>_(_.s=51680)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1447,1984,4896,5348,5711,6364,6399,6819,6913,6988,7427,7711,7851,8167,8655,8983],{51680:()=>{}},_=>{_.O(0,[587,1968,7358],()=>_(_.s=51680)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1447,1984,4896,5348,5711,6364,6399,6819,6913,6988,7427,7711,7851,8167,8655,8983],{51680:()=>{}},_=>{_.O(0,[587,1968,7358],()=>_(_.s=51680)),_N_E=_.O()}]);
|