diff --git a/package.json b/package.json index 516eb7a..3dc94ca 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "remark-github": "^11.2.4", "remark-slug": "^7.0.1", "sass": "^1.55.0", - "svelte": "^3.51.0", + "svelte": "^3.52.0", "svelte-check": "^2.9.2", "svelte-preprocess": "^4.10.7", "tslib": "^2.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 887b2c9..5d200b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,7 +23,7 @@ specifiers: remark-github: ^11.2.4 remark-slug: ^7.0.1 sass: ^1.55.0 - svelte: ^3.51.0 + svelte: ^3.52.0 svelte-check: ^2.9.2 svelte-preprocess: ^4.10.7 tslib: ^2.4.0 @@ -37,27 +37,27 @@ devDependencies: '@fec/remark-a11y-emoji': 3.1.0 '@fluentui/svg-icons': 1.1.184 '@neodrag/svelte': 1.2.4 - '@sveltejs/kit': 1.0.0-next.514_svelte@3.51.0+vite@3.1.7 + '@sveltejs/kit': 1.0.0-next.514_svelte@3.53.1+vite@3.1.7 '@typescript-eslint/eslint-plugin': 5.40.0_25sstg4uu2sk4pm7xcyzuov7xq '@typescript-eslint/parser': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q autoprefixer: 10.4.12_postcss@8.4.17 cssnano: 5.1.13_postcss@8.4.17 eslint: 8.25.0 eslint-config-prettier: 8.5.0_eslint@8.25.0 - eslint-plugin-svelte3: 3.4.1_pr36k4f4yzzzfpayao7l7fkqni + eslint-plugin-svelte3: 3.4.1_wh6k3s2kjjgapidgujbzyd6wmi fluent-svelte: 1.6.0 - mdsvex: 0.10.6_svelte@3.51.0 + mdsvex: 0.10.6_svelte@3.53.1 postcss: 8.4.17 postcss-media-minmax: 5.0.0_postcss@8.4.17 prettier: 2.7.1 - prettier-plugin-svelte: 2.8.0_ibge6ami6vq2q2j5g4rcvk62hq + prettier-plugin-svelte: 2.8.0_nryolsexf6k3znhuh4uzpugsem remark-gfm: 3.0.1 remark-github: 11.2.4 remark-slug: 7.0.1 sass: 1.55.0 - svelte: 3.51.0 - svelte-check: 2.9.2_zq4rugmbmdxug4elkcndsqzzae - svelte-preprocess: 4.10.7_vfvibhcgrfuxcyaos6ilfh4mou + svelte: 3.53.1 + svelte-check: 2.9.2_ynvloq57zp3up66xotwxm5zsvq + svelte-preprocess: 4.10.7_g5wsmquatqal3xw3dxoea3c3ym tslib: 2.4.0 typescript: 4.8.4 vite: 3.1.7_sass@1.55.0 @@ -259,7 +259,7 @@ packages: rollup: 2.79.1 dev: false - /@sveltejs/kit/1.0.0-next.514_svelte@3.51.0+vite@3.1.7: + /@sveltejs/kit/1.0.0-next.514_svelte@3.53.1+vite@3.1.7: resolution: {integrity: sha512-1vBKNeLkaQGz/QEQ9bxWwqHwJbBQJTVKReFoFQugGBhiT/Q39Uv+FpXWh+XND9OxMJ947ndqp/EiQj0IAmPwhg==} engines: {node: '>=16.14'} hasBin: true @@ -268,7 +268,7 @@ packages: svelte: ^3.44.0 vite: ^3.1.0 dependencies: - '@sveltejs/vite-plugin-svelte': 1.0.9_svelte@3.51.0+vite@3.1.7 + '@sveltejs/vite-plugin-svelte': 1.0.9_svelte@3.53.1+vite@3.1.7 '@types/cookie': 0.5.1 cookie: 0.5.0 devalue: 4.0.0 @@ -278,7 +278,7 @@ packages: sade: 1.8.1 set-cookie-parser: 2.5.1 sirv: 2.0.2 - svelte: 3.51.0 + svelte: 3.53.1 tiny-glob: 0.2.9 undici: 5.11.0 vite: 3.1.7_sass@1.55.0 @@ -287,7 +287,7 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte/1.0.9_svelte@3.51.0+vite@3.1.7: + /@sveltejs/vite-plugin-svelte/1.0.9_svelte@3.53.1+vite@3.1.7: resolution: {integrity: sha512-+SDrAnT7TDi8sdj4OfD2SC4s9DNrpNVBrue8fT2PmKks9Ddu0JIfSeX91wXZb/1xHz4EkGb+rli8GTRI0yGOjg==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -303,8 +303,8 @@ packages: deepmerge: 4.2.2 kleur: 4.1.5 magic-string: 0.26.7 - svelte: 3.51.0 - svelte-hmr: 0.15.0_svelte@3.51.0 + svelte: 3.53.1 + svelte-hmr: 0.15.0_svelte@3.53.1 vite: 3.1.7_sass@1.55.0 transitivePeerDependencies: - supports-color @@ -1160,7 +1160,7 @@ packages: eslint: 8.25.0 dev: true - /eslint-plugin-svelte3/3.4.1_pr36k4f4yzzzfpayao7l7fkqni: + /eslint-plugin-svelte3/3.4.1_wh6k3s2kjjgapidgujbzyd6wmi: resolution: {integrity: sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==} engines: {node: '>=10'} peerDependencies: @@ -1168,7 +1168,7 @@ packages: svelte: ^3.2.0 dependencies: eslint: 8.25.0 - svelte: 3.51.0 + svelte: 3.53.1 dev: true /eslint-scope/5.1.1: @@ -1767,7 +1767,7 @@ packages: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true - /mdsvex/0.10.6_svelte@3.51.0: + /mdsvex/0.10.6_svelte@3.53.1: resolution: {integrity: sha512-aGRDY0r5jx9+OOgFdyB9Xm3EBr9OUmcrTDPWLB7a7g8VPRxzPy4MOBmcVYgz7ErhAJ7bZ/coUoj6aHio3x/2mA==} peerDependencies: svelte: 3.x @@ -1775,7 +1775,7 @@ packages: '@types/unist': 2.0.6 prism-svelte: 0.4.7 prismjs: 1.29.0 - svelte: 3.51.0 + svelte: 3.53.1 vfile-message: 2.0.4 dev: true @@ -2511,14 +2511,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte/2.8.0_ibge6ami6vq2q2j5g4rcvk62hq: + /prettier-plugin-svelte/2.8.0_nryolsexf6k3znhuh4uzpugsem: resolution: {integrity: sha512-QlXv/U3bUszks3XYDPsk1fsaQC+fo2lshwKbcbO+lrSVdJ+40mB1BfL8OCAk1W9y4pJxpqO/4gqm6NtF3zNGCw==} peerDependencies: prettier: ^1.16.4 || ^2.0.0 svelte: ^3.2.0 dependencies: prettier: 2.7.1 - svelte: 3.51.0 + svelte: 3.53.1 dev: true /prettier/2.7.1: @@ -2781,7 +2781,7 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check/2.9.2_zq4rugmbmdxug4elkcndsqzzae: + /svelte-check/2.9.2_ynvloq57zp3up66xotwxm5zsvq: resolution: {integrity: sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==} hasBin: true peerDependencies: @@ -2793,8 +2793,8 @@ packages: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 3.51.0 - svelte-preprocess: 4.10.7_vfvibhcgrfuxcyaos6ilfh4mou + svelte: 3.53.1 + svelte-preprocess: 4.10.7_g5wsmquatqal3xw3dxoea3c3ym typescript: 4.8.4 transitivePeerDependencies: - '@babel/core' @@ -2809,16 +2809,16 @@ packages: - sugarss dev: true - /svelte-hmr/0.15.0_svelte@3.51.0: + /svelte-hmr/0.15.0_svelte@3.53.1: resolution: {integrity: sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: '>=3.19.0' dependencies: - svelte: 3.51.0 + svelte: 3.53.1 dev: true - /svelte-preprocess/4.10.7_vfvibhcgrfuxcyaos6ilfh4mou: + /svelte-preprocess/4.10.7_g5wsmquatqal3xw3dxoea3c3ym: resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} engines: {node: '>= 9.11.2'} requiresBuild: true @@ -2867,12 +2867,12 @@ packages: sass: 1.55.0 sorcery: 0.10.0 strip-indent: 3.0.0 - svelte: 3.51.0 + svelte: 3.53.1 typescript: 4.8.4 dev: true - /svelte/3.51.0: - resolution: {integrity: sha512-PBITYIrsNOuW+Dtds00gSY68raNZQn7i59Dg/fjgf6WwyawPKeBwle692coO7ILZqSO+UJe9899aDn9sMdeOHA==} + /svelte/3.53.1: + resolution: {integrity: sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==} engines: {node: '>= 8'} dev: true diff --git a/src/data/docs.ts b/src/data/docs.ts deleted file mode 100644 index 7721391..0000000 --- a/src/data/docs.ts +++ /dev/null @@ -1,61 +0,0 @@ -export type DocsNode = { - name: string, - icon?: string, -} - -export type DocsPage = DocsNode & { path: string } - -export type DocsCategory = DocsNode & { pages: DocsPage[] } - -export const docs: (DocsPage | DocsCategory)[] = [ - { - name: "Overview", - path: "" - }, - { - name: "Configuring Files", - pages: [ - { - name: "Terminal Profiles", - path: "/configuring/terminal-profiles" - }, - { - name: "Date Formats", - path: "/configuring/date-formats" - }, - { - name: "Custom Themes", - path: "/configuring/custom-themes" - }, - { - name: "Keyboard Shortcuts", - path: "/configuring/keyboard-shortcuts" - }, - { - name: "Replacing File Explorer with Files", - path: "/configuring/replace-file-explorer" - }, - { - name: "Troubleshooting Installation Issues", - path: "/configuring/troubleshooting-installation" - } - ] - }, - { - name: "Contributing", - pages: [ - { - name: "Building Files from Source", - path: "/contributing/building-from-source" - }, - { - name: "Updates", - path: "/contributing/updates" - }, - { - name: "Code Style", - path: "/contributing/code-style" - } - ] - } -]; diff --git a/src/data/features.ts b/src/data/features.ts index c3ebf8c..400da50 100644 --- a/src/data/features.ts +++ b/src/data/features.ts @@ -11,7 +11,17 @@ export const previewFiles = [ type: "Programming Language", description: "I've been using this language for years. For hobby projects and for my degree. I like doing full-stack, multi-layer projects. Backend and frontend are both important to me.", confidence: "Very Confident!", - confidenceLevel: "97%" + confidenceLevel: "97%", + projects: [ + { + name: "Library Manager", + link: "/degree/library-manager", + }, + { + name: "Lunar Lander SQL", + link: "/degree/lunarlandersql", + } + ] }, { name: "Python", @@ -19,7 +29,31 @@ export const previewFiles = [ type: "Programming Language", description: "I've been using this language for years. For hobby projects and for my degree. I've used it mostly as a scripting language, but I've also used it for some desktop development using PyQT. I've used it to play around with tensorflow and machine learning.", confidence: "Pretty Confident", - confidenceLevel: "85%" + confidenceLevel: "85%", + projects: [ + { + name: "Python QT Data Analysis Tool", + link: "/degree/pythonqtdataanalysis" + } + ] + }, + { + name: "Databases", + icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjBweCIgeT0iMHB4Igp3aWR0aD0iMjQwIiBoZWlnaHQ9IjI0MCIKdmlld0JveD0iMCAwIDQ4IDQ4Ij4KPGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXlhX1JYck9ONWt5Tjk2QV9ncjEiIHgxPSI5IiB4Mj0iMzkiIHkxPSIzNiIgeTI9IjM2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMTE0MDhhIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTAzZjhmIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI3dPUW91eGVudX5YRlJRUDFsRkZBeWFfUlhyT041a3lOOTZBX2dyMSkiIGQ9Ik0zOSwyOUg5YzAsMCwwLDguNjU3LDAsOWMwLDIuNzYxLDYuNzE2LDUsMTUsNXMxNS0yLjIzOSwxNS01QzM5LDM3LjY1NywzOSwyOSwzOSwyOXoiPjwvcGF0aD48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWJfUlhyT041a3lOOTZBX2dyMiIgeDE9IjkiIHgyPSIzOSIgeTE9IjI2LjUiIHkyPSIyNi41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMWQ1OWIzIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTk1YmJjIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI3dPUW91eGVudX5YRlJRUDFsRkZBeWJfUlhyT041a3lOOTZBX2dyMikiIGQ9Ik0zOSwxOUg5YzAsMCwwLDkuNjU3LDAsMTBjMCwyLjc2MSw2LjcxNiw1LDE1LDVzMTUtMi4yMzksMTUtNUMzOSwyOC42NTcsMzksMTksMzksMTl6Ij48L3BhdGg+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXljX1JYck9ONWt5Tjk2QV9ncjMiIHgxPSI5IiB4Mj0iMzkiIHkxPSIxNi43NSIgeTI9IjE2Ljc1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMzA3OWQ2Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjk3Y2QyIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI3dPUW91eGVudX5YRlJRUDFsRkZBeWNfUlhyT041a3lOOTZBX2dyMykiIGQ9Ik0zOSw5LjVIOWMwLDAsMCw5LjE1NywwLDkuNWMwLDIuNzYxLDYuNzE2LDUsMTUsNXMxNS0yLjIzOSwxNS01QzM5LDE4LjY1NywzOSw5LjUsMzksOS41eiI+PC9wYXRoPjxsaW5lYXJHcmFkaWVudCBpZD0id09Rb3V4ZW51flhGUlFQMWxGRkF5ZF9SWHJPTjVreU45NkFfZ3I0IiB4MT0iOSIgeDI9IjM5IiB5MT0iOS41IiB5Mj0iOS41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNDJhM2YyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNDJhNGViIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48ZWxsaXBzZSBjeD0iMjQiIGN5PSI5LjUiIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5ZF9SWHJPTjVreU45NkFfZ3I0KSIgcng9IjE1IiByeT0iNC41Ij48L2VsbGlwc2U+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXllX1JYck9ONWt5Tjk2QV9ncjUiIHgxPSIzMS4xODkiIHgyPSI0NS40MjYiIHkxPSIzMS4xNjkiIHkyPSI0NS40MDYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM4ODkwOTciPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4zMzEiIHN0b3AtY29sb3I9IiM4NDhjOTQiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii42NjkiIHN0b3AtY29sb3I9IiM3ODgyOGIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM2NDcxN2MiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxwYXRoIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5ZV9SWHJPTjVreU45NkFfZ3I1KSIgZD0iTTQ3LjcxNSwzNS42NDdjLTEuMTkzLDAuMTUxLTIuNDE1LTAuNDA3LTMuMDU0LTEuNTE0Yy0wLjYzOS0xLjEwNi0wLjUxMi0yLjQ0NCwwLjIxNi0zLjQwMSBjLTEuMTI5LTEuMDcyLTIuNTA1LTEuODg0LTQuMDM4LTIuMzM4Yy0wLjQ2NCwxLjExMS0xLjU2LDEuODkzLTIuODM5LDEuODkzcy0yLjM3NS0wLjc4MS0yLjgzOS0xLjg5MyBjLTEuNTMzLDAuNDUzLTIuOTA5LDEuMjY2LTQuMDM4LDIuMzM4YzAuNzI3LDAuOTU3LDAuODU0LDIuMjk1LDAuMjE2LDMuNDAxYy0wLjYzOSwxLjEwNi0xLjg2MSwxLjY2NS0zLjA1NCwxLjUxNCBDMjguMTA1LDM2LjM5NiwyOCwzNy4xNzUsMjgsMzcuOTc5YzAsMC44MDUsMC4xMDUsMS41ODMsMC4yODUsMi4zMzJjMS4xOTMtMC4xNTEsMi40MTUsMC40MDcsMy4wNTQsMS41MTQgYzAuNjM5LDEuMTA2LDAuNTEyLDIuNDQ0LTAuMjE2LDMuNDAxYzEuMTI5LDEuMDcyLDIuNTA1LDEuODg0LDQuMDM4LDIuMzM4YzAuNDY0LTEuMTExLDEuNTYtMS44OTMsMi44MzktMS44OTMgczIuMzc1LDAuNzgxLDIuODM5LDEuODkzYzEuNTMzLTAuNDUzLDIuOTA5LTEuMjY2LDQuMDM4LTIuMzM4Yy0wLjcyNy0wLjk1Ny0wLjg1NC0yLjI5NS0wLjIxNi0zLjQwMSBjMC42MzktMS4xMDYsMS44NjEtMS42NjUsMy4wNTQtMS41MTRDNDcuODk1LDM5LjU2Miw0OCwzOC43ODQsNDgsMzcuOTc5QzQ4LDM3LjE3NSw0Ny44OTUsMzYuMzk2LDQ3LjcxNSwzNS42NDd6Ij48L3BhdGg+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXlmX1JYck9ONWt5Tjk2QV9ncjYiIHgxPSI0MS43NTEiIHgyPSIzNC4xOTgiIHkxPSI0MS43MzEiIHkyPSIzNC4xNzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmYiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4yNDIiIHN0b3AtY29sb3I9IiNmMmYyZjIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNjY2MiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxjaXJjbGUgY3g9IjM4IiBjeT0iMzcuOTc5IiByPSI1LjM4NSIgZmlsbD0idXJsKCN3T1FvdXhlbnV+WEZSUVAxbEZGQXlmX1JYck9ONWt5Tjk2QV9ncjYpIj48L2NpcmNsZT48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWdfUlhyT041a3lOOTZBX2dyNyIgeDE9IjM0LjkzMyIgeDI9IjQwLjMxMyIgeTE9IjM0LjkxMiIgeTI9IjQwLjI5MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzBkNjFhOSI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjM2MyIgc3RvcC1jb2xvcj0iIzBlNWZhNCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjc4IiBzdG9wLWNvbG9yPSIjMTM1Nzk2Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTY1MjhjIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48Y2lyY2xlIGN4PSIzOCIgY3k9IjM3Ljk3OSIgcj0iMy4yNzgiIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5Z19SWHJPTjVreU45NkFfZ3I3KSI+PC9jaXJjbGU+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXloX1JYck9ONWt5Tjk2QV9ncjgiIHgxPSIzMS4xODkiIHgyPSI0NS40MjYiIHkxPSIzMS4yMSIgeTI9IjQ1LjQ0NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzg4OTA5NyI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjMzMSIgc3RvcC1jb2xvcj0iIzg0OGM5NCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjY2OSIgc3RvcC1jb2xvcj0iIzc4ODI4YiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzY0NzE3YyI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZmlsbD0idXJsKCN3T1FvdXhlbnV+WEZSUVAxbEZGQXloX1JYck9ONWt5Tjk2QV9ncjgpIiBkPSJNNDcuNzE1LDM1LjY4OGMtMS4xOTMsMC4xNTEtMi40MTUtMC40MDctMy4wNTQtMS41MTRjLTAuNjM5LTEuMTA2LTAuNTEyLTIuNDQ0LDAuMjE2LTMuNDAxIGMtMS4xMjktMS4wNzItMi41MDUtMS44ODQtNC4wMzgtMi4zMzhjLTAuNDY0LDEuMTExLTEuNTYsMS44OTMtMi44MzksMS44OTNzLTIuMzc1LTAuNzgxLTIuODM5LTEuODkzIGMtMS41MzMsMC40NTMtMi45MDksMS4yNjYtNC4wMzgsMi4zMzhjMC43MjcsMC45NTcsMC44NTQsMi4yOTUsMC4yMTYsMy40MDFjLTAuNjM5LDEuMTA2LTEuODYxLDEuNjY1LTMuMDU0LDEuNTE0IEMyOC4xMDUsMzYuNDM4LDI4LDM3LjIxNiwyOCwzOC4wMjFjMCwwLjgwNSwwLjEwNSwxLjU4MywwLjI4NSwyLjMzMmMxLjE5My0wLjE1MSwyLjQxNSwwLjQwNywzLjA1NCwxLjUxNCBjMC42MzksMS4xMDYsMC41MTIsMi40NDQtMC4yMTYsMy40MDFjMS4xMjksMS4wNzIsMi41MDUsMS44ODQsNC4wMzgsMi4zMzhjMC40NjQtMS4xMTEsMS41Ni0xLjg5MywyLjgzOS0xLjg5MyBzMi4zNzUsMC43ODEsMi44MzksMS44OTNjMS41MzMtMC40NTMsMi45MDktMS4yNjYsNC4wMzgtMi4zMzhjLTAuNzI3LTAuOTU3LTAuODU0LTIuMjk1LTAuMjE2LTMuNDAxIGMwLjYzOS0xLjEwNiwxLjg2MS0xLjY2NSwzLjA1NC0xLjUxNEM0Ny44OTUsMzkuNjA0LDQ4LDM4LjgyNSw0OCwzOC4wMjFDNDgsMzcuMjE2LDQ3Ljg5NSwzNi40MzgsNDcuNzE1LDM1LjY4OHoiPjwvcGF0aD48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWlfUlhyT041a3lOOTZBX2dyOSIgeDE9IjQxLjQ4MyIgeDI9IjM0LjQ3IiB5MT0iNDEuNTA0IiB5Mj0iMzQuNDkxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZmIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuMjQyIiBzdG9wLWNvbG9yPSIjZjJmMmYyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjY2NjIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48Y2lyY2xlIGN4PSIzOCIgY3k9IjM4LjAyMSIgcj0iNSIgZmlsbD0idXJsKCN3T1FvdXhlbnV+WEZSUVAxbEZGQXlpX1JYck9ONWt5Tjk2QV9ncjkpIj48L2NpcmNsZT48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWpfUlhyT041a3lOOTZBX2dyMTAiIHgxPSIzNS4xOTMiIHgyPSI0MC4xMTciIHkxPSIzNS4yMTQiIHkyPSI0MC4xMzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwZDYxYTkiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4zNjMiIHN0b3AtY29sb3I9IiMwZTVmYTQiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii43OCIgc3RvcC1jb2xvcj0iIzEzNTc5NiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzE2NTI4YyI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGNpcmNsZSBjeD0iMzgiIGN5PSIzOC4wMjEiIHI9IjMiIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5al9SWHJPTjVreU45NkFfZ3IxMCkiPjwvY2lyY2xlPgo8L3N2Zz4=", + type: "Skill", + description: "Uncommonly, I'm one that quite likes databases and data structures. I've worked with MySQL, SQL Server, SQLite and MongoDB. Both as a hobby and for my degree.", + confidence: "Confident!", + confidenceLevel: "95%", + projects: [ + { + name: "Library Manager", + link: "/degree/library-manager" + }, + { + name: "Lunar Lander game written in SQL", + link: "/degree/lunarlandersql" + } + ] }, { name: "Rust", @@ -27,7 +61,13 @@ export const previewFiles = [ type: "Programming Language", description: "This is a language I've been learning as a hobby in my spare time. I hope to use it more in the future for more projects as I like using it.", confidence: "Confident but no expert", - confidenceLevel: "55%" + confidenceLevel: "55%", + projects: [ + { + name: "Raytracer", + link: "/personal/raytracer" + } + ] }, { name: "HTML/CSS/JS", @@ -35,7 +75,13 @@ export const previewFiles = [ type: "'Programming' Language(s)", description: "I've been making sites for years using these. Some for my degree, some for fun. Although, frontend web frameworks seem like a nightmare situation to me and I much prefer writing backend code.", confidence: "Somewhat Confident", - confidenceLevel: "80%" + confidenceLevel: "80%", + projects: [ + { + name: "Personal website (this site)", + link: "/personal/website" + } + ] }, { name: "Windows", @@ -61,14 +107,7 @@ export const previewFiles = [ confidence: "Confident!", confidenceLevel: "95%" }, - { - name: "Databases", - icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjBweCIgeT0iMHB4Igp3aWR0aD0iMjQwIiBoZWlnaHQ9IjI0MCIKdmlld0JveD0iMCAwIDQ4IDQ4Ij4KPGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXlhX1JYck9ONWt5Tjk2QV9ncjEiIHgxPSI5IiB4Mj0iMzkiIHkxPSIzNiIgeTI9IjM2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMTE0MDhhIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTAzZjhmIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI3dPUW91eGVudX5YRlJRUDFsRkZBeWFfUlhyT041a3lOOTZBX2dyMSkiIGQ9Ik0zOSwyOUg5YzAsMCwwLDguNjU3LDAsOWMwLDIuNzYxLDYuNzE2LDUsMTUsNXMxNS0yLjIzOSwxNS01QzM5LDM3LjY1NywzOSwyOSwzOSwyOXoiPjwvcGF0aD48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWJfUlhyT041a3lOOTZBX2dyMiIgeDE9IjkiIHgyPSIzOSIgeTE9IjI2LjUiIHkyPSIyNi41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMWQ1OWIzIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTk1YmJjIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI3dPUW91eGVudX5YRlJRUDFsRkZBeWJfUlhyT041a3lOOTZBX2dyMikiIGQ9Ik0zOSwxOUg5YzAsMCwwLDkuNjU3LDAsMTBjMCwyLjc2MSw2LjcxNiw1LDE1LDVzMTUtMi4yMzksMTUtNUMzOSwyOC42NTcsMzksMTksMzksMTl6Ij48L3BhdGg+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXljX1JYck9ONWt5Tjk2QV9ncjMiIHgxPSI5IiB4Mj0iMzkiIHkxPSIxNi43NSIgeTI9IjE2Ljc1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMzA3OWQ2Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjk3Y2QyIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI3dPUW91eGVudX5YRlJRUDFsRkZBeWNfUlhyT041a3lOOTZBX2dyMykiIGQ9Ik0zOSw5LjVIOWMwLDAsMCw5LjE1NywwLDkuNWMwLDIuNzYxLDYuNzE2LDUsMTUsNXMxNS0yLjIzOSwxNS01QzM5LDE4LjY1NywzOSw5LjUsMzksOS41eiI+PC9wYXRoPjxsaW5lYXJHcmFkaWVudCBpZD0id09Rb3V4ZW51flhGUlFQMWxGRkF5ZF9SWHJPTjVreU45NkFfZ3I0IiB4MT0iOSIgeDI9IjM5IiB5MT0iOS41IiB5Mj0iOS41IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNDJhM2YyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNDJhNGViIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48ZWxsaXBzZSBjeD0iMjQiIGN5PSI5LjUiIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5ZF9SWHJPTjVreU45NkFfZ3I0KSIgcng9IjE1IiByeT0iNC41Ij48L2VsbGlwc2U+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXllX1JYck9ONWt5Tjk2QV9ncjUiIHgxPSIzMS4xODkiIHgyPSI0NS40MjYiIHkxPSIzMS4xNjkiIHkyPSI0NS40MDYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM4ODkwOTciPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4zMzEiIHN0b3AtY29sb3I9IiM4NDhjOTQiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii42NjkiIHN0b3AtY29sb3I9IiM3ODgyOGIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM2NDcxN2MiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxwYXRoIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5ZV9SWHJPTjVreU45NkFfZ3I1KSIgZD0iTTQ3LjcxNSwzNS42NDdjLTEuMTkzLDAuMTUxLTIuNDE1LTAuNDA3LTMuMDU0LTEuNTE0Yy0wLjYzOS0xLjEwNi0wLjUxMi0yLjQ0NCwwLjIxNi0zLjQwMSBjLTEuMTI5LTEuMDcyLTIuNTA1LTEuODg0LTQuMDM4LTIuMzM4Yy0wLjQ2NCwxLjExMS0xLjU2LDEuODkzLTIuODM5LDEuODkzcy0yLjM3NS0wLjc4MS0yLjgzOS0xLjg5MyBjLTEuNTMzLDAuNDUzLTIuOTA5LDEuMjY2LTQuMDM4LDIuMzM4YzAuNzI3LDAuOTU3LDAuODU0LDIuMjk1LDAuMjE2LDMuNDAxYy0wLjYzOSwxLjEwNi0xLjg2MSwxLjY2NS0zLjA1NCwxLjUxNCBDMjguMTA1LDM2LjM5NiwyOCwzNy4xNzUsMjgsMzcuOTc5YzAsMC44MDUsMC4xMDUsMS41ODMsMC4yODUsMi4zMzJjMS4xOTMtMC4xNTEsMi40MTUsMC40MDcsMy4wNTQsMS41MTQgYzAuNjM5LDEuMTA2LDAuNTEyLDIuNDQ0LTAuMjE2LDMuNDAxYzEuMTI5LDEuMDcyLDIuNTA1LDEuODg0LDQuMDM4LDIuMzM4YzAuNDY0LTEuMTExLDEuNTYtMS44OTMsMi44MzktMS44OTMgczIuMzc1LDAuNzgxLDIuODM5LDEuODkzYzEuNTMzLTAuNDUzLDIuOTA5LTEuMjY2LDQuMDM4LTIuMzM4Yy0wLjcyNy0wLjk1Ny0wLjg1NC0yLjI5NS0wLjIxNi0zLjQwMSBjMC42MzktMS4xMDYsMS44NjEtMS42NjUsMy4wNTQtMS41MTRDNDcuODk1LDM5LjU2Miw0OCwzOC43ODQsNDgsMzcuOTc5QzQ4LDM3LjE3NSw0Ny44OTUsMzYuMzk2LDQ3LjcxNSwzNS42NDd6Ij48L3BhdGg+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXlmX1JYck9ONWt5Tjk2QV9ncjYiIHgxPSI0MS43NTEiIHgyPSIzNC4xOTgiIHkxPSI0MS43MzEiIHkyPSIzNC4xNzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmYiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4yNDIiIHN0b3AtY29sb3I9IiNmMmYyZjIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNjY2MiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxjaXJjbGUgY3g9IjM4IiBjeT0iMzcuOTc5IiByPSI1LjM4NSIgZmlsbD0idXJsKCN3T1FvdXhlbnV+WEZSUVAxbEZGQXlmX1JYck9ONWt5Tjk2QV9ncjYpIj48L2NpcmNsZT48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWdfUlhyT041a3lOOTZBX2dyNyIgeDE9IjM0LjkzMyIgeDI9IjQwLjMxMyIgeTE9IjM0LjkxMiIgeTI9IjQwLjI5MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzBkNjFhOSI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjM2MyIgc3RvcC1jb2xvcj0iIzBlNWZhNCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjc4IiBzdG9wLWNvbG9yPSIjMTM1Nzk2Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTY1MjhjIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48Y2lyY2xlIGN4PSIzOCIgY3k9IjM3Ljk3OSIgcj0iMy4yNzgiIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5Z19SWHJPTjVreU45NkFfZ3I3KSI+PC9jaXJjbGU+PGxpbmVhckdyYWRpZW50IGlkPSJ3T1FvdXhlbnV+WEZSUVAxbEZGQXloX1JYck9ONWt5Tjk2QV9ncjgiIHgxPSIzMS4xODkiIHgyPSI0NS40MjYiIHkxPSIzMS4yMSIgeTI9IjQ1LjQ0NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzg4OTA5NyI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjMzMSIgc3RvcC1jb2xvcj0iIzg0OGM5NCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjY2OSIgc3RvcC1jb2xvcj0iIzc4ODI4YiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzY0NzE3YyI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZmlsbD0idXJsKCN3T1FvdXhlbnV+WEZSUVAxbEZGQXloX1JYck9ONWt5Tjk2QV9ncjgpIiBkPSJNNDcuNzE1LDM1LjY4OGMtMS4xOTMsMC4xNTEtMi40MTUtMC40MDctMy4wNTQtMS41MTRjLTAuNjM5LTEuMTA2LTAuNTEyLTIuNDQ0LDAuMjE2LTMuNDAxIGMtMS4xMjktMS4wNzItMi41MDUtMS44ODQtNC4wMzgtMi4zMzhjLTAuNDY0LDEuMTExLTEuNTYsMS44OTMtMi44MzksMS44OTNzLTIuMzc1LTAuNzgxLTIuODM5LTEuODkzIGMtMS41MzMsMC40NTMtMi45MDksMS4yNjYtNC4wMzgsMi4zMzhjMC43MjcsMC45NTcsMC44NTQsMi4yOTUsMC4yMTYsMy40MDFjLTAuNjM5LDEuMTA2LTEuODYxLDEuNjY1LTMuMDU0LDEuNTE0IEMyOC4xMDUsMzYuNDM4LDI4LDM3LjIxNiwyOCwzOC4wMjFjMCwwLjgwNSwwLjEwNSwxLjU4MywwLjI4NSwyLjMzMmMxLjE5My0wLjE1MSwyLjQxNSwwLjQwNywzLjA1NCwxLjUxNCBjMC42MzksMS4xMDYsMC41MTIsMi40NDQtMC4yMTYsMy40MDFjMS4xMjksMS4wNzIsMi41MDUsMS44ODQsNC4wMzgsMi4zMzhjMC40NjQtMS4xMTEsMS41Ni0xLjg5MywyLjgzOS0xLjg5MyBzMi4zNzUsMC43ODEsMi44MzksMS44OTNjMS41MzMtMC40NTMsMi45MDktMS4yNjYsNC4wMzgtMi4zMzhjLTAuNzI3LTAuOTU3LTAuODU0LTIuMjk1LTAuMjE2LTMuNDAxIGMwLjYzOS0xLjEwNiwxLjg2MS0xLjY2NSwzLjA1NC0xLjUxNEM0Ny44OTUsMzkuNjA0LDQ4LDM4LjgyNSw0OCwzOC4wMjFDNDgsMzcuMjE2LDQ3Ljg5NSwzNi40MzgsNDcuNzE1LDM1LjY4OHoiPjwvcGF0aD48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWlfUlhyT041a3lOOTZBX2dyOSIgeDE9IjQxLjQ4MyIgeDI9IjM0LjQ3IiB5MT0iNDEuNTA0IiB5Mj0iMzQuNDkxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZmIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuMjQyIiBzdG9wLWNvbG9yPSIjZjJmMmYyIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjY2NjIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48Y2lyY2xlIGN4PSIzOCIgY3k9IjM4LjAyMSIgcj0iNSIgZmlsbD0idXJsKCN3T1FvdXhlbnV+WEZSUVAxbEZGQXlpX1JYck9ONWt5Tjk2QV9ncjkpIj48L2NpcmNsZT48bGluZWFyR3JhZGllbnQgaWQ9IndPUW91eGVudX5YRlJRUDFsRkZBeWpfUlhyT041a3lOOTZBX2dyMTAiIHgxPSIzNS4xOTMiIHgyPSI0MC4xMTciIHkxPSIzNS4yMTQiIHkyPSI0MC4xMzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwZDYxYTkiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4zNjMiIHN0b3AtY29sb3I9IiMwZTVmYTQiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii43OCIgc3RvcC1jb2xvcj0iIzEzNTc5NiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzE2NTI4YyI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGNpcmNsZSBjeD0iMzgiIGN5PSIzOC4wMjEiIHI9IjMiIGZpbGw9InVybCgjd09Rb3V4ZW51flhGUlFQMWxGRkF5al9SWHJPTjVreU45NkFfZ3IxMCkiPjwvY2lyY2xlPgo8L3N2Zz4=", - type: "Skill", - description: "Uncommonly, I'm one that quite likes databases and data structures. I've worked with MySQL, SQL Server, SQLite and MongoDB. Both as a hobby and for my degree.", - confidence: "Confident!", - confidenceLevel: "95%" - }, + { name: "XAML", icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjBweCIgeT0iMHB4Igp3aWR0aD0iMjQwIiBoZWlnaHQ9IjI0MCIKdmlld0JveD0iMCAwIDQ4IDQ4Ij4KPHBhdGggZmlsbD0iIzUwZTZmZiIgZD0iTTQwLDZIOEM2LjksNiw2LDYuOSw2LDh2MzJjMCwxLjEsMC45LDIsMiwyaDMyYzEuMSwwLDItMC45LDItMlY4QzQyLDYuOSw0MS4xLDYsNDAsNnoiPjwvcGF0aD48cGF0aCBmaWxsPSIjMGQ2MWE5IiBkPSJNMTAuMiwyNC40bDUuNSw1LjVjMC4yLDAuMiwwLjYsMC4yLDAuOCwwbDEuMi0xLjJjMC4yLTAuMiwwLjItMC42LDAtMC44bC01LjUtNS41Yy0wLjItMC4yLTAuNi0wLjItMC44LDAgbC0xLjIsMS4yQzkuOSwyMy44LDkuOSwyNC4yLDEwLjIsMjQuNHoiPjwvcGF0aD48cGF0aCBmaWxsPSIjMGQ2MWE5IiBkPSJNMTIuMiwyNS42bDUuNS01LjVjMC4yLTAuMiwwLjItMC42LDAtMC44TDE2LjUsMThjLTAuMi0wLjItMC42LTAuMi0wLjgsMGwtNS41LDUuNWMtMC4yLDAuMi0wLjIsMC42LDAsMC44IGwxLjIsMS4yQzExLjYsMjUuOCwxMS45LDI1LjgsMTIuMiwyNS42eiI+PC9wYXRoPjxwYXRoIGZpbGw9IiMwZDYxYTkiIGQ9Ik0zNy44LDI0LjRMMzIuMywzMGMtMC4yLDAuMi0wLjYsMC4yLTAuOCwwbC0xLjItMS4yYy0wLjItMC4yLTAuMi0wLjYsMC0wLjhsNS41LTUuNWMwLjItMC4yLDAuNi0wLjIsMC44LDAgbDEuMiwxLjJDMzguMSwyMy44LDM4LjEsMjQuMiwzNy44LDI0LjR6Ij48L3BhdGg+PHBhdGggZmlsbD0iIzBkNjFhOSIgZD0iTTM1LjgsMjUuNkwzMC4zLDIwYy0wLjItMC4yLTAuMi0wLjYsMC0wLjhsMS4yLTEuMmMwLjItMC4yLDAuNi0wLjIsMC44LDBsNS41LDUuNWMwLjIsMC4yLDAuMiwwLjYsMCwwLjggbC0xLjIsMS4yQzM2LjQsMjUuOCwzNi4xLDI1LjgsMzUuOCwyNS42eiI+PC9wYXRoPjxwYXRoIGZpbGw9IiMwZDYxYTkiIGQ9Ik0yNy4yLDE0LjFoLTIuMWMtMC4zLDAtMC41LDAuMi0wLjYsMC40bC00LjEsMTguOWMtMC4xLDAuMywwLjIsMC41LDAuNCwwLjVoMi4xYzAuMywwLDAuNS0wLjIsMC42LTAuNCBsNC4xLTE4LjlDMjcuNiwxNC4zLDI3LjQsMTQuMSwyNy4yLDE0LjF6Ij48L3BhdGg+Cjwvc3ZnPg==", diff --git a/src/data/links.ts b/src/data/links.ts index a9782bc..57624ce 100644 --- a/src/data/links.ts +++ b/src/data/links.ts @@ -1,4 +1,4 @@ -import type { DocsPage } from "$data/docs"; +import type { DocsPage } from "$data/projects"; export const links = { github: { diff --git a/src/data/projects.ts b/src/data/projects.ts new file mode 100644 index 0000000..366717a --- /dev/null +++ b/src/data/projects.ts @@ -0,0 +1,45 @@ +export type DocsNode = { + name: string, + icon?: string, +} + +export type DocsPage = DocsNode & { path: string } + +export type DocsCategory = DocsNode & { pages: DocsPage[] } + +export const projects: (DocsPage | DocsCategory)[] = [ + { + name: "Overview", + path: "" + }, + { + name: "Personal", + pages: [ + { + name: "Raytracer", + path: "/personal/raytracer" + }, + { + name: "Personal website (this site)", + path: "/personal/website" + } + ] + }, + { + name: "Degree-related", + pages: [ + { + name: "Library Manager", + path: "/degree/library-manager" + }, + { + name: "Python QT Data Analysis Tool", + path: "/degree/pythonqtdataanalysis" + }, + { + name: "Lunar Lander game written in SQL", + path: "/degree/lunarlandersql" + } + ] + } +]; diff --git a/src/layout/FeaturesSection/FeaturesSection.svelte b/src/layout/FeaturesSection/FeaturesSection.svelte index c749c4e..3b0e15e 100644 --- a/src/layout/FeaturesSection/FeaturesSection.svelte +++ b/src/layout/FeaturesSection/FeaturesSection.svelte @@ -31,7 +31,7 @@
Skills -

