From edb5ef2217d299d2e0ac2b442187624a177a201c Mon Sep 17 00:00:00 2001 From: ThinLiquid Date: Sat, 21 Oct 2023 03:36:55 +0100 Subject: [PATCH 01/16] =?UTF-8?q?[=F0=9F=90=9B]=20Fixed=20fullscreen=20but?= =?UTF-8?q?ton=20not=20appearing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/wm.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wm.ts b/src/wm.ts index 4119596..a3f9168 100644 --- a/src/wm.ts +++ b/src/wm.ts @@ -88,14 +88,14 @@ export class FlowWindow { this.focus() } - if (config.canResize === undefined) config.canResize = true + if (config.canResize === undefined || config.canResize === null) config.canResize = true this.element.style.width = `${config.width ?? 300}px` this.element.style.height = `${config.height ?? 200}px` this.header = document.createElement('window-header') this.header.innerHTML = `
${config.title}
` - if (!config.canResize) { + if (config.canResize) { this.header.innerHTML = `
${config.title}
` } @@ -105,7 +105,7 @@ export class FlowWindow { (this.header.querySelector('#min') as HTMLElement).onclick = () => this.toggleMin() - if (!config.canResize) { + if (config.canResize) { (this.header.querySelector('#max') as HTMLElement).onclick = () => this.toggleMax() } From 27630ffeb8fed68324c7b292fe6751e7a8a3a557 Mon Sep 17 00:00:00 2001 From: RisingGlitch Date: Sat, 21 Oct 2023 10:50:22 -0500 Subject: [PATCH 02/16] Fixed Settings App --- src/apps/settings.ts | 192 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 184 insertions(+), 8 deletions(-) diff --git a/src/apps/settings.ts b/src/apps/settings.ts index 03263c3..07f756f 100644 --- a/src/apps/settings.ts +++ b/src/apps/settings.ts @@ -5,26 +5,202 @@ import { FlowWindow } from '../wm.ts' export default class SettingsApp implements App { meta = { name: 'Settings', - description: 'Modify/customize FlowOS.', pkg: 'flow.settings', - version: '1.0.0', - icon + icon: icon, + version: '1.0.0' } + configFileLoc = '/.flow/config.json' + configFolderLoc = '/.flow/' + async open (): Promise { - const win = window.wm.createWindow({ + const fs = new (window as any).Filer.FileSystem() + + try { + fs.exists(this.configFolderLoc, function (exists: any) { + if (exists === false) { + fs.mkdir(this.configFolderLoc, () => {}) + } + }) + } catch (e) { alert(e.message) } + try { + fs.exists(this.configFileLoc, function (exists: any) { + if (exists === false) { + fs.writeFile(this.configFileLoc, '{"clock-Type":"0", "tab-title": "Flow OS", "favicon-icon": "to-be-replaced", "proxy-type": "uv", "search-engine": "google" }', () => {}) + } + }) + } catch (e) {} + + const win = (window as any).wm.createWindow({ title: this.meta.name, icon: this.meta.icon, width: 700, - height: 300 + height: 300, + canResize: true }) - win.content.style.background = 'var(--base)' win.content.style.padding = '10px' win.content.innerHTML = ` -

Settings

-

owo2

+ +
+ +

Appereance

+ +

Clock

+ + + +

Tab Title

+ +

Tab Icon

+ +

+ +

Browser Settings

+ +

Proxy Type

+ + +

Search Engine

+ + +

Server

+ +

+ + + + ` + // Get current data + const data = JSON.parse(await fs.promises.readFile(this.configFileLoc)) + let oldData = JSON.stringify(data) + + // Handle value changes + + win.content.getElementsByClassName('btn')[0].onclick = async () => { + data['clock-Type'] = '0' + win.content.getElementsByClassName('btn')[0].disabled = true + win.content.getElementsByClassName('btn')[1].disabled = false + settingsChange() + } + win.content.getElementsByClassName('btn')[1].onclick = async () => { + data['clock-Type'] = '1' + win.content.getElementsByClassName('btn')[0].disabled = false + win.content.getElementsByClassName('btn')[1].disabled = true + settingsChange() + } + + win.content.getElementsByClassName('btn')[2].addEventListener('change', () => { + data['tab-title'] = win.content.getElementsByClassName('btn')[2].value + settingsChange() + }) + + win.content.getElementsByClassName('btn')[6].addEventListener('change', () => { + if (isURL(win.content.getElementsByClassName('btn')[6].value) === true && win.content.getElementsByClassName('btn')[6].value !== '') { + data['flow-server'] = win.content.getElementsByClassName('btn')[6].value + win.content.getElementsByClassName('error-text')[1].textContent = '' + } else { + if (win.content.getElementsByClassName('btn')[6].value !== '') { + win.content.getElementsByClassName('error-text')[1].textContent = 'Please input a vaild URL' + } else { + win.content.getElementsByClassName('error-text')[1].textContent = '' + } + } + settingsChange() + }) + + win.content.getElementsByClassName('btn')[3].addEventListener('change', () => { + if (isURL(win.content.getElementsByClassName('btn')[3].value) === true && win.content.getElementsByClassName('btn')[4].value !== '') { + data['favicon-url'] = win.content.getElementsByClassName('btn')[3].value + win.content.getElementsByClassName('error-text')[0].textContent = '' + } else { + if (win.content.getElementsByClassName('btn')[4].value !== '') { + win.content.getElementsByClassName('error-text')[0].textContent = 'Please input a vaild URL' + } else { + win.content.getElementsByClassName('error-text')[0].textContent = '' + } + } + settingsChange() + }) + + win.content.getElementsByClassName('btn')[4].value = data['proxy-type'] + win.content.getElementsByClassName('btn')[4].addEventListener('change', (event: any) => { + data['proxy-type'] = event.target.value + settingsChange() + }) + + win.content.getElementsByClassName('btn')[5].value = data['search-engine'] + win.content.getElementsByClassName('btn')[5].addEventListener('change', (event: any) => { + data['search-engine'] = event.target.value + settingsChange() + }) + + // Handle saving. + + win.content.getElementsByClassName('save')[0].onclick = async () => { + await fs.promises.writeFile(this.configFileLoc, JSON.stringify(data)) + oldData = JSON.stringify(data) + settingsChange() + } + + // Display unsaved changes / prevent Save button from being clicked twice. + + function settingsChange (): void { + if (oldData !== JSON.stringify(data)) { + win.setTitle('Settings - Unsaved Changes') + win.content.getElementsByClassName('save')[0].disabled = false + } else { + win.setTitle('Settings') + win.content.getElementsByClassName('save')[0].disabled = true + } + } + // URL checker + + function isURL (input: string): any { + const regex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/ + return input.match(regex) + } + + // Set values + win.content.getElementsByClassName('btn')[0].disabled = true + win.content.getElementsByClassName('btn')[1].disabled = false + if (data['clock-Type'] === '0') { + win.content.getElementsByClassName('btn')[0].disabled = false + win.content.getElementsByClassName('btn')[1].disabled = true + } return win } From d5b3a3def8393bf00f8f2bf98b658bd2cbef9365 Mon Sep 17 00:00:00 2001 From: ThinLiquid Date: Sun, 22 Oct 2023 19:38:55 +0100 Subject: [PATCH 03/16] =?UTF-8?q?[=F0=9F=8D=B1]=20Added=20badge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- src/apps/info.ts | 2 ++ src/assets/badge.png | Bin 0 -> 65063 bytes 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 src/assets/badge.png diff --git a/README.md b/README.md index a2d7494..1188d60 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,8 @@ # FlowOS Next - [![JavaScript Style Guide](https://cdn.rawgit.com/standard/standard/master/badge.svg)](https://github.com/standard/standard) + + diff --git a/src/apps/info.ts b/src/apps/info.ts index 0b7c58a..f0a9495 100644 --- a/src/apps/info.ts +++ b/src/apps/info.ts @@ -1,4 +1,5 @@ import icon from '../assets/icons/info.png' +import badge from '../assets/badge.png' import { App, PackageJSON } from '../types.ts' import { FlowWindow } from '../wm.ts' @@ -34,6 +35,7 @@ export default class SettingsApp implements App {

v${packageJSON.version}


Created by ThinLiquid, 1nspird_, proudparot2, systemless_

+
Discord - Github diff --git a/src/assets/badge.png b/src/assets/badge.png new file mode 100644 index 0000000000000000000000000000000000000000..cb05234578f2511e55c8d31f8051b3315147e53b GIT binary patch literal 65063 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 z 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 literal 0 HcmV?d00001 From 0939b3278930974c1118f82089e8f6a8826af361 Mon Sep 17 00:00:00 2001 From: ThinLiquid Date: Sun, 22 Oct 2023 19:41:08 +0100 Subject: [PATCH 04/16] =?UTF-8?q?[=F0=9F=93=9A]=20Fix=20layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1188d60..1019901 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # FlowOS Next - +
From f2f59ef9c199362d8037d85c61e89b2da49a6520 Mon Sep 17 00:00:00 2001 From: ThinLiquid Date: Sun, 22 Oct 2023 19:44:13 +0100 Subject: [PATCH 05/16] =?UTF-8?q?[=F0=9F=93=9A]=20Add=20URL=20to=20badge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1019901..235cc3f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # FlowOS Next -
+

From 36b3f616fc7d56f86b85ad48786827666c717495 Mon Sep 17 00:00:00 2001 From: FIameCaster <82079841+FIameCaster@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:22:04 +0200 Subject: [PATCH 06/16] =?UTF-8?q?[=E2=9E=95]=20Add=20@types/node=20depende?= =?UTF-8?q?ncy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 13 +++++-------- package.json | 1 + 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index c70befc..ed5e6c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "uuid": "^9.0.1" }, "devDependencies": { + "@types/node": "^20.8.7", "@types/uuid": "^9.0.5", "@types/web": "^0.0.117", "ts-standard": "^12.0.2", @@ -729,12 +730,10 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz", - "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==", + "version": "20.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", + "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "undici-types": "~5.25.1" } @@ -5807,9 +5806,7 @@ "version": "5.25.3", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/universalify": { "version": "2.0.0", diff --git a/package.json b/package.json index afab852..0530eb4 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "author": "", "license": "MIT", "devDependencies": { + "@types/node": "^20.8.7", "@types/uuid": "^9.0.5", "@types/web": "^0.0.117", "ts-standard": "^12.0.2", From 6b0f6e527d0e6088f06e7abd2f498f0cc1629472 Mon Sep 17 00:00:00 2001 From: FIameCaster <82079841+FIameCaster@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:24:57 +0200 Subject: [PATCH 07/16] =?UTF-8?q?[=F0=9F=91=95]=20Update=20tsconfig=20to?= =?UTF-8?q?=20better=20work=20with=20vite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tsconfig.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index a2d9131..02d2cea 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,11 +9,14 @@ "jsx": "react", "jsxFactory": "h", "allowJs": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "esModuleInterop": true, "declaration": true, "emitDeclarationOnly": true, "allowImportingTsExtensions": true, - "strictNullChecks": true + "strictNullChecks": true, + "skipLibCheck": true, + "isolatedModules": true, + "types": ["vite/client", "node"] } } \ No newline at end of file From e716d4a76cbe7815fb09c82c7c8e8692594aaa13 Mon Sep 17 00:00:00 2001 From: FIameCaster <82079841+FIameCaster@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:27:17 +0200 Subject: [PATCH 08/16] =?UTF-8?q?[=F0=9F=94=A5]=20Remove=20unnecessary=20d?= =?UTF-8?q?eclaration=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/files.d.ts | 5 ----- src/prism-code-editor.d.ts | 3 --- 2 files changed, 8 deletions(-) delete mode 100644 src/files.d.ts delete mode 100644 src/prism-code-editor.d.ts diff --git a/src/files.d.ts b/src/files.d.ts deleted file mode 100644 index 2101ae6..0000000 --- a/src/files.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare module '*.png' { - const image: string - export = image -} -declare module '*.json' diff --git a/src/prism-code-editor.d.ts b/src/prism-code-editor.d.ts deleted file mode 100644 index 643089f..0000000 --- a/src/prism-code-editor.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module 'prism-code-editor'; -declare module 'prism-code-editor/setups'; -declare module 'prism-code-editor/prism-core'; From c96382b03da996b71e1184e702f8e57a56bbb056 Mon Sep 17 00:00:00 2001 From: FIameCaster <82079841+FIameCaster@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:38:41 +0200 Subject: [PATCH 09/16] =?UTF-8?q?[=E2=AC=86=EF=B8=8F]=20Migrate=20to=20pri?= =?UTF-8?q?sm-code-editor=202.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 16 ++++++++-------- package.json | 2 +- src/apps/editor.ts | 21 ++++++++------------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index ed5e6c0..be543c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@ptkdev/logger": "^1.8.0", "eruda": "^3.0.1", "filer": "^1.4.1", - "prism-code-editor": "^1.2.2", + "prism-code-editor": "^2.0.1", "prismjs": "^1.29.0", "uuid": "^9.0.1" }, @@ -739,9 +739,9 @@ } }, "node_modules/@types/prismjs": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.1.tgz", - "integrity": "sha512-Q7jDsRbzcNHIQje15CS/piKhu6lMLb9jwjxSfEIi4KcFKXW23GoJMkwQiJ8VObyfx+VmUaDcJxXaWN+cTCjVog==" + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.2.tgz", + "integrity": "sha512-/r7Cp7iUIk7gts26mHXD66geUC+2Fo26TZYjQK6Nr4LDfi6lmdRmMqM0oPwfiMhUwoBAOFe8GstKi2pf6hZvwA==" }, "node_modules/@types/semver": { "version": "7.5.3", @@ -4767,11 +4767,11 @@ } }, "node_modules/prism-code-editor": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prism-code-editor/-/prism-code-editor-1.2.2.tgz", - "integrity": "sha512-jmVlSNCp40BWauhzjv3GGFmXVaZkXcuVa7G/5RWV+iSPAugYfL1gQlOkXxC+E2gd/Z3/wbQIEr5RC1kyoohqlg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/prism-code-editor/-/prism-code-editor-2.0.1.tgz", + "integrity": "sha512-93APxLnz6ow6TU8Mw2MC16d/Xb4k2FdjfrzIqb1finFPB/X4ejQyngEF1NkHKpggrIvR33QodW638KeN/gXEfA==", "dependencies": { - "@types/prismjs": "^1.26.0" + "@types/prismjs": "^1.26.2" } }, "node_modules/prismjs": { diff --git a/package.json b/package.json index 0530eb4..8093938 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@ptkdev/logger": "^1.8.0", "eruda": "^3.0.1", "filer": "^1.4.1", - "prism-code-editor": "^1.2.2", + "prism-code-editor": "^2.0.1", "prismjs": "^1.29.0", "uuid": "^9.0.1" } diff --git a/src/apps/editor.ts b/src/apps/editor.ts index 334198a..9e50a4b 100644 --- a/src/apps/editor.ts +++ b/src/apps/editor.ts @@ -2,15 +2,11 @@ import icon from '../assets/icons/editor.png' import { App } from '../types.ts' import { fullEditor } from 'prism-code-editor/setups' -import Prism from 'prism-code-editor/prism-core' -import 'prismjs/components/prism-markup.js' -import 'prismjs/components/prism-clike.js' -import 'prismjs/components/prism-javascript.js' -import 'prismjs/components/prism-typescript.js' -import 'prismjs/components/prism-jsx.js' -import 'prismjs/components/prism-tsx.js' -import 'prism-code-editor/languages' -import 'prism-code-editor/prism-markdown' +// this will also import markup, clike, javascript, typescript and jsx +import 'prism-code-editor/grammars/tsx' +import 'prism-code-editor/grammars/css-extras' +import 'prism-code-editor/grammars/markdown' +import 'prism-code-editor/grammars/python' import { FlowWindow } from '../wm.ts' @@ -193,8 +189,7 @@ export default class EditorApp implements App { const value = (await window.fs.promises.readFile(data.path)).toString() const editor = fullEditor( - Prism, - win.content.querySelector('.editor'), + win.content.querySelector('.editor')!, { language, theme: 'github-dark', @@ -204,7 +199,7 @@ export default class EditorApp implements App { const style = document.createElement('style') style.innerHTML = ` - .prism-editor { + .prism-code-editor { border-radius: 10px 10px 0 0; caret-color: var(--text); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; @@ -237,7 +232,7 @@ export default class EditorApp implements App { ` editor.scrollContainer.appendChild(style); (win.content.querySelector('#find') as HTMLElement).onclick = () => { - editor.extensions.searchWidget.open() + editor.extensions.searchWidget!.open() } (win.content.querySelector('#save') as HTMLElement).onclick = async () => { await window.fs.promises.writeFile(data.path, editor.value) From beebf83271ff48042c41f552ad899d78ee5643fb Mon Sep 17 00:00:00 2001 From: FIameCaster <82079841+FIameCaster@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:40:16 +0200 Subject: [PATCH 10/16] =?UTF-8?q?[=E2=9E=96]=20Remove=20prismjs=20dependen?= =?UTF-8?q?cy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 9 --------- package.json | 1 - 2 files changed, 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index be543c8..f1f5581 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "eruda": "^3.0.1", "filer": "^1.4.1", "prism-code-editor": "^2.0.1", - "prismjs": "^1.29.0", "uuid": "^9.0.1" }, "devDependencies": { @@ -4774,14 +4773,6 @@ "@types/prismjs": "^1.26.2" } }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "engines": { - "node": ">=6" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", diff --git a/package.json b/package.json index 8093938..0148d15 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "eruda": "^3.0.1", "filer": "^1.4.1", "prism-code-editor": "^2.0.1", - "prismjs": "^1.29.0", "uuid": "^9.0.1" } } From e1c6e828237560dfa829d822afee7d73946cd439 Mon Sep 17 00:00:00 2001 From: FIameCaster <82079841+FIameCaster@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:48:24 +0200 Subject: [PATCH 11/16] =?UTF-8?q?[=F0=9F=90=9B]=20Make=20the=20editor=20sc?= =?UTF-8?q?roll=20properly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/editor.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/apps/editor.ts b/src/apps/editor.ts index 9e50a4b..6c65e16 100644 --- a/src/apps/editor.ts +++ b/src/apps/editor.ts @@ -54,7 +54,7 @@ export default class EditorApp implements App {
-
+