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 }}
handleProjectOptions(project, option)
- "
+ @select="(_, option) => handleProjectOptions(project, option)"
>
@@ -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.
---