diff --git a/ROADMAP.md b/ROADMAP.md index b4fc124..a6091f7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -101,6 +101,7 @@ Due to my Bachelors' thesis I took a 3 week break from Torii here and `dev9` sho ### `v0.0.0-dev10` [NEXT] +- [x] Client Refactoring (Vue webapp and plugins first steps) - [ ] Edit Mode: WYSIWYG if provided, allows to edit article, drag and drop - [ ] Edit Mode: Remove: Open URL on link click - [ ] View Mode: Hides placeholder grids and no interaction @@ -115,7 +116,6 @@ Due to my Bachelors' thesis I took a 3 week break from Torii here and `dev9` sho ### `v0.0.0-dev11` -- [ ] Client Refactoring (vue app and plugins first steps) - [ ] Client Documentation (Github CI) - [ ] [clean-jsdoc-theme](https://www.npmjs.com/package/@clean-jsdoc-theme/typedoc) - [ ] Remove Naive UI dependency and implement custom vue components diff --git a/package-lock.json b/package-lock.json index 03d8e48..6312b9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "Torii", + "name": "@torii-project", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "Torii", + "name": "@torii-project", "workspaces": [ - "torii-client" + "torii-client/**" ], "devDependencies": { "@tauri-apps/cli": "^2.11.1", @@ -349,10 +349,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -493,7 +495,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -505,7 +509,6 @@ }, "node_modules/@css-render/vue3-ssr": { "version": "0.15.14", - "dev": true, "license": "MIT", "peerDependencies": { "vue": "^3.0.11" @@ -521,7 +524,6 @@ }, "node_modules/@emotion/hash": { "version": "0.8.0", - "dev": true, "license": "MIT" }, "node_modules/@esbuild/linux-x64": { @@ -757,7 +759,6 @@ }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", - "dev": true, "license": "Apache-2.0" }, "node_modules/@leichtgewicht/ip-codec": { @@ -1502,6 +1503,18 @@ "vue": "^3.0.0" } }, + "node_modules/@torii-project/core": { + "resolved": "torii-client/torii-core", + "link": true + }, + "node_modules/@torii-project/plugin-recent-projects": { + "resolved": "torii-client/plugin-recent-projects", + "link": true + }, + "node_modules/@torii-project/webapp": { + "resolved": "torii-client/webapp", + "link": true + }, "node_modules/@types/body-parser": { "version": "1.19.6", "dev": true, @@ -1619,12 +1632,10 @@ }, "node_modules/@types/lodash": { "version": "4.17.24", - "dev": true, "license": "MIT" }, "node_modules/@types/lodash-es": { "version": "4.17.12", - "dev": true, "license": "MIT", "dependencies": { "@types/lodash": "*" @@ -1965,7 +1976,6 @@ }, "node_modules/@vicons/ionicons5": { "version": "0.13.0", - "dev": true, "license": "MIT" }, "node_modules/@vicons/utils": { @@ -2292,45 +2302,53 @@ "license": "ISC" }, "node_modules/@vue/compiler-core": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.42.tgz", + "integrity": "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/shared": "3.5.39", + "@babel/parser": "^7.29.8", + "@vue/shared": "3.5.42", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.42.tgz", + "integrity": "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/compiler-core": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.42.tgz", + "integrity": "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/compiler-core": "3.5.39", - "@vue/compiler-dom": "3.5.39", - "@vue/compiler-ssr": "3.5.39", - "@vue/shared": "3.5.39", + "@babel/parser": "^7.29.8", + "@vue/compiler-core": "3.5.42", + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-ssr": "3.5.42", + "@vue/shared": "3.5.42", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", - "postcss": "^8.5.15", + "postcss": "^8.5.19", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.42.tgz", + "integrity": "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/compiler-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/component-compiler-utils": { @@ -2468,43 +2486,51 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.42.tgz", + "integrity": "sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.39" + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.42.tgz", + "integrity": "sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/reactivity": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.42.tgz", + "integrity": "sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.39", - "@vue/runtime-core": "3.5.39", - "@vue/shared": "3.5.39", + "@vue/reactivity": "3.5.42", + "@vue/runtime-core": "3.5.42", + "@vue/shared": "3.5.42", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.42.tgz", + "integrity": "sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.39", - "@vue/shared": "3.5.39" - }, - "peerDependencies": { - "vue": "3.5.39" + "@vue/compiler-ssr": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/shared": "3.5.42" } }, "node_modules/@vue/shared": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz", + "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==", "license": "MIT" }, "node_modules/@vue/vue-loader-v15": { @@ -2962,7 +2988,6 @@ }, "node_modules/async-validator": { "version": "4.2.5", - "dev": true, "license": "MIT" }, "node_modules/at-least-node": { @@ -4078,7 +4103,6 @@ }, "node_modules/date-fns": { "version": "4.4.0", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -4087,7 +4111,6 @@ }, "node_modules/date-fns-tz": { "version": "3.2.0", - "dev": true, "license": "MIT", "peerDependencies": { "date-fns": "^3.0.0 || ^4.0.0" @@ -5063,7 +5086,6 @@ }, "node_modules/evtd": { "version": "0.2.4", - "dev": true, "license": "MIT" }, "node_modules/execa": { @@ -6610,12 +6632,10 @@ }, "node_modules/lodash": { "version": "4.18.1", - "dev": true, "license": "MIT" }, "node_modules/lodash-es": { "version": "4.18.1", - "dev": true, "license": "MIT" }, "node_modules/lodash.defaultsdeep": { @@ -7204,7 +7224,6 @@ }, "node_modules/naive-ui": { "version": "2.44.1", - "dev": true, "license": "MIT", "dependencies": { "@css-render/plugin-bem": "^0.15.14", @@ -7235,7 +7254,6 @@ }, "node_modules/naive-ui/node_modules/@css-render/plugin-bem": { "version": "0.15.14", - "dev": true, "license": "MIT", "peerDependencies": { "css-render": "~0.15.14" @@ -7243,7 +7261,6 @@ }, "node_modules/naive-ui/node_modules/css-render": { "version": "0.15.14", - "dev": true, "license": "MIT", "dependencies": { "@emotion/hash": "~0.8.0", @@ -7252,12 +7269,10 @@ }, "node_modules/naive-ui/node_modules/css-render/node_modules/csstype": { "version": "3.0.11", - "dev": true, "license": "MIT" }, "node_modules/naive-ui/node_modules/highlight.js": { "version": "11.11.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" @@ -9206,7 +9221,6 @@ }, "node_modules/seemly": { "version": "0.3.10", - "dev": true, "license": "MIT" }, "node_modules/select-hose": { @@ -10029,10 +10043,6 @@ "node": ">=0.6" } }, - "node_modules/torii-client": { - "resolved": "torii-client", - "link": true - }, "node_modules/totalist": { "version": "3.0.1", "dev": true, @@ -10048,7 +10058,6 @@ }, "node_modules/treemate": { "version": "0.3.11", - "dev": true, "license": "MIT" }, "node_modules/ts-loader": { @@ -10387,7 +10396,6 @@ }, "node_modules/vdirs": { "version": "0.1.8", - "dev": true, "license": "MIT", "dependencies": { "evtd": "^0.2.2" @@ -10576,7 +10584,6 @@ }, "node_modules/vooks": { "version": "0.2.12", - "dev": true, "license": "MIT", "dependencies": { "evtd": "^0.2.2" @@ -10586,14 +10593,16 @@ } }, "node_modules/vue": { - "version": "3.5.39", + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.42.tgz", + "integrity": "sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.39", - "@vue/compiler-sfc": "3.5.39", - "@vue/runtime-dom": "3.5.39", - "@vue/server-renderer": "3.5.39", - "@vue/shared": "3.5.39" + "@vue/compiler-dom": "3.5.42", + "@vue/compiler-sfc": "3.5.42", + "@vue/runtime-dom": "3.5.42", + "@vue/server-renderer": "3.5.42", + "@vue/shared": "3.5.42" }, "peerDependencies": { "typescript": "*" @@ -10762,7 +10771,6 @@ }, "node_modules/vueuc": { "version": "0.4.65", - "dev": true, "license": "MIT", "dependencies": { "@css-render/vue3-ssr": "^0.15.10", @@ -10779,7 +10787,6 @@ }, "node_modules/vueuc/node_modules/css-render": { "version": "0.15.14", - "dev": true, "license": "MIT", "dependencies": { "@emotion/hash": "~0.8.0", @@ -10788,7 +10795,6 @@ }, "node_modules/vueuc/node_modules/csstype": { "version": "3.0.11", - "dev": true, "license": "MIT" }, "node_modules/w3c-keyname": { @@ -11587,6 +11593,71 @@ "peerDependencies": { "vue": "^3.2.0" } + }, + "torii-client/plugin-recent-projects": { + "name": "@torii-project/plugin-recent-projects", + "version": "0.1.0", + "dependencies": { + "@tauri-apps/api": "^2.11.0", + "@tauri-apps/plugin-dialog": "^2.7.1", + "@torii-project/core": "file:../torii-core", + "@vicons/ionicons5": "^0.13.0", + "naive-ui": "^2.44.1", + "vue": "^3.5.41", + "vue-router": "~4.0.3" + } + }, + "torii-client/torii-core": { + "name": "@torii-project/core", + "version": "0.1.0", + "dependencies": { + "vue": "^3.5.41" + } + }, + "torii-client/webapp": { + "name": "@torii-project/webapp", + "version": "0.1.0", + "dependencies": { + "@tauri-apps/api": "^2.11.0", + "@tauri-apps/plugin-dialog": "^2.7.1", + "@tauri-apps/plugin-opener": "^2.5.4", + "@tauri-apps/plugin-process": "^2.3.1", + "@tauri-apps/plugin-store": "^2.4.3", + "@tauri-apps/plugin-updater": "^2.10.1", + "@tiptap/extension-list": "^3.27.1", + "@tiptap/markdown": "^3.27.1", + "@tiptap/pm": "^3.27.1", + "@tiptap/starter-kit": "^3.27.1", + "@tiptap/vue-3": "^3.27.1", + "@torii-project/core": "file:../torii-core", + "@torii-project/plugin-recent-projects": "file:../plugin-recent-projects", + "pinia": "^3.0.4", + "typedoc": "^0.28.20", + "typedoc-plugin-vue": "^1.5.1", + "vue": "^3.2.13", + "vue-i18n": "^11.4.5", + "vue-router": "~4.0.3" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", + "@vicons/ionicons5": "^0.13.0", + "@vicons/utils": "^0.1.4", + "@vue/cli-plugin-eslint": "^5.0.9", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-typescript": "^5.0.9", + "@vue/cli-service": "~5.0.0", + "@vue/eslint-config-typescript": "^9.1.0", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-vue": "^8.0.3", + "naive-ui": "^2.44.1", + "prettier": "^2.4.1", + "sass": "^1.101.0", + "sass-loader": "^17.0.0", + "typescript": "~4.5.5" + } } } } diff --git a/package.json b/package.json index 2c99465..d81333f 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "Torii", + "name": "@torii-project", "type": "module", "workspaces": [ - "torii-client" + "torii-client/**" ], "devDependencies": { "@tauri-apps/cli": "^2.11.1", @@ -13,13 +13,13 @@ "vite-plugin-vue-devtools": "^8.1.3" }, "scripts": { - "serve": "npm run serve --workspace=torii-client", + "serve": "npm run serve --workspace=torii-client/webapp", "build": "npm run build --workspaces", - "lint": "npm run lint --workspace=torii-client", + "lint": "npm run lint --workspace=torii-client/webapp", "tauri": "tauri", "fix-windows-version": "tsx .github/scripts/fix-windows-versioning.ts", "add-signing-public-key": "tsx .github/scripts/add-signing-public-key.ts ", "version": "tsx .github/scripts/print-tauri-version.ts", - "docs": "npm run docs --workspace=torii-client" + "docs": "npm run docs --workspace=torii-client/webapp" } } diff --git a/torii-client/.prettierrc b/torii-client/plugin-recent-projects/.prettierrc similarity index 58% rename from torii-client/.prettierrc rename to torii-client/plugin-recent-projects/.prettierrc index a24df35..0caaec8 100644 --- a/torii-client/.prettierrc +++ b/torii-client/plugin-recent-projects/.prettierrc @@ -2,5 +2,6 @@ "semi": true, "tabWidth": 4, "singleQuote": true, - "endOfLine": "auto" + "endOfLine": "auto", + "printWidth": 120 } \ No newline at end of file diff --git a/torii-client/plugin-recent-projects/README.md b/torii-client/plugin-recent-projects/README.md new file mode 100644 index 0000000..13d1c73 --- /dev/null +++ b/torii-client/plugin-recent-projects/README.md @@ -0,0 +1,3 @@ +# Recent Projects (Torii Plugin) + +This Torii plugin extends the welcome screen with a list of recent projects. diff --git a/torii-client/plugin-recent-projects/package.json b/torii-client/plugin-recent-projects/package.json new file mode 100644 index 0000000..4ef5b4b --- /dev/null +++ b/torii-client/plugin-recent-projects/package.json @@ -0,0 +1,15 @@ +{ + "name": "@torii-project/plugin-recent-projects", + "version": "0.1.0", + "private": true, + "main": "src/lib.ts", + "dependencies": { + "@tauri-apps/api": "^2.11.0", + "@tauri-apps/plugin-dialog": "^2.7.1", + "@torii-project/core": "file:../torii-core", + "@vicons/ionicons5": "^0.13.0", + "naive-ui": "^2.44.1", + "vue": "^3.5.41", + "vue-router": "~4.0.3" + } +} \ No newline at end of file diff --git a/torii-client/src/views/RecentProjectsView.vue b/torii-client/plugin-recent-projects/src/RecentProjects.vue similarity index 85% rename from torii-client/src/views/RecentProjectsView.vue rename to torii-client/plugin-recent-projects/src/RecentProjects.vue index cda812e..d2da0f5 100644 --- a/torii-client/src/views/RecentProjectsView.vue +++ b/torii-client/plugin-recent-projects/src/RecentProjects.vue @@ -11,19 +11,13 @@ v-for="(project, index) in recentProjects" :key="project.path" > - {{ project.name }} + {{ project.name }} @@ -38,11 +32,7 @@ + + diff --git a/torii-client/webapp/src/plugins/loader.ts b/torii-client/webapp/src/plugins/loader.ts new file mode 100644 index 0000000..86a1300 --- /dev/null +++ b/torii-client/webapp/src/plugins/loader.ts @@ -0,0 +1,27 @@ +import { ToriiPluginManager } from '@torii-project/core'; +import { RecentProjectsPlugin } from '@torii-project/plugin-recent-projects'; + +/** + * @brief Singleton instance of the Torii plugin manager. + */ +let singleton: ToriiPluginManager | undefined; + +/** + * @brief When the plugins are initialized, it installs the core plugins. + */ +export function installCorePlugins(m: ToriiPluginManager) { + m.install(new RecentProjectsPlugin()); +} + +/** + * @returns The singleton instance of the Torii plugin manager, lazily + * initializing it if is not yet set. + */ +export function usePlugins() { + if (!singleton) { + singleton = new ToriiPluginManager(); + installCorePlugins(singleton); + } + + return singleton; +} diff --git a/torii-client/src/router/index.ts b/torii-client/webapp/src/router/index.ts similarity index 84% rename from torii-client/src/router/index.ts rename to torii-client/webapp/src/router/index.ts index 8da9428..3fc9bf3 100644 --- a/torii-client/src/router/index.ts +++ b/torii-client/webapp/src/router/index.ts @@ -41,6 +41,14 @@ const routes: Array = [ /* webpackChunkName: "settings-theme" */ '../views/settings/ThemeSettingsView.vue' ), }, + { + path: 'plugins', + name: 'settings-plugins', + component: () => + import( + /* webpackChunkName: "settings-plugins" */ '../views/settings/PluginSettingsView.vue' + ), + }, ], }, ]; diff --git a/torii-client/src/shims-vue.d.ts b/torii-client/webapp/src/shims-vue.d.ts similarity index 100% rename from torii-client/src/shims-vue.d.ts rename to torii-client/webapp/src/shims-vue.d.ts diff --git a/torii-client/src/stores/settings.ts b/torii-client/webapp/src/stores/settings.ts similarity index 100% rename from torii-client/src/stores/settings.ts rename to torii-client/webapp/src/stores/settings.ts diff --git a/torii-client/src/styles/global.scss b/torii-client/webapp/src/styles/global.scss similarity index 100% rename from torii-client/src/styles/global.scss rename to torii-client/webapp/src/styles/global.scss diff --git a/torii-client/src/types.d.ts b/torii-client/webapp/src/types.d.ts similarity index 100% rename from torii-client/src/types.d.ts rename to torii-client/webapp/src/types.d.ts diff --git a/torii-client/src/ui/UIDropRegion.vue b/torii-client/webapp/src/ui/UIDropRegion.vue similarity index 100% rename from torii-client/src/ui/UIDropRegion.vue rename to torii-client/webapp/src/ui/UIDropRegion.vue diff --git a/torii-client/src/ui/UIFileTree.vue b/torii-client/webapp/src/ui/UIFileTree.vue similarity index 99% rename from torii-client/src/ui/UIFileTree.vue rename to torii-client/webapp/src/ui/UIFileTree.vue index ad9c101..ce03201 100644 --- a/torii-client/src/ui/UIFileTree.vue +++ b/torii-client/webapp/src/ui/UIFileTree.vue @@ -17,7 +17,7 @@ + + diff --git a/torii-client/src/views/settings/SettingsView.vue b/torii-client/webapp/src/views/settings/SettingsView.vue similarity index 91% rename from torii-client/src/views/settings/SettingsView.vue rename to torii-client/webapp/src/views/settings/SettingsView.vue index fddd1c8..8640bfb 100644 --- a/torii-client/src/views/settings/SettingsView.vue +++ b/torii-client/webapp/src/views/settings/SettingsView.vue @@ -32,6 +32,10 @@ const menuOptions = computed(() => [ label: i18n.t('app.settings.themes'), key: 'settings-theme', }, + { + label: i18n.t('app.settings.plugins'), + key: 'settings-plugins', + }, ]); function openSetting(key: string) { @@ -54,6 +58,8 @@ function openSetting(key: string) { flex-direction: column; align-items: center; padding: 16px; + width: 100%; + box-sizing: border-box; } } diff --git a/torii-client/src/views/settings/ThemeSettingsView.vue b/torii-client/webapp/src/views/settings/ThemeSettingsView.vue similarity index 100% rename from torii-client/src/views/settings/ThemeSettingsView.vue rename to torii-client/webapp/src/views/settings/ThemeSettingsView.vue diff --git a/torii-client/webapp/tsconfig.json b/torii-client/webapp/tsconfig.json new file mode 100644 index 0000000..4c5fbf0 --- /dev/null +++ b/torii-client/webapp/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + // general + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + // file handling + + // "baseUrl": "src", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "../plugin-recent-projects/src/api.ts"] +} diff --git a/torii-client/typedoc.json b/torii-client/webapp/typedoc.json similarity index 100% rename from torii-client/typedoc.json rename to torii-client/webapp/typedoc.json diff --git a/torii-client/vite.config.ts b/torii-client/webapp/vite.config.ts similarity index 100% rename from torii-client/vite.config.ts rename to torii-client/webapp/vite.config.ts diff --git a/torii-desktop/tauri.conf.json b/torii-desktop/tauri.conf.json index b8204fa..ae163e8 100644 --- a/torii-desktop/tauri.conf.json +++ b/torii-desktop/tauri.conf.json @@ -4,7 +4,7 @@ "version": "0.0.0-dev10", "identifier": "com.torii.dev", "build": { - "frontendDist": "../torii-client/dist", + "frontendDist": "../torii-client/webapp/dist", "devUrl": "http://localhost:8080/", "beforeDevCommand": "npm run serve", "beforeBuildCommand": "npm run build" diff --git a/torii-workspaces/contributors/Architecture.md b/torii-workspaces/contributors/Architecture.md index 41b1658..6dcc70e 100644 --- a/torii-workspaces/contributors/Architecture.md +++ b/torii-workspaces/contributors/Architecture.md @@ -7,7 +7,7 @@ TODO: Resort below ### Architecture - `torii-api`: The Torii API, currently reserved but not in use. -- `torii-client`: The Torii web client, which comes bundles with the desktop binary. The client is the main user interface of Torii. +- `torii-client/webapp`: The Torii web client, which comes bundles with the desktop binary. The client is the main user interface of Torii. - `torii-desktop`: The Torii binary, which manages the webview and packaging the application into different distributions. ### Vue Essential Links diff --git a/torii-workspaces/welcome/Changelog.md b/torii-workspaces/welcome/Changelog.md index b6008cd..2398603 100644 --- a/torii-workspaces/welcome/Changelog.md +++ b/torii-workspaces/welcome/Changelog.md @@ -4,7 +4,10 @@ ### [v0.0.0-dev10](https://github.com/Anatoly03/Torii/releases/tag/app-v0.0.0-dev10) -- TBA +- Add plugin: Recent Projects +- Add a settings page to display installed plugins. + +Technical Change: The codebase was refactored to support dynamically loaded plugins. This is still premature for usage by 3rd party extensions, but will act as a solid base in the future. --- @@ -13,6 +16,8 @@ - Add "Preview Mode" to record footer, which disable editing and hides image placeholder grids. - Add an update information button in the welcome screen. *This button has not been tested yet! We will see when dev10 releases if it works.* +Technical Change: The Github CI/CD now builds releases with signatures. This release comes with an update button that is capable of update the app to a newer version. + --- ### [v0.0.0-dev8](https://github.com/Anatoly03/Torii/releases/tag/app-v0.0.0-dev8) @@ -20,7 +25,8 @@ - Add search bar in the file tree. - Add feature to open browser links when clicked. - Cache autocomplete suggestions. -- (For Developers:) Added new workspace "Torii Contributors" for maintaining programmer resources in-app. + +For Developers: Added new workspace "Torii Contributors" for maintaining programmer resources in-app. ---