-
+
-
-
-
-
-
-
-
-
+
+
+
Scanning for peers...
-
+
+ :transfer="transfer"
+ />
-
-
-
-
+
+
+
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index 01433bc..b62acc8 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -1,4 +1,23 @@
-import { createApp } from 'vue'
+/**
+ * main.ts
+ *
+ * Bootstraps Vuetify and other plugins then mounts the App`
+ */
+
+// Plugins
+import { registerPlugins } from '@/plugins'
+
+// Components
import App from './App.vue'
-createApp(App).mount('#app')
+// Composables
+import { createApp } from 'vue'
+
+// Styles
+import 'unfonts.css'
+
+const app = createApp(App)
+
+registerPlugins(app)
+
+app.mount('#app')
diff --git a/frontend/src/plugins/index.ts b/frontend/src/plugins/index.ts
new file mode 100644
index 0000000..818042a
--- /dev/null
+++ b/frontend/src/plugins/index.ts
@@ -0,0 +1,15 @@
+/**
+ * plugins/index.ts
+ *
+ * Automatically included in `./src/main.ts`
+ */
+
+// Plugins
+import vuetify from './vuetify'
+
+// Types
+import type { App } from 'vue'
+
+export function registerPlugins (app: App) {
+ app.use(vuetify)
+}
diff --git a/frontend/src/plugins/vuetify.ts b/frontend/src/plugins/vuetify.ts
new file mode 100644
index 0000000..861a7e4
--- /dev/null
+++ b/frontend/src/plugins/vuetify.ts
@@ -0,0 +1,19 @@
+/**
+ * plugins/vuetify.ts
+ *
+ * Framework documentation: https://vuetifyjs.com`
+ */
+
+// Styles
+import '@mdi/font/css/materialdesignicons.css'
+import 'vuetify/styles'
+
+// Composables
+import { createVuetify } from 'vuetify'
+
+// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
+export default createVuetify({
+ theme: {
+ defaultTheme: 'system',
+ },
+})
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
index 5e8658e..c1707db 100644
--- a/frontend/tsconfig.json
+++ b/frontend/tsconfig.json
@@ -11,9 +11,18 @@
"resolveJsonModule": true,
"isolatedModules": true,
"esModuleInterop": true,
- "lib": ["ESNext", "DOM"],
+ "lib": [
+ "ESNext",
+ "DOM"
+ ],
"skipLibCheck": true,
"noEmit": true
},
- "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "bindings"],
-}
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.d.ts",
+ "src/**/*.tsx",
+ "src/**/*.vue",
+ "bindings"
+ ],
+}
\ No newline at end of file
diff --git a/frontend/vite.config.mts b/frontend/vite.config.mts
new file mode 100644
index 0000000..fb10265
--- /dev/null
+++ b/frontend/vite.config.mts
@@ -0,0 +1,55 @@
+// Plugins
+import Components from 'unplugin-vue-components/vite'
+import Vue from '@vitejs/plugin-vue'
+import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
+import Fonts from 'unplugin-fonts/vite'
+import wails from "@wailsio/runtime/plugins/vite";
+
+// Utilities
+import { defineConfig } from 'vite'
+import { fileURLToPath, URL } from 'node:url'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ Vue({
+ template: { transformAssetUrls },
+ }),
+ wails("./bindings"),
+ // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme
+ Vuetify(),
+ Components(),
+ Fonts({
+ fontsource: {
+ families: [
+ {
+ name: 'Roboto',
+ weights: [100, 300, 400, 500, 700, 900],
+ styles: ['normal', 'italic'],
+ },
+ ],
+ },
+ }),
+ ],
+ optimizeDeps: {
+ exclude: ['vuetify'],
+ },
+ define: { 'process.env': {} },
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('src', import.meta.url)),
+ },
+ extensions: [
+ '.js',
+ '.json',
+ '.jsx',
+ '.mjs',
+ '.ts',
+ '.tsx',
+ '.vue',
+ ],
+ },
+ server: {
+ port: 3000,
+ },
+})
diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts
deleted file mode 100644
index 16127a8..0000000
--- a/frontend/vite.config.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { defineConfig } from "vite";
-import vue from "@vitejs/plugin-vue";
-import wails from "@wailsio/runtime/plugins/vite";
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [vue(), wails("./bindings")],
-});
diff --git a/go.mod b/go.mod
index d92a269..e5f8e2c 100644
--- a/go.mod
+++ b/go.mod
@@ -5,6 +5,7 @@ go 1.25
require (
github.com/gin-gonic/gin v1.11.0
github.com/google/uuid v1.6.0
+ github.com/spf13/viper v1.21.0
github.com/wailsapp/wails/v3 v3.0.0-alpha.67
)
@@ -64,7 +65,6 @@ require (
github.com/spf13/afero v1.15.0 // indirect
github.com/spf13/cast v1.10.0 // indirect
github.com/spf13/pflag v1.0.10 // indirect
- github.com/spf13/viper v1.21.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.3.0 // indirect
diff --git a/go.sum b/go.sum
index 6ce5739..8957b11 100644
--- a/go.sum
+++ b/go.sum
@@ -34,6 +34,8 @@ github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
diff --git a/main.go b/main.go
index 599953c..203688f 100644
--- a/main.go
+++ b/main.go
@@ -61,6 +61,9 @@ func main() {
X: conf.WindowState.X,
Y: conf.WindowState.Y,
EnableFileDrop: true,
+ Linux: application.LinuxWindow{
+ WebviewGpuPolicy: application.WebviewGpuPolicyAlways,
+ },
})
window.OnWindowEvent(events.Common.WindowFilesDropped, func(event *application.WindowEvent) {