diff --git a/assets/Editor-079b8504.js.gz b/assets/Editor-079b8504.js.gz
new file mode 100644
index 0000000..e82dd8d
Binary files /dev/null and b/assets/Editor-079b8504.js.gz differ
diff --git a/assets/Editor-21b47d03.js.gz b/assets/Editor-21b47d03.js.gz
deleted file mode 100644
index c5898c1..0000000
Binary files a/assets/Editor-21b47d03.js.gz and /dev/null differ
diff --git a/assets/Files-9e45a1b0.js b/assets/Files-d7d9e642.js
similarity index 78%
rename from assets/Files-9e45a1b0.js
rename to assets/Files-d7d9e642.js
index b5313ae..3daa378 100644
--- a/assets/Files-9e45a1b0.js
+++ b/assets/Files-d7d9e642.js
@@ -1,4 +1,4 @@
-import{d as u}from"./index-10f4832e.js";const w="/assets/file-manager-0e3c2c9d.svg",h={config:{name:"Files",type:"process",icon:w,targetVer:"1.0.0-indev.0"},run:async i=>{const s=await i.loadLibrary("lib/WindowManager").then(e=>e.createWindow({title:"Files",icon:w,width:500,height:400},i)),n=i.fs,r=await i.loadLibrary("lib/MIMETypes");s.content.style.display="flex",s.content.style.flexDirection="column";let d="/home";async function c(e){d=e;const b=await n.readdir(e),y=e==="/"?'
';s.content.innerHTML=`
+import{d as u}from"./index-55c1b714.js";const w="/FlowOS/assets/file-manager-0e3c2c9d.svg",h={config:{name:"Files",type:"process",icon:w,targetVer:"1.0.0-indev.0"},run:async i=>{const s=await i.loadLibrary("lib/WindowManager").then(e=>e.createWindow({title:"Files",icon:w,width:500,height:400},i)),n=i.fs,r=await i.loadLibrary("lib/MIMETypes");s.content.style.display="flex",s.content.style.flexDirection="column";let d="/home";async function c(e){d=e;const b=await n.readdir(e),y=e==="/"?'
${y}${e}
diff --git a/assets/HTML-7606a1bb.js b/assets/HTML-66f1d40b.js
similarity index 59%
rename from assets/HTML-7606a1bb.js
rename to assets/HTML-66f1d40b.js
index 232ee2f..f22fa81 100644
--- a/assets/HTML-7606a1bb.js
+++ b/assets/HTML-66f1d40b.js
@@ -1 +1 @@
-import{H as t}from"./index-10f4832e.js";const n={config:{name:"HTML",type:"library",targetVer:"1.0.0-indev.0"},init:(a,e,r)=>{},data:t};export{n as default};
+import{H as t}from"./index-55c1b714.js";const n={config:{name:"HTML",type:"library",targetVer:"1.0.0-indev.0"},init:(a,e,r)=>{},data:t};export{n as default};
diff --git a/assets/ImageViewer-890e28cb.js b/assets/ImageViewer-890e28cb.js
deleted file mode 100644
index 873cdba..0000000
--- a/assets/ImageViewer-890e28cb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as l}from"./index-10f4832e.js";const i="/assets/org.gnome.Loupe-1c680d25.svg",g={config:{name:"Image Viewer",type:"process",icon:i,targetVer:"1.0.0-indev.0"},run:async t=>{if(Object.keys(t.data).length>0){const e=await t.loadLibrary("lib/WindowManager").then(a=>a.createWindow({title:"Image Viewer",icon:i,width:500,height:500},t)),o=t.fs,r=await t.loadLibrary("lib/MIMETypes"),d=await t.loadLibrary("lib/HTML"),n=async()=>{e.content.innerHTML="";const a=await o.readFile(t.data.path),c=`data:${r[t.data.path.split(".").at(-1)].type};base64,${encodeURIComponent(l.Buffer.from(a).toString("base64"))}`;new d("div").style({width:"100%",height:"100%",background:`url(${c})`,"background-size":"contain","background-position":"center","background-repeat":"no-repeat","aspect-ratio":"1 / 1"}).appendTo(e.content)};await n(),document.addEventListener("fs_update",()=>{n().catch(a=>console.error(a))});return}await t.kill(),await t.launch("apps/Files")}};export{g as default};
diff --git a/assets/ImageViewer-d031471c.js b/assets/ImageViewer-d031471c.js
new file mode 100644
index 0000000..d288629
--- /dev/null
+++ b/assets/ImageViewer-d031471c.js
@@ -0,0 +1 @@
+import{d as l}from"./index-55c1b714.js";const i="/FlowOS/assets/org.gnome.Loupe-1c680d25.svg",g={config:{name:"Image Viewer",type:"process",icon:i,targetVer:"1.0.0-indev.0"},run:async t=>{if(Object.keys(t.data).length>0){const e=await t.loadLibrary("lib/WindowManager").then(a=>a.createWindow({title:"Image Viewer",icon:i,width:500,height:500},t)),o=t.fs,r=await t.loadLibrary("lib/MIMETypes"),d=await t.loadLibrary("lib/HTML"),n=async()=>{e.content.innerHTML="";const a=await o.readFile(t.data.path),c=`data:${r[t.data.path.split(".").at(-1)].type};base64,${encodeURIComponent(l.Buffer.from(a).toString("base64"))}`;new d("div").style({width:"100%",height:"100%",background:`url(${c})`,"background-size":"contain","background-position":"center","background-repeat":"no-repeat","aspect-ratio":"1 / 1"}).appendTo(e.content)};await n(),document.addEventListener("fs_update",()=>{n().catch(a=>console.error(a))});return}await t.kill(),await t.launch("apps/Files")}};export{g as default};
diff --git a/assets/Info-0f878648.js b/assets/Info-0f878648.js
new file mode 100644
index 0000000..1592384
--- /dev/null
+++ b/assets/Info-0f878648.js
@@ -0,0 +1 @@
+import{H as t}from"./index-55c1b714.js";const s="/FlowOS/assets/userinfo-2a654358.svg",o="/FlowOS/assets/badge-629f981b.png",r={config:{name:"Info",type:"process",icon:s,targetVer:"1.0.0-indev.0"},run:async n=>{const e=await n.loadLibrary("lib/WindowManager").then(a=>a.createWindow({title:"Info",icon:s,width:300,height:400,canResize:!1},n));e.content.style.padding="10px",e.content.style.textAlign="center",e.content.style.display="flex",e.content.style.flexDirection="column",e.content.style.justifyContent="center",e.content.style.alignItems="center",e.content.style.background="var(--base)",new t("div").appendTo(e.content).appendMany(new t("h1").style({margin:"0"}).text("FlowOS").append(new t("sup").text(`${n.sysInfo.codename}`).style({"font-size":"0.5em"})),new t("p").style({margin:"0"}).text(`v${String(n.sysInfo.version)}`),new t("br"),new t("a").attr({href:"https://discord.gg/nj93ywpyRy"}).append(new t("img").attr({src:o,height:"50"})),new t("br"),new t("a").text("Discord").attr({href:"https://discord.gg/86F8dK9vfn",class:"discord"}),new t("span").text(" - "),new t("a").text("Github").attr({href:"https://github.com/Flow-Works/FlowOS",class:"github"}))}};export{r as default};
diff --git a/assets/Info-93029680.js b/assets/Info-93029680.js
deleted file mode 100644
index 392b783..0000000
--- a/assets/Info-93029680.js
+++ /dev/null
@@ -1 +0,0 @@
-import{H as t}from"./index-10f4832e.js";const s="/assets/userinfo-2a654358.svg",o="/assets/badge-629f981b.png",r={config:{name:"Info",type:"process",icon:s,targetVer:"1.0.0-indev.0"},run:async n=>{const e=await n.loadLibrary("lib/WindowManager").then(a=>a.createWindow({title:"Info",icon:s,width:300,height:400,canResize:!1},n));e.content.style.padding="10px",e.content.style.textAlign="center",e.content.style.display="flex",e.content.style.flexDirection="column",e.content.style.justifyContent="center",e.content.style.alignItems="center",e.content.style.background="var(--base)",new t("div").appendTo(e.content).appendMany(new t("h1").style({margin:"0"}).text("FlowOS").append(new t("sup").text(`${n.sysInfo.codename}`).style({"font-size":"0.5em"})),new t("p").style({margin:"0"}).text(`v${String(n.sysInfo.version)}`),new t("br"),new t("a").attr({href:"https://discord.gg/nj93ywpyRy"}).append(new t("img").attr({src:o,height:"50"})),new t("br"),new t("a").text("Discord").attr({href:"https://discord.gg/86F8dK9vfn",class:"discord"}),new t("span").text(" - "),new t("a").text("Github").attr({href:"https://github.com/Flow-Works/FlowOS",class:"github"}))}};export{r as default};
diff --git a/assets/Manager-432f3ded.js b/assets/Manager-432f3ded.js
new file mode 100644
index 0000000..0111010
--- /dev/null
+++ b/assets/Manager-432f3ded.js
@@ -0,0 +1 @@
+const c="/FlowOS/assets/software-properties-abb09ac9.svg",l="/FlowOS/assets/application-executable-b031e44a.svg",r="/FlowOS/assets/icon-library-63ab8699.svg",s={config:{name:"Manager",type:"process",icon:c,targetVer:"1.0.0-indev.0"},run:async e=>{const a=await e.loadLibrary("lib/WindowManager").then(n=>n.createWindow({title:"Manager",icon:c,width:350,height:500,canResize:!1},e)),t=await e.loadLibrary("lib/HTML");a.content.style.display="flex",a.content.style.flexDirection="column",a.content.style.gap="10px",a.content.style.padding="10px",a.content.style.background="var(--base)";for(const n in e.kernel.packageList){const i=new t("div").style({display:"flex",gap:"10px",padding:"10px",background:"var(--surface-0)",borderRadius:"10px"}).appendTo(a.content);new t("img").attr({src:e.kernel.packageList[n].executable.config.icon??(e.kernel.packageList[n].executable.config.type==="library"?r:l),style:"border-radius: 40%;aspect-ratio: 1 / 1;height: 50px;"}).appendTo(i);const o=new t("div").appendTo(i);new t("h3").style({margin:"0"}).text(e.kernel.packageList[n].executable.config.name).appendTo(o),new t("code").text(e.kernel.packageList[n].executable.config.type).appendTo(o)}}};export{s as default};
diff --git a/assets/Manager-9613cbb8.js b/assets/Manager-9613cbb8.js
deleted file mode 100644
index e6c82b3..0000000
--- a/assets/Manager-9613cbb8.js
+++ /dev/null
@@ -1 +0,0 @@
-const o="/assets/software-properties-abb09ac9.svg",r="/assets/application-executable-b031e44a.svg",l="/assets/icon-library-63ab8699.svg",s={config:{name:"Manager",type:"process",icon:o,targetVer:"1.0.0-indev.0"},run:async e=>{const a=await e.loadLibrary("lib/WindowManager").then(n=>n.createWindow({title:"Manager",icon:o,width:350,height:500,canResize:!1},e)),t=await e.loadLibrary("lib/HTML");a.content.style.display="flex",a.content.style.flexDirection="column",a.content.style.gap="10px",a.content.style.padding="10px",a.content.style.background="var(--base)";for(const n in e.kernel.packageList){const i=new t("div").style({display:"flex",gap:"10px",padding:"10px",background:"var(--surface-0)",borderRadius:"10px"}).appendTo(a.content);new t("img").attr({src:e.kernel.packageList[n].executable.config.icon??(e.kernel.packageList[n].executable.config.type==="library"?l:r),style:"border-radius: 40%;aspect-ratio: 1 / 1;height: 50px;"}).appendTo(i);const c=new t("div").appendTo(i);new t("h3").style({margin:"0"}).text(e.kernel.packageList[n].executable.config.name).appendTo(c),new t("code").text(e.kernel.packageList[n].executable.config.type).appendTo(c)}}};export{s as default};
diff --git a/assets/Settings-0c80f750.js b/assets/Settings-0c80f750.js
deleted file mode 100644
index a8f615d..0000000
--- a/assets/Settings-0c80f750.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as m,l as u}from"./index-10f4832e.js";const d="/assets/preferences-system-c8f3e310.svg",f={config:{name:"Settings",type:"process",icon:d,targetVer:"2.0.0"},run:async a=>{const l=await a.loadLibrary("lib/WindowManager").then(t=>t.createWindow({title:"Settings",icon:d,width:500,height:500},a)),{fs:o}=a,r=await a.loadLibrary("lib/HTML"),{Input:w,Button:p,Dropdown:s}=await a.loadLibrary("lib/Components"),c=async t=>{l.content.innerHTML="";for(const e in t){let n=w.new();if(e==="THEME_PRIMARY"){const{extras:i}=JSON.parse(m.Buffer.from(await o.readFile(`/etc/themes/${t.THEME}.theme`)).toString());n=s.new(Object.keys(i))}else e==="THEME"&&(n=s.new((await o.readdir("/etc/themes")).map(i=>i.replace(".theme",""))));e==="THEME_PRIMARY"||e==="THEME"?n.elm.value=t[e]:n.attr({value:t[e]}),console.log(n.getValue()),new r("div").appendMany(new r("label").style({"text-transform":"capitalize"}).text(`${e.toLowerCase().replaceAll("_"," ")}:`),new r("br"),new r("div").style({display:"flex",gap:"5px"}).appendMany(n,p.new().text("Save").on("click",()=>{t[e]=n.getValue(),o.writeFile("/etc/flow",u.stringify(t)).then(()=>{document.dispatchEvent(new CustomEvent("config_update",{detail:{config:t}})),(e==="THEME"||e==="THEME_PRIMARY")&&document.dispatchEvent(new CustomEvent("theme_update",{}))}).catch(i=>console.error(i))}))).appendTo(l.content)}};await c(a.kernel.config),document.addEventListener("config_update",t=>{c(t.detail.config).catch(e=>console.error(e))})}};export{f as default};
diff --git a/assets/Settings-8eaed610.js b/assets/Settings-8eaed610.js
new file mode 100644
index 0000000..ebe7230
--- /dev/null
+++ b/assets/Settings-8eaed610.js
@@ -0,0 +1 @@
+import{d as m,l as u}from"./index-55c1b714.js";const d="/FlowOS/assets/preferences-system-c8f3e310.svg",f={config:{name:"Settings",type:"process",icon:d,targetVer:"2.0.0"},run:async a=>{const l=await a.loadLibrary("lib/WindowManager").then(t=>t.createWindow({title:"Settings",icon:d,width:500,height:500},a)),{fs:r}=a,o=await a.loadLibrary("lib/HTML"),{Input:w,Button:p,Dropdown:s}=await a.loadLibrary("lib/Components"),c=async t=>{l.content.innerHTML="";for(const e in t){let n=w.new();if(e==="THEME_PRIMARY"){const{extras:i}=JSON.parse(m.Buffer.from(await r.readFile(`/etc/themes/${t.THEME}.theme`)).toString());n=s.new(Object.keys(i))}else e==="THEME"&&(n=s.new((await r.readdir("/etc/themes")).map(i=>i.replace(".theme",""))));e==="THEME_PRIMARY"||e==="THEME"?n.elm.value=t[e]:n.attr({value:t[e]}),console.log(n.getValue()),new o("div").appendMany(new o("label").style({"text-transform":"capitalize"}).text(`${e.toLowerCase().replaceAll("_"," ")}:`),new o("br"),new o("div").style({display:"flex",gap:"5px"}).appendMany(n,p.new().text("Save").on("click",()=>{t[e]=n.getValue(),r.writeFile("/etc/flow",u.stringify(t)).then(()=>{document.dispatchEvent(new CustomEvent("config_update",{detail:{config:t}})),(e==="THEME"||e==="THEME_PRIMARY")&&document.dispatchEvent(new CustomEvent("theme_update",{}))}).catch(i=>console.error(i))}))).appendTo(l.content)}};await c(a.kernel.config),document.addEventListener("config_update",t=>{c(t.detail.config).catch(e=>console.error(e))})}};export{f as default};
diff --git a/assets/SplashScreen-acd3dc9d.js b/assets/SplashScreen-40f4538a.js
similarity index 90%
rename from assets/SplashScreen-acd3dc9d.js
rename to assets/SplashScreen-40f4538a.js
index 0e0511a..40d9fd5 100644
--- a/assets/SplashScreen-acd3dc9d.js
+++ b/assets/SplashScreen-40f4538a.js
@@ -1 +1 @@
-import{F as a}from"./index-10f4832e.js";let i,o;const r={config:{name:"SplashScreen",type:"library",targetVer:"1.0.0-indev.0"},init:(e,t,n)=>{i=e,o=t},data:{getElement:()=>{const{HTML:e}=i,t=new e("div").style({position:"absolute",top:"0",left:"0",width:"100vw",height:"100vh",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center","z-index":"1000000"});new e("img").attr({src:a,width:128}).appendTo(t);const n=new e("h1").style({margin:"0"}).text("FlowOS").appendTo(t);return new e("sup").style({"font-size":"0.5em"}).text(o.codename).appendTo(n),new e("p").style({margin:"0"}).text("loading...").appendTo(t),t}}};export{r as default};
+import{F as a}from"./index-55c1b714.js";let i,o;const r={config:{name:"SplashScreen",type:"library",targetVer:"1.0.0-indev.0"},init:(e,t,n)=>{i=e,o=t},data:{getElement:()=>{const{HTML:e}=i,t=new e("div").style({position:"absolute",top:"0",left:"0",width:"100vw",height:"100vh",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center","z-index":"1000000"});new e("img").attr({src:a,width:128}).appendTo(t);const n=new e("h1").style({margin:"0"}).text("FlowOS").appendTo(t);return new e("sup").style({"font-size":"0.5em"}).text(o.codename).appendTo(n),new e("p").style({margin:"0"}).text("loading...").appendTo(t),t}}};export{r as default};
diff --git a/assets/StatusBar-d6c6637a.js b/assets/StatusBar-78090290.js
similarity index 97%
rename from assets/StatusBar-d6c6637a.js
rename to assets/StatusBar-78090290.js
index 5801eff..7fd544f 100644
--- a/assets/StatusBar-d6c6637a.js
+++ b/assets/StatusBar-78090290.js
@@ -1,4 +1,4 @@
-import{n as d}from"./application-default-icon-38d880e7.js";import{g as o}from"./utils-2c87b698.js";const t={config:{name:"StatusBar",type:"library",targetVer:"1.0.0-indev.0"},init:(e,a,n)=>{if(t.data.element=new e.HTML("toolbar"),t.data.element.html(`
+import{n as d}from"./application-default-icon-a19c8ba0.js";import{g as o}from"./utils-2c87b698.js";const t={config:{name:"StatusBar",type:"library",targetVer:"1.0.0-indev.0"},init:(e,a,n)=>{if(t.data.element=new e.HTML("toolbar"),t.data.element.html(`
space_dashboard
diff --git a/assets/Store-2a453bcf.js b/assets/Store-2a453bcf.js
new file mode 100644
index 0000000..a7bd362
--- /dev/null
+++ b/assets/Store-2a453bcf.js
@@ -0,0 +1 @@
+import{d as $}from"./index-55c1b714.js";import{n as k}from"./application-default-icon-a19c8ba0.js";const v="/FlowOS/assets/softwarecenter-ac603202.svg",j={config:{name:"Store",type:"process",icon:v,targetVer:"1.0.0-indev.0"},run:async o=>{const u=await o.loadLibrary("lib/WindowManager").then(e=>e.createWindow({title:"Store",icon:v,width:500,height:700},o)),{fs:c}=o,n=await o.loadLibrary("lib/HTML"),{Button:g,Icon:s}=await o.loadLibrary("lib/Components");fetch(`${o.kernel.config.SERVER}/apps/list/`).then(async e=>await e.json()).then(E).catch(e=>console.error(e));async function m(){const a=await(await fetch(`${o.kernel.config.SERVER}/apps/list/`)).json(),y=new n(u.content).qs("div");a.forEach(async(r,x)=>{const p=y?.qsa("div")?.[x];p?.html(""),fetch(`${o.kernel.config.SERVER}/cors/?url=${r}`).then(async t=>await t.json()).then(t=>{t.apps.forEach(i=>{c.exists(`/home/Applications/${i.url.split("/").at(-1)?.replace(".js",".app")}`).then(d=>{const l=g.new().style({display:"flex",gap:"5px","align-items":"center"}).text("Uninstall").prepend(s.new("delete")).on("click",()=>f(i.url));d?fetch(`${o.kernel.config.SERVER}/cors?url=${i.url}`).then(async h=>await h.text()).then(async h=>{$.Buffer.from(await c.readFile(`/opt/apps/${i.url.split("/").at(-1)}`)).toString()!==h&&l.text("Update").prepend(s.new("update")).on("click",()=>w(i.url))}).catch(h=>console.error(h)):l.text("Install").prepend(s.new("download")).on("click",()=>w(i.url)),new n("div").style({display:"flex","flex-direction":"row",gap:"10px",padding:"10px",background:"var(--base)","border-radius":"10px"}).appendMany(new n("img").attr({src:i.icon??k}).style({"aspect-ratio":"1 / 1",width:"60px",height:"60px"}),new n("div").appendMany(new n("h3").style({margin:"0"}).text(i.name),l)).appendTo(p)}).catch(d=>console.error(d))})}).catch(t=>console.error(t))})}function E(e){u.content.innerHTML="";const a=new n("div").appendTo(u.content);e.forEach(y=>{fetch(`${o.kernel.config.SERVER}/cors/?url=${y}`).then(async r=>await r.json()).then(r=>{const x=s.new("arrow_drop_up");new n("h2").text(r.name).style({margin:"0",padding:"10px",display:"flex",gap:"5px","align-items":"center"}).prepend(x).appendTo(a).on("click",()=>{p.style({height:p.elm.style.height==="0px"?"max-content":"0"}),x.text(`arrow_drop_${p.elm.style.height==="0px"?"up":"down"}`)});const p=new n("div").appendTo(a).style({height:"0",display:"flex","flex-direction":"column",gap:"10px",overflow:"hidden",padding:"0 10px"});r.apps.forEach(t=>{c.exists(`/home/Applications/${t.url.split("/").at(-1)?.replace(".js",".app")}`).then(i=>{const d=g.new().style({display:"flex",gap:"5px","align-items":"center"}).text("Uninstall").prepend(s.new("delete")).on("click",()=>f(t.url));i?fetch(`${o.kernel.config.SERVER}/cors?url=${t.url}`).then(async l=>await l.text()).then(async l=>{$.Buffer.from(await c.readFile(`/opt/apps/${t.url.split("/").at(-1)}`)).toString()!==l&&d.text("Update").prepend(s.new("update")).un("click",()=>f(t.url)).on("click",()=>w(t.url))}).catch(l=>console.error(l)):d.text("Install").prepend(s.new("download")).un("click",()=>f(t.url)).on("click",()=>w(t.url)),new n("div").style({display:"flex","flex-direction":"row",gap:"10px",padding:"10px",background:"var(--base)","border-radius":"10px"}).appendMany(new n("img").attr({src:t.icon??k}).style({"aspect-ratio":"1 / 1",width:"60px",height:"60px"}),new n("div").appendMany(new n("h3").style({margin:"0"}).text(t.name),d)).appendTo(p)}).catch(i=>console.error(i))})}).catch(r=>console.error(r))})}function w(e){fetch(e).then(async a=>await a.text()).then(async a=>{await c.writeFile(`/home/Applications/${e.split("/").at(-1)?.replace(".js",".app")}`,`apps/${e.split("/").at(-1)?.split(".")[0]}`),await c.writeFile(`/opt/apps/${e.split("/").at(-1)}`,a),await m()}).catch(a=>console.error(a))}function f(e){c.unlink(`/home/Applications/${e.split("/").at(-1)?.replace(".js",".app")}`).then(async()=>{await c.unlink(`/opt/apps/${e.split("/").at(-1)}`),await m()}).catch(a=>console.error(a))}}};export{j as default};
diff --git a/assets/Store-f86c6053.js b/assets/Store-f86c6053.js
deleted file mode 100644
index ad926cf..0000000
--- a/assets/Store-f86c6053.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as $}from"./index-10f4832e.js";import{n as k}from"./application-default-icon-38d880e7.js";const v="/assets/softwarecenter-ac603202.svg",j={config:{name:"Store",type:"process",icon:v,targetVer:"1.0.0-indev.0"},run:async o=>{const u=await o.loadLibrary("lib/WindowManager").then(e=>e.createWindow({title:"Store",icon:v,width:500,height:700},o)),{fs:c}=o,n=await o.loadLibrary("lib/HTML"),{Button:g,Icon:s}=await o.loadLibrary("lib/Components");fetch(`${o.kernel.config.SERVER}/apps/list/`).then(async e=>await e.json()).then(E).catch(e=>console.error(e));async function m(){const a=await(await fetch(`${o.kernel.config.SERVER}/apps/list/`)).json(),y=new n(u.content).qs("div");a.forEach(async(r,x)=>{const p=y?.qsa("div")?.[x];p?.html(""),fetch(`${o.kernel.config.SERVER}/cors/?url=${r}`).then(async t=>await t.json()).then(t=>{t.apps.forEach(i=>{c.exists(`/home/Applications/${i.url.split("/").at(-1)?.replace(".js",".app")}`).then(d=>{const l=g.new().style({display:"flex",gap:"5px","align-items":"center"}).text("Uninstall").prepend(s.new("delete")).on("click",()=>f(i.url));d?fetch(`${o.kernel.config.SERVER}/cors?url=${i.url}`).then(async h=>await h.text()).then(async h=>{$.Buffer.from(await c.readFile(`/opt/apps/${i.url.split("/").at(-1)}`)).toString()!==h&&l.text("Update").prepend(s.new("update")).on("click",()=>w(i.url))}).catch(h=>console.error(h)):l.text("Install").prepend(s.new("download")).on("click",()=>w(i.url)),new n("div").style({display:"flex","flex-direction":"row",gap:"10px",padding:"10px",background:"var(--base)","border-radius":"10px"}).appendMany(new n("img").attr({src:i.icon??k}).style({"aspect-ratio":"1 / 1",width:"60px",height:"60px"}),new n("div").appendMany(new n("h3").style({margin:"0"}).text(i.name),l)).appendTo(p)}).catch(d=>console.error(d))})}).catch(t=>console.error(t))})}function E(e){u.content.innerHTML="";const a=new n("div").appendTo(u.content);e.forEach(y=>{fetch(`${o.kernel.config.SERVER}/cors/?url=${y}`).then(async r=>await r.json()).then(r=>{const x=s.new("arrow_drop_up");new n("h2").text(r.name).style({margin:"0",padding:"10px",display:"flex",gap:"5px","align-items":"center"}).prepend(x).appendTo(a).on("click",()=>{p.style({height:p.elm.style.height==="0px"?"max-content":"0"}),x.text(`arrow_drop_${p.elm.style.height==="0px"?"up":"down"}`)});const p=new n("div").appendTo(a).style({height:"0",display:"flex","flex-direction":"column",gap:"10px",overflow:"hidden",padding:"0 10px"});r.apps.forEach(t=>{c.exists(`/home/Applications/${t.url.split("/").at(-1)?.replace(".js",".app")}`).then(i=>{const d=g.new().style({display:"flex",gap:"5px","align-items":"center"}).text("Uninstall").prepend(s.new("delete")).on("click",()=>f(t.url));i?fetch(`${o.kernel.config.SERVER}/cors?url=${t.url}`).then(async l=>await l.text()).then(async l=>{$.Buffer.from(await c.readFile(`/opt/apps/${t.url.split("/").at(-1)}`)).toString()!==l&&d.text("Update").prepend(s.new("update")).un("click",()=>f(t.url)).on("click",()=>w(t.url))}).catch(l=>console.error(l)):d.text("Install").prepend(s.new("download")).un("click",()=>f(t.url)).on("click",()=>w(t.url)),new n("div").style({display:"flex","flex-direction":"row",gap:"10px",padding:"10px",background:"var(--base)","border-radius":"10px"}).appendMany(new n("img").attr({src:t.icon??k}).style({"aspect-ratio":"1 / 1",width:"60px",height:"60px"}),new n("div").appendMany(new n("h3").style({margin:"0"}).text(t.name),d)).appendTo(p)}).catch(i=>console.error(i))})}).catch(r=>console.error(r))})}function w(e){fetch(e).then(async a=>await a.text()).then(async a=>{await c.writeFile(`/home/Applications/${e.split("/").at(-1)?.replace(".js",".app")}`,`apps/${e.split("/").at(-1)?.split(".")[0]}`),await c.writeFile(`/opt/apps/${e.split("/").at(-1)}`,a),await m()}).catch(a=>console.error(a))}function f(e){c.unlink(`/home/Applications/${e.split("/").at(-1)?.replace(".js",".app")}`).then(async()=>{await c.unlink(`/opt/apps/${e.split("/").at(-1)}`),await m()}).catch(a=>console.error(a))}}};export{j as default};
diff --git a/assets/TaskManager-6e75d78f.js b/assets/TaskManager-b562368f.js
similarity index 72%
rename from assets/TaskManager-6e75d78f.js
rename to assets/TaskManager-b562368f.js
index 60eb80d..64af60b 100644
--- a/assets/TaskManager-6e75d78f.js
+++ b/assets/TaskManager-b562368f.js
@@ -1,4 +1,4 @@
-const l="/assets/utilities-system-monitor-125f7e39.svg",c={config:{name:"Task Manager",type:"process",icon:l,targetVer:"1.0.0-indev.0"},run:async n=>{const e=await n.loadLibrary("lib/WindowManager").then(d=>d.createWindow({title:"Task Manager",icon:l,width:600,height:200},n)),t=await n.loadLibrary("lib/HTML");e.content.style.display="flex",e.content.style.flexDirection="column",e.content.style.gap="10px",e.content.style.padding="10px",e.content.style.background="var(--base)",new t("style").html(`tbody tr:hover {
+const l="/FlowOS/assets/utilities-system-monitor-125f7e39.svg",c={config:{name:"Task Manager",type:"process",icon:l,targetVer:"1.0.0-indev.0"},run:async n=>{const e=await n.loadLibrary("lib/WindowManager").then(d=>d.createWindow({title:"Task Manager",icon:l,width:600,height:200},n)),t=await n.loadLibrary("lib/HTML");e.content.style.display="flex",e.content.style.flexDirection="column",e.content.style.gap="10px",e.content.style.padding="10px",e.content.style.background="var(--base)",new t("style").html(`tbody tr:hover {
background: var(--surface-1);
border-radius: 10px;
}
diff --git a/assets/ThemeMaker-558cad3b.js b/assets/ThemeMaker-558cad3b.js
new file mode 100644
index 0000000..d5baaf2
--- /dev/null
+++ b/assets/ThemeMaker-558cad3b.js
@@ -0,0 +1 @@
+const i="/FlowOS/assets/theme-config-7bf94f6c.svg",m={config:{name:"Theme Maker",type:"process",icon:i,targetVer:"2.0.0"},run:async t=>{const o=await t.loadLibrary("lib/WindowManager"),n=await t.loadLibrary("lib/HTML"),{Input:c,Button:w}=await t.loadLibrary("lib/Components"),h=o.createWindow({title:"Theme Maker",icon:i,width:600,height:200},t),r=new n(h.content),l=["crust","mantle","base","surface-0","surface-1","surface-2","text"],s=c.new().attr({value:"My Theme"});r.appendMany(new n("div").appendMany(new n("label").text("Name: "),s),...l.map(e=>new n("div").appendMany(new n("label").text(`${e[0].toUpperCase()+e.slice(1)}: `),c.new().attr({type:"color",id:e,value:"#000000"}))),w.new().text("Create").on("click",()=>{const e={name:s.getValue(),colors:{}};l.forEach(a=>{e.colors[a]=r.qs(`#${a}`)?.getValue()}),t.fs.writeFile(`/etc/themes/${e.name.replace(/\s/g,"")}.theme`,JSON.stringify(e)).then(()=>{o.createModal("ok","Theme Manager","Theme created successfully.",t).catch(a=>console.error(a))}).catch(a=>console.error(a))}))}};export{m as default};
diff --git a/assets/ThemeMaker-86244285.js b/assets/ThemeMaker-86244285.js
deleted file mode 100644
index af24bf1..0000000
--- a/assets/ThemeMaker-86244285.js
+++ /dev/null
@@ -1 +0,0 @@
-const i="/assets/theme-config-7bf94f6c.svg",w={config:{name:"Theme Maker",type:"process",icon:i,targetVer:"2.0.0"},run:async t=>{const o=await t.loadLibrary("lib/WindowManager"),n=await t.loadLibrary("lib/HTML"),{Input:c,Button:h}=await t.loadLibrary("lib/Components"),m=o.createWindow({title:"Theme Maker",icon:i,width:600,height:200},t),r=new n(m.content),l=["crust","mantle","base","surface-0","surface-1","surface-2","text"],s=c.new().attr({value:"My Theme"});r.appendMany(new n("div").appendMany(new n("label").text("Name: "),s),...l.map(e=>new n("div").appendMany(new n("label").text(`${e[0].toUpperCase()+e.slice(1)}: `),c.new().attr({type:"color",id:e,value:"#000000"}))),h.new().text("Create").on("click",()=>{const e={name:s.getValue(),colors:{}};l.forEach(a=>{e.colors[a]=r.qs(`#${a}`)?.getValue()}),t.fs.writeFile(`/etc/themes/${e.name.replace(/\s/g,"")}.theme`,JSON.stringify(e)).then(()=>{o.createModal("ok","Theme Manager","Theme created successfully.",t).catch(a=>console.error(a))}).catch(a=>console.error(a))}))}};export{w as default};
diff --git a/assets/WindowManager-2a2c4c9c.js b/assets/WindowManager-4b0e9aa4.js
similarity index 97%
rename from assets/WindowManager-2a2c4c9c.js
rename to assets/WindowManager-4b0e9aa4.js
index 884cbbf..d5ae767 100644
--- a/assets/WindowManager-2a2c4c9c.js
+++ b/assets/WindowManager-4b0e9aa4.js
@@ -1,4 +1,4 @@
-import{H as r}from"./index-10f4832e.js";import{s as m}from"./utils-2c87b698.js";import{n as w}from"./application-default-icon-38d880e7.js";function v(n,t){let s=0,e=0;n.querySelector("window-header")?.addEventListener("mousedown",i);function i(o){o.preventDefault(),d(),s=o.clientX,e=o.clientY,document.onmouseup=l,document.onmousemove=h}function h(o){o.preventDefault();const c=o.clientX-s,p=o.clientY-e,y=n.offsetTop+p,u=n.offsetLeft+c,x=t.offsetWidth,g=t.offsetHeight;y>=0&&y+n.offsetHeight<=g&&(n.style.top=`${y}px`),u>=0&&u+n.offsetWidth<=x&&(n.style.left=`${u}px`),s=o.clientX,e=o.clientY}function l(){document.onmouseup=null,document.onmousemove=null,t.onmouseleave=null}function d(){l(),t.onmouseenter=null}}class f{element;header;realContent;content;maximized;minimized;width;height;isMinimized=!1;isMaximized=!1;wm;process;onClose;config;constructor(t,s,e,i=()=>{}){this.process=t,this.wm=s,this.config=e,this.onClose=i,this.element=document.createElement("window"),this.element.style.zIndex=(s.getHighestZIndex()+1).toString(),this.element.style.position="absolute",this.focus(),this.element.onmousedown=()=>{this.focus()},(e.canResize===void 0||e.canResize===null)&&(e.canResize=!0),e.canResize||(this.element.style.resize="none"),this.element.style.width=`${e.width??300}px`,this.element.style.height=`${e.height??200}px`,this.header=document.createElement("window-header"),this.header.innerHTML=`
${m(e.title)}
minimizeclose`,e.canResize&&(this.header.innerHTML=`
${m(e.title)}
minimizesquareclose`),this.header.querySelector("#close").onclick=()=>{this.process.kill().catch(d=>console.error(d))},this.header.querySelector("#min").onclick=()=>this.toggleMin(),e.canResize&&(this.header.querySelector("#max").onclick=()=>this.toggleMax()),this.realContent=document.createElement("window-content");const h=this.realContent.attachShadow({mode:"open"});h.innerHTML=`
+import{H as r}from"./index-55c1b714.js";import{s as m}from"./utils-2c87b698.js";import{n as w}from"./application-default-icon-a19c8ba0.js";function v(n,t){let s=0,e=0;n.querySelector("window-header")?.addEventListener("mousedown",i);function i(o){o.preventDefault(),d(),s=o.clientX,e=o.clientY,document.onmouseup=l,document.onmousemove=h}function h(o){o.preventDefault();const c=o.clientX-s,p=o.clientY-e,y=n.offsetTop+p,u=n.offsetLeft+c,x=t.offsetWidth,g=t.offsetHeight;y>=0&&y+n.offsetHeight<=g&&(n.style.top=`${y}px`),u>=0&&u+n.offsetWidth<=x&&(n.style.left=`${u}px`),s=o.clientX,e=o.clientY}function l(){document.onmouseup=null,document.onmousemove=null,t.onmouseleave=null}function d(){l(),t.onmouseenter=null}}class f{element;header;realContent;content;maximized;minimized;width;height;isMinimized=!1;isMaximized=!1;wm;process;onClose;config;constructor(t,s,e,i=()=>{}){this.process=t,this.wm=s,this.config=e,this.onClose=i,this.element=document.createElement("window"),this.element.style.zIndex=(s.getHighestZIndex()+1).toString(),this.element.style.position="absolute",this.focus(),this.element.onmousedown=()=>{this.focus()},(e.canResize===void 0||e.canResize===null)&&(e.canResize=!0),e.canResize||(this.element.style.resize="none"),this.element.style.width=`${e.width??300}px`,this.element.style.height=`${e.height??200}px`,this.header=document.createElement("window-header"),this.header.innerHTML=`
${m(e.title)}
minimizeclose`,e.canResize&&(this.header.innerHTML=`
${m(e.title)}
minimizesquareclose`),this.header.querySelector("#close").onclick=()=>{this.process.kill().catch(d=>console.error(d))},this.header.querySelector("#min").onclick=()=>this.toggleMin(),e.canResize&&(this.header.querySelector("#max").onclick=()=>this.toggleMax()),this.realContent=document.createElement("window-content");const h=this.realContent.attachShadow({mode:"open"});h.innerHTML=`
");body.style({margin:"0",width:"100vw",height:"100vh",overflow:"hidden"});const boot=new HTML("div").styleJs({display:"flex",flexDirection:"column",height:"100%",width:"100%",background:"#11111b",padding:"100px","font-family":"monospace",userSelect:"none",overflow:"hidden"}).appendTo(body);boot.appendMany(new HTML("div").styleJs({display:"flex",height:"40px",alignItems:"center",gap:"10px"}).appendMany(new HTML("img").attr({src:FlowLogo,height:"40px"}),new HTML("h1").text("FlowOS").styleJs({color:"white"})),new HTML("img").attr({src:FlowLogo}).styleJs({position:"absolute",right:"-8vw",top:"-7vw",opacity:"0.03",height:"50vw","pointer-events":"none",zIndex:"0"}));const terminal=new HTML("div").style({color:"#89b4fa",padding:"10px 3px","word-break":"break-all","white-space":"pre-wrap",flex:"1","user-select":"text",position:"relative",zIndex:"2"}).appendTo(boot),progress=new HTML("div").style({width:"0",background:"#89b4fa",transition:"width 0.5s cubic-bezier(1,0,0,1)",height:"5px"});new HTML("div").style({height:"5px",width:"100%",background:"#181825"}).appendTo(boot).append(progress);const write=r=>{terminal.text(terminal.getText()+r)},writeln=(r="")=>{write(`${r}
+${spaces}`)}`),!1}};class Kernel{version;codename;processList=[];packageList={};fs;config;lastPid=0;constructor(){this.codename="Pocky",this.version=pkg.version}async setTheme(n){if(this.fs===!1)throw new Error("Filesystem hasn't been initiated.");const e=await this.fs.readFile(`/etc/themes/${n}.theme`),{extras:o,colors:a}=JSON.parse(dist.Buffer.from(e).toString());for(const s in a)document.documentElement.style.setProperty(`--${s}`,a[s]);document.documentElement.style.setProperty("--primary",o[lib.parse(dist.Buffer.from(await this.fs.readFile("/etc/flow")).toString()).THEME_PRIMARY])}async boot(n,e,o){e.style({width:"0%"});const a=o.toString().replace(/=($|&)/g,"=true ");console.log(`FlowOS - v${pkg.version}, Flow Works (c) ${new Date().getFullYear()}`),console.log(),console.log(`User Agent : ${navigator.userAgent}`),console.log(`Boot Args : ${a===""?"None":a}`),console.log(),console.log("..."),console.log(),o.has("debug")&&eruda.init(),this.fs=await handle("target","Virtual File Systems",VirtualFS),!(this.fs===!1||(e.style({width:"20%"}),this.config=await handle("target","FlowOS Configuration",{init:async()=>{if(this.fs!==!1)return lib.parse(dist.Buffer.from(await this.fs.readFile("/etc/flow")).toString())}}),this.config===!1)||(e.style({width:"40%"}),await this.setTheme(this.config.THEME),document.addEventListener("theme_update",()=>{this.config!==!1&&this.setTheme(this.config.THEME).catch(c=>console.error(c))}),await handle("mount","Temporary Directory (/tmp)",{init:async()=>this.fs===!1?!1:(await this.fs.exists("/tmp")&&await this.fs.rmdir("/tmp"),await this.fs.mkdir("/tmp"))})===!1)||(e.style({width:"60%"}),await handle("service","Service Worker",{init:async()=>{if(this.config===!1)return!1;const c=await navigator.serviceWorker.getRegistrations();for(const d of c)await d.unregister();await navigator.serviceWorker.register(`/uv-sw.js?url=${encodeURIComponent(btoa(this.config.SERVER))}&e=${v4()}`,{scope:"/service/"})}})===!1))&&(e.style({width:"80%"}),await handle("service","Desktop Environment",{init:()=>{setTimeout(()=>{__vitePreload(()=>Promise.resolve({}),["assets/style-2a0a71ef.css"]).then(()=>{n.style({display:"none"}),__vitePreload(()=>Promise.resolve({}),["assets/index-bceddeb8.css"]).then(async()=>{this.fs!==!1&&(console.log(),console.log("Welcome to FlowOS!"),console.log(),e.style({width:"100%"}),setTimeout(()=>{this.startExecutable("Desktop",Permission.SYSTEM).catch(c=>console.error(c))},750))}).catch(c=>{throw c})}).catch(c=>{throw c})},1e3)}}))}async startExecutable(n,e=Permission.USER,o={}){let a;try{const l=Object.assign({"./system/Desktop.ts":()=>__vitePreload(()=>import("./Desktop-a4f58152.js"),["assets/Desktop-a4f58152.js","assets/application-default-icon-a19c8ba0.js"]),"./system/UserAccessControl.ts":()=>__vitePreload(()=>import("./UserAccessControl-d2eab9b6.js"),[]),"./system/VirtualFS.ts":()=>__vitePreload(()=>Promise.resolve().then(()=>VirtualFS$1),void 0),"./system/apps/Browser.ts":()=>__vitePreload(()=>import("./Browser-52a34b58.js"),[]),"./system/apps/Editor.ts":()=>__vitePreload(()=>import("./Editor-079b8504.js").then(d=>d.E),[]),"./system/apps/Files.ts":()=>__vitePreload(()=>import("./Files-d7d9e642.js"),[]),"./system/apps/ImageViewer.ts":()=>__vitePreload(()=>import("./ImageViewer-d031471c.js"),[]),"./system/apps/Info.ts":()=>__vitePreload(()=>import("./Info-0f878648.js"),[]),"./system/apps/Manager.ts":()=>__vitePreload(()=>import("./Manager-432f3ded.js"),[]),"./system/apps/Settings.ts":()=>__vitePreload(()=>import("./Settings-8eaed610.js"),[]),"./system/apps/Store.ts":()=>__vitePreload(()=>import("./Store-2a453bcf.js"),["assets/Store-2a453bcf.js","assets/application-default-icon-a19c8ba0.js"]),"./system/apps/TaskManager.ts":()=>__vitePreload(()=>import("./TaskManager-b562368f.js"),[]),"./system/apps/ThemeMaker.ts":()=>__vitePreload(()=>import("./ThemeMaker-558cad3b.js"),[]),"./system/lib/Components.ts":()=>__vitePreload(()=>import("./Components-9774d74f.js"),[]),"./system/lib/HTML.ts":()=>__vitePreload(()=>import("./HTML-66f1d40b.js"),[]),"./system/lib/Launcher.ts":()=>__vitePreload(()=>import("./Launcher-112d4365.js"),[]),"./system/lib/MIMETypes.ts":()=>__vitePreload(()=>import("./MIMETypes-997d40e6.js"),[]),"./system/lib/SplashScreen.ts":()=>__vitePreload(()=>import("./SplashScreen-40f4538a.js"),[]),"./system/lib/StatusBar.ts":()=>__vitePreload(()=>import("./StatusBar-78090290.js"),["assets/StatusBar-78090290.js","assets/application-default-icon-a19c8ba0.js","assets/utils-2c87b698.js"]),"./system/lib/WindowManager.ts":()=>__vitePreload(()=>import("./WindowManager-4b0e9aa4.js"),["assets/WindowManager-4b0e9aa4.js","assets/utils-2c87b698.js","assets/application-default-icon-a19c8ba0.js"]),"./system/lib/XOR.ts":()=>__vitePreload(()=>import("./XOR-dd425f29.js"),[])})[`./system/${n}.ts`];a=(await l()).default}catch{if(this.fs===!1)throw new Error("Filesystem hasn't been initiated.");const s=`data:text/javascript;base64,${dist.Buffer.from(await this.fs.readFile(`/opt/${n}.js`)).toString("base64")}`;a=(await __vitePreload(()=>import(s),[])).default}if(semver$1.gt(a.config.targetVer,this.version))throw new Error(`Executable requires a newer version of FlowOS: ${a.config.targetVer}`);if(a===void 0)throw new Error(`No default export found for package: ${n}.`);if(this.packageList[a.config.name]===void 0)this.packageList[a.config.name]={url:n,executable:a};else if(this.packageList[a.config.name].url!==n)throw new Error(`Package name conflict: ${a.config.name}`);return await new Promise((s,l)=>{if(a.config.type==="process"){const c=a;console.group(`Starting ${n}`);const d=ProcLib.findEmptyPID(this),u=v4(),f=new ProcessLib(n,d,u,e,o,c,this);this.processList.push({pid:d,token:u,name:c.config.name}),document.dispatchEvent(new CustomEvent("update_process",{})),c.run(f).then(v=>{v!==void 0&&f.kill().catch(b=>console.error(b)),document.dispatchEvent(new CustomEvent("update_process",{})),s({procLib:f,value:v})}).catch(v=>console.error(v));return}l(new Error(`Unknown executable type: ${a.config.type}`))})}async getExecutable(n){let e;try{const a=Object.assign({"./system/Desktop.ts":()=>__vitePreload(()=>import("./Desktop-a4f58152.js"),["assets/Desktop-a4f58152.js","assets/application-default-icon-a19c8ba0.js"]),"./system/UserAccessControl.ts":()=>__vitePreload(()=>import("./UserAccessControl-d2eab9b6.js"),[]),"./system/VirtualFS.ts":()=>__vitePreload(()=>Promise.resolve().then(()=>VirtualFS$1),void 0),"./system/apps/Browser.ts":()=>__vitePreload(()=>import("./Browser-52a34b58.js"),[]),"./system/apps/Editor.ts":()=>__vitePreload(()=>import("./Editor-079b8504.js").then(l=>l.E),[]),"./system/apps/Files.ts":()=>__vitePreload(()=>import("./Files-d7d9e642.js"),[]),"./system/apps/ImageViewer.ts":()=>__vitePreload(()=>import("./ImageViewer-d031471c.js"),[]),"./system/apps/Info.ts":()=>__vitePreload(()=>import("./Info-0f878648.js"),[]),"./system/apps/Manager.ts":()=>__vitePreload(()=>import("./Manager-432f3ded.js"),[]),"./system/apps/Settings.ts":()=>__vitePreload(()=>import("./Settings-8eaed610.js"),[]),"./system/apps/Store.ts":()=>__vitePreload(()=>import("./Store-2a453bcf.js"),["assets/Store-2a453bcf.js","assets/application-default-icon-a19c8ba0.js"]),"./system/apps/TaskManager.ts":()=>__vitePreload(()=>import("./TaskManager-b562368f.js"),[]),"./system/apps/ThemeMaker.ts":()=>__vitePreload(()=>import("./ThemeMaker-558cad3b.js"),[]),"./system/lib/Components.ts":()=>__vitePreload(()=>import("./Components-9774d74f.js"),[]),"./system/lib/HTML.ts":()=>__vitePreload(()=>import("./HTML-66f1d40b.js"),[]),"./system/lib/Launcher.ts":()=>__vitePreload(()=>import("./Launcher-112d4365.js"),[]),"./system/lib/MIMETypes.ts":()=>__vitePreload(()=>import("./MIMETypes-997d40e6.js"),[]),"./system/lib/SplashScreen.ts":()=>__vitePreload(()=>import("./SplashScreen-40f4538a.js"),[]),"./system/lib/StatusBar.ts":()=>__vitePreload(()=>import("./StatusBar-78090290.js"),["assets/StatusBar-78090290.js","assets/application-default-icon-a19c8ba0.js","assets/utils-2c87b698.js"]),"./system/lib/WindowManager.ts":()=>__vitePreload(()=>import("./WindowManager-4b0e9aa4.js"),["assets/WindowManager-4b0e9aa4.js","assets/utils-2c87b698.js","assets/application-default-icon-a19c8ba0.js"]),"./system/lib/XOR.ts":()=>__vitePreload(()=>import("./XOR-dd425f29.js"),[])})[`./system/${n}.ts`];e=(await a()).default}catch{if(this.fs===!1)throw new Error("Filesystem hasn't been initiated.");const o=`data:text/javascript;base64,${dist.Buffer.from(await this.fs.readFile(`/opt/${n}.js`)).toString("base64")}`;e=(await __vitePreload(()=>import(o),[])).default}if(semver$1.gt(e.config.targetVer,this.version))throw new Error(`Executable requires a newer version of FlowOS: ${e.config.targetVer}`);if(e===void 0)throw new Error(`No default export found for package: ${n}.`);if(this.packageList[e.config.name]===void 0)this.packageList[e.config.name]={url:n,executable:e};else if(this.packageList[e.config.name].url!==n)throw new Error(`Package name conflict: ${e.config.name}`);return e}}const FlowLogo="/FlowOS/assets/flow-9a6c45c5.png",body=new HTML(document.body);body.html("");body.style({margin:"0",width:"100vw",height:"100vh",overflow:"hidden"});const boot=new HTML("div").styleJs({display:"flex",flexDirection:"column",height:"100%",width:"100%",background:"#11111b",padding:"100px","font-family":"monospace",userSelect:"none",overflow:"hidden"}).appendTo(body);boot.appendMany(new HTML("div").styleJs({display:"flex",height:"40px",alignItems:"center",gap:"10px"}).appendMany(new HTML("img").attr({src:FlowLogo,height:"40px"}),new HTML("h1").text("FlowOS").styleJs({color:"white"})),new HTML("img").attr({src:FlowLogo}).styleJs({position:"absolute",right:"-8vw",top:"-7vw",opacity:"0.03",height:"50vw","pointer-events":"none",zIndex:"0"}));const terminal=new HTML("div").style({color:"#89b4fa",padding:"10px 3px","word-break":"break-all","white-space":"pre-wrap",flex:"1","user-select":"text",position:"relative",zIndex:"2"}).appendTo(boot),progress=new HTML("div").style({width:"0",background:"#89b4fa",transition:"width 0.5s cubic-bezier(1,0,0,1)",height:"5px"});new HTML("div").style({height:"5px",width:"100%",background:"#181825"}).appendTo(boot).append(progress);const write=r=>{terminal.text(terminal.getText()+r)},writeln=(r="")=>{write(`${r}
`)},originalConsoleLog=console.log,originalConsoleError=console.error,originalConsoleWarn=console.warn,originalConsoleGroup=console.group;window.console.log=(...r)=>{originalConsoleLog(...r),writeln(r)};window.console.warn=(...r)=>{originalConsoleWarn(...r),writeln(r)};window.console.error=(...r)=>{originalConsoleError(...r),writeln(r)};window.console.group=(...r)=>{originalConsoleGroup(...r),writeln(spaces+String(r))};try{const r=new URLSearchParams(window.location.search);await new Kernel().boot(boot,progress,r)}catch(r){writeln(),writeln("An error occured while booting FlowOS."),writeln("Please report this error to Flow Works."),writeln(),console.error(r.stack),writeln(),terminal.html(terminal.getHTML()+'
Would you like to reset the VirtualFS?')}export{FlowLogo as F,HTML as H,__vitePreload as _,dist as d,lib as l};
diff --git a/assets/index-55c1b714.js.gz b/assets/index-55c1b714.js.gz
new file mode 100644
index 0000000..f0f855b
Binary files /dev/null and b/assets/index-55c1b714.js.gz differ
diff --git a/assets/index-bceddeb8.css b/assets/index-bceddeb8.css
new file mode 100644
index 0000000..8ab9f36
--- /dev/null
+++ b/assets/index-bceddeb8.css
@@ -0,0 +1 @@
+@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:100 700;font-display:block;src:url(/FlowOS/assets/material-symbols-outlined-af655217.woff2) format("woff2")}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Symbols Rounded;font-style:normal;font-weight:100 700;font-display:block;src:url(/FlowOS/assets/material-symbols-rounded-dc1c3bdf.woff2) format("woff2")}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Symbols Sharp;font-style:normal;font-weight:100 700;font-display:block;src:url(/FlowOS/assets/material-symbols-sharp-7488f367.woff2) format("woff2")}.material-symbols-sharp{font-family:Material Symbols Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}
diff --git a/assets/index-e24352b2.css b/assets/index-e24352b2.css
deleted file mode 100644
index 69741e8..0000000
--- a/assets/index-e24352b2.css
+++ /dev/null
@@ -1 +0,0 @@
-@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:100 700;font-display:block;src:url(/assets/material-symbols-outlined-af655217.woff2) format("woff2")}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Symbols Rounded;font-style:normal;font-weight:100 700;font-display:block;src:url(/assets/material-symbols-rounded-dc1c3bdf.woff2) format("woff2")}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Symbols Sharp;font-style:normal;font-weight:100 700;font-display:block;src:url(/assets/material-symbols-sharp-7488f367.woff2) format("woff2")}.material-symbols-sharp{font-family:Material Symbols Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}
diff --git a/assets/matchTags-e333f580.js b/assets/matchTags-fbbd4903.js
similarity index 93%
rename from assets/matchTags-e333f580.js
rename to assets/matchTags-fbbd4903.js
index a5e4909..19315a7 100644
--- a/assets/matchTags-e333f580.js
+++ b/assets/matchTags-fbbd4903.js
@@ -1 +1 @@
-import{y as E}from"./utils-wvIv1qJ9-bc32a4a8.js";import"./Editor-21b47d03.js";import"./index-10f4832e.js";const S="xml,rss,atom,jsx,tsx".split(","),w="area,base,br,col,embed,hr,img,input,link,meta,source,track,wbr".split(","),v=a=>{let n=[],t=[],i,c,f=(l,o)=>{i=[],t.length=n.length=c=0,h(l,o,0)},h=(l,o,e)=>{for(let r=0,d=S.includes(o),u=l.length;r
{f(l.tokens,l.language)}),f(a.tokens,a.options.language),a.extensions.matchTags={tags:t,pairs:n}},C=(a,n)=>{for(let t=0,i=n.length;t=a)return t},z=()=>({update(a){this.update=()=>{};let n,t;const{tags:i,pairs:c}=this.matcher=a.extensions.matchTags||v(a),f=l=>[n,t].forEach(o=>{o&&o.classList.toggle("active-tagname",!l)}),h=()=>{let[l,o]=a.getSelection(),e,r;if(l==o&&a.focused){let d=C(l,i),u=i[d];if(u&&u[4]){const s=E(a,".tag>.tag",-u[2],0),p=c[d];if(s&&p+1){const T=E(a,".tag>.tag",0,0,i[p][1]);[e,r]=[s,T].map(x=>{let g=x.childNodes,m=g[1];return(g[2]||m.data)&&(m=document.createElement("span"),m.append(...[].slice.call(g,1)),x.append(m)),m})}}}n!=e&&(f(!0),n=e,t=r,f())};a.addListener("selectionChange",h)}}),I=(a,n)=>({update(t){this.update=()=>{};let i,c;const{tags:f}=this.matcher=t.extensions.matchTags||v(t),h=e=>E(t,".tag>.punctuation",0,0,e),l=e=>[i,c].forEach(r=>{r&&r.classList.toggle(a,!e)}),o=()=>{let[e,r]=t.getSelection(),d,u;if(e==r&&t.focused){let s=f[C(e,f)];s&&(n||(rs[1]+s[2]+s[4].length)&&h())&&(d=h(s[1]),u=h(s[3]-1))}(i!=d||c!=u)&&(l(!0),i=d,c=u,l())};t.addListener("selectionChange",o),t.textarea.addEventListener("focus",o),t.textarea.addEventListener("blur",o)}});export{v as createTagMatcher,I as highlightTagPunctuation,z as matchTags};
+import{y as E}from"./utils-wvIv1qJ9-974d263a.js";import"./Editor-079b8504.js";import"./index-55c1b714.js";const S="xml,rss,atom,jsx,tsx".split(","),w="area,base,br,col,embed,hr,img,input,link,meta,source,track,wbr".split(","),v=a=>{let n=[],t=[],i,c,f=(l,o)=>{i=[],t.length=n.length=c=0,h(l,o,0)},h=(l,o,e)=>{for(let r=0,d=S.includes(o),u=l.length;r{f(l.tokens,l.language)}),f(a.tokens,a.options.language),a.extensions.matchTags={tags:t,pairs:n}},C=(a,n)=>{for(let t=0,i=n.length;t=a)return t},z=()=>({update(a){this.update=()=>{};let n,t;const{tags:i,pairs:c}=this.matcher=a.extensions.matchTags||v(a),f=l=>[n,t].forEach(o=>{o&&o.classList.toggle("active-tagname",!l)}),h=()=>{let[l,o]=a.getSelection(),e,r;if(l==o&&a.focused){let d=C(l,i),u=i[d];if(u&&u[4]){const s=E(a,".tag>.tag",-u[2],0),p=c[d];if(s&&p+1){const T=E(a,".tag>.tag",0,0,i[p][1]);[e,r]=[s,T].map(x=>{let g=x.childNodes,m=g[1];return(g[2]||m.data)&&(m=document.createElement("span"),m.append(...[].slice.call(g,1)),x.append(m)),m})}}}n!=e&&(f(!0),n=e,t=r,f())};a.addListener("selectionChange",h)}}),I=(a,n)=>({update(t){this.update=()=>{};let i,c;const{tags:f}=this.matcher=t.extensions.matchTags||v(t),h=e=>E(t,".tag>.punctuation",0,0,e),l=e=>[i,c].forEach(r=>{r&&r.classList.toggle(a,!e)}),o=()=>{let[e,r]=t.getSelection(),d,u;if(e==r&&t.focused){let s=f[C(e,f)];s&&(n||(rs[1]+s[2]+s[4].length)&&h())&&(d=h(s[1]),u=h(s[3]-1))}(i!=d||c!=u)&&(l(!0),i=d,c=u,l())};t.addListener("selectionChange",o),t.textarea.addEventListener("focus",o),t.textarea.addEventListener("blur",o)}});export{v as createTagMatcher,I as highlightTagPunctuation,z as matchTags};
diff --git a/assets/utils-wvIv1qJ9-bc32a4a8.js b/assets/utils-wvIv1qJ9-974d263a.js
similarity index 96%
rename from assets/utils-wvIv1qJ9-bc32a4a8.js
rename to assets/utils-wvIv1qJ9-974d263a.js
index f8bbba4..58d4113 100644
--- a/assets/utils-wvIv1qJ9-bc32a4a8.js
+++ b/assets/utils-wvIv1qJ9-974d263a.js
@@ -1,4 +1,4 @@
-import{o as x,f as m,r as u,s as p}from"./Editor-21b47d03.js";const S=e=>e.replace(/[$+?|.^*(){}[\]\\]/g,"\\$&"),$=(e,t)=>e.slice(e.lastIndexOf(`
+import{o as x,f as m,r as u,s as p}from"./Editor-079b8504.js";const S=e=>e.replace(/[$+?|.^*(){}[\]\\]/g,"\\$&"),$=(e,t)=>e.slice(e.lastIndexOf(`
`,t-1)+1,t),E=(e,t,l=t)=>[e.slice(t=e.lastIndexOf(`
`,t-1)+1,l=(l=e.indexOf(`
`,l))+1?l:e.length).split(`
diff --git a/index.html b/index.html
index da438cf..1637a91 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
FlowOS
-
+
@@ -17,7 +17,7 @@
gtag('config', 'G-X4XVQRWEVM');
-
+