livedesk 0.1.680 → 0.1.682

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.
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/VuvoDeskApp-DbKDh8Ra.js","assets/pwa-startup-DvbrYEQi.js","assets/icons-CuXJn-Hz.js","assets/pwa-bootstrap-ljOQTt2e.js","assets/SupportPage-DsOnSA2Z.js","assets/HubApp-k5_04IYv.js","assets/preload-helper-DD1OZmLC.js","assets/MonitorStackIcon-DDuMtcFd.js","assets/supabase-C7qjtLN3.js","assets/frame-lifecycle-D91nchvm.js","assets/HubApp-DFLBNvIi.css","assets/SupportPage-Cxx61WwR.css","assets/DesktopUpdatePanel-DuatXF9C.js","assets/VuvoDeskApp-ao5vkK6F.css"])))=>i.map(i=>d[i]);
2
- import{_ as F}from"./preload-helper-DD1OZmLC.js";import{j as e,P as K,a as G}from"./pwa-startup-DvbrYEQi.js";import{r as x,$ as o,a0 as Y,a1 as E,b as X,a2 as O,o as y,M as V,a3 as N,a4 as v,a5 as j,a6 as M,a7 as g,W as J,a8 as Q,j as Z,D as h,a9 as I,aa as ee,ab as se,ac as S,S as A,ad as _,G as ne}from"./icons-CuXJn-Hz.js";import{a as ae}from"./client-8jUbxy3j.js";import{L as ie,M as R,F as re,p as i,P as te,a as oe,T as le,i as P}from"./MonitorStackIcon-DDuMtcFd.js";/* empty css */import{f as ce,s as de,r as he}from"./pwa-bootstrap-ljOQTt2e.js";import"./react-rvm9rmed.js";const T="npx -y --prefer-online livedesk@latest",pe="".trim().toLowerCase(),U=pe==="stable"?"stable":"dev",f=`https://livedesk-desktop-updates.lovecrdm.workers.dev/download/${U}`,ue=`${f}/windows/x64`,me=`${f}/macos/x64`,xe=`${f}/macos/arm64`,je=`${f}/linux/x64`,fe=`${f}/linux/x64/deb`,k="".trim().toLowerCase()==="true",d="".trim().toLowerCase()==="true",p="".trim().toLowerCase()==="true",w="".trim().toLowerCase()==="true",b=d||p||w;function ve(){if(typeof window>"u")return"home";const s=window.location.pathname.replace(/\/+$/,"")||"/";return s==="/"?"home":s==="/download"?"download":s==="/pricing"?"pricing":s==="/support"?"support":s==="/terms"?"terms":s==="/privacy"?"privacy":s==="/refunds"?"refunds":"not-found"}function W(){return e.jsxs("a",{className:"site-brand",href:"/","aria-label":"VuvoDesk home",children:[e.jsx("span",{className:"site-brand-mark",children:e.jsx(R,{size:25})}),e.jsx("span",{children:"VuvoDesk"})]})}function we({page:s}){const a=[{label:"Product",href:"/#product",active:s==="home"},{label:"Pricing",href:"/pricing",active:s==="pricing"},{label:"Download",href:"/download",active:s==="download"},{label:"Support",href:"/support",active:s==="support"}];return e.jsx("header",{className:"site-header",children:e.jsxs("div",{className:"site-header-inner",children:[e.jsx(W,{}),e.jsx("nav",{className:"site-nav","aria-label":"Main navigation",children:a.map(n=>e.jsx("a",{className:n.active?"active":"",href:n.href,children:n.label},n.label))}),e.jsxs("div",{className:"site-header-actions",children:[e.jsx("a",{className:"site-text-link",href:"/app",children:"Open web console"}),e.jsxs("a",{className:"site-button site-button-small",href:"/download",children:["Get VuvoDesk ",e.jsx(o,{size:15})]})]}),e.jsxs("details",{className:"site-mobile-menu",children:[e.jsx("summary",{"aria-label":"Open navigation",children:e.jsx(Y,{size:22})}),e.jsxs("nav",{"aria-label":"Mobile navigation",children:[a.map(n=>e.jsxs("a",{href:n.href,children:[n.label,e.jsx(E,{size:15})]},n.label)),e.jsxs("a",{href:"/app",children:["Open web console",e.jsx(E,{size:15})]})]})]})]})})}function ge(){return e.jsxs("footer",{className:"site-footer",children:[e.jsxs("div",{className:"site-footer-main",children:[e.jsxs("div",{children:[e.jsx(W,{}),e.jsx("p",{children:"One calm command center for every computer you manage."})]}),e.jsxs("div",{className:"site-footer-links",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Product"}),e.jsx("a",{href:"/#product",children:"Overview"}),e.jsx("a",{href:"/pricing",children:"Pricing"}),e.jsx("a",{href:"/download",children:"Download"})]}),e.jsxs("div",{children:[e.jsx("strong",{children:"Use VuvoDesk"}),e.jsx("a",{href:"/app",children:"Web console"}),e.jsx("a",{href:"/support",children:"Support"})]}),e.jsxs("div",{children:[e.jsx("strong",{children:"Platforms"}),e.jsx("span",{children:"Windows"}),e.jsx("span",{children:"macOS"}),e.jsx("span",{children:"Linux"}),e.jsx("span",{children:"Mobile PWA"})]}),e.jsxs("div",{children:[e.jsx("strong",{children:"Legal"}),e.jsx("a",{href:"/terms",children:"Terms"}),e.jsx("a",{href:"/privacy",children:"Privacy"}),e.jsx("a",{href:"/refunds",children:"Cancellation & refunds"})]})]})]}),e.jsxs("div",{className:"site-footer-bottom",children:[e.jsx("span",{children:"© 2026 VuvoDesk"}),e.jsx("span",{children:"Built for people who run real work across many screens."})]})]})}function be(){const s=[{name:"Studio-01",status:"Online",className:"screen-blue",cpu:"42%",ram:"61%"},{name:"Render-Mac",status:"Online",className:"screen-purple",cpu:"67%",ram:"74%"},{name:"Linux-Build",status:"Online",className:"screen-green",cpu:"29%",ram:"48%"},{name:"Office-PC",status:"Idle",className:"screen-orange",cpu:"18%",ram:"37%"}];return e.jsxs("div",{className:"product-mockup","aria-label":"VuvoDesk screen wall preview",children:[e.jsxs("div",{className:"mockup-window-bar",children:[e.jsxs("div",{children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsx("span",{children:"VuvoDesk · Wall"}),e.jsxs("span",{className:"mockup-online",children:[e.jsx("i",{})," 4 online"]})]}),e.jsxs("div",{className:"mockup-body",children:[e.jsxs("aside",{className:"mockup-rail","aria-hidden":"true",children:[e.jsx("span",{className:"active",children:e.jsx(M,{size:17})}),e.jsx("span",{children:e.jsx(g,{size:17})}),e.jsx("span",{children:e.jsx(I,{size:17})}),e.jsx("span",{children:e.jsx(_,{size:17})})]}),e.jsx("div",{className:"mockup-wall",children:s.map(a=>e.jsxs("article",{className:"mockup-screen",children:[e.jsxs("div",{className:`mockup-screen-image ${a.className}`,children:[e.jsx("span",{className:"mockup-code-line wide"}),e.jsx("span",{className:"mockup-code-line"}),e.jsx("span",{className:"mockup-code-line short"}),e.jsx("span",{className:"mockup-panel-block"})]}),e.jsxs("div",{className:"mockup-screen-title",children:[e.jsx("strong",{children:a.name}),e.jsxs("span",{children:[e.jsx("i",{})," ",a.status]})]}),e.jsxs("div",{className:"mockup-metrics",children:[e.jsxs("span",{children:["CPU ",e.jsx("b",{children:a.cpu})]}),e.jsxs("span",{children:["RAM ",e.jsx("b",{children:a.ram})]})]})]},a.name))})]}),e.jsxs("div",{className:"mockup-control-card",children:[e.jsx(g,{size:18}),e.jsxs("span",{children:[e.jsx("small",{children:"Selected computer"}),e.jsx("strong",{children:"Render-Mac"})]}),e.jsx("button",{type:"button",children:"Control"})]})]})}function B({compact:s=!1}){const a=[{key:"free",name:i.free.name,price:i.free.price,suffix:"forever",audience:i.free.audience,description:"A practical personal wall, supported by a standard banner.",features:[`Up to ${re} devices`,"1 person","Standard banner"],action:"Start free",href:"/app",available:!0},{key:"plus",name:i.ltd.name,price:i.ltd.price,suffix:"/ month",audience:i.ltd.audience,description:"A clean personal command center for creators and homelabs.",features:[`Up to ${te} devices`,"1 person · no standard banner","Personal use"],ltd:i.ltd.ltd,action:p||d?"Choose Plus":"Paid checkout opening soon",href:p||d?"/app?view=pricing":"/support#billing",available:p||d},{key:"pro",name:i.pro.name,price:i.pro.price,suffix:"/ month",audience:i.pro.audience,description:"Monitoring for schools, academies, studios, offices, and growing commercial fleets.",features:[`Up to ${oe} devices`,"1 person","Ad-free school, academy, and commercial use"],ltd:i.pro.ltd,action:p||d?"Choose Business":"Paid checkout opening soon",href:p||d?"/app?view=pricing":"/support#billing",available:p||d},{key:"team",name:i.team.name,price:i.team.price,suffix:"/ month",audience:i.team.audience,description:"A shared Team Space for operators who manage the same computers together.",features:["Unlimited computers",`${le} people with their own accounts`,"Commercial use · Owner and Operator roles"],action:w?"Choose Team":"Paid checkout opening soon",href:w?"/app?view=pricing":"/support#billing",available:w}];return e.jsx("div",{className:`site-pricing-grid ${s?"compact":""}`,children:a.map(n=>e.jsxs("article",{className:`site-price-card ${n.key==="plus"?"featured":""} ${n.available?"":"pending"}`,children:[e.jsxs("div",{className:"site-price-heading",children:[e.jsx("span",{children:n.name}),n.key==="plus"&&e.jsx("em",{children:"Most popular"})]}),e.jsx("p",{className:"site-price-audience",children:n.audience}),e.jsxs("div",{className:"site-price",children:[e.jsx("strong",{children:n.price}),e.jsx("small",{children:n.suffix})]}),e.jsx("p",{children:n.description}),e.jsx("ul",{children:n.features.map(t=>e.jsxs("li",{children:[e.jsx(ne,{size:16})," ",t]},t))}),n.ltd&&e.jsxs("div",{className:"site-ltd",children:[e.jsxs("span",{children:[n.name," LTD"]}),e.jsx("strong",{children:n.ltd.replace(" LTD","")}),e.jsx("small",{children:d?"one-time · available now":"one-time · checkout opening soon"})]}),e.jsxs("a",{className:`site-price-action ${n.key==="plus"&&n.available?"primary":""} ${n.available?"":"pending"}`,href:n.href,children:[n.action,e.jsx(o,{size:15})]})]},n.key))})}function ye(){return e.jsx(e.Fragment,{children:e.jsxs("main",{children:[e.jsxs("section",{className:"site-hero",children:[e.jsxs("div",{className:"site-hero-copy",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(X,{size:15})," The screen wall for real work"]}),e.jsxs("h1",{children:["Every computer.",e.jsx("br",{}),e.jsx("span",{children:"One calm command center."})]}),e.jsx("p",{children:"See every screen, focus the computer that needs you, and keep work moving from your desk or phone."}),e.jsxs("div",{className:"site-hero-actions",children:[e.jsxs("a",{className:"site-button",href:"/download",children:["Download VuvoDesk ",e.jsx(o,{size:17})]}),e.jsxs("a",{className:"site-button site-button-secondary",href:"/app",children:["Open web console ",e.jsx(O,{size:17})]})]}),e.jsxs("div",{className:"site-hero-notes",children:[e.jsxs("span",{children:[e.jsx(y,{size:15})," Free for 5 devices"]}),e.jsxs("span",{children:[e.jsx(y,{size:15})," No credit card"]}),e.jsxs("span",{children:[e.jsx(y,{size:15})," Windows · macOS · Linux"]})]})]}),e.jsxs("div",{className:"site-hero-visual",children:[e.jsx("div",{className:"site-orbit site-orbit-one"}),e.jsx("div",{className:"site-orbit site-orbit-two"}),e.jsx(be,{})]})]}),e.jsxs("section",{className:"platform-strip","aria-label":"Supported platforms",children:[e.jsx("span",{children:"Built for the computers you already run"}),e.jsxs("div",{children:[e.jsxs("strong",{children:[e.jsx(V,{size:18})," Windows"]}),e.jsxs("strong",{children:[e.jsx(N,{size:18})," macOS"]}),e.jsxs("strong",{children:[e.jsx(v,{size:18})," Linux"]}),e.jsxs("strong",{children:[e.jsx(j,{size:18})," iPhone & Android"]}),e.jsxs("strong",{children:[e.jsx(O,{size:18})," Any browser"]})]})]}),e.jsxs("section",{className:"site-section site-value-section",id:"product",children:[e.jsxs("div",{className:"site-section-heading",children:[e.jsx("span",{children:"Why VuvoDesk"}),e.jsxs("h2",{children:["Spend less time finding the problem.",e.jsx("br",{}),"Spend more time fixing it."]}),e.jsx("p",{children:"VuvoDesk keeps the fleet visible without turning your desktop into a pile of remote windows."})]}),e.jsxs("div",{className:"site-value-grid",children:[e.jsxs("article",{className:"site-value-card large blue",children:[e.jsx("span",{className:"site-feature-icon",children:e.jsx(M,{size:23})}),e.jsx("h3",{children:"A wall that stays readable"}),e.jsx("p",{children:"Move from a compact list to large live previews. Keep the signal you need and hide the noise you do not."}),e.jsxs("div",{className:"feature-wall-demo",children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]})]}),e.jsxs("article",{className:"site-value-card mint",children:[e.jsx("span",{className:"site-feature-icon",children:e.jsx(g,{size:23})}),e.jsx("h3",{children:"Control without losing context"}),e.jsx("p",{children:"Jump from Wall to focused Control, then return to the same fleet view."}),e.jsxs("div",{className:"feature-cursor-demo",children:[e.jsx(g,{size:31}),e.jsx("span",{children:"Direct control"})]})]}),e.jsxs("article",{className:"site-value-card violet",children:[e.jsx("span",{className:"site-feature-icon",children:e.jsx(J,{size:23})}),e.jsx("h3",{children:"Your fleet in your pocket"}),e.jsx("p",{children:"Install the PWA on iPhone or Android and check the room before you walk back to it."}),e.jsxs("div",{className:"feature-phone-demo",children:[e.jsx("span",{}),e.jsxs("div",{children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]})]})]}),e.jsxs("article",{className:"site-value-card wide dark",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"site-kicker dark",children:[e.jsx(Q,{size:14})," Local-first when possible"]}),e.jsx("h3",{children:"Fast where you work. Reachable when you leave."}),e.jsx("p",{children:"VuvoDesk prefers the shortest useful route and keeps the current screen moving instead of building a stale queue."})]}),e.jsxs("div",{className:"feature-route",children:[e.jsxs("span",{children:[e.jsx(N,{size:19})," Hub"]}),e.jsx("i",{}),e.jsxs("span",{children:[e.jsx(Z,{size:19})," Clients"]}),e.jsx("i",{}),e.jsxs("span",{children:[e.jsx(j,{size:19})," PWA"]})]})]})]})]}),e.jsxs("section",{className:"site-section site-workflow",children:[e.jsxs("div",{className:"site-section-heading centered",children:[e.jsx("span",{children:"Start in three steps"}),e.jsx("h2",{children:"From zero to a live wall in minutes."})]}),e.jsxs("div",{className:"workflow-grid",children:[e.jsxs("article",{children:[e.jsx("b",{children:"01"}),e.jsx("span",{children:e.jsx(h,{size:21})}),e.jsx("h3",{children:"Install the Hub"}),e.jsx("p",{children:"Choose the computer that will organize your VuvoDesk fleet."})]}),e.jsxs("article",{children:[e.jsx("b",{children:"02"}),e.jsx("span",{children:e.jsx(I,{size:21})}),e.jsx("h3",{children:"Connect Clients"}),e.jsx("p",{children:"Use one PIN to add the Windows, Mac, and Linux computers you manage."})]}),e.jsxs("article",{children:[e.jsx("b",{children:"03"}),e.jsx("span",{children:e.jsx(j,{size:21})}),e.jsx("h3",{children:"Manage from anywhere"}),e.jsx("p",{children:"Open the web console or install the mobile PWA and keep every screen close."})]})]})]}),e.jsxs("section",{className:"site-section site-pricing-section",children:[e.jsxs("div",{className:"site-section-heading centered",children:[e.jsx("span",{children:"Simple pricing"}),e.jsx("h2",{children:"Start free. Upgrade when the wall earns its place."}),e.jsx("p",{children:b?"Monthly prices stay easy to understand. Lifetime offers are available separately below each paid plan.":"Free is available now. Paid checkout stays closed until live billing and customer support are verified."})]}),e.jsx(B,{compact:!0}),e.jsxs("a",{className:"site-inline-link",href:"/pricing",children:["Compare every plan ",e.jsx(o,{size:15})]})]}),e.jsxs("section",{className:"site-final-cta",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"site-kicker dark",children:[e.jsx(ee,{size:14})," Your fleet, one glance away"]}),e.jsxs("h2",{children:["Give every computer",e.jsx("br",{}),"one clear place to report."]})]}),e.jsxs("div",{children:[e.jsx("p",{children:"Start with five devices for free. Install the Hub, connect a Client, and open your first live wall."}),e.jsxs("div",{children:[e.jsxs("a",{className:"site-button light",href:"/download",children:["Get VuvoDesk ",e.jsx(o,{size:17})]}),e.jsx("a",{className:"site-button ghost",href:"/app",children:"Open console"})]})]})]})]})})}function ke(){const[s,a]=x.useState(!1),n=async()=>{try{await navigator.clipboard.writeText(T),a(!0),window.setTimeout(()=>a(!1),1800)}catch{a(!1)}};return e.jsxs("main",{className:"site-subpage",children:[e.jsxs("section",{className:"site-subpage-hero download-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(h,{size:15})," Download VuvoDesk"]}),e.jsxs("h1",{children:["Turn one computer into",e.jsx("br",{}),e.jsx("span",{children:"your command center."})]}),e.jsxs("p",{children:["Use the latest temporary installer for your computer. Available links follow the newest matching file on the ",U," channel; an unavailable platform is never linked to a missing file."]})]}),e.jsxs("section",{className:"download-grid",children:[e.jsxs("article",{id:"windows",children:[e.jsx("span",{className:"download-platform-icon windows",children:e.jsx(V,{size:27})}),e.jsxs("div",{children:[e.jsx("small",{children:"Windows"}),e.jsx("span",{className:"download-version",children:"Latest temporary build · x64 Electron"}),e.jsx("span",{className:"download-preview-note",children:"Temporary installer · unsigned"}),e.jsx("h2",{children:"Install VuvoDesk for Windows"}),e.jsx("p",{children:"Download the normal Electron setup program. Windows SmartScreen may warn about this preview until code signing is ready."})]}),e.jsxs("a",{className:"download-installer-link",href:ue,children:["Download Windows installer ",e.jsx(h,{size:16})]})]}),e.jsxs("article",{id:"macos",children:[e.jsx("span",{className:"download-platform-icon mac",children:e.jsx(N,{size:27})}),e.jsxs("div",{children:[e.jsx("small",{children:"macOS"}),e.jsx("span",{className:"download-version",children:"Intel & Apple silicon"}),e.jsx("span",{className:"download-preview-note",children:k?"Temporary installer · ad-hoc signed · not notarized":"Desktop installer not published yet"}),e.jsx("h2",{children:"Install VuvoDesk for macOS"}),e.jsx("p",{children:k?"Choose the chip in your Mac. On first launch, macOS may require Open Anyway in Privacy & Security because this preview is not Apple-notarized.":"Use the terminal install below while signed and notarized desktop packages are being prepared."})]}),k?e.jsxs("div",{className:"download-actions",children:[e.jsxs("a",{className:"download-installer-link",href:xe,children:["Apple silicon ",e.jsx(h,{size:16})]}),e.jsxs("a",{className:"download-installer-link secondary",href:me,children:["Intel Mac ",e.jsx(h,{size:16})]})]}):e.jsx("div",{className:"download-actions",children:e.jsxs("a",{className:"download-installer-link secondary",href:"#install-command",children:["Use terminal install ",e.jsx(v,{size:16})]})})]}),e.jsxs("article",{id:"linux",children:[e.jsx("span",{className:"download-platform-icon linux",children:e.jsx(v,{size:27})}),e.jsxs("div",{children:[e.jsx("small",{children:"Linux"}),e.jsx("span",{className:"download-version",children:"Latest temporary build · x64 · X11"}),e.jsx("span",{className:"download-preview-note",children:"Temporary installer"}),e.jsx("h2",{children:"Install VuvoDesk for Linux"}),e.jsx("p",{children:"Use the DEB package on Ubuntu, Debian, or Mint. For other distributions, download AppImage, mark it executable, then open it."})]}),e.jsxs("div",{className:"download-actions",children:[e.jsxs("a",{className:"download-installer-link",href:fe,children:["Download .deb ",e.jsx(h,{size:16})]}),e.jsxs("a",{className:"download-installer-link secondary",href:je,children:["Download AppImage ",e.jsx(h,{size:16})]})]})]})]}),e.jsxs("section",{className:"install-command-card",id:"install-command",children:[e.jsxs("div",{children:[e.jsxs("span",{children:[e.jsx(v,{size:18})," One command install"]}),e.jsx("h2",{children:"Terminal fallback and advanced setup"}),e.jsx("p",{children:"Use the npm package when you prefer a command-line install or the temporary desktop package does not suit your system."})]}),e.jsxs("div",{className:"install-command",children:[e.jsx("code",{children:T}),e.jsxs("button",{type:"button",onClick:()=>{n()},children:[e.jsx(se,{size:17})," ",s?"Copied":"Copy"]})]}),e.jsxs("ol",{children:[e.jsxs("li",{children:[e.jsx("b",{children:"1"}),e.jsx("span",{children:"Run the command on the computer that will be your Hub."})]}),e.jsxs("li",{children:[e.jsx("b",{children:"2"}),e.jsx("span",{children:"Open Settings and create a Hub PIN."})]}),e.jsxs("li",{children:[e.jsx("b",{children:"3"}),e.jsx("span",{children:"Run the same package as a Client on the other computers."})]})]})]}),e.jsxs("section",{className:"mobile-install-section",id:"mobile",children:[e.jsxs("div",{className:"mobile-install-heading",children:[e.jsx("span",{children:e.jsx(j,{size:26})}),e.jsxs("div",{children:[e.jsxs("small",{children:["iPhone & Android · PWA ",ie]}),e.jsx("h2",{children:"No app store required."}),e.jsx("p",{children:"Open the public web address, sign in, then install VuvoDesk on the Home Screen. The PWA always starts directly in the console."})]})]}),e.jsxs("div",{className:"mobile-web-address",children:[e.jsx("span",{children:"Mobile web address"}),e.jsx("a",{href:"https://vuvodesk.com/app",children:"https://vuvodesk.com/app"}),e.jsxs("a",{className:"site-button",href:"/app",children:["Open mobile console ",e.jsx(o,{size:16})]})]}),e.jsxs("div",{className:"pwa-guide-grid",children:[e.jsxs("article",{children:[e.jsx("strong",{children:"iPhone & iPad"}),e.jsxs("ol",{children:[e.jsx("li",{children:"Open the address in Safari."}),e.jsx("li",{children:"Tap Share, then Add to Home Screen."}),e.jsx("li",{children:"Choose Open as Web App and add VuvoDesk."})]})]}),e.jsxs("article",{children:[e.jsx("strong",{children:"Android"}),e.jsxs("ol",{children:[e.jsx("li",{children:"Open the address in Chrome."}),e.jsx("li",{children:"Open the browser menu and tap Install app."}),e.jsx("li",{children:"Launch VuvoDesk from the Home Screen."})]})]})]})]})]})}function Ne(){return e.jsxs("main",{className:"site-subpage pricing-subpage",children:[e.jsxs("section",{className:"site-subpage-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(S,{size:15})," VuvoDesk pricing"]}),e.jsxs("h1",{children:["Clear plans for",e.jsx("br",{}),e.jsx("span",{children:"growing screen walls."})]}),e.jsxs("p",{children:["Start with one account, choose Pro / Business for a school, academy, or commercial workplace, or give each operator a separate login with Team. ",!b&&"Paid checkout is not open yet."]})]}),e.jsx(B,{}),e.jsxs("section",{className:"pricing-explainer",children:[e.jsxs("article",{children:[e.jsx(A,{size:21}),e.jsxs("div",{children:[e.jsx("h3",{children:"Free stays useful"}),e.jsx("p",{children:"The standard banner helps keep a five-device personal wall available without a subscription."})]})]}),e.jsxs("article",{children:[e.jsx(S,{size:21}),e.jsxs("div",{children:[e.jsx("h3",{children:"Monthly and lifetime are separate"}),e.jsx("p",{children:"$5 Plus, $15 Pro / Business, and $49 Team are monthly prices. Existing Plus LTD $79 and Pro LTD $199 remain one-time offers."})]})]}),e.jsxs("article",{children:[e.jsx(_,{size:21}),e.jsxs("div",{children:[e.jsx("h3",{children:"Upgrade inside VuvoDesk"}),e.jsx("p",{children:"Sign in to the console, open Pricing, and choose the plan that matches the way you use the fleet."})]})]})]}),e.jsxs("section",{className:"pricing-bottom-cta",children:[e.jsxs("div",{children:[e.jsx("h2",{children:"Start with the computers you have today."}),e.jsx("p",{children:"No credit card is needed for Free."})]}),e.jsxs("a",{className:"site-button",href:"/app",children:["Start free ",e.jsx(o,{size:16})]})]})]})}function Se(){return e.jsxs("main",{className:"site-subpage policy-subpage",children:[e.jsxs("section",{className:"site-subpage-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(A,{size:15})," VuvoDesk support"]}),e.jsxs("h1",{children:["Start with the shortest",e.jsx("br",{}),e.jsx("span",{children:"path back to work."})]}),e.jsx("p",{children:"Installation help is public. Account-specific diagnostics and billing requests stay inside your signed-in Support board so they are tied to the correct account."})]}),e.jsxs("section",{className:"support-option-grid",children:[e.jsxs("article",{children:[e.jsx(h,{size:23}),e.jsx("h2",{children:"Install or update"}),e.jsx("p",{children:"Use the current Windows or Linux preview package, or the terminal command for every supported desktop."}),e.jsxs("a",{href:"/download",children:["Open download help ",e.jsx(o,{size:15})]})]}),e.jsxs("article",{children:[e.jsx(j,{size:23}),e.jsx("h2",{children:"Connection trouble"}),e.jsx("p",{children:"Sign in, open the Support board, and include the affected computer name, operating system, VuvoDesk version, and the exact message you saw."}),e.jsxs("a",{href:"/support/issues",children:["Open signed-in Support ",e.jsx(o,{size:15})]})]}),e.jsxs("article",{id:"billing",children:[e.jsx(S,{size:23}),e.jsx("h2",{children:"Account or billing"}),e.jsx("p",{children:b?"Use the signed-in Support board for cancellation, refund, duplicate-payment, or access requests.":"Paid checkout is currently closed. No paid entitlement should be granted until verified checkout becomes available."}),e.jsxs("a",{href:"/support/questions",children:["Open account Support ",e.jsx(o,{size:15})]})]})]}),e.jsxs("section",{className:"support-checklist",children:[e.jsx("h2",{children:"Before sending a report"}),e.jsxs("ol",{children:[e.jsx("li",{children:"Confirm the Hub and Client show the same VuvoDesk release."}),e.jsx("li",{children:"Write down whether the problem affects Wall, Control, clipboard, or sign-in."}),e.jsx("li",{children:"Never post a Hub PIN, pairing token, access token, or payment credential."})]})]})]})}function Pe(){return e.jsxs(C,{title:"Terms of Service",summary:"The practical rules for using the VuvoDesk preview.",updated:"August 30, 2026",children:[e.jsx("h2",{children:"1. Authorized use"}),e.jsx("p",{children:"Use VuvoDesk only on computers and networks you own or are explicitly allowed to manage. You are responsible for every remote-control action performed through your account, Hub, Team Space, or pairing credential."}),e.jsx("h2",{children:"2. Accounts and Team Spaces"}),e.jsx("p",{children:"Keep sign-in and pairing credentials private. Team members use separate accounts. A Team Owner is responsible for invitations, roles, removals, and the computers shared with the Team Space."}),e.jsx("h2",{children:"3. Plans and payment"}),e.jsxs("p",{children:["Free, Plus, Pro / Business, and Team features are limited by the plan shown in the product. A displayed price is not a promise that checkout is open. Paid access starts only after a verified payment event grants the entitlement. Cancellation and refund handling follows the ",e.jsx("a",{href:"/refunds",children:"Cancellation & Refund Policy"}),"."]}),e.jsx("h2",{children:"4. Codex Agent features"}),e.jsx("p",{children:"Codex Agent features require a separately installed and signed-in Codex environment and a separate OpenAI account. OpenAI terms apply to that account and service. VuvoDesk does not sell Codex access and is not an OpenAI product."}),e.jsx("h2",{children:"5. Preview software"}),e.jsx("p",{children:"Unsigned or non-notarized installers are clearly labeled preview builds. Do not use preview software for safety-critical systems or where a temporary loss of screen, input, or connectivity could cause harm. Keep local access and backups available."}),e.jsx("h2",{children:"6. Acceptable behavior"}),e.jsx("p",{children:"Do not use VuvoDesk to access another person's device without permission, evade security controls, distribute malware, interfere with the service, or violate law or third-party rights."}),e.jsx("h2",{children:"7. Changes and termination"}),e.jsx("p",{children:"We may suspend access that creates security, abuse, or payment risk. Material policy changes will be dated on this page. Mandatory consumer rights in your country are not excluded."}),e.jsx("h2",{children:"8. Support"}),e.jsxs("p",{children:["Use the ",e.jsx("a",{href:"/support",children:"Support page"})," for product and account requests. Do not include passwords, tokens, or payment credentials."]})]})}function De(){return e.jsxs(C,{title:"Privacy Notice",summary:"What VuvoDesk handles, where it goes, and what is kept local.",updated:"August 30, 2026",children:[e.jsx("h2",{children:"1. Account and product data"}),e.jsx("p",{children:"VuvoDesk processes sign-in identity, device and workspace identifiers, roles, plan entitlements, connection status, version information, and Support content needed to operate the service."}),e.jsx("h2",{children:"2. Screen and input traffic"}),e.jsx("p",{children:"VuvoDesk is designed to send live screen, audio, clipboard, and remote-input traffic directly between your Hub, Clients, and browser when the connection succeeds. The Cloudflare signaling service exchanges authenticated connection metadata and does not intentionally store or forward the screen-media payload. Local diagnostic logs may record status and error details, not passwords or payment credentials."}),e.jsx("h2",{children:"3. Service providers"}),e.jsx("p",{children:"Google and Supabase provide sign-in and account storage. Cloudflare provides the public site, update delivery, and authenticated connection signaling. Dodo Payments is used only when paid checkout is enabled. Optional Codex Agent actions use the separately signed-in OpenAI service selected by the user."}),e.jsx("h2",{children:"4. Retention and control"}),e.jsxs("p",{children:["Account, workspace, entitlement, and Support records are retained while needed to provide the service, resolve disputes, prevent abuse, or meet legal duties. Request account access, correction, export, or deletion through the signed-in ",e.jsx("a",{href:"/support/questions",children:"Support board"}),". Some records may be retained where law or fraud prevention requires it."]}),e.jsx("h2",{children:"5. Security and transfers"}),e.jsx("p",{children:"Internet services may process data in more than one country. We use authenticated sessions, restricted service credentials, and encrypted network transport where supported, but no system can promise absolute security."}),e.jsx("h2",{children:"6. Policy changes"}),e.jsx("p",{children:"Material changes will update the date on this page. Review this notice before enabling new remote-control, clipboard, Team, payment, or Agent features."})]})}function Ae(){return e.jsxs(C,{title:"Cancellation & Refund Policy",summary:"A plain-language policy before any paid checkout is opened.",updated:"August 30, 2026",children:[e.jsx("h2",{children:"1. Current checkout status"}),e.jsx("p",{children:b?"Paid checkout is available only for the plans whose buttons are active.":"Paid checkout is currently closed. Preview access does not create a paid subscription or lifetime entitlement."}),e.jsx("h2",{children:"2. Subscriptions"}),e.jsx("p",{children:"You may request cancellation at any time. Cancellation stops the next renewal and normally keeps access through the already-paid billing period. A cancellation request must be submitted before the renewal is charged."}),e.jsx("h2",{children:"3. Initial purchase refunds"}),e.jsx("p",{children:"For an initial paid purchase, request a refund within 14 calendar days of payment. Duplicate or unauthorized charges and a material service failure will be reviewed even after that period. Mandatory local refund rights always apply."}),e.jsx("h2",{children:"4. Lifetime purchases"}),e.jsx("p",{children:"A lifetime purchase covers the product entitlement described at checkout, not third-party services, future paid add-ons, or a promise that every preview feature will remain unchanged. The same 14-day initial-purchase request window applies."}),e.jsx("h2",{children:"5. How to request"}),e.jsxs("p",{children:["Open the signed-in ",e.jsx("a",{href:"/support/questions",children:"Support board"})," and provide the account email, plan, purchase date, and reason. Never include full card details, passwords, API keys, or access tokens. Access may be removed after a full refund or successful payment dispute."]})]})}function C({title:s,summary:a,updated:n,children:t}){return e.jsxs("main",{className:"site-subpage policy-subpage",children:[e.jsxs("section",{className:"site-subpage-hero policy-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(A,{size:15})," VuvoDesk policy"]}),e.jsx("h1",{children:s}),e.jsx("p",{children:a}),e.jsxs("small",{children:["Last updated: ",n]})]}),e.jsx("article",{className:"policy-document",children:t})]})}function Ce(){return e.jsxs("main",{className:"site-not-found",children:[e.jsx("span",{className:"site-brand-mark",children:e.jsx(R,{size:25})}),e.jsx("small",{children:"404"}),e.jsx("h1",{children:"This screen is not on the wall."}),e.jsx("p",{children:"The page may have moved, but your VuvoDesk console is still here."}),e.jsxs("div",{children:[e.jsx("a",{className:"site-button",href:"/",children:"VuvoDesk home"}),e.jsx("a",{className:"site-button site-button-secondary",href:"/app",children:"Open console"})]})]})}function Le(){const s=ve();return x.useEffect(()=>{const a={home:"VuvoDesk — Every computer. One calm command center.",download:"Download VuvoDesk — Windows, macOS, and Linux",pricing:"VuvoDesk Pricing — Free, Plus, Pro / Business, and Team",support:"VuvoDesk Support",terms:"VuvoDesk Terms of Service",privacy:"VuvoDesk Privacy Notice",refunds:"VuvoDesk Cancellation & Refund Policy","not-found":"Page not found — VuvoDesk"},n={home:"See and control the computers you manage from one clear VuvoDesk screen wall.",download:"Download the currently available VuvoDesk desktop preview or install it with one npm command.",pricing:"Compare VuvoDesk Free, Plus, Pro / Business, and Team plan boundaries.",support:"Get public VuvoDesk installation help or open the signed-in Support board.",terms:"Read the VuvoDesk terms for authorized remote-control use, plans, preview software, and Codex Agent features.",privacy:"Learn how VuvoDesk handles account, device, support, signaling, and direct screen traffic data.",refunds:"Read the VuvoDesk cancellation and refund policy before paid checkout opens.","not-found":"The requested VuvoDesk page was not found."};document.title=a[s];const m=`https://vuvodesk.com${s==="not-found"?"/":window.location.pathname.replace(/\/+$/,"")||"/"}`;let r=document.querySelector('link[rel="canonical"]');r||(r=document.createElement("link"),r.rel="canonical",document.head.append(r)),r.href=m;const c=document.querySelector('meta[name="description"]');c&&(c.content=n[s]);let l=document.querySelector('meta[property="og:url"]');return l||(l=document.createElement("meta"),l.setAttribute("property","og:url"),document.head.append(l)),l.content=m,document.documentElement.classList.add("livedesk-marketing-active"),()=>document.documentElement.classList.remove("livedesk-marketing-active")},[s]),e.jsxs("div",{className:"marketing-site",children:[e.jsx(we,{page:s}),s==="home"?e.jsx(ye,{}):s==="download"?e.jsx(ke,{}):s==="pricing"?e.jsx(Ne,{}):s==="support"?e.jsx(Se,{}):s==="terms"?e.jsx(Pe,{}):s==="privacy"?e.jsx(De,{}):s==="refunds"?e.jsx(Ae,{}):e.jsx(Ce,{}),e.jsx(ge,{})]})}function ze(s){return!!s.navigatorStandalone||!!s.displayModeStandalone||!!s.displayModeFullscreen}function Ee({publicOrigin:s,electron:a,pathname:n,search:t="",navigatorStandalone:m=!1,displayModeStandalone:r=!1,displayModeFullscreen:c=!1,marketingPreview:l=!1}){if(a||!s&&!l)return{kind:"app",redirectPath:""};const L=new URLSearchParams(t),$=L.has("pwa")||ze({navigatorStandalone:m,displayModeStandalone:r,displayModeFullscreen:c}),z=n==="/app"||n.startsWith("/app/"),q=n.startsWith("/support/"),H=L.has("checkout");return $||H?{kind:"app",redirectPath:z?"":"/app"}:z||q?{kind:"app",redirectPath:""}:{kind:"site",redirectPath:""}}function Oe({automaticRetry:s}){const[a,n]=x.useState(null),[t,m]=x.useState("");return x.useEffect(()=>{let r=!0;return F(()=>import("./VuvoDeskApp-DbKDh8Ra.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])).then(c=>{r&&n(()=>c.VuvoDeskApp)}).catch(c=>{if(!r)return;console.warn("[VuvoDesk] app startup load failed.",c);const l=window.navigator.onLine?"The latest app file could not be loaded.":"Reconnect to the internet, then try again.";m(l),he("load-error",s)}),()=>{r=!1}},[s]),a?e.jsx(a,{}):t?e.jsx(G,{detail:t,automaticRetry:s}):e.jsx("main",{className:"runtime-role-boot","aria-label":"Starting VuvoDesk","aria-busy":"true",children:e.jsx("span",{className:"runtime-role-boot-mark","aria-hidden":"true"})})}window.liveDesk&&document.documentElement.classList.add("livedesk-electron-desktop");const u=new URL(window.location.href),Te=!!window.navigator.standalone,D=Ee({publicOrigin:P(),electron:!!window.liveDesk,pathname:u.pathname,search:u.search,navigatorStandalone:Te,displayModeStandalone:window.matchMedia("(display-mode: standalone)").matches,displayModeFullscreen:window.matchMedia("(display-mode: fullscreen)").matches,marketingPreview:u.searchParams.get("site")==="1"});D.redirectPath&&(u.pathname=D.redirectPath,window.history.replaceState({},"",`${u.pathname}${u.search}${u.hash}`));ae.createRoot(document.getElementById("root")).render(e.jsx(x.StrictMode,{children:D.kind==="site"?e.jsx(Le,{}):e.jsx(K,{automaticRetry:P(),children:e.jsx(Oe,{automaticRetry:P()})})}));ce();de();
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/VuvoDeskApp-9Ex7qnd7.js","assets/pwa-startup-DvbrYEQi.js","assets/icons-CuXJn-Hz.js","assets/pwa-bootstrap-ljOQTt2e.js","assets/SupportPage-DcxrwVU9.js","assets/HubApp-DJVoFO6h.js","assets/preload-helper-DD1OZmLC.js","assets/MonitorStackIcon-CAj6nVrZ.js","assets/supabase-C7qjtLN3.js","assets/frame-lifecycle-D91nchvm.js","assets/HubApp-DFLBNvIi.css","assets/SupportPage-Cxx61WwR.css","assets/DesktopUpdatePanel-DuatXF9C.js","assets/VuvoDeskApp-ao5vkK6F.css"])))=>i.map(i=>d[i]);
2
+ import{_ as F}from"./preload-helper-DD1OZmLC.js";import{j as e,P as K,a as G}from"./pwa-startup-DvbrYEQi.js";import{r as x,$ as o,a0 as Y,a1 as E,b as X,a2 as O,o as y,M as V,a3 as N,a4 as v,a5 as j,a6 as M,a7 as g,W as J,a8 as Q,j as Z,D as h,a9 as I,aa as ee,ab as se,ac as S,S as A,ad as _,G as ne}from"./icons-CuXJn-Hz.js";import{a as ae}from"./client-8jUbxy3j.js";import{L as ie,M as R,F as re,p as i,P as te,a as oe,T as le,i as P}from"./MonitorStackIcon-CAj6nVrZ.js";/* empty css */import{f as ce,s as de,r as he}from"./pwa-bootstrap-ljOQTt2e.js";import"./react-rvm9rmed.js";const T="npx -y --prefer-online livedesk@latest",pe="".trim().toLowerCase(),U=pe==="stable"?"stable":"dev",f=`https://livedesk-desktop-updates.lovecrdm.workers.dev/download/${U}`,ue=`${f}/windows/x64`,me=`${f}/macos/x64`,xe=`${f}/macos/arm64`,je=`${f}/linux/x64`,fe=`${f}/linux/x64/deb`,k="".trim().toLowerCase()==="true",d="".trim().toLowerCase()==="true",p="".trim().toLowerCase()==="true",w="".trim().toLowerCase()==="true",b=d||p||w;function ve(){if(typeof window>"u")return"home";const s=window.location.pathname.replace(/\/+$/,"")||"/";return s==="/"?"home":s==="/download"?"download":s==="/pricing"?"pricing":s==="/support"?"support":s==="/terms"?"terms":s==="/privacy"?"privacy":s==="/refunds"?"refunds":"not-found"}function W(){return e.jsxs("a",{className:"site-brand",href:"/","aria-label":"VuvoDesk home",children:[e.jsx("span",{className:"site-brand-mark",children:e.jsx(R,{size:25})}),e.jsx("span",{children:"VuvoDesk"})]})}function we({page:s}){const a=[{label:"Product",href:"/#product",active:s==="home"},{label:"Pricing",href:"/pricing",active:s==="pricing"},{label:"Download",href:"/download",active:s==="download"},{label:"Support",href:"/support",active:s==="support"}];return e.jsx("header",{className:"site-header",children:e.jsxs("div",{className:"site-header-inner",children:[e.jsx(W,{}),e.jsx("nav",{className:"site-nav","aria-label":"Main navigation",children:a.map(n=>e.jsx("a",{className:n.active?"active":"",href:n.href,children:n.label},n.label))}),e.jsxs("div",{className:"site-header-actions",children:[e.jsx("a",{className:"site-text-link",href:"/app",children:"Open web console"}),e.jsxs("a",{className:"site-button site-button-small",href:"/download",children:["Get VuvoDesk ",e.jsx(o,{size:15})]})]}),e.jsxs("details",{className:"site-mobile-menu",children:[e.jsx("summary",{"aria-label":"Open navigation",children:e.jsx(Y,{size:22})}),e.jsxs("nav",{"aria-label":"Mobile navigation",children:[a.map(n=>e.jsxs("a",{href:n.href,children:[n.label,e.jsx(E,{size:15})]},n.label)),e.jsxs("a",{href:"/app",children:["Open web console",e.jsx(E,{size:15})]})]})]})]})})}function ge(){return e.jsxs("footer",{className:"site-footer",children:[e.jsxs("div",{className:"site-footer-main",children:[e.jsxs("div",{children:[e.jsx(W,{}),e.jsx("p",{children:"One calm command center for every computer you manage."})]}),e.jsxs("div",{className:"site-footer-links",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"Product"}),e.jsx("a",{href:"/#product",children:"Overview"}),e.jsx("a",{href:"/pricing",children:"Pricing"}),e.jsx("a",{href:"/download",children:"Download"})]}),e.jsxs("div",{children:[e.jsx("strong",{children:"Use VuvoDesk"}),e.jsx("a",{href:"/app",children:"Web console"}),e.jsx("a",{href:"/support",children:"Support"})]}),e.jsxs("div",{children:[e.jsx("strong",{children:"Platforms"}),e.jsx("span",{children:"Windows"}),e.jsx("span",{children:"macOS"}),e.jsx("span",{children:"Linux"}),e.jsx("span",{children:"Mobile PWA"})]}),e.jsxs("div",{children:[e.jsx("strong",{children:"Legal"}),e.jsx("a",{href:"/terms",children:"Terms"}),e.jsx("a",{href:"/privacy",children:"Privacy"}),e.jsx("a",{href:"/refunds",children:"Cancellation & refunds"})]})]})]}),e.jsxs("div",{className:"site-footer-bottom",children:[e.jsx("span",{children:"© 2026 VuvoDesk"}),e.jsx("span",{children:"Built for people who run real work across many screens."})]})]})}function be(){const s=[{name:"Studio-01",status:"Online",className:"screen-blue",cpu:"42%",ram:"61%"},{name:"Render-Mac",status:"Online",className:"screen-purple",cpu:"67%",ram:"74%"},{name:"Linux-Build",status:"Online",className:"screen-green",cpu:"29%",ram:"48%"},{name:"Office-PC",status:"Idle",className:"screen-orange",cpu:"18%",ram:"37%"}];return e.jsxs("div",{className:"product-mockup","aria-label":"VuvoDesk screen wall preview",children:[e.jsxs("div",{className:"mockup-window-bar",children:[e.jsxs("div",{children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsx("span",{children:"VuvoDesk · Wall"}),e.jsxs("span",{className:"mockup-online",children:[e.jsx("i",{})," 4 online"]})]}),e.jsxs("div",{className:"mockup-body",children:[e.jsxs("aside",{className:"mockup-rail","aria-hidden":"true",children:[e.jsx("span",{className:"active",children:e.jsx(M,{size:17})}),e.jsx("span",{children:e.jsx(g,{size:17})}),e.jsx("span",{children:e.jsx(I,{size:17})}),e.jsx("span",{children:e.jsx(_,{size:17})})]}),e.jsx("div",{className:"mockup-wall",children:s.map(a=>e.jsxs("article",{className:"mockup-screen",children:[e.jsxs("div",{className:`mockup-screen-image ${a.className}`,children:[e.jsx("span",{className:"mockup-code-line wide"}),e.jsx("span",{className:"mockup-code-line"}),e.jsx("span",{className:"mockup-code-line short"}),e.jsx("span",{className:"mockup-panel-block"})]}),e.jsxs("div",{className:"mockup-screen-title",children:[e.jsx("strong",{children:a.name}),e.jsxs("span",{children:[e.jsx("i",{})," ",a.status]})]}),e.jsxs("div",{className:"mockup-metrics",children:[e.jsxs("span",{children:["CPU ",e.jsx("b",{children:a.cpu})]}),e.jsxs("span",{children:["RAM ",e.jsx("b",{children:a.ram})]})]})]},a.name))})]}),e.jsxs("div",{className:"mockup-control-card",children:[e.jsx(g,{size:18}),e.jsxs("span",{children:[e.jsx("small",{children:"Selected computer"}),e.jsx("strong",{children:"Render-Mac"})]}),e.jsx("button",{type:"button",children:"Control"})]})]})}function B({compact:s=!1}){const a=[{key:"free",name:i.free.name,price:i.free.price,suffix:"forever",audience:i.free.audience,description:"A practical personal wall, supported by a standard banner.",features:[`Up to ${re} devices`,"1 person","Standard banner"],action:"Start free",href:"/app",available:!0},{key:"plus",name:i.ltd.name,price:i.ltd.price,suffix:"/ month",audience:i.ltd.audience,description:"A clean personal command center for creators and homelabs.",features:[`Up to ${te} devices`,"1 person · no standard banner","Personal use"],ltd:i.ltd.ltd,action:p||d?"Choose Plus":"Paid checkout opening soon",href:p||d?"/app?view=pricing":"/support#billing",available:p||d},{key:"pro",name:i.pro.name,price:i.pro.price,suffix:"/ month",audience:i.pro.audience,description:"Monitoring for schools, academies, studios, offices, and growing commercial fleets.",features:[`Up to ${oe} devices`,"1 person","Ad-free school, academy, and commercial use"],ltd:i.pro.ltd,action:p||d?"Choose Business":"Paid checkout opening soon",href:p||d?"/app?view=pricing":"/support#billing",available:p||d},{key:"team",name:i.team.name,price:i.team.price,suffix:"/ month",audience:i.team.audience,description:"A shared Team Space for operators who manage the same computers together.",features:["Unlimited computers",`${le} people with their own accounts`,"Commercial use · Owner and Operator roles"],action:w?"Choose Team":"Paid checkout opening soon",href:w?"/app?view=pricing":"/support#billing",available:w}];return e.jsx("div",{className:`site-pricing-grid ${s?"compact":""}`,children:a.map(n=>e.jsxs("article",{className:`site-price-card ${n.key==="plus"?"featured":""} ${n.available?"":"pending"}`,children:[e.jsxs("div",{className:"site-price-heading",children:[e.jsx("span",{children:n.name}),n.key==="plus"&&e.jsx("em",{children:"Most popular"})]}),e.jsx("p",{className:"site-price-audience",children:n.audience}),e.jsxs("div",{className:"site-price",children:[e.jsx("strong",{children:n.price}),e.jsx("small",{children:n.suffix})]}),e.jsx("p",{children:n.description}),e.jsx("ul",{children:n.features.map(t=>e.jsxs("li",{children:[e.jsx(ne,{size:16})," ",t]},t))}),n.ltd&&e.jsxs("div",{className:"site-ltd",children:[e.jsxs("span",{children:[n.name," LTD"]}),e.jsx("strong",{children:n.ltd.replace(" LTD","")}),e.jsx("small",{children:d?"one-time · available now":"one-time · checkout opening soon"})]}),e.jsxs("a",{className:`site-price-action ${n.key==="plus"&&n.available?"primary":""} ${n.available?"":"pending"}`,href:n.href,children:[n.action,e.jsx(o,{size:15})]})]},n.key))})}function ye(){return e.jsx(e.Fragment,{children:e.jsxs("main",{children:[e.jsxs("section",{className:"site-hero",children:[e.jsxs("div",{className:"site-hero-copy",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(X,{size:15})," The screen wall for real work"]}),e.jsxs("h1",{children:["Every computer.",e.jsx("br",{}),e.jsx("span",{children:"One calm command center."})]}),e.jsx("p",{children:"See every screen, focus the computer that needs you, and keep work moving from your desk or phone."}),e.jsxs("div",{className:"site-hero-actions",children:[e.jsxs("a",{className:"site-button",href:"/download",children:["Download VuvoDesk ",e.jsx(o,{size:17})]}),e.jsxs("a",{className:"site-button site-button-secondary",href:"/app",children:["Open web console ",e.jsx(O,{size:17})]})]}),e.jsxs("div",{className:"site-hero-notes",children:[e.jsxs("span",{children:[e.jsx(y,{size:15})," Free for 5 devices"]}),e.jsxs("span",{children:[e.jsx(y,{size:15})," No credit card"]}),e.jsxs("span",{children:[e.jsx(y,{size:15})," Windows · macOS · Linux"]})]})]}),e.jsxs("div",{className:"site-hero-visual",children:[e.jsx("div",{className:"site-orbit site-orbit-one"}),e.jsx("div",{className:"site-orbit site-orbit-two"}),e.jsx(be,{})]})]}),e.jsxs("section",{className:"platform-strip","aria-label":"Supported platforms",children:[e.jsx("span",{children:"Built for the computers you already run"}),e.jsxs("div",{children:[e.jsxs("strong",{children:[e.jsx(V,{size:18})," Windows"]}),e.jsxs("strong",{children:[e.jsx(N,{size:18})," macOS"]}),e.jsxs("strong",{children:[e.jsx(v,{size:18})," Linux"]}),e.jsxs("strong",{children:[e.jsx(j,{size:18})," iPhone & Android"]}),e.jsxs("strong",{children:[e.jsx(O,{size:18})," Any browser"]})]})]}),e.jsxs("section",{className:"site-section site-value-section",id:"product",children:[e.jsxs("div",{className:"site-section-heading",children:[e.jsx("span",{children:"Why VuvoDesk"}),e.jsxs("h2",{children:["Spend less time finding the problem.",e.jsx("br",{}),"Spend more time fixing it."]}),e.jsx("p",{children:"VuvoDesk keeps the fleet visible without turning your desktop into a pile of remote windows."})]}),e.jsxs("div",{className:"site-value-grid",children:[e.jsxs("article",{className:"site-value-card large blue",children:[e.jsx("span",{className:"site-feature-icon",children:e.jsx(M,{size:23})}),e.jsx("h3",{children:"A wall that stays readable"}),e.jsx("p",{children:"Move from a compact list to large live previews. Keep the signal you need and hide the noise you do not."}),e.jsxs("div",{className:"feature-wall-demo",children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]})]}),e.jsxs("article",{className:"site-value-card mint",children:[e.jsx("span",{className:"site-feature-icon",children:e.jsx(g,{size:23})}),e.jsx("h3",{children:"Control without losing context"}),e.jsx("p",{children:"Jump from Wall to focused Control, then return to the same fleet view."}),e.jsxs("div",{className:"feature-cursor-demo",children:[e.jsx(g,{size:31}),e.jsx("span",{children:"Direct control"})]})]}),e.jsxs("article",{className:"site-value-card violet",children:[e.jsx("span",{className:"site-feature-icon",children:e.jsx(J,{size:23})}),e.jsx("h3",{children:"Your fleet in your pocket"}),e.jsx("p",{children:"Install the PWA on iPhone or Android and check the room before you walk back to it."}),e.jsxs("div",{className:"feature-phone-demo",children:[e.jsx("span",{}),e.jsxs("div",{children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]})]})]}),e.jsxs("article",{className:"site-value-card wide dark",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"site-kicker dark",children:[e.jsx(Q,{size:14})," Local-first when possible"]}),e.jsx("h3",{children:"Fast where you work. Reachable when you leave."}),e.jsx("p",{children:"VuvoDesk prefers the shortest useful route and keeps the current screen moving instead of building a stale queue."})]}),e.jsxs("div",{className:"feature-route",children:[e.jsxs("span",{children:[e.jsx(N,{size:19})," Hub"]}),e.jsx("i",{}),e.jsxs("span",{children:[e.jsx(Z,{size:19})," Clients"]}),e.jsx("i",{}),e.jsxs("span",{children:[e.jsx(j,{size:19})," PWA"]})]})]})]})]}),e.jsxs("section",{className:"site-section site-workflow",children:[e.jsxs("div",{className:"site-section-heading centered",children:[e.jsx("span",{children:"Start in three steps"}),e.jsx("h2",{children:"From zero to a live wall in minutes."})]}),e.jsxs("div",{className:"workflow-grid",children:[e.jsxs("article",{children:[e.jsx("b",{children:"01"}),e.jsx("span",{children:e.jsx(h,{size:21})}),e.jsx("h3",{children:"Install the Hub"}),e.jsx("p",{children:"Choose the computer that will organize your VuvoDesk fleet."})]}),e.jsxs("article",{children:[e.jsx("b",{children:"02"}),e.jsx("span",{children:e.jsx(I,{size:21})}),e.jsx("h3",{children:"Connect Clients"}),e.jsx("p",{children:"Use one PIN to add the Windows, Mac, and Linux computers you manage."})]}),e.jsxs("article",{children:[e.jsx("b",{children:"03"}),e.jsx("span",{children:e.jsx(j,{size:21})}),e.jsx("h3",{children:"Manage from anywhere"}),e.jsx("p",{children:"Open the web console or install the mobile PWA and keep every screen close."})]})]})]}),e.jsxs("section",{className:"site-section site-pricing-section",children:[e.jsxs("div",{className:"site-section-heading centered",children:[e.jsx("span",{children:"Simple pricing"}),e.jsx("h2",{children:"Start free. Upgrade when the wall earns its place."}),e.jsx("p",{children:b?"Monthly prices stay easy to understand. Lifetime offers are available separately below each paid plan.":"Free is available now. Paid checkout stays closed until live billing and customer support are verified."})]}),e.jsx(B,{compact:!0}),e.jsxs("a",{className:"site-inline-link",href:"/pricing",children:["Compare every plan ",e.jsx(o,{size:15})]})]}),e.jsxs("section",{className:"site-final-cta",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"site-kicker dark",children:[e.jsx(ee,{size:14})," Your fleet, one glance away"]}),e.jsxs("h2",{children:["Give every computer",e.jsx("br",{}),"one clear place to report."]})]}),e.jsxs("div",{children:[e.jsx("p",{children:"Start with five devices for free. Install the Hub, connect a Client, and open your first live wall."}),e.jsxs("div",{children:[e.jsxs("a",{className:"site-button light",href:"/download",children:["Get VuvoDesk ",e.jsx(o,{size:17})]}),e.jsx("a",{className:"site-button ghost",href:"/app",children:"Open console"})]})]})]})]})})}function ke(){const[s,a]=x.useState(!1),n=async()=>{try{await navigator.clipboard.writeText(T),a(!0),window.setTimeout(()=>a(!1),1800)}catch{a(!1)}};return e.jsxs("main",{className:"site-subpage",children:[e.jsxs("section",{className:"site-subpage-hero download-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(h,{size:15})," Download VuvoDesk"]}),e.jsxs("h1",{children:["Turn one computer into",e.jsx("br",{}),e.jsx("span",{children:"your command center."})]}),e.jsxs("p",{children:["Use the latest temporary installer for your computer. Available links follow the newest matching file on the ",U," channel; an unavailable platform is never linked to a missing file."]})]}),e.jsxs("section",{className:"download-grid",children:[e.jsxs("article",{id:"windows",children:[e.jsx("span",{className:"download-platform-icon windows",children:e.jsx(V,{size:27})}),e.jsxs("div",{children:[e.jsx("small",{children:"Windows"}),e.jsx("span",{className:"download-version",children:"Latest temporary build · x64 Electron"}),e.jsx("span",{className:"download-preview-note",children:"Temporary installer · unsigned"}),e.jsx("h2",{children:"Install VuvoDesk for Windows"}),e.jsx("p",{children:"Download the normal Electron setup program. Windows SmartScreen may warn about this preview until code signing is ready."})]}),e.jsxs("a",{className:"download-installer-link",href:ue,children:["Download Windows installer ",e.jsx(h,{size:16})]})]}),e.jsxs("article",{id:"macos",children:[e.jsx("span",{className:"download-platform-icon mac",children:e.jsx(N,{size:27})}),e.jsxs("div",{children:[e.jsx("small",{children:"macOS"}),e.jsx("span",{className:"download-version",children:"Intel & Apple silicon"}),e.jsx("span",{className:"download-preview-note",children:k?"Temporary installer · ad-hoc signed · not notarized":"Desktop installer not published yet"}),e.jsx("h2",{children:"Install VuvoDesk for macOS"}),e.jsx("p",{children:k?"Choose the chip in your Mac. On first launch, macOS may require Open Anyway in Privacy & Security because this preview is not Apple-notarized.":"Use the terminal install below while signed and notarized desktop packages are being prepared."})]}),k?e.jsxs("div",{className:"download-actions",children:[e.jsxs("a",{className:"download-installer-link",href:xe,children:["Apple silicon ",e.jsx(h,{size:16})]}),e.jsxs("a",{className:"download-installer-link secondary",href:me,children:["Intel Mac ",e.jsx(h,{size:16})]})]}):e.jsx("div",{className:"download-actions",children:e.jsxs("a",{className:"download-installer-link secondary",href:"#install-command",children:["Use terminal install ",e.jsx(v,{size:16})]})})]}),e.jsxs("article",{id:"linux",children:[e.jsx("span",{className:"download-platform-icon linux",children:e.jsx(v,{size:27})}),e.jsxs("div",{children:[e.jsx("small",{children:"Linux"}),e.jsx("span",{className:"download-version",children:"Latest temporary build · x64 · X11"}),e.jsx("span",{className:"download-preview-note",children:"Temporary installer"}),e.jsx("h2",{children:"Install VuvoDesk for Linux"}),e.jsx("p",{children:"Use the DEB package on Ubuntu, Debian, or Mint. For other distributions, download AppImage, mark it executable, then open it."})]}),e.jsxs("div",{className:"download-actions",children:[e.jsxs("a",{className:"download-installer-link",href:fe,children:["Download .deb ",e.jsx(h,{size:16})]}),e.jsxs("a",{className:"download-installer-link secondary",href:je,children:["Download AppImage ",e.jsx(h,{size:16})]})]})]})]}),e.jsxs("section",{className:"install-command-card",id:"install-command",children:[e.jsxs("div",{children:[e.jsxs("span",{children:[e.jsx(v,{size:18})," One command install"]}),e.jsx("h2",{children:"Terminal fallback and advanced setup"}),e.jsx("p",{children:"Use the npm package when you prefer a command-line install or the temporary desktop package does not suit your system."})]}),e.jsxs("div",{className:"install-command",children:[e.jsx("code",{children:T}),e.jsxs("button",{type:"button",onClick:()=>{n()},children:[e.jsx(se,{size:17})," ",s?"Copied":"Copy"]})]}),e.jsxs("ol",{children:[e.jsxs("li",{children:[e.jsx("b",{children:"1"}),e.jsx("span",{children:"Run the command on the computer that will be your Hub."})]}),e.jsxs("li",{children:[e.jsx("b",{children:"2"}),e.jsx("span",{children:"Open Settings and create a Hub PIN."})]}),e.jsxs("li",{children:[e.jsx("b",{children:"3"}),e.jsx("span",{children:"Run the same package as a Client on the other computers."})]})]})]}),e.jsxs("section",{className:"mobile-install-section",id:"mobile",children:[e.jsxs("div",{className:"mobile-install-heading",children:[e.jsx("span",{children:e.jsx(j,{size:26})}),e.jsxs("div",{children:[e.jsxs("small",{children:["iPhone & Android · PWA ",ie]}),e.jsx("h2",{children:"No app store required."}),e.jsx("p",{children:"Open the public web address, sign in, then install VuvoDesk on the Home Screen. The PWA always starts directly in the console."})]})]}),e.jsxs("div",{className:"mobile-web-address",children:[e.jsx("span",{children:"Mobile web address"}),e.jsx("a",{href:"https://vuvodesk.com/app",children:"https://vuvodesk.com/app"}),e.jsxs("a",{className:"site-button",href:"/app",children:["Open mobile console ",e.jsx(o,{size:16})]})]}),e.jsxs("div",{className:"pwa-guide-grid",children:[e.jsxs("article",{children:[e.jsx("strong",{children:"iPhone & iPad"}),e.jsxs("ol",{children:[e.jsx("li",{children:"Open the address in Safari."}),e.jsx("li",{children:"Tap Share, then Add to Home Screen."}),e.jsx("li",{children:"Choose Open as Web App and add VuvoDesk."})]})]}),e.jsxs("article",{children:[e.jsx("strong",{children:"Android"}),e.jsxs("ol",{children:[e.jsx("li",{children:"Open the address in Chrome."}),e.jsx("li",{children:"Open the browser menu and tap Install app."}),e.jsx("li",{children:"Launch VuvoDesk from the Home Screen."})]})]})]})]})]})}function Ne(){return e.jsxs("main",{className:"site-subpage pricing-subpage",children:[e.jsxs("section",{className:"site-subpage-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(S,{size:15})," VuvoDesk pricing"]}),e.jsxs("h1",{children:["Clear plans for",e.jsx("br",{}),e.jsx("span",{children:"growing screen walls."})]}),e.jsxs("p",{children:["Start with one account, choose Pro / Business for a school, academy, or commercial workplace, or give each operator a separate login with Team. ",!b&&"Paid checkout is not open yet."]})]}),e.jsx(B,{}),e.jsxs("section",{className:"pricing-explainer",children:[e.jsxs("article",{children:[e.jsx(A,{size:21}),e.jsxs("div",{children:[e.jsx("h3",{children:"Free stays useful"}),e.jsx("p",{children:"The standard banner helps keep a five-device personal wall available without a subscription."})]})]}),e.jsxs("article",{children:[e.jsx(S,{size:21}),e.jsxs("div",{children:[e.jsx("h3",{children:"Monthly and lifetime are separate"}),e.jsx("p",{children:"$5 Plus, $15 Pro / Business, and $49 Team are monthly prices. Existing Plus LTD $79 and Pro LTD $199 remain one-time offers."})]})]}),e.jsxs("article",{children:[e.jsx(_,{size:21}),e.jsxs("div",{children:[e.jsx("h3",{children:"Upgrade inside VuvoDesk"}),e.jsx("p",{children:"Sign in to the console, open Pricing, and choose the plan that matches the way you use the fleet."})]})]})]}),e.jsxs("section",{className:"pricing-bottom-cta",children:[e.jsxs("div",{children:[e.jsx("h2",{children:"Start with the computers you have today."}),e.jsx("p",{children:"No credit card is needed for Free."})]}),e.jsxs("a",{className:"site-button",href:"/app",children:["Start free ",e.jsx(o,{size:16})]})]})]})}function Se(){return e.jsxs("main",{className:"site-subpage policy-subpage",children:[e.jsxs("section",{className:"site-subpage-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(A,{size:15})," VuvoDesk support"]}),e.jsxs("h1",{children:["Start with the shortest",e.jsx("br",{}),e.jsx("span",{children:"path back to work."})]}),e.jsx("p",{children:"Installation help is public. Account-specific diagnostics and billing requests stay inside your signed-in Support board so they are tied to the correct account."})]}),e.jsxs("section",{className:"support-option-grid",children:[e.jsxs("article",{children:[e.jsx(h,{size:23}),e.jsx("h2",{children:"Install or update"}),e.jsx("p",{children:"Use the current Windows or Linux preview package, or the terminal command for every supported desktop."}),e.jsxs("a",{href:"/download",children:["Open download help ",e.jsx(o,{size:15})]})]}),e.jsxs("article",{children:[e.jsx(j,{size:23}),e.jsx("h2",{children:"Connection trouble"}),e.jsx("p",{children:"Sign in, open the Support board, and include the affected computer name, operating system, VuvoDesk version, and the exact message you saw."}),e.jsxs("a",{href:"/support/issues",children:["Open signed-in Support ",e.jsx(o,{size:15})]})]}),e.jsxs("article",{id:"billing",children:[e.jsx(S,{size:23}),e.jsx("h2",{children:"Account or billing"}),e.jsx("p",{children:b?"Use the signed-in Support board for cancellation, refund, duplicate-payment, or access requests.":"Paid checkout is currently closed. No paid entitlement should be granted until verified checkout becomes available."}),e.jsxs("a",{href:"/support/questions",children:["Open account Support ",e.jsx(o,{size:15})]})]})]}),e.jsxs("section",{className:"support-checklist",children:[e.jsx("h2",{children:"Before sending a report"}),e.jsxs("ol",{children:[e.jsx("li",{children:"Confirm the Hub and Client show the same VuvoDesk release."}),e.jsx("li",{children:"Write down whether the problem affects Wall, Control, clipboard, or sign-in."}),e.jsx("li",{children:"Never post a Hub PIN, pairing token, access token, or payment credential."})]})]})]})}function Pe(){return e.jsxs(C,{title:"Terms of Service",summary:"The practical rules for using the VuvoDesk preview.",updated:"August 30, 2026",children:[e.jsx("h2",{children:"1. Authorized use"}),e.jsx("p",{children:"Use VuvoDesk only on computers and networks you own or are explicitly allowed to manage. You are responsible for every remote-control action performed through your account, Hub, Team Space, or pairing credential."}),e.jsx("h2",{children:"2. Accounts and Team Spaces"}),e.jsx("p",{children:"Keep sign-in and pairing credentials private. Team members use separate accounts. A Team Owner is responsible for invitations, roles, removals, and the computers shared with the Team Space."}),e.jsx("h2",{children:"3. Plans and payment"}),e.jsxs("p",{children:["Free, Plus, Pro / Business, and Team features are limited by the plan shown in the product. A displayed price is not a promise that checkout is open. Paid access starts only after a verified payment event grants the entitlement. Cancellation and refund handling follows the ",e.jsx("a",{href:"/refunds",children:"Cancellation & Refund Policy"}),"."]}),e.jsx("h2",{children:"4. Codex Agent features"}),e.jsx("p",{children:"Codex Agent features require a separately installed and signed-in Codex environment and a separate OpenAI account. OpenAI terms apply to that account and service. VuvoDesk does not sell Codex access and is not an OpenAI product."}),e.jsx("h2",{children:"5. Preview software"}),e.jsx("p",{children:"Unsigned or non-notarized installers are clearly labeled preview builds. Do not use preview software for safety-critical systems or where a temporary loss of screen, input, or connectivity could cause harm. Keep local access and backups available."}),e.jsx("h2",{children:"6. Acceptable behavior"}),e.jsx("p",{children:"Do not use VuvoDesk to access another person's device without permission, evade security controls, distribute malware, interfere with the service, or violate law or third-party rights."}),e.jsx("h2",{children:"7. Changes and termination"}),e.jsx("p",{children:"We may suspend access that creates security, abuse, or payment risk. Material policy changes will be dated on this page. Mandatory consumer rights in your country are not excluded."}),e.jsx("h2",{children:"8. Support"}),e.jsxs("p",{children:["Use the ",e.jsx("a",{href:"/support",children:"Support page"})," for product and account requests. Do not include passwords, tokens, or payment credentials."]})]})}function De(){return e.jsxs(C,{title:"Privacy Notice",summary:"What VuvoDesk handles, where it goes, and what is kept local.",updated:"August 30, 2026",children:[e.jsx("h2",{children:"1. Account and product data"}),e.jsx("p",{children:"VuvoDesk processes sign-in identity, device and workspace identifiers, roles, plan entitlements, connection status, version information, and Support content needed to operate the service."}),e.jsx("h2",{children:"2. Screen and input traffic"}),e.jsx("p",{children:"VuvoDesk is designed to send live screen, audio, clipboard, and remote-input traffic directly between your Hub, Clients, and browser when the connection succeeds. The Cloudflare signaling service exchanges authenticated connection metadata and does not intentionally store or forward the screen-media payload. Local diagnostic logs may record status and error details, not passwords or payment credentials."}),e.jsx("h2",{children:"3. Service providers"}),e.jsx("p",{children:"Google and Supabase provide sign-in and account storage. Cloudflare provides the public site, update delivery, and authenticated connection signaling. Dodo Payments is used only when paid checkout is enabled. Optional Codex Agent actions use the separately signed-in OpenAI service selected by the user."}),e.jsx("h2",{children:"4. Retention and control"}),e.jsxs("p",{children:["Account, workspace, entitlement, and Support records are retained while needed to provide the service, resolve disputes, prevent abuse, or meet legal duties. Request account access, correction, export, or deletion through the signed-in ",e.jsx("a",{href:"/support/questions",children:"Support board"}),". Some records may be retained where law or fraud prevention requires it."]}),e.jsx("h2",{children:"5. Security and transfers"}),e.jsx("p",{children:"Internet services may process data in more than one country. We use authenticated sessions, restricted service credentials, and encrypted network transport where supported, but no system can promise absolute security."}),e.jsx("h2",{children:"6. Policy changes"}),e.jsx("p",{children:"Material changes will update the date on this page. Review this notice before enabling new remote-control, clipboard, Team, payment, or Agent features."})]})}function Ae(){return e.jsxs(C,{title:"Cancellation & Refund Policy",summary:"A plain-language policy before any paid checkout is opened.",updated:"August 30, 2026",children:[e.jsx("h2",{children:"1. Current checkout status"}),e.jsx("p",{children:b?"Paid checkout is available only for the plans whose buttons are active.":"Paid checkout is currently closed. Preview access does not create a paid subscription or lifetime entitlement."}),e.jsx("h2",{children:"2. Subscriptions"}),e.jsx("p",{children:"You may request cancellation at any time. Cancellation stops the next renewal and normally keeps access through the already-paid billing period. A cancellation request must be submitted before the renewal is charged."}),e.jsx("h2",{children:"3. Initial purchase refunds"}),e.jsx("p",{children:"For an initial paid purchase, request a refund within 14 calendar days of payment. Duplicate or unauthorized charges and a material service failure will be reviewed even after that period. Mandatory local refund rights always apply."}),e.jsx("h2",{children:"4. Lifetime purchases"}),e.jsx("p",{children:"A lifetime purchase covers the product entitlement described at checkout, not third-party services, future paid add-ons, or a promise that every preview feature will remain unchanged. The same 14-day initial-purchase request window applies."}),e.jsx("h2",{children:"5. How to request"}),e.jsxs("p",{children:["Open the signed-in ",e.jsx("a",{href:"/support/questions",children:"Support board"})," and provide the account email, plan, purchase date, and reason. Never include full card details, passwords, API keys, or access tokens. Access may be removed after a full refund or successful payment dispute."]})]})}function C({title:s,summary:a,updated:n,children:t}){return e.jsxs("main",{className:"site-subpage policy-subpage",children:[e.jsxs("section",{className:"site-subpage-hero policy-hero",children:[e.jsxs("span",{className:"site-kicker",children:[e.jsx(A,{size:15})," VuvoDesk policy"]}),e.jsx("h1",{children:s}),e.jsx("p",{children:a}),e.jsxs("small",{children:["Last updated: ",n]})]}),e.jsx("article",{className:"policy-document",children:t})]})}function Ce(){return e.jsxs("main",{className:"site-not-found",children:[e.jsx("span",{className:"site-brand-mark",children:e.jsx(R,{size:25})}),e.jsx("small",{children:"404"}),e.jsx("h1",{children:"This screen is not on the wall."}),e.jsx("p",{children:"The page may have moved, but your VuvoDesk console is still here."}),e.jsxs("div",{children:[e.jsx("a",{className:"site-button",href:"/",children:"VuvoDesk home"}),e.jsx("a",{className:"site-button site-button-secondary",href:"/app",children:"Open console"})]})]})}function Le(){const s=ve();return x.useEffect(()=>{const a={home:"VuvoDesk — Every computer. One calm command center.",download:"Download VuvoDesk — Windows, macOS, and Linux",pricing:"VuvoDesk Pricing — Free, Plus, Pro / Business, and Team",support:"VuvoDesk Support",terms:"VuvoDesk Terms of Service",privacy:"VuvoDesk Privacy Notice",refunds:"VuvoDesk Cancellation & Refund Policy","not-found":"Page not found — VuvoDesk"},n={home:"See and control the computers you manage from one clear VuvoDesk screen wall.",download:"Download the currently available VuvoDesk desktop preview or install it with one npm command.",pricing:"Compare VuvoDesk Free, Plus, Pro / Business, and Team plan boundaries.",support:"Get public VuvoDesk installation help or open the signed-in Support board.",terms:"Read the VuvoDesk terms for authorized remote-control use, plans, preview software, and Codex Agent features.",privacy:"Learn how VuvoDesk handles account, device, support, signaling, and direct screen traffic data.",refunds:"Read the VuvoDesk cancellation and refund policy before paid checkout opens.","not-found":"The requested VuvoDesk page was not found."};document.title=a[s];const m=`https://vuvodesk.com${s==="not-found"?"/":window.location.pathname.replace(/\/+$/,"")||"/"}`;let r=document.querySelector('link[rel="canonical"]');r||(r=document.createElement("link"),r.rel="canonical",document.head.append(r)),r.href=m;const c=document.querySelector('meta[name="description"]');c&&(c.content=n[s]);let l=document.querySelector('meta[property="og:url"]');return l||(l=document.createElement("meta"),l.setAttribute("property","og:url"),document.head.append(l)),l.content=m,document.documentElement.classList.add("livedesk-marketing-active"),()=>document.documentElement.classList.remove("livedesk-marketing-active")},[s]),e.jsxs("div",{className:"marketing-site",children:[e.jsx(we,{page:s}),s==="home"?e.jsx(ye,{}):s==="download"?e.jsx(ke,{}):s==="pricing"?e.jsx(Ne,{}):s==="support"?e.jsx(Se,{}):s==="terms"?e.jsx(Pe,{}):s==="privacy"?e.jsx(De,{}):s==="refunds"?e.jsx(Ae,{}):e.jsx(Ce,{}),e.jsx(ge,{})]})}function ze(s){return!!s.navigatorStandalone||!!s.displayModeStandalone||!!s.displayModeFullscreen}function Ee({publicOrigin:s,electron:a,pathname:n,search:t="",navigatorStandalone:m=!1,displayModeStandalone:r=!1,displayModeFullscreen:c=!1,marketingPreview:l=!1}){if(a||!s&&!l)return{kind:"app",redirectPath:""};const L=new URLSearchParams(t),$=L.has("pwa")||ze({navigatorStandalone:m,displayModeStandalone:r,displayModeFullscreen:c}),z=n==="/app"||n.startsWith("/app/"),q=n.startsWith("/support/"),H=L.has("checkout");return $||H?{kind:"app",redirectPath:z?"":"/app"}:z||q?{kind:"app",redirectPath:""}:{kind:"site",redirectPath:""}}function Oe({automaticRetry:s}){const[a,n]=x.useState(null),[t,m]=x.useState("");return x.useEffect(()=>{let r=!0;return F(()=>import("./VuvoDeskApp-9Ex7qnd7.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])).then(c=>{r&&n(()=>c.VuvoDeskApp)}).catch(c=>{if(!r)return;console.warn("[VuvoDesk] app startup load failed.",c);const l=window.navigator.onLine?"The latest app file could not be loaded.":"Reconnect to the internet, then try again.";m(l),he("load-error",s)}),()=>{r=!1}},[s]),a?e.jsx(a,{}):t?e.jsx(G,{detail:t,automaticRetry:s}):e.jsx("main",{className:"runtime-role-boot","aria-label":"Starting VuvoDesk","aria-busy":"true",children:e.jsx("span",{className:"runtime-role-boot-mark","aria-hidden":"true"})})}window.liveDesk&&document.documentElement.classList.add("livedesk-electron-desktop");const u=new URL(window.location.href),Te=!!window.navigator.standalone,D=Ee({publicOrigin:P(),electron:!!window.liveDesk,pathname:u.pathname,search:u.search,navigatorStandalone:Te,displayModeStandalone:window.matchMedia("(display-mode: standalone)").matches,displayModeFullscreen:window.matchMedia("(display-mode: fullscreen)").matches,marketingPreview:u.searchParams.get("site")==="1"});D.redirectPath&&(u.pathname=D.redirectPath,window.history.replaceState({},"",`${u.pathname}${u.search}${u.hash}`));ae.createRoot(document.getElementById("root")).render(e.jsx(x.StrictMode,{children:D.kind==="site"?e.jsx(Le,{}):e.jsx(K,{automaticRetry:P(),children:e.jsx(Oe,{automaticRetry:P()})})}));ce();de();
@@ -55,14 +55,14 @@
55
55
  .vuvodesk-static-boot [hidden] { display: none; }
56
56
  @keyframes vuvodesk-static-boot-spin { to { transform: rotate(360deg); } }
57
57
  </style>
58
- <script type="module" crossorigin src="/assets/main-BDc3XoFI.js" data-vuvodesk-entry></script>
58
+ <script type="module" crossorigin src="/assets/main-16UlVMG9.js" data-vuvodesk-entry></script>
59
59
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-DD1OZmLC.js">
60
60
  <link rel="modulepreload" crossorigin href="/assets/icons-CuXJn-Hz.js">
61
61
  <link rel="modulepreload" crossorigin href="/assets/pwa-bootstrap-ljOQTt2e.js">
62
62
  <link rel="modulepreload" crossorigin href="/assets/pwa-startup-DvbrYEQi.js">
63
63
  <link rel="modulepreload" crossorigin href="/assets/react-rvm9rmed.js">
64
64
  <link rel="modulepreload" crossorigin href="/assets/client-8jUbxy3j.js">
65
- <link rel="modulepreload" crossorigin href="/assets/MonitorStackIcon-DDuMtcFd.js">
65
+ <link rel="modulepreload" crossorigin href="/assets/MonitorStackIcon-CAj6nVrZ.js">
66
66
  <link rel="stylesheet" crossorigin href="/assets/main-CLwaKs4-.css">
67
67
  <link rel="stylesheet" crossorigin href="/assets/styles-BjyLRq6m.css">
68
68
  </head>
package/web/dist/sw.js CHANGED
@@ -1,8 +1,8 @@
1
- const PWA_RELEASE = '0.1.680';
1
+ const PWA_RELEASE = '0.1.682';
2
2
  const PWA_CACHE = `livedesk-pwa-shell-${PWA_RELEASE}`;
3
3
  const OFFLINE_URL = '/offline.html';
4
4
  const PWA_APP_URL = `/app?pwa=${PWA_RELEASE}&shell=${PWA_RELEASE}`;
5
- const PWA_SHELL_ASSETS = ["/assets/app-BjUA2t1N.js","/assets/preload-helper-DD1OZmLC.js","/assets/pwa-bootstrap-ljOQTt2e.js","/assets/client-8jUbxy3j.js","/assets/icons-CuXJn-Hz.js","/assets/react-rvm9rmed.js","/assets/HubApp-k5_04IYv.js","/assets/pwa-startup-DvbrYEQi.js","/assets/MonitorStackIcon-DDuMtcFd.js","/assets/supabase-C7qjtLN3.js","/assets/frame-lifecycle-D91nchvm.js","/assets/HubApp-DFLBNvIi.css","/assets/styles-BjyLRq6m.css"];
5
+ const PWA_SHELL_ASSETS = ["/assets/app-DRl6qm_l.js","/assets/preload-helper-DD1OZmLC.js","/assets/pwa-bootstrap-ljOQTt2e.js","/assets/client-8jUbxy3j.js","/assets/icons-CuXJn-Hz.js","/assets/react-rvm9rmed.js","/assets/HubApp-DJVoFO6h.js","/assets/pwa-startup-DvbrYEQi.js","/assets/MonitorStackIcon-CAj6nVrZ.js","/assets/supabase-C7qjtLN3.js","/assets/frame-lifecycle-D91nchvm.js","/assets/HubApp-DFLBNvIi.css","/assets/styles-BjyLRq6m.css"];
6
6
  const PWA_SHELL_ASSET_PATHS = new Set(PWA_SHELL_ASSETS);
7
7
 
8
8
  self.addEventListener('install', event => {
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "kind": "livedesk-production-web-source-evidence",
4
- "generatedAt": "2026-09-04T18:22:46.818Z",
5
- "pwaRelease": "0.1.680",
6
- "sourceHash": "9b6ac67139583ca93cad3173ed8170dd61d1f782cc5070134becebac7653a246",
4
+ "generatedAt": "2026-09-04T19:00:20.217Z",
5
+ "pwaRelease": "0.1.682",
6
+ "sourceHash": "a756c3b090d28c8ff0bf8e12ed7c1213f4dcc1752387453db222e4a748dedc76",
7
7
  "sourceFileCount": 225,
8
8
  "sourceBytes": 3032977,
9
9
  "viteEnvironmentHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
10
- "outputHash": "3cec85601d54f868c7ec9d3f3a1078f06e53ca4d498d808c773d228c6b3acd1e",
10
+ "outputHash": "b3b3282922075533e5a7ba6745f4bf5b3707067e81f328369201c4bbe6574e53",
11
11
  "outputFileCount": 47,
12
12
  "outputBytes": 1913497,
13
13
  "outputManifest": [
@@ -19,12 +19,12 @@
19
19
  {
20
20
  "path": "app.html",
21
21
  "bytes": 5910,
22
- "sha256": "aee28c19c191541edf9901dbd4dc04c96657a029f315444366de80194a4b954c"
22
+ "sha256": "25d419ec5c6b150d171a2806557676c7a79f32ab185417d3635175d65c51ea0e"
23
23
  },
24
24
  {
25
25
  "path": "app.webmanifest",
26
26
  "bytes": 841,
27
- "sha256": "c469fadd217ccaa3c5b9eb9325926bb6232bb2fab418a7dca8860c1b46f0f6c1"
27
+ "sha256": "188c014e6f4755d8b4ba62779d3e12456d44a01da295bb05de0d98d6ae7023eb"
28
28
  },
29
29
  {
30
30
  "path": "apple-touch-icon.png",
@@ -32,14 +32,9 @@
32
32
  "sha256": "0c8f7e411c993a1acaa1c41046b952cf412dbc5ff53b9d5a8fc17158ee1f0520"
33
33
  },
34
34
  {
35
- "path": "assets/AgentSettingsTab-DRpAmtEB.js",
35
+ "path": "assets/AgentSettingsTab-4AvQvAzL.js",
36
36
  "bytes": 4547,
37
- "sha256": "22a7c3b6583dc2d47ad8d9d5a66a0e2bb9796c4fa42d6ed2f1864c7ae836ae8f"
38
- },
39
- {
40
- "path": "assets/AgentsPage-6cBmEoox.js",
41
- "bytes": 65762,
42
- "sha256": "4f3b6a89c94569bdc4accacdbb797c5077baebb446a9a74b8c345e5493d960eb"
37
+ "sha256": "5d74ab4b2335dae63d77edb86253d196e891655a69328b0a668bc5e143840b04"
43
38
  },
44
39
  {
45
40
  "path": "assets/AgentsPage-D29gvPcH.css",
@@ -47,14 +42,19 @@
47
42
  "sha256": "fe349e23f92e35f98583c791185a73d99b3e9e263d2151b404e3937b0212a4aa"
48
43
  },
49
44
  {
50
- "path": "assets/app-BjUA2t1N.js",
45
+ "path": "assets/AgentsPage-DubRELnZ.js",
46
+ "bytes": 65762,
47
+ "sha256": "92088ab20d37e00a4ec09a079ac87c373e869a23c331d72a61950b408da5d560"
48
+ },
49
+ {
50
+ "path": "assets/app-DRl6qm_l.js",
51
51
  "bytes": 2193,
52
- "sha256": "e2430846fff7aa823007cd2204afdd2af58cb8ca4b612df8ac379738a0362378"
52
+ "sha256": "023bf8e15dc365cc863bb58011800eab9197b4ab3496a62aca239bed0cd9818c"
53
53
  },
54
54
  {
55
- "path": "assets/CaptureGallery-D0lGAcNW.js",
55
+ "path": "assets/CaptureGallery-pxID4Nzq.js",
56
56
  "bytes": 2580,
57
- "sha256": "97c65db1c9f62f42a7bb5d2f7b9c18d162ed95c39d4bb2afaf3134f7319a60e2"
57
+ "sha256": "8f81b4b13c99d59722f504acf0283e5c0561e85f9d004181c78293077adc920a"
58
58
  },
59
59
  {
60
60
  "path": "assets/client-8jUbxy3j.js",
@@ -82,9 +82,9 @@
82
82
  "sha256": "2b6174a109112146b0f176b5d0068885bb7b2a9d832398884e49194d81ad5cad"
83
83
  },
84
84
  {
85
- "path": "assets/HubApp-k5_04IYv.js",
85
+ "path": "assets/HubApp-DJVoFO6h.js",
86
86
  "bytes": 521434,
87
- "sha256": "fa4e9fbc4ff5de1bfa17e3970a733330d2a6e76c851501b6763e30b85d26fc23"
87
+ "sha256": "f2afd78ffc6c0b407fa7006e85d4a9dfb66ee0ae3a6f92756c1bafad1048b14e"
88
88
  },
89
89
  {
90
90
  "path": "assets/icons-CuXJn-Hz.js",
@@ -92,9 +92,9 @@
92
92
  "sha256": "629394d30c5273d6a00f023b2fa01801feaecaa49b72dc4b42f3622467f78bc5"
93
93
  },
94
94
  {
95
- "path": "assets/main-BDc3XoFI.js",
95
+ "path": "assets/main-16UlVMG9.js",
96
96
  "bytes": 36921,
97
- "sha256": "129ecd6a9e2bc99cc0043f647dbd688e38452301ebcba6822a419748e306b1b1"
97
+ "sha256": "9d064c6a2f79453552acf46e5295db35963cdbbf38fad936885ee37786b6c045"
98
98
  },
99
99
  {
100
100
  "path": "assets/main-CLwaKs4-.css",
@@ -102,9 +102,9 @@
102
102
  "sha256": "79594d3b1207b6999ede1360efd55ef03c4fd3f5ac2dceed986d0c1c3e3b1483"
103
103
  },
104
104
  {
105
- "path": "assets/MonitorStackIcon-DDuMtcFd.js",
105
+ "path": "assets/MonitorStackIcon-CAj6nVrZ.js",
106
106
  "bytes": 57884,
107
- "sha256": "dc6035cbe6a3e153f90f4566723811f438dbb5693930fcdb5ff54a1ff0e13c25"
107
+ "sha256": "2a974b337a31ab347e37a68ba3a2348e5bc6dbbd4a035bd66aabcdd3b35f6269"
108
108
  },
109
109
  {
110
110
  "path": "assets/preload-helper-DD1OZmLC.js",
@@ -137,9 +137,9 @@
137
137
  "sha256": "9ffcc619bc1785028bd28eaabd19c577d22228f06c0182500dec58a378fe17bc"
138
138
  },
139
139
  {
140
- "path": "assets/SettingsPage-DwinQOF0.js",
140
+ "path": "assets/SettingsPage-DYC7ETb1.js",
141
141
  "bytes": 9734,
142
- "sha256": "e69a2312e72f6cbf553ecdedc41955c102436a284b22170a0f6e4d162db74a01"
142
+ "sha256": "a9fbe330b7b345fdd381ccdc4359e5bca10f396237a66f3e058fa2d68e5fa1f3"
143
143
  },
144
144
  {
145
145
  "path": "assets/SettingsTabs-CbCpfIYW.js",
@@ -152,9 +152,9 @@
152
152
  "sha256": "8eed16509e17695b37a28790e25e12f8a00a50b8f5fcc11c5c68fae0687c9c98"
153
153
  },
154
154
  {
155
- "path": "assets/ShareFilesPage-oyaBEwDC.js",
155
+ "path": "assets/ShareFilesPage-Cg2seH07.js",
156
156
  "bytes": 188712,
157
- "sha256": "03c1d094c07cc42e8bed505b38978c31d019b9603f9d605e65cc082eba960c4d"
157
+ "sha256": "b0a6be7b600e11370dedde0c801ecd60be94e15ca0323c5906f1fad52b41cf8b"
158
158
  },
159
159
  {
160
160
  "path": "assets/styles-BjyLRq6m.css",
@@ -172,20 +172,20 @@
172
172
  "sha256": "59a383e6d7382973d103d21b4817bd53b124b9fa908c459bf5c418c9e4c88e82"
173
173
  },
174
174
  {
175
- "path": "assets/SupportPage-DsOnSA2Z.js",
175
+ "path": "assets/SupportPage-DcxrwVU9.js",
176
176
  "bytes": 30715,
177
- "sha256": "5650e8d9d413a95b40ab82f02879678cd15c77b849825a41ee98fa3fd4f7a2f6"
177
+ "sha256": "4e2e54ca1785e2a77ef408dffa797d92cb383669428589d67f3a2099c5bb9636"
178
+ },
179
+ {
180
+ "path": "assets/VuvoDeskApp-9Ex7qnd7.js",
181
+ "bytes": 32604,
182
+ "sha256": "510ec07b745427e999e4a7b7c0ed1c4940861b03f39d9af2bccb99705d549d82"
178
183
  },
179
184
  {
180
185
  "path": "assets/VuvoDeskApp-ao5vkK6F.css",
181
186
  "bytes": 26355,
182
187
  "sha256": "46b020c1806e59e07b454da8ab61ae111f5835f09b12f6df6364e94d146dbd56"
183
188
  },
184
- {
185
- "path": "assets/VuvoDeskApp-DbKDh8Ra.js",
186
- "bytes": 32604,
187
- "sha256": "86749db646edd542af4d0129f78746b93e79b692941e282d53656cbe4847ef52"
188
- },
189
189
  {
190
190
  "path": "desktop-auth-callback.html",
191
191
  "bytes": 3192,
@@ -209,7 +209,7 @@
209
209
  {
210
210
  "path": "index.html",
211
211
  "bytes": 7820,
212
- "sha256": "5f8d309f41aef73b72e5e947da813d78839f6ed1aa0d433c0ce252d5b76af390"
212
+ "sha256": "dd5c55347a2b50a3defbfce546850694ccde5c81cdba8a9870c0b2078b83bac9"
213
213
  },
214
214
  {
215
215
  "path": "offline.html",
@@ -244,7 +244,7 @@
244
244
  {
245
245
  "path": "sw.js",
246
246
  "bytes": 3976,
247
- "sha256": "74361c6ccd117c1eb6b2fcbc1e9f8bf83d090977f2bff54b21beb60c4af809bf"
247
+ "sha256": "84181b5e8204c4ec1add0a5012d16f19461f0181a9e30d4652c94535fa5be88c"
248
248
  }
249
249
  ]
250
250
  }