My experience and confidence

+

My experience and interests

I like using a wide-range of technologies and tools to solve problems. Here's a sample of the ones I like the most and have the most experience with. diff --git a/src/layout/FeaturesSection/preview/PreviewShowcase.scss b/src/layout/FeaturesSection/preview/PreviewShowcase.scss index 2fb1c19..273a4df 100644 --- a/src/layout/FeaturesSection/preview/PreviewShowcase.scss +++ b/src/layout/FeaturesSection/preview/PreviewShowcase.scss @@ -134,7 +134,14 @@ background-image: linear-gradient(#f0a3a3, #f42323); } } - + div.listcontainer { + text-align: center; + ul { + display: inline-block; + text-align: left; + } + } + // Metadata elements h4, h5, diff --git a/src/layout/FeaturesSection/preview/PreviewShowcase.svelte b/src/layout/FeaturesSection/preview/PreviewShowcase.svelte index 5bf8b3a..3ae7fb6 100644 --- a/src/layout/FeaturesSection/preview/PreviewShowcase.svelte +++ b/src/layout/FeaturesSection/preview/PreviewShowcase.svelte @@ -1,6 +1,8 @@ @@ -48,6 +50,22 @@

{file.confidence}
+ {#if file?.projects !== undefined} +
+
+

Projects

+
+ +
+ {/if}

{file.description} diff --git a/src/layout/HeroSection/HeroSection.svelte b/src/layout/HeroSection/HeroSection.svelte index c4b06d5..afa926a 100644 --- a/src/layout/HeroSection/HeroSection.svelte +++ b/src/layout/HeroSection/HeroSection.svelte @@ -4,8 +4,8 @@ import { links } from "$data/links"; import { onMount } from "svelte"; import ArrowDownload from "@fluentui/svg-icons/icons/arrow_download_24_regular.svg?raw"; - import ChevronDown from "@fluentui/svg-icons/icons/chevron_down_24_regular.svg?raw"; import Code from "@fluentui/svg-icons/icons/code_24_regular.svg?raw"; + import AppGeneric from "@fluentui/svg-icons/icons/app_generic_24_regular.svg?raw"; @@ -27,7 +27,16 @@
--> + - - - {#if posts.slice(1).length > 0} -
- {#each posts.slice(1) as post} - - {/each} -
- {:else} -

More posts coming soon!

- {/if} - - - diff --git a/src/routes/blog/posts/+layout.svelte b/src/routes/blog/posts/+layout.svelte deleted file mode 100644 index 7300233..0000000 --- a/src/routes/blog/posts/+layout.svelte +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - -
-
-
- - {@html ArrowLeft} - -

{title}

-
- - {#if thumbnail} - Thumbnail - {/if} -
- -
-
-
- - diff --git a/src/routes/blog/posts/+layout.ts b/src/routes/blog/posts/+layout.ts deleted file mode 100644 index b2316ed..0000000 --- a/src/routes/blog/posts/+layout.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { LayoutLoad } from "./$types"; -import { error } from "@sveltejs/kit"; -import type { Post } from "../+page.server"; - -export const load: LayoutLoad = async ({ url }) => { - const slug = url.pathname.replace("/blog/posts/", "") ?? null; - - try { - return ((await import(`./${slug}/+page.md`)) as Post).metadata; - } catch { - throw error(404, "No such blog post was found!"); - } -}; diff --git a/src/routes/blog/posts/announcing-files-v2/+page.md b/src/routes/blog/posts/announcing-files-v2/+page.md deleted file mode 100644 index 6603275..0000000 --- a/src/routes/blog/posts/announcing-files-v2/+page.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Announcing General Availability of Files v2 -description: Today, we're excited to announce that we are releasing Files v2 as a free update to all our users. Our core mission with Files is to create a modern file manager that pushes the boundaries of the platform, and with v2, we've taken that to a whole new level. -thumbnail: /blog-resources/filesv2/FilesV2Banner.jpg -date: 2021-10-04 -author: yaichenbaum ---- - -Today, we're excited to announce that we are releasing Files v2 as -a [free update]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2'}) -to all our users. Our core mission with Files is to create a modern file manager that pushes the boundaries of the -platform, and with v2, we've taken that to a whole new level. We're excited to share with everyone what we've been -working on for the last seven months! - -We redesigned the layout of the app, taking advantage of the latest improvements to Windows and WinUI. We added new -features that provide users more flexibility in managing their files, and we made improvements to the stability and -accessibility to allow users to be more productive than ever before. - -Files v2 was made possible through the contributions of the open-source community on GitHub. Over the last year, the -number of contributors has more than doubled and we're incredibly thankful for all their help. There were a couple of -contributors who really went all out and spent a lot of time putting together the update. - -- Winston de Jong @winston-de -- Marco Gavelli @gave92 -- Martin Anderson @mdtauk -- Michael West @itsmichaelwest - -## New Features - -The new features in v2 were designed based off user feedback from more than 4,000 beta users. The full changelog for v2 -is quite lengthy and can be found on our GitHub repo but we wanted to highlight a couple of the bigger changes. - -A new **column view** allow multiple levels of the hierarchy to be open at once, and provides a visual representation of -the current directory. - -
- A screenshot of column view in Files v2. -
The new column view in action.
-
- -**Tags** allow users to organize files and folders in a way that is useful without being limited by the organization of -the file system. - -
- A screenshot of the new context menu in Files v2. In addition to a refined design, the new menu allows users to quickly assign tags to files and folders. -
The redesigned context menu in Files v2 allows users to quickly assign tags to files and folders.
-
- -[**Custom themes**](https://www.microsoft.com/store/productId/9N20KQ61LSFQ) provide a way for users to personalize the -look and feel of the app. - -
- A screenshot of the settings dialog in Files v2, showing custom theme options. -
Custom themes can be selected from the Settings dialog.
-
- -### Other highlights: - -- Compact Overlay is a great way to overlay Files on top of other windows so that users can quickly look for a file - without losing focus on their main task. -- FTP support enables users to quickly access files on your web server. -- Security options lets users control who can access files on their system. -- Grouping allows users to group files by type, size, and date. - -In addition to the most noteworthy features, we improved existing features like the context menu, preview pane, details -layout, search experience, settings dialog, folder enumeration speed, file transfer operations and so much more! - -## Feedback - -Files thrives off community feedback because it helps shape the features we work on and makes the app better for -everyone. We invite you to submit your feedback through our GitHub repository. - -– Yair - -Download from -the [Microsoft Store]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2'}) -|| See Files on [GitHub](https://github.com/files-community/Files) diff --git a/src/routes/blog/posts/how-to-use-background-image/+page.md b/src/routes/blog/posts/how-to-use-background-image/+page.md deleted file mode 100644 index 161c0b8..0000000 --- a/src/routes/blog/posts/how-to-use-background-image/+page.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: How to use a custom background in Files -description: There are a number of ways to personalize Files, today we're going to look at using a custom background. -thumbnail: /blog-resources/setting-custom-background/HeroImage.jpg -date: 2022-2-3 -author: yaichenbaum ---- - -There are a number of ways to personalize Files, today we're going to look at using a custom background. -1. The first step is to navigate to the themes folder. The easiest way to locate this folder is by opening the settings dialog in Files, clicking the information icon by the custom themes section and clicking on the "Open themes folder" button. -2. Create a new file with the `xaml` extension and place this template in the file. - -```xml - - - - - - - - - - -``` - -3. Copy the background image or gif to the themes directory and set the `ImageSource` value to the files path. -4. You're good to go! diff --git a/src/routes/blog/posts/introducing-files-v2-0-33/+page.md b/src/routes/blog/posts/introducing-files-v2-0-33/+page.md deleted file mode 100644 index 1a76db6..0000000 --- a/src/routes/blog/posts/introducing-files-v2-0-33/+page.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Introducing Files v2.0.33 -description: Today, we're pleased to announce that Files v2.0.33 is now available for users on Windows 10 and Windows 11. -thumbnail: /blog-resources/filesv2/FilesV2Banner.jpg -date: 2021-11-04 -author: yaichenbaum ---- - -Today, we're pleased to announce -that [Files v2.0.33]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2-0-33'}) -is now available for users on Windows 10 and Windows 11. We've been listing to your feedback, and it's clear that you -expect better performance out of Files. There is still a lot of work to be done, but we're excited to share that we made -several improvements to the performance when loading directories, and we hope these changes make a positive impact in -the user experience. - -## New Features - -- Added Ctrl + Shift + C shortcut to copy file path -- Added an option to set Files as the default file manage -- Show file operation progress on taskbar & continue operations when minimized -- Added individual options for amount of clicks to open files and folders -- Added group by path option for libraries -- Respect default app for zip files -- Use proper tab name on the home page -- Added caching to load thumbnails faster -- Added options to import/export settings -- Improved reliability of the search experience -- Added support for choosing custom icons - -## Bug Fixes - -- Fixed a crash that would occur when going up from a network root path -- Fixed an issue where the edit tags & edit terminals buttons weren't working -- Fixed an issue where the OneDrive sync status wasn't updating -- Fixed issue where preview pane would be shown unexpectedly when quickly selecting then unselecting a file -- Fixed drag and drop from 7zip -- Fixed keyboard shortcuts not working in the column layout -- Fixed an issue where the context menu had the wrong height -- Switch quicklook preview on selection change -- Fixed an issue where env variables didn't refresh when launching terminal - -## Feedback - -Files thrives off community feedback because it helps shape the features we work on and makes the app better for -everyone. We invite you to submit your feedback through our GitHub repository. - -– Yair - -Download from -the [Microsoft Store]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2-0-33'}) -|| See Files on [GitHub](https://github.com/files-community/Files) diff --git a/src/routes/blog/posts/introducing-files-v2-1/+page.md b/src/routes/blog/posts/introducing-files-v2-1/+page.md deleted file mode 100644 index 8cd4c58..0000000 --- a/src/routes/blog/posts/introducing-files-v2-1/+page.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Introducing Files v2.1 -description: Today, we're pleased to announce that Files v2.1 is now available. We focused on improving the performance and behavior of existing features in this update to make it even easier for you to use the app. -thumbnail: /blog-resources/filesv2-1/HeroImage.jpg -date: 2022-1-11 -author: yaichenbaum ---- - -Today, we're pleased to announce -that [Files v2.1]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2-1'}) -is now available. We focused on improving the performance and behavior of existing features in this update to make it -even easier for you to use the app. - -## Setting Files as the default file manager - -We recently added an experimental option to set Files as the default file manager. This option is still experimental but -we improved the reliability based on your feedback and it's stable enough for regular use. If you're already using this -option, we recommend turning it off and back on again in order to take advantage of the latest improvements. - -## What's Changed - -- Redesigned the settings dialog -- Redesigned the properties window - -
- A screenshot of the redesigned properties window in Files v2.1. -
The redesigned properties window
-
- -- Added a hotkey for playing audio and video in the preview pane -- Added a toolbar button to empty recycle bin -- Set window title to be the same as the selected tab name -- Added compatibility options to the properties dialog -- Added Native ARM64 Support -- Improved keyboard navigation in the column layout -- Improved keyboard navigation in the details layout -- Added support for symbolic file links -- Added keyboard shortcut (Ctrl+H) to show/hide hidden files -- Removed delay when loading sidebar items and other services on startup -- Show network shortcuts on the sidebar -- Added clear all button to ongoing tasks flyout -- Mousewheel click opens a new tab at selected path -- Added experimental option to show folder sizes -- Added support for collapsing widgets on the homepage -- Added subtle listview animation -- Added option to open Files on Windows Startup -- Added support for Next Cloud -- Added support for Yandex.Disk -- Open recycle bin & this pc shortcuts in Files when it’s set as the default file manager - -## Bug Fixes - -- Fixed properties window not closing when clicking the OK button -- Fixed a crash that would occur when dropping a shortcut over an executable -- Fixed an issue with copying shortcuts -- Fixed an issue where the option to reset the default file explorer would sometimes fail -- Fixed an issue where changing the sort option would create a hidden file -- Fixed an issue where grouping by date might include files from previous week -- Fixed an issue where restoring items from recycle bin would remove the file extension -- Fixed an issue causing the file tags list to be serialized incorrectly -- Fixed an issue where the file extension would sometimes be removed when renaming an item - -## Feedback - -Files thrives off community feedback because it helps shape the features we work on and makes the app better for -everyone. We invite you to submit your feedback through our GitHub repository. - -– Yair - -Download from -the [Microsoft Store]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2-1'}) -|| See Files on [GitHub](https://github.com/files-community/Files) diff --git a/src/routes/blog/posts/introducing-files-v2-3/+page.md b/src/routes/blog/posts/introducing-files-v2-3/+page.md deleted file mode 100644 index dba076e..0000000 --- a/src/routes/blog/posts/introducing-files-v2-3/+page.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Introducing the next major release of Files - v2.3 -description: We're excited to not only introduce the next major release of Files, but also a series of future changes to sustain contributor momentum into 2023. -thumbnail: /blog-resources/filesv2-3/HeroImage.jpg -date: 2022-7-5 -author: files-community ---- - -The astounding growth of the project over the last three years serves to motivate our journey to build the best file manager, alongside the community. More than ever, Files plays an important role in demonstrating how impactful the latest user experience improvements in WinUI can be. A notable experience we can reflect on was fixing an issue with screen reader accessibility reported by a blind user. More recently, we were delighted to hear from a seventy-seven-year-old "non-geek" who was impressed that we made file discovery "much easier" compared to the first party solution. Both of these stories highlight the inadvertent achievements that come from engaging the broader community. - -Today we're excited to not only introduce the next major release of [Files]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2-3'}), but also a series of future changes to sustain contributor momentum into 2023. - -## Files v2.3 - -As part of our mission to create a stable and fully-featured file manager, we added a compact spacing feature, bulk actions experience in the conflicts dialog, and a double click gesture to navigate up one directory. Additionally, we focused on improving the behavior of existing features with the understanding that they're most useful when they perform as expected. - -**Compact sizing** allows users to view more items on the screen -
- A screenshot of the new compact spacing option in Files v2.3. -
- -The **tab control** was redesigned to connect with the tab content. -
- A screenshot of the new tab design in Files v2.3. -
- -We added an option to display **tags** on the sidebar -
- A screenshot of the new tags section on the sidebar in Files v2.3. -
- -Added support for applying bulk actions in the **conflicts dialog** -
- A screenshot of the redesigned conflicts dialog in Files v2.3. -
- -## Other changes -- Improved the reliability and speed of drag and drop -- Added a pull to refresh gesture -- Removed the minimize and maximize buttons from the properties window -- Added an animation when clicking on the setting and search buttons -- Added an option to always show icons instead of thumbnails -- Improved the spacing in the pathbar -- Added a chevron to the pathbar to better indicate that there is a flyout menu -- Reduced the spacing between widgets on the home page -- Double clicking the grid splitter will now reset panes in the dual pane layout to the default width -- More file types are now displayed in the "new" item context menu -- Double clicking in a blank space will now go up one directory in the file tree -- Adding a tag to a file no longer changes the date modified property -- Added a shortcut to open folders in the default terminal `ctrl` + `shift` + `'` -- Added a shortcut to play and pause media in the preview pane `ctrl` + `space` -- Reduced the height of items in the sidebar to allow more items to be displayed at once -- Invalid favorites and network shares are no longer removed the sidebar -- Added a context menu to hide sections when right clicking on the sidebar -- Added support for renaming items in the conflicts dialog -- Network shares will automatically refresh when their content changes -- Auto select first item in user list for permissions -- Auto select the primary button in the empty recycle bin dialog -- Deleting an item will automatically move the focus to the next item in the list -- Resizing the window no longer changes the width of columns in the details layout -- Added examples to the date format setting -- Improved behavior when trying to name an item with invalid characters -- Added a notification when copying or moving an item fails -- Added the archive name to the extract archive dialog -- Added support for adding tags to items in the search results page -- Show which process is locking a file - -## Bug fixes -- Fixed an issue where the address toolbar height would sometimes change when clicking on the search box -- Fixed an issue that would cause the app window to close when dragging a tab to a new window -- Fixed a crash that would sometimes occur when deleting files -- Fixed an issue where expanding the sidebar sections would sometimes require two clicks -- Fixed an issue where the sidebar state would sometimes get reset -- Fixed an issue where duplicate drives were sometimes added to the sidebar -- Fixed a crash that would sometimes occur when the favorites section was hidden -- Fixed an issue where the UI didn't display correctly in compact overlay mode -- Fixed an issue where the close pane button had the wrong icon -- Fixed an issue where the disconnect drive option had the wrong icon -- Fixed a crash that would sometimes occur when "show folder sizes" was enabled -- Fixed an issue where the properties window sometimes used the wrong theme -- Fixed a crash that would sometimes occur when previewing XML files -- Fixed an issue that would sometimes prevent drag and drop from working -- Fixed an issue where the clear all properties option didn't have any text -- Fixed an issue where the import settings option didn't import all the settings -- Fixed an issue where rotating an image multiple times would sometimes crash the app -- Fixed an issue where the app would sometimes hang on startup -- Fixed an issue where Box cloud drives didn't properly display files -- Fixed an issue where the `ctrl` + `l` and `alt` + `d` shortcuts didn't set the focus to the address bar on the home page -- Fixed an issue where pasting text in the search box would paste the clipboard content into the current directory -- Fixed an issue where the overflow options weren't shown when right clicking on search results -- Fixed an issue that prevented adding items into archives -- Fixed an issue where extra toolbar buttons were visible in recycle bin -- Fixed an issue where the tags section was sometimes visible in the context menu even after turning off the experimental setting -- Fixed an issue where switching the app theme would make the group headers unreadable until restarting the app -- Fixed an issue where the option to show dot files didn't work in WSL and network folders -- Fixed an issue where the confirm delete dialog didn't display when dragging an item to recycle bin - -The full list of improvements and bug fixes can be found [here](https://github.com/files-community/Files/releases) - -## The next generation of Files - -This milestone marks the beginning of a reinvigorated effort to modernize and improve the architecture of the Files codebase. A well-architected, testable codebase will not only attract new contributors, but enables us to offer platform specific benefits in the long run. Furthermore, we will be able to iterate faster, accelerating our transition to the Windows App SDK. Switching will remove longstanding limitations in the present app model and will enable us to deliver improvements in net performance and reliability. - -We hope to share more about this effort in the coming months. - -We view these steps as critical to continuing the great work on Files. The best way for you to support current and future efforts is to [sponsor](https://github.com/sponsors/yaichenbaum) us on GitHub. - -### Giving back to the community - -The Files contributors are pleased to announce that the main application repository has been relicensed under the MIT license. This means that other projects can now take advantage of our innovation even if they happen to be closed source. - -## Feedback - -Files thrives off community feedback because it helps shape the features worked on and makes the app better for -everyone. We invite you to submit your feedback through our GitHub repository. - - -Download from -the [Microsoft Store]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=AnnouncingV2-3'}) -|| See Files on [GitHub](https://github.com/files-community/Files) - - diff --git a/src/routes/docs/+layout.svelte b/src/routes/docs/+layout.svelte deleted file mode 100644 index 841a22f..0000000 --- a/src/routes/docs/+layout.svelte +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - -
- -
-
-
(autoSuggestVisible = false)} - > - (searchFocused = true)} - on:input={updateSearchQuery} - on:keydown={handleSearchKeys} - on:search={() => { - if ( - searchResults.length > 0 && - $page.url.pathname !== `/docs${searchResults[selection].path}` - ) - goto(`/docs${searchResults[selection].path}`, { - keepfocus: true - }); - }} - placeholder="Search Documentation" - type="search" - /> - {#if autoSuggestVisible} -
- {#if searchResults.length > 0} - {#each searchResults as { name, path }, i} - - {name} - - {/each} - {:else} - No results found - {/if} -
- {/if} -
-
- {#key pagePath} -
-
- - {$page.url.pathname.split("/").join(" / ").substring(2)} - {$page.url.pathname === "/docs" ? " / overview" : ""} - -
- -
-
- -
- {/key} -
-
- - diff --git a/src/routes/docs/+layout.ts b/src/routes/docs/+layout.ts deleted file mode 100644 index d9e940a..0000000 --- a/src/routes/docs/+layout.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { docs, type DocsCategory, type DocsPage } from "$data/docs"; -import type { LayoutLoad } from "./$types"; - -function* flatten(array: T[], depth = Infinity): Generator { - for (const item of array) { - if (Array.isArray(item) && depth > 0) { - yield* flatten(item, depth - 1); - } else { - yield item; - } - } -} - -export const findPages = (docsStructure: (DocsPage | DocsCategory)[]) => { - return [...flatten(docsStructure)].filter( - (page): page is DocsPage => Object.prototype.hasOwnProperty.call(page, "path") - ); -}; - -export const load: LayoutLoad = ({ url }) => { - const docsPages = findPages(docs); - - return { - pagePath: url.pathname, - currentPage: docsPages.find(p => `/docs${ p.path }` === url.pathname), - docsPages - }; -}; diff --git a/src/routes/docs/+page.md b/src/routes/docs/+page.md deleted file mode 100644 index af52326..0000000 --- a/src/routes/docs/+page.md +++ /dev/null @@ -1,9 +0,0 @@ -# What is Files? - -Files is a file manager for Windows with a powerful yet intuitive design. It has features like multiple tabs, panes, columns, shell extensions in the context menu and tags. - -# Download Files - -- [Download Files](/download/stable) -- [Download Preview](/download/preview) -- [Microsoft Store]({'https://www.microsoft.com/store/apps/9nghp3dx8hdx?cid=FilesWebsite'}) diff --git a/src/routes/docs/configuring/custom-themes/+page.md b/src/routes/docs/configuring/custom-themes/+page.md deleted file mode 100644 index e88425a..0000000 --- a/src/routes/docs/configuring/custom-themes/+page.md +++ /dev/null @@ -1,41 +0,0 @@ -# Custom Themes - -Files has a selection of built-in themes but you can also create your own theme by adding a resource file to the themes directory in the `LocalState` folder. - -## How to create a custom theme - -1. Navigate to the themes directory, you can open find this folder by clicking the information icon in the appearance page. Create a new file with the `xaml` extension, this file will contain the resources for your custom theme. -2. Open the file in the text editor of your choice. -3. Copy and paste the template below - -Default template -```xml - - - - - - - - -``` - -## Available resources - -The themeing system in Files allows you to override any resource that's included in the WinUI library but most themes including the built-in themes only override a couple of brushes. - -| Key | Example | Default value | -| --------- | ----------- | ---------- | -| `ContentControlThemeFontFamily` | `Comic Sans` | `Segoe UI Variable` | -| `RootBackgroundBrush` | `` | `Transparent` | -| `SolidBackgroundFillColorBase` | `#A26829` | | -| `SolidBackgroundFillColorSecondary` | `#845a2b` | | -| `SolidBackgroundFillColorTertiary` | `#A26829` | | -| `SolidBackgroundFillColorQuarternary` | `#A26829` | | -| `SolidBackgroundAcrylic` | `#A26829` | Light theme: `#FFFFFF` Dark theme: `#2C2C2C` | -| `NavigationToolbarBackgroundBrush` | `` | `#00000000` | -| `TitlebarContentBackgroundBrush` | `` | `Transparent` | diff --git a/src/routes/docs/configuring/date-formats/+page.md b/src/routes/docs/configuring/date-formats/+page.md deleted file mode 100644 index c2e10a9..0000000 --- a/src/routes/docs/configuring/date-formats/+page.md +++ /dev/null @@ -1,15 +0,0 @@ -# Date Formats - -Files comes with three different options to let you customize the date format. - -**Application** - -The default date format uses the following format _Wednesday, June 3, 2020_. - -**System** - -System is a little more compact and uses this format _6/3/2020_. - -**Universal** - -Universal uses the defacto official international format _2020-06-03_. diff --git a/src/routes/docs/configuring/keyboard-shortcuts/+page.md b/src/routes/docs/configuring/keyboard-shortcuts/+page.md deleted file mode 100644 index a61321d..0000000 --- a/src/routes/docs/configuring/keyboard-shortcuts/+page.md +++ /dev/null @@ -1,39 +0,0 @@ -# Keyboard Shortcuts - -Files comes with built in keyboard shortcuts to make navigating the app easier. - -| Shortcut | Action | -| --------------------------------------------------- | ------------------------------------- | -| Ctrl + C | Copy | -| Ctrl + X | Cut | -| Ctrl + V | Paste | -| Ctrl + A | Select all | -| Ctrl + Z | Undo operation | -| Ctrl + Y | Redo operation | -| Ctrl + T | Create new tab | -| Ctrl + W | Close tab | -| Ctrl + F4 | Close tab | -| Ctrl + Shift + T | Reopen recently closed tab | -| Ctrl + Tab | Switch next tab | -| Ctrl + Shift + Tab | Switch previous tab | -| Ctrl + Shift + K | Duplicate tab | -| Ctrl + N | New window | -| Ctrl + Shift + N | New file | -| Ctrl + Alt + Up | Open compact overlay | -| Ctrl + Alt + Down | Close compact overlay | -| Ctrl + Alt + S | Collapse/Expand sidebar | -| Ctrl + + | Increase icon size | -| Ctrl + - | Decrease icon size | -| Ctrl + D | Delete | -| Ctrl + F | Search | -| Ctrl + L | Select directory path | -| Ctrl + Shift + C | Copy file/directory path | -| Ctrl + P | Toggle preview pane | -| Ctrl + Alt + P | Toggle media playback in preview pane | -| F1 | Open files docs | -| F2 | Rename file/directory | -| F3 | Search | -| F5 / Ctrl + R | Refresh directory | -| F7 | Turn on caret browsing | -| F11 | Toggle fullscreen | -| F12 | Toggle compact overlay | diff --git a/src/routes/docs/configuring/replace-file-explorer/+page.md b/src/routes/docs/configuring/replace-file-explorer/+page.md deleted file mode 100644 index e6e2e00..0000000 --- a/src/routes/docs/configuring/replace-file-explorer/+page.md +++ /dev/null @@ -1,10 +0,0 @@ -# Replacing File Explorer with Files (Experimental) - -*This setting modifies the system registry, make sure to create a backup beforehand and proceed at your own risk.* - -**Settings Files as the default file manager** - -1. Open the settings dialog in Files -2. Navigate to the experimental section and toggle the switch to set Files as the default file manager - -![Settings dialog](/docs-resources/Settings-Dialog-Experimental.jpg) diff --git a/src/routes/docs/configuring/terminal-profiles/+page.md b/src/routes/docs/configuring/terminal-profiles/+page.md deleted file mode 100644 index fa35ce0..0000000 --- a/src/routes/docs/configuring/terminal-profiles/+page.md +++ /dev/null @@ -1,65 +0,0 @@ -# Terminal Profiles - -Files supports multiple options for configuring terminal profiles. Aside from setting the default terminal that you can -launch from the "Open in terminal" option, you can also adjust the launch arguments. You can also launch any terminal -profile by typing the name or path in the navigation bar. - -_Profiles will only function, if the corresponding terminals are installed. Starting in v0.9.2, Files will automatically -detect if Windows Terminal and Fluent Terminal are installed._ - -## Sample profiles - -Cmd: - -```json -{ - "name": "CMD", - "path": "cmd.exe", - "arguments": "/k \"cd /d {0} && title Command Prompt\"", - "icon": "" -} -``` - -PowerShell - -```json -{ - "name": "PowerShell", - "path": "powershell.exe", - "arguments": "-noexit -command \"cd '{0}'\"", - "icon": "" -} -``` - -PowerShell Core: - -```json -{ - "name": "PowerShell Core", - "path": "pwsh.exe", - "arguments": "-WorkingDirectory \"{0}\"", - "icon": "" -} -``` - -Windows Terminal: - -```json -{ - "name": "Windows Terminal", - "path": "wt.exe", - "arguments": "-d \"{0}\"", - "icon": "" -} -``` - -Fluent Terminal: - -```json -{ - "name": "Fluent Terminal", - "path": "flute.exe", - "arguments": "new \"{0}\"", - "icon": "" -} -``` \ No newline at end of file diff --git a/src/routes/docs/configuring/troubleshooting-installation/+page.md b/src/routes/docs/configuring/troubleshooting-installation/+page.md deleted file mode 100644 index ebad971..0000000 --- a/src/routes/docs/configuring/troubleshooting-installation/+page.md +++ /dev/null @@ -1,10 +0,0 @@ -# Troubleshooting installation issues - -### App installation failed with error message: error 0xC00CEE23: The XML in the .appinstaller file is not valid: Line 33, Column 5, Reason: '>' expected. (Oxc00cee23) -This issue is usually resolved by restarting Windows before opening the installer again. - -### An error occurred while accessing the file from the web. Please try downloading and opening the file locally. -No currently known solution for this issue - -### Windows can't open this type of file (.appinstaller) -This can be resolved by running the Store reset command `wsreset -i` in PowerShell or Command Prompt diff --git a/src/routes/docs/contributing/building-from-source/+page.md b/src/routes/docs/contributing/building-from-source/+page.md deleted file mode 100644 index 798c9ee..0000000 --- a/src/routes/docs/contributing/building-from-source/+page.md +++ /dev/null @@ -1,25 +0,0 @@ -# Building Files from source - -### 1: Prerequisites - -- [Git](https://git-scm.com) -- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) with the UWP Development Kit, including C++ UWP build tools. -- C++ ATL for UWP build tools - -### 2: Clone the repository. - -```ps -git clone https://github.com/files-community/Files -``` - -This will create a local copy of the repository. - -### 3: Build the project - -To build the app in development mode, open the sln file in Visual Studio (Files.sln) and set the Files.Package project as the startup item by right-clicking on `Files.Package` in the solution explorer & hitting ‘Set as Startup item’. - -In the architecture pane, select the correct architecture for your system as `Debug` which should look like this: - -![VS Run config: Debug, x64, Files.Package, Local Machine](/docs-resources/vs-architecture-config.png) - -You're good to go! diff --git a/src/routes/docs/contributing/code-style/+page.md b/src/routes/docs/contributing/code-style/+page.md deleted file mode 100644 index 54b6f36..0000000 --- a/src/routes/docs/contributing/code-style/+page.md +++ /dev/null @@ -1,112 +0,0 @@ -# Code quality standards - -All code contributed to the repository must follow -our [Model-View-ViewModel](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel) design path. The code -must be well-written and expose a clear purpose. Workarounds are not welcome unless the scope of the PR touches external -components -(OS functions/API calls) that require unconventional practices of coding. Your code must be easily maintainable without -requiring to rewrite core parts, making sure no code is being duplicated, utilizing abstractions and inheritance is a -great way to sustain high code metrics. Your code must also be tested for potential regressions and unwanted memory -leaks. - -We also prioritize accessibility, to check whether your pull request meets our accessibility standards, you're -encouraged to use [Accessibility Insights for Windows](https://accessibilityinsights.io/docs/en/windows/overview/) -to ensure everyone can take full advantage of Files. - -## Code Style - -To make the codebase consistent and easy to understand, we require you to follow our predefined code style rules: - -### 1. Naming notation for objects and functions - -- Use PascalCase for classes -- Use PascalCase prefixed with `I` for interfaces -- Use PascalCase for structs -- Use PascalCase for functions/methods -- Use "Base" prefix for base classes -- Use "Service" suffix for service classes and interfaces -- Use "Model" suffix for model classes -- Use "ViewModel" suffix for view model classes -- Use "Dialog" suffix for dialog controls -- Use "Control" suffix for user controls -- Use "Page" suffix for pages - -### 2. Naming notation for variables - -- Use PascalCase for properties and static fields/properties -- Use PascalCase prefixed with `_` for properties' backing fields -- Use camelCase for protected, public fields, protected fields backing properties, and method parameters -- Use camelCase prefixed with `_` for private fields -- Use Hungarian Notation only for OS functions/API calls -- Use UPPER_CASE for constant variables -- Use predefined primitive types like `int`, `long`, `string` instead of `Int32`, `Int64`, `String` - -### 3. Code readability and clarity - -- Do not use curly brackets for single line `if`, `for` and `foreach` statements.' -- Do not use `#region` directives -- Align `while();` on the same line of curly bracket of `do..while` -- Use the prefixes `Is`, `Has`, `Have`, `Any`, `Can` or similar keywords for boolean names and method names if - applicable. -- Do not use `Enum` or `Flag(s)` suffixes/prefixes for Enum names. -- Align curly brackets on new lines -- Fields, properties, methods and constructors must be separated by one line except for property backing fields that are - not separated by any amount of lines -- Do not manually invoke event handling functions or commands -- Do not use `public` modifiers in interface's properties and functions -- Define constant types in `Constants` class following its structure -- Mark classes as `abstract` or `sealed` if applicable. -- Interfaces must be documented -- Always create new `EventArgs` classes for event arguments -- Add letter suffix to number values: `0.1d`, `100000000000L`, `1.1f` -- Do not use `RelayCommand`, rather rely on `ICommand` -- Any class that implements `IDisposable` must also contain a field `private bool _disposed;` -- You are obliged to use [XAML Styler](https://marketplace.visualstudio.com/items?itemName=TeamXavalon.XAMLStyler2022) - for styling XAML -- Follow single-responsibility principle in classes, modules, and methods - -### 4. Class structure - -The following presents how a class structure should be ordered: - -- Static fields -- Static properties - -- `readonly` fields -- Fields -- `_disposed` field (if applicable) - -- Service property - -- Properties -- UI properties -- ICommand properties - -- Constructor `{ fields injection, initialization of fields, command implementation }` - -- Command implementation functions (private/protected only, can be virtual but not abstract) - -- public (virtual/override) methods (with parameters amount descending) -- protected (virtual/override) methods (with parameters amount descending) -- private methods - -- `static` methods - -- `abstract` methods - -- Operators - -- Assertions e.g. `AssertNotDisposed()`, `AssertInitialized()`, `AssertStreamOpened()` -- IDisposable.Dispose() function - -### 5. Interface structure - -The following presents how an interface structure should be ordered: - -- properties -- functions (name descending + parameters amount descending) - -### 6. Helper classes and extensions - -- Helper classes must be either static or fully instanced -- Extension classes must be static and only contain extension functions related to one type or derivatives diff --git a/src/routes/docs/contributing/updates/+page.md b/src/routes/docs/contributing/updates/+page.md deleted file mode 100644 index f2e0865..0000000 --- a/src/routes/docs/contributing/updates/+page.md +++ /dev/null @@ -1,37 +0,0 @@ -# Updates - -### How updates work - -Files has multiple download options with each option having a unique package identity, this allows users to have different versions installed side by side. In order to enable auto updates for the sideload versions, we make use of the `packageManagement` capability. This capability is removed from the store build in order to prevent certification issues. - -## Dev -This is installed when building the app from the source code. -- Display Name: `Files - Dev` -- Publisher Name: `Yair A` -- Package Name: `FilesDev` -- Package Family Name: `FilesDev_ykqwq8d6ps0ag` -- Auto updates: `False` - -## Store -This is installed from the store and uses the store assigned identity. -- Display Name: `Files` -- Publisher Name: `Yair A` -- Package Name: `49306atecsolution.FilesUWP` -- Package Family Name: `49306atecsolution.FilesUWP_et10x9a9vyk8t` -- Auto updates: `True` - -## Sideload -This is installed from our website and is signed by the Files organization. -- Display Name: `Files` -- Publisher Name: `Files` -- Package Name: `Files` -- Package Family Name: `Files_1y0xx7n9077q4` -- Auto updates: `True` - -## Sideload Preview -This is installed from our website and is signed by the Files organization. -- Display Name: `Files - Preview` -- Publisher Name: `Files` -- Package Name: `FilesPreview` -- Package Family Name: `FilesPreview_wvne1zexy08sa` -- Auto updates: `True` diff --git a/src/routes/projects/+layout.svelte b/src/routes/projects/+layout.svelte index f0d153b..14db67c 100644 --- a/src/routes/projects/+layout.svelte +++ b/src/routes/projects/+layout.svelte @@ -5,7 +5,7 @@ import { page } from "$app/stores"; import { links } from "$data/links"; - import { docs } from "$data/docs"; + import { projects } from "$data/projects"; import { externalLink, Metadata, TreeView } from "$lib"; import { Button, ListItem, TextBox } from "fluent-svelte"; @@ -42,9 +42,9 @@ if (key === "Enter") { if ( searchResults.length > 0 && - $page.url.pathname !== `/docs${ searchResults[selection].path }` + $page.url.pathname !== `/projects${ searchResults[selection].path }` ) - goto(`/docs${ searchResults[selection].path }`, { + goto(`/projects${ searchResults[selection].path }`, { keepfocus: true }); } else if (key === "ArrowDown") { @@ -74,7 +74,7 @@ - @@ -96,7 +96,7 @@ on:search={() => { if ( searchResults.length > 0 && - $page.url.pathname !== `/docs${searchResults[selection].path}` + $page.url.pathname !== `/projects${searchResults[selection].path}` ) goto(`/docs${searchResults[selection].path}`, { keepfocus: true @@ -109,7 +109,7 @@
{#if searchResults.length > 0} {#each searchResults as { name, path }, i} - + {name} {/each} @@ -121,7 +121,7 @@

- +
@@ -171,16 +171,15 @@ {$page.url.pathname.split("/").join(" / ").substring(2)} {$page.url.pathname === "/projects" ? " / overview" : ""} - +
diff --git a/src/routes/projects/+layout.ts b/src/routes/projects/+layout.ts index d9e940a..c3b7be3 100644 --- a/src/routes/projects/+layout.ts +++ b/src/routes/projects/+layout.ts @@ -1,4 +1,4 @@ -import { docs, type DocsCategory, type DocsPage } from "$data/docs"; +import { projects, type DocsCategory, type DocsPage } from "$data/projects"; import type { LayoutLoad } from "./$types"; function* flatten(array: T[], depth = Infinity): Generator { @@ -18,11 +18,11 @@ export const findPages = (docsStructure: (DocsPage | DocsCategory)[]) => { }; export const load: LayoutLoad = ({ url }) => { - const docsPages = findPages(docs); + const docsPages = findPages(projects); return { pagePath: url.pathname, - currentPage: docsPages.find(p => `/docs${ p.path }` === url.pathname), + currentPage: docsPages.find(p => `/projects${ p.path }` === url.pathname), docsPages }; }; diff --git a/src/routes/projects/configuring/custom-themes/+page.md b/src/routes/projects/configuring/custom-themes/+page.md deleted file mode 100644 index e88425a..0000000 --- a/src/routes/projects/configuring/custom-themes/+page.md +++ /dev/null @@ -1,41 +0,0 @@ -# Custom Themes - -Files has a selection of built-in themes but you can also create your own theme by adding a resource file to the themes directory in the `LocalState` folder. - -## How to create a custom theme - -1. Navigate to the themes directory, you can open find this folder by clicking the information icon in the appearance page. Create a new file with the `xaml` extension, this file will contain the resources for your custom theme. -2. Open the file in the text editor of your choice. -3. Copy and paste the template below - -Default template -```xml - - - - - - - - -``` - -## Available resources - -The themeing system in Files allows you to override any resource that's included in the WinUI library but most themes including the built-in themes only override a couple of brushes. - -| Key | Example | Default value | -| --------- | ----------- | ---------- | -| `ContentControlThemeFontFamily` | `Comic Sans` | `Segoe UI Variable` | -| `RootBackgroundBrush` | `` | `Transparent` | -| `SolidBackgroundFillColorBase` | `#A26829` | | -| `SolidBackgroundFillColorSecondary` | `#845a2b` | | -| `SolidBackgroundFillColorTertiary` | `#A26829` | | -| `SolidBackgroundFillColorQuarternary` | `#A26829` | | -| `SolidBackgroundAcrylic` | `#A26829` | Light theme: `#FFFFFF` Dark theme: `#2C2C2C` | -| `NavigationToolbarBackgroundBrush` | `` | `#00000000` | -| `TitlebarContentBackgroundBrush` | `` | `Transparent` | diff --git a/src/routes/projects/configuring/date-formats/+page.md b/src/routes/projects/configuring/date-formats/+page.md deleted file mode 100644 index c2e10a9..0000000 --- a/src/routes/projects/configuring/date-formats/+page.md +++ /dev/null @@ -1,15 +0,0 @@ -# Date Formats - -Files comes with three different options to let you customize the date format. - -**Application** - -The default date format uses the following format _Wednesday, June 3, 2020_. - -**System** - -System is a little more compact and uses this format _6/3/2020_. - -**Universal** - -Universal uses the defacto official international format _2020-06-03_. diff --git a/src/routes/projects/configuring/keyboard-shortcuts/+page.md b/src/routes/projects/configuring/keyboard-shortcuts/+page.md deleted file mode 100644 index a61321d..0000000 --- a/src/routes/projects/configuring/keyboard-shortcuts/+page.md +++ /dev/null @@ -1,39 +0,0 @@ -# Keyboard Shortcuts - -Files comes with built in keyboard shortcuts to make navigating the app easier. - -| Shortcut | Action | -| --------------------------------------------------- | ------------------------------------- | -| Ctrl + C | Copy | -| Ctrl + X | Cut | -| Ctrl + V | Paste | -| Ctrl + A | Select all | -| Ctrl + Z | Undo operation | -| Ctrl + Y | Redo operation | -| Ctrl + T | Create new tab | -| Ctrl + W | Close tab | -| Ctrl + F4 | Close tab | -| Ctrl + Shift + T | Reopen recently closed tab | -| Ctrl + Tab | Switch next tab | -| Ctrl + Shift + Tab | Switch previous tab | -| Ctrl + Shift + K | Duplicate tab | -| Ctrl + N | New window | -| Ctrl + Shift + N | New file | -| Ctrl + Alt + Up | Open compact overlay | -| Ctrl + Alt + Down | Close compact overlay | -| Ctrl + Alt + S | Collapse/Expand sidebar | -| Ctrl + + | Increase icon size | -| Ctrl + - | Decrease icon size | -| Ctrl + D | Delete | -| Ctrl + F | Search | -| Ctrl + L | Select directory path | -| Ctrl + Shift + C | Copy file/directory path | -| Ctrl + P | Toggle preview pane | -| Ctrl + Alt + P | Toggle media playback in preview pane | -| F1 | Open files docs | -| F2 | Rename file/directory | -| F3 | Search | -| F5 / Ctrl + R | Refresh directory | -| F7 | Turn on caret browsing | -| F11 | Toggle fullscreen | -| F12 | Toggle compact overlay | diff --git a/src/routes/projects/configuring/replace-file-explorer/+page.md b/src/routes/projects/configuring/replace-file-explorer/+page.md deleted file mode 100644 index e6e2e00..0000000 --- a/src/routes/projects/configuring/replace-file-explorer/+page.md +++ /dev/null @@ -1,10 +0,0 @@ -# Replacing File Explorer with Files (Experimental) - -*This setting modifies the system registry, make sure to create a backup beforehand and proceed at your own risk.* - -**Settings Files as the default file manager** - -1. Open the settings dialog in Files -2. Navigate to the experimental section and toggle the switch to set Files as the default file manager - -![Settings dialog](/docs-resources/Settings-Dialog-Experimental.jpg) diff --git a/src/routes/projects/configuring/terminal-profiles/+page.md b/src/routes/projects/configuring/terminal-profiles/+page.md deleted file mode 100644 index fa35ce0..0000000 --- a/src/routes/projects/configuring/terminal-profiles/+page.md +++ /dev/null @@ -1,65 +0,0 @@ -# Terminal Profiles - -Files supports multiple options for configuring terminal profiles. Aside from setting the default terminal that you can -launch from the "Open in terminal" option, you can also adjust the launch arguments. You can also launch any terminal -profile by typing the name or path in the navigation bar. - -_Profiles will only function, if the corresponding terminals are installed. Starting in v0.9.2, Files will automatically -detect if Windows Terminal and Fluent Terminal are installed._ - -## Sample profiles - -Cmd: - -```json -{ - "name": "CMD", - "path": "cmd.exe", - "arguments": "/k \"cd /d {0} && title Command Prompt\"", - "icon": "" -} -``` - -PowerShell - -```json -{ - "name": "PowerShell", - "path": "powershell.exe", - "arguments": "-noexit -command \"cd '{0}'\"", - "icon": "" -} -``` - -PowerShell Core: - -```json -{ - "name": "PowerShell Core", - "path": "pwsh.exe", - "arguments": "-WorkingDirectory \"{0}\"", - "icon": "" -} -``` - -Windows Terminal: - -```json -{ - "name": "Windows Terminal", - "path": "wt.exe", - "arguments": "-d \"{0}\"", - "icon": "" -} -``` - -Fluent Terminal: - -```json -{ - "name": "Fluent Terminal", - "path": "flute.exe", - "arguments": "new \"{0}\"", - "icon": "" -} -``` \ No newline at end of file diff --git a/src/routes/projects/configuring/troubleshooting-installation/+page.md b/src/routes/projects/configuring/troubleshooting-installation/+page.md deleted file mode 100644 index ebad971..0000000 --- a/src/routes/projects/configuring/troubleshooting-installation/+page.md +++ /dev/null @@ -1,10 +0,0 @@ -# Troubleshooting installation issues - -### App installation failed with error message: error 0xC00CEE23: The XML in the .appinstaller file is not valid: Line 33, Column 5, Reason: '>' expected. (Oxc00cee23) -This issue is usually resolved by restarting Windows before opening the installer again. - -### An error occurred while accessing the file from the web. Please try downloading and opening the file locally. -No currently known solution for this issue - -### Windows can't open this type of file (.appinstaller) -This can be resolved by running the Store reset command `wsreset -i` in PowerShell or Command Prompt diff --git a/src/routes/projects/contributing/building-from-source/+page.md b/src/routes/projects/contributing/building-from-source/+page.md deleted file mode 100644 index 798c9ee..0000000 --- a/src/routes/projects/contributing/building-from-source/+page.md +++ /dev/null @@ -1,25 +0,0 @@ -# Building Files from source - -### 1: Prerequisites - -- [Git](https://git-scm.com) -- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) with the UWP Development Kit, including C++ UWP build tools. -- C++ ATL for UWP build tools - -### 2: Clone the repository. - -```ps -git clone https://github.com/files-community/Files -``` - -This will create a local copy of the repository. - -### 3: Build the project - -To build the app in development mode, open the sln file in Visual Studio (Files.sln) and set the Files.Package project as the startup item by right-clicking on `Files.Package` in the solution explorer & hitting ‘Set as Startup item’. - -In the architecture pane, select the correct architecture for your system as `Debug` which should look like this: - -![VS Run config: Debug, x64, Files.Package, Local Machine](/docs-resources/vs-architecture-config.png) - -You're good to go! diff --git a/src/routes/projects/contributing/code-style/+page.md b/src/routes/projects/contributing/code-style/+page.md deleted file mode 100644 index 54b6f36..0000000 --- a/src/routes/projects/contributing/code-style/+page.md +++ /dev/null @@ -1,112 +0,0 @@ -# Code quality standards - -All code contributed to the repository must follow -our [Model-View-ViewModel](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel) design path. The code -must be well-written and expose a clear purpose. Workarounds are not welcome unless the scope of the PR touches external -components -(OS functions/API calls) that require unconventional practices of coding. Your code must be easily maintainable without -requiring to rewrite core parts, making sure no code is being duplicated, utilizing abstractions and inheritance is a -great way to sustain high code metrics. Your code must also be tested for potential regressions and unwanted memory -leaks. - -We also prioritize accessibility, to check whether your pull request meets our accessibility standards, you're -encouraged to use [Accessibility Insights for Windows](https://accessibilityinsights.io/docs/en/windows/overview/) -to ensure everyone can take full advantage of Files. - -## Code Style - -To make the codebase consistent and easy to understand, we require you to follow our predefined code style rules: - -### 1. Naming notation for objects and functions - -- Use PascalCase for classes -- Use PascalCase prefixed with `I` for interfaces -- Use PascalCase for structs -- Use PascalCase for functions/methods -- Use "Base" prefix for base classes -- Use "Service" suffix for service classes and interfaces -- Use "Model" suffix for model classes -- Use "ViewModel" suffix for view model classes -- Use "Dialog" suffix for dialog controls -- Use "Control" suffix for user controls -- Use "Page" suffix for pages - -### 2. Naming notation for variables - -- Use PascalCase for properties and static fields/properties -- Use PascalCase prefixed with `_` for properties' backing fields -- Use camelCase for protected, public fields, protected fields backing properties, and method parameters -- Use camelCase prefixed with `_` for private fields -- Use Hungarian Notation only for OS functions/API calls -- Use UPPER_CASE for constant variables -- Use predefined primitive types like `int`, `long`, `string` instead of `Int32`, `Int64`, `String` - -### 3. Code readability and clarity - -- Do not use curly brackets for single line `if`, `for` and `foreach` statements.' -- Do not use `#region` directives -- Align `while();` on the same line of curly bracket of `do..while` -- Use the prefixes `Is`, `Has`, `Have`, `Any`, `Can` or similar keywords for boolean names and method names if - applicable. -- Do not use `Enum` or `Flag(s)` suffixes/prefixes for Enum names. -- Align curly brackets on new lines -- Fields, properties, methods and constructors must be separated by one line except for property backing fields that are - not separated by any amount of lines -- Do not manually invoke event handling functions or commands -- Do not use `public` modifiers in interface's properties and functions -- Define constant types in `Constants` class following its structure -- Mark classes as `abstract` or `sealed` if applicable. -- Interfaces must be documented -- Always create new `EventArgs` classes for event arguments -- Add letter suffix to number values: `0.1d`, `100000000000L`, `1.1f` -- Do not use `RelayCommand`, rather rely on `ICommand` -- Any class that implements `IDisposable` must also contain a field `private bool _disposed;` -- You are obliged to use [XAML Styler](https://marketplace.visualstudio.com/items?itemName=TeamXavalon.XAMLStyler2022) - for styling XAML -- Follow single-responsibility principle in classes, modules, and methods - -### 4. Class structure - -The following presents how a class structure should be ordered: - -- Static fields -- Static properties - -- `readonly` fields -- Fields -- `_disposed` field (if applicable) - -- Service property - -- Properties -- UI properties -- ICommand properties - -- Constructor `{ fields injection, initialization of fields, command implementation }` - -- Command implementation functions (private/protected only, can be virtual but not abstract) - -- public (virtual/override) methods (with parameters amount descending) -- protected (virtual/override) methods (with parameters amount descending) -- private methods - -- `static` methods - -- `abstract` methods - -- Operators - -- Assertions e.g. `AssertNotDisposed()`, `AssertInitialized()`, `AssertStreamOpened()` -- IDisposable.Dispose() function - -### 5. Interface structure - -The following presents how an interface structure should be ordered: - -- properties -- functions (name descending + parameters amount descending) - -### 6. Helper classes and extensions - -- Helper classes must be either static or fully instanced -- Extension classes must be static and only contain extension functions related to one type or derivatives diff --git a/src/routes/projects/contributing/updates/+page.md b/src/routes/projects/contributing/updates/+page.md deleted file mode 100644 index f2e0865..0000000 --- a/src/routes/projects/contributing/updates/+page.md +++ /dev/null @@ -1,37 +0,0 @@ -# Updates - -### How updates work - -Files has multiple download options with each option having a unique package identity, this allows users to have different versions installed side by side. In order to enable auto updates for the sideload versions, we make use of the `packageManagement` capability. This capability is removed from the store build in order to prevent certification issues. - -## Dev -This is installed when building the app from the source code. -- Display Name: `Files - Dev` -- Publisher Name: `Yair A` -- Package Name: `FilesDev` -- Package Family Name: `FilesDev_ykqwq8d6ps0ag` -- Auto updates: `False` - -## Store -This is installed from the store and uses the store assigned identity. -- Display Name: `Files` -- Publisher Name: `Yair A` -- Package Name: `49306atecsolution.FilesUWP` -- Package Family Name: `49306atecsolution.FilesUWP_et10x9a9vyk8t` -- Auto updates: `True` - -## Sideload -This is installed from our website and is signed by the Files organization. -- Display Name: `Files` -- Publisher Name: `Files` -- Package Name: `Files` -- Package Family Name: `Files_1y0xx7n9077q4` -- Auto updates: `True` - -## Sideload Preview -This is installed from our website and is signed by the Files organization. -- Display Name: `Files - Preview` -- Publisher Name: `Files` -- Package Name: `FilesPreview` -- Package Family Name: `FilesPreview_wvne1zexy08sa` -- Auto updates: `True` diff --git a/src/routes/projects/degree/library-manager/+page.md b/src/routes/projects/degree/library-manager/+page.md new file mode 100644 index 0000000..554921e --- /dev/null +++ b/src/routes/projects/degree/library-manager/+page.md @@ -0,0 +1,16 @@ +# LibraryManager +This is a full-stack app built using C#. It has two front-end clients; one built using the new WinUI 3.0 framework and one built using the new MAUI UI framework. + +GituHub repo: https://github.com/mstrow/LibraryManager +## WinUI APP +![libraryman](https://user-images.githubusercontent.com/38768048/201034781-41d0e126-9d12-4976-ba84-b6f1cc6ade09.png) + +## UML +![UML](https://user-images.githubusercontent.com/38768048/201036620-90089e24-31e8-41c7-8dd5-44cf8103d0f9.svg) + +## Application Design +![ApplicationDesignDiagram](https://user-images.githubusercontent.com/38768048/201037263-96802f88-5150-4515-9c03-501f6d6804ed.svg) + +## Network Diagram + +![NetworkDiagram](https://user-images.githubusercontent.com/38768048/201037523-9c55fa1f-9d5f-4dc4-8e94-a5de5ce48a07.svg) \ No newline at end of file diff --git a/src/routes/projects/degree/lunarlandersql/+page.md b/src/routes/projects/degree/lunarlandersql/+page.md new file mode 100644 index 0000000..969feb1 --- /dev/null +++ b/src/routes/projects/degree/lunarlandersql/+page.md @@ -0,0 +1,15 @@ +# LunarLanderSQL + +Lunar lander game running on SQL server using stored procedures with C# frontend. + +No this isn't practical at all. But it was meant more as a learning exercise. + +Github repo: https://github.com/mstrow/LunarLanderSQL + + + + + diff --git a/src/routes/projects/degree/pythonqtdataanalysis/+page.md b/src/routes/projects/degree/pythonqtdataanalysis/+page.md new file mode 100644 index 0000000..010304e --- /dev/null +++ b/src/routes/projects/degree/pythonqtdataanalysis/+page.md @@ -0,0 +1,52 @@ +# PythonQtDataAnalysisTool +aka DataColabView + +A tool that reads CSV files and allows you to upload them to a remote server. It allows multiple users to collaboratively view the data and perform analysis on it. + +Github repo: https://github.com/mstrow/PythonQtDataAnalyser + +## Readme.md + +Install requirements using + +``pip install -r requirements.txt`` + +### Brief Guide + +![image-20211001152605374](/docs-resources/datacolabview/image-20211001152605374.png) + +Click New Session + +![image-20211001152908902](/docs-resources/datacolabview/image-20211001152908902.png) + +Click "New Window in session" to create a new view to view multiple graph types at the same time. + + + +![image-20211001153059472](/docs-resources/datacolabview/image-20211001153059472.png) + +Change the graph type in the drop down. + +![image-20211001153214440](/docs-resources/datacolabview/image-20211001153214440.png) + +Upload a csv + + + +![image-20211001153252303](/docs-resources/datacolabview/image-20211001153252303.png) + + + + + +![image-20211001153345897](/docs-resources/datacolabview/image-20211001153345897.png) + +Append (merge) csv to the graph + +![image-20211001153436141](/docs-resources/datacolabview/image-20211001153436141.png) + + + +![image-20211001153509320](/docs-resources/datacolabview/image-20211001153509320.png) + +Export graph data to CSV diff --git a/src/routes/projects/personal/raytracer/+page.md b/src/routes/projects/personal/raytracer/+page.md new file mode 100644 index 0000000..4bf9fc9 --- /dev/null +++ b/src/routes/projects/personal/raytracer/+page.md @@ -0,0 +1,9 @@ +# Raytracer in a weekend +This is a raytracer built using the programming language of Rust. + +I followed this excellent guide for building on using C by Peter Shirley: https://raytracing.github.io/books/RayTracingInOneWeekend.html + +Github repo: https://github.com/mstrow/RTinaWeekend + + +![alt text](/screenshots/img_trans.webp) \ No newline at end of file diff --git a/src/routes/projects/personal/website/+page.md b/src/routes/projects/personal/website/+page.md new file mode 100644 index 0000000..27a39e8 --- /dev/null +++ b/src/routes/projects/personal/website/+page.md @@ -0,0 +1,11 @@ +# Personal Website + +This website was written with Sveltekit, Typescript and SCSS. + +It is a fork of file.community's website. Github repo here: https://github.com/files-community/Website + +It is built using Sveltekit using the vite adapter, building to a generic node index.js file. + +It runs on a Ubuntu VPC and uses [Pm2](https://en.wikipedia.org/wiki/PM2_(software)) to manage the node. + +Github repo: https://github.com/mstrow/website \ No newline at end of file diff --git a/static/docs-resources/Settings-Dialog-Experimental.jpg b/static/docs-resources/Settings-Dialog-Experimental.jpg deleted file mode 100644 index 358d7bd..0000000 Binary files a/static/docs-resources/Settings-Dialog-Experimental.jpg and /dev/null differ diff --git a/static/docs-resources/datacolabview/image-20211001152605374.png b/static/docs-resources/datacolabview/image-20211001152605374.png new file mode 100644 index 0000000..451fb90 Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001152605374.png differ diff --git a/static/docs-resources/datacolabview/image-20211001152908902.png b/static/docs-resources/datacolabview/image-20211001152908902.png new file mode 100644 index 0000000..618bfa7 Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001152908902.png differ diff --git a/static/docs-resources/datacolabview/image-20211001153059472.png b/static/docs-resources/datacolabview/image-20211001153059472.png new file mode 100644 index 0000000..c63768f Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001153059472.png differ diff --git a/static/docs-resources/datacolabview/image-20211001153214440.png b/static/docs-resources/datacolabview/image-20211001153214440.png new file mode 100644 index 0000000..387d201 Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001153214440.png differ diff --git a/static/docs-resources/datacolabview/image-20211001153252303.png b/static/docs-resources/datacolabview/image-20211001153252303.png new file mode 100644 index 0000000..b8a36ce Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001153252303.png differ diff --git a/static/docs-resources/datacolabview/image-20211001153345897.png b/static/docs-resources/datacolabview/image-20211001153345897.png new file mode 100644 index 0000000..b4ff36c Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001153345897.png differ diff --git a/static/docs-resources/datacolabview/image-20211001153436141.png b/static/docs-resources/datacolabview/image-20211001153436141.png new file mode 100644 index 0000000..d5c1bcb Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001153436141.png differ diff --git a/static/docs-resources/datacolabview/image-20211001153509320.png b/static/docs-resources/datacolabview/image-20211001153509320.png new file mode 100644 index 0000000..d191e90 Binary files /dev/null and b/static/docs-resources/datacolabview/image-20211001153509320.png differ diff --git a/static/docs-resources/vs-architecture-config.png b/static/docs-resources/vs-architecture-config.png deleted file mode 100644 index 5182ab4..0000000 Binary files a/static/docs-resources/vs-architecture-config.png and /dev/null differ