From dcba4c3e05034b1412bc99e0a9006d1a6b584d1c Mon Sep 17 00:00:00 2001 From: nite Date: Thu, 5 Feb 2026 04:26:59 +0800 Subject: [PATCH] taskfile --- build/linux/Taskfile.yml | 47 ++++---- build/windows/Taskfile.yml | 21 ++-- .../v3/pkg/services/notifications/index.ts | 13 +++ .../v3/pkg/services/notifications/models.ts | 107 ++++++++++++++++++ .../notifications/notificationservice.ts | 62 ++++++++++ .../mesh-drop/internal/transfer/service.ts | 4 + frontend/tsconfig.tsbuildinfo | 2 +- go.mod | 1 + go.sum | 2 + 9 files changed, 225 insertions(+), 34 deletions(-) create mode 100644 frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/index.ts create mode 100644 frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/models.ts create mode 100644 frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/notificationservice.ts diff --git a/build/linux/Taskfile.yml b/build/linux/Taskfile.yml index 1285484..54d901c 100644 --- a/build/linux/Taskfile.yml +++ b/build/linux/Taskfile.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" includes: common: ../Taskfile.yml @@ -23,14 +23,14 @@ tasks: # 3. Target architecture differs from host architecture (cross-arch compilation) - task: '{{if and (eq OS "linux") (eq .HAS_CC "true") (eq .TARGET_ARCH ARCH)}}build:native{{else}}build:docker{{end}}' vars: - ARCH: '{{.ARCH}}' - DEV: '{{.DEV}}' - OUTPUT: '{{.OUTPUT}}' + ARCH: "{{.ARCH}}" + DEV: "{{.DEV}}" + OUTPUT: "{{.OUTPUT}}" vars: - DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.APP_NAME}}' - OUTPUT: '{{ .OUTPUT | default .DEFAULT_OUTPUT }}' + DEFAULT_OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}" + OUTPUT: "{{ .OUTPUT | default .DEFAULT_OUTPUT }}" # Determine target architecture (defaults to host ARCH if not specified) - TARGET_ARCH: '{{.ARCH | default ARCH}}' + TARGET_ARCH: "{{.ARCH | default ARCH}}" # Check if a C compiler is available (gcc or clang) HAS_CC: sh: '(command -v gcc >/dev/null 2>&1 || command -v clang >/dev/null 2>&1) && echo "true" || echo "false"' @@ -50,14 +50,15 @@ tasks: - task: generate:dotdesktop cmds: - go build {{.BUILD_FLAGS}} -o {{.OUTPUT}} + - upx --best --lzma {{.OUTPUT}} vars: BUILD_FLAGS: '{{if eq .DEV "true"}}-buildvcs=false -gcflags=all="-l"{{else}}-tags production -trimpath -buildvcs=false -ldflags="-w -s"{{end}}' - DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.APP_NAME}}' - OUTPUT: '{{ .OUTPUT | default .DEFAULT_OUTPUT }}' + DEFAULT_OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}" + OUTPUT: "{{ .OUTPUT | default .DEFAULT_OUTPUT }}" env: GOOS: linux CGO_ENABLED: 1 - GOARCH: '{{.ARCH | default ARCH}}' + GOARCH: "{{.ARCH | default ARCH}}" build:docker: summary: Builds for Linux using Docker (for non-Linux hosts or when no C compiler available) @@ -80,8 +81,8 @@ tasks: - mv "bin/{{.APP_NAME}}-linux-{{.DOCKER_ARCH}}" "{{.OUTPUT}}" vars: DOCKER_ARCH: '{{.ARCH | default "amd64"}}' - DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.APP_NAME}}' - OUTPUT: '{{ .OUTPUT | default .DEFAULT_OUTPUT }}' + DEFAULT_OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}" + OUTPUT: "{{ .OUTPUT | default .DEFAULT_OUTPUT }}" # Mount Go module cache for faster builds GO_CACHE_MOUNT: sh: 'echo "-v ${GOPATH:-$HOME/go}/pkg/mod:/go/pkg/mod"' @@ -121,11 +122,11 @@ tasks: - cp ../../appicon.png "{{.APP_NAME}}.png" - wails3 generate appimage -binary "{{.APP_NAME}}" -icon {{.ICON}} -desktopfile {{.DESKTOP_FILE}} -outputdir {{.OUTPUT_DIR}} -builddir {{.ROOT_DIR}}/build/linux/appimage/build vars: - APP_NAME: '{{.APP_NAME}}' - APP_BINARY: '../../../bin/{{.APP_NAME}}' - ICON: '{{.APP_NAME}}.png' - DESKTOP_FILE: '../{{.APP_NAME}}.desktop' - OUTPUT_DIR: '../../../bin' + APP_NAME: "{{.APP_NAME}}" + APP_BINARY: "../../../bin/{{.APP_NAME}}" + ICON: "{{.APP_NAME}}.png" + DESKTOP_FILE: "../{{.APP_NAME}}.desktop" + OUTPUT_DIR: "../../../bin" create:deb: summary: Creates a deb package @@ -173,15 +174,15 @@ tasks: - mkdir -p {{.ROOT_DIR}}/build/linux/appimage - wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile "{{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop" -categories "{{.CATEGORIES}}" vars: - APP_NAME: '{{.APP_NAME}}' - EXEC: '{{.APP_NAME}}' - ICON: '{{.APP_NAME}}' - CATEGORIES: 'Development;' - OUTPUTFILE: '{{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop' + APP_NAME: "{{.APP_NAME}}" + EXEC: "{{.APP_NAME}}" + ICON: "{{.APP_NAME}}" + CATEGORIES: "Development;" + OUTPUTFILE: "{{.ROOT_DIR}}/build/linux/{{.APP_NAME}}.desktop" run: cmds: - - '{{.BIN_DIR}}/{{.APP_NAME}}' + - "{{.BIN_DIR}}/{{.APP_NAME}}" sign:deb: summary: Signs the DEB package diff --git a/build/windows/Taskfile.yml b/build/windows/Taskfile.yml index 77b620b..a973981 100644 --- a/build/windows/Taskfile.yml +++ b/build/windows/Taskfile.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" includes: common: ../Taskfile.yml @@ -21,11 +21,11 @@ tasks: # Auto-detect CGO: if CGO_ENABLED=1, use Docker; otherwise use native Go cross-compile - task: '{{if and (ne OS "windows") (eq .CGO_ENABLED "1")}}build:docker{{else}}build:native{{end}}' vars: - ARCH: '{{.ARCH}}' - DEV: '{{.DEV}}' + ARCH: "{{.ARCH}}" + DEV: "{{.DEV}}" vars: # Default to CGO_ENABLED=0 if not explicitly set - CGO_ENABLED: '{{.CGO_ENABLED | default "0"}}' + CGO_ENABLED: '{{.CGO_ENABLED | default "0"}}'--lzma build:native: summary: Builds the application using native Go cross-compilation @@ -46,12 +46,13 @@ tasks: platforms: [windows] - cmd: rm -f *.syso platforms: [linux, darwin] + - cmd: upx --best --lzma "{{.BIN_DIR}}/{{.APP_NAME}}.exe" vars: BUILD_FLAGS: '{{if eq .DEV "true"}}-buildvcs=false -gcflags=all="-l"{{else}}-tags production -trimpath -buildvcs=false -ldflags="-w -s -H windowsgui"{{end}}' env: GOOS: windows CGO_ENABLED: '{{.CGO_ENABLED | default "0"}}' - GOARCH: '{{.ARCH | default ARCH}}' + GOARCH: "{{.ARCH | default ARCH}}" build:docker: summary: Cross-compiles for Windows using Docker with Zig (for CGO builds on non-Windows) @@ -104,7 +105,7 @@ tasks: cmds: - wails3 generate syso -arch {{.ARCH}} -icon windows/icon.ico -manifest windows/wails.exe.manifest -info windows/info.json -out ../wails_windows_{{.ARCH}}.syso vars: - ARCH: '{{.ARCH | default ARCH}}' + ARCH: "{{.ARCH | default ARCH}}" create:nsis:installer: summary: Creates an NSIS installer @@ -114,14 +115,14 @@ tasks: cmds: # Create the Microsoft WebView2 bootstrapper if it doesn't exist - wails3 generate webview2bootstrapper -dir "{{.ROOT_DIR}}/build/windows/nsis" - - | + - | {{if eq OS "windows"}} makensis -DARG_WAILS_{{.ARG_FLAG}}_BINARY="{{.ROOT_DIR}}\{{.BIN_DIR}}\{{.APP_NAME}}.exe" project.nsi {{else}} makensis -DARG_WAILS_{{.ARG_FLAG}}_BINARY="{{.ROOT_DIR}}/{{.BIN_DIR}}/{{.APP_NAME}}.exe" project.nsi {{end}} vars: - ARCH: '{{.ARCH | default ARCH}}' + ARCH: "{{.ARCH | default ARCH}}" ARG_FLAG: '{{if eq .ARCH "amd64"}}AMD64{{else}}ARM64{{end}}' create:msix:package: @@ -140,7 +141,7 @@ tasks: {{if .PUBLISHER}}--publisher "{{.PUBLISHER}}"{{end}} \ {{if .USE_MSIX_TOOL}}--use-msix-tool{{else}}--use-makeappx{{end}} vars: - ARCH: '{{.ARCH | default ARCH}}' + ARCH: "{{.ARCH | default ARCH}}" CERT_PATH: '{{.CERT_PATH | default ""}}' PUBLISHER: '{{.PUBLISHER | default ""}}' USE_MSIX_TOOL: '{{.USE_MSIX_TOOL | default "false"}}' @@ -152,7 +153,7 @@ tasks: run: cmds: - - '{{.BIN_DIR}}/{{.APP_NAME}}.exe' + - "{{.BIN_DIR}}/{{.APP_NAME}}.exe" sign: summary: Signs the Windows executable diff --git a/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/index.ts b/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/index.ts new file mode 100644 index 0000000..71eda3b --- /dev/null +++ b/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/index.ts @@ -0,0 +1,13 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +import * as NotificationService from "./notificationservice.js"; +export { + NotificationService +}; + +export { + NotificationAction, + NotificationCategory, + NotificationOptions +} from "./models.js"; diff --git a/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/models.ts b/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/models.ts new file mode 100644 index 0000000..d7f48ed --- /dev/null +++ b/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/models.ts @@ -0,0 +1,107 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import { Create as $Create } from "@wailsio/runtime"; + +/** + * NotificationAction represents an action button for a notification. + */ +export class NotificationAction { + "id"?: string; + "title"?: string; + + /** + * (macOS-specific) + */ + "destructive"?: boolean; + + /** Creates a new NotificationAction instance. */ + constructor($$source: Partial = {}) { + + Object.assign(this, $$source); + } + + /** + * Creates a new NotificationAction instance from a string or object. + */ + static createFrom($$source: any = {}): NotificationAction { + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + return new NotificationAction($$parsedSource as Partial); + } +} + +/** + * NotificationCategory groups actions for notifications. + */ +export class NotificationCategory { + "id"?: string; + "actions"?: NotificationAction[]; + "hasReplyField"?: boolean; + "replyPlaceholder"?: string; + "replyButtonTitle"?: string; + + /** Creates a new NotificationCategory instance. */ + constructor($$source: Partial = {}) { + + Object.assign(this, $$source); + } + + /** + * Creates a new NotificationCategory instance from a string or object. + */ + static createFrom($$source: any = {}): NotificationCategory { + const $$createField1_0 = $$createType1; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("actions" in $$parsedSource) { + $$parsedSource["actions"] = $$createField1_0($$parsedSource["actions"]); + } + return new NotificationCategory($$parsedSource as Partial); + } +} + +/** + * NotificationOptions contains configuration for a notification + */ +export class NotificationOptions { + "id": string; + "title": string; + + /** + * (macOS and Linux only) + */ + "subtitle"?: string; + "body"?: string; + "categoryId"?: string; + "data"?: { [_: string]: any }; + + /** Creates a new NotificationOptions instance. */ + constructor($$source: Partial = {}) { + if (!("id" in $$source)) { + this["id"] = ""; + } + if (!("title" in $$source)) { + this["title"] = ""; + } + + Object.assign(this, $$source); + } + + /** + * Creates a new NotificationOptions instance from a string or object. + */ + static createFrom($$source: any = {}): NotificationOptions { + const $$createField5_0 = $$createType2; + let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source; + if ("data" in $$parsedSource) { + $$parsedSource["data"] = $$createField5_0($$parsedSource["data"]); + } + return new NotificationOptions($$parsedSource as Partial); + } +} + +// Private type creation functions +const $$createType0 = NotificationAction.createFrom; +const $$createType1 = $Create.Array($$createType0); +const $$createType2 = $Create.Map($Create.Any, $Create.Any); diff --git a/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/notificationservice.ts b/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/notificationservice.ts new file mode 100644 index 0000000..859f357 --- /dev/null +++ b/frontend/bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/notificationservice.ts @@ -0,0 +1,62 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +/** + * Service represents the notifications service + * @module + */ + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import { Call as $Call, CancellablePromise as $CancellablePromise, Create as $Create } from "@wailsio/runtime"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore: Unused imports +import * as $models from "./models.js"; + +export function CheckNotificationAuthorization(): $CancellablePromise { + return $Call.ByID(2216952893); +} + +export function RegisterNotificationCategory(category: $models.NotificationCategory): $CancellablePromise { + return $Call.ByID(2917562919, category); +} + +export function RemoveAllDeliveredNotifications(): $CancellablePromise { + return $Call.ByID(3956282340); +} + +export function RemoveAllPendingNotifications(): $CancellablePromise { + return $Call.ByID(108821341); +} + +export function RemoveDeliveredNotification(identifier: string): $CancellablePromise { + return $Call.ByID(975691940, identifier); +} + +export function RemoveNotification(identifier: string): $CancellablePromise { + return $Call.ByID(3966653866, identifier); +} + +export function RemoveNotificationCategory(categoryID: string): $CancellablePromise { + return $Call.ByID(2032615554, categoryID); +} + +export function RemovePendingNotification(identifier: string): $CancellablePromise { + return $Call.ByID(3729049703, identifier); +} + +/** + * Public methods that delegate to the implementation. + */ +export function RequestNotificationAuthorization(): $CancellablePromise { + return $Call.ByID(3933442950); +} + +export function SendNotification(options: $models.NotificationOptions): $CancellablePromise { + return $Call.ByID(3968228732, options); +} + +export function SendNotificationWithActions(options: $models.NotificationOptions): $CancellablePromise { + return $Call.ByID(1886542847, options); +} diff --git a/frontend/bindings/mesh-drop/internal/transfer/service.ts b/frontend/bindings/mesh-drop/internal/transfer/service.ts index e8123bf..6f4f1d7 100644 --- a/frontend/bindings/mesh-drop/internal/transfer/service.ts +++ b/frontend/bindings/mesh-drop/internal/transfer/service.ts @@ -89,6 +89,10 @@ export function StoreTransferToList(transfer: $models.Transfer | null): $Cancell return $Call.ByID(3225941780, transfer); } +export function StoreTransfersToList(transfers: ($models.Transfer | null)[]): $CancellablePromise { + return $Call.ByID(658746199, transfers); +} + // Private type creation functions const $$createType0 = $models.Transfer.createFrom; const $$createType1 = $Create.Nullable($$createType0); diff --git a/frontend/tsconfig.tsbuildinfo b/frontend/tsconfig.tsbuildinfo index 56c5852..41574b1 100644 --- a/frontend/tsconfig.tsbuildinfo +++ b/frontend/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/main.ts","./src/vite-env.d.ts","./src/plugins/index.ts","./src/plugins/vuetify.ts","./src/App.vue","./src/components/MainLayout.vue","./src/components/PeerCard.vue","./src/components/SettingsView.vue","./src/components/TransferItem.vue","./src/components/modals/FileSendModal.vue","./src/components/modals/TextSendModal.vue","./bindings/github.com/wailsapp/wails/v3/internal/eventcreate.ts","./bindings/github.com/wailsapp/wails/v3/internal/eventdata.d.ts","./bindings/mesh-drop/index.ts","./bindings/mesh-drop/models.ts","./bindings/mesh-drop/internal/config/config.ts","./bindings/mesh-drop/internal/config/index.ts","./bindings/mesh-drop/internal/config/models.ts","./bindings/mesh-drop/internal/discovery/index.ts","./bindings/mesh-drop/internal/discovery/models.ts","./bindings/mesh-drop/internal/discovery/service.ts","./bindings/mesh-drop/internal/transfer/index.ts","./bindings/mesh-drop/internal/transfer/models.ts","./bindings/mesh-drop/internal/transfer/service.ts","./bindings/time/index.ts","./bindings/time/models.ts"],"version":"5.9.3"} \ No newline at end of file +{"root":["./src/main.ts","./src/vite-env.d.ts","./src/plugins/index.ts","./src/plugins/vuetify.ts","./src/App.vue","./src/components/MainLayout.vue","./src/components/PeerCard.vue","./src/components/SettingsView.vue","./src/components/TransferItem.vue","./src/components/modals/FileSendModal.vue","./src/components/modals/TextSendModal.vue","./bindings/github.com/wailsapp/wails/v3/internal/eventcreate.ts","./bindings/github.com/wailsapp/wails/v3/internal/eventdata.d.ts","./bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/index.ts","./bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/models.ts","./bindings/github.com/wailsapp/wails/v3/pkg/services/notifications/notificationservice.ts","./bindings/mesh-drop/index.ts","./bindings/mesh-drop/models.ts","./bindings/mesh-drop/internal/config/config.ts","./bindings/mesh-drop/internal/config/index.ts","./bindings/mesh-drop/internal/config/models.ts","./bindings/mesh-drop/internal/discovery/index.ts","./bindings/mesh-drop/internal/discovery/models.ts","./bindings/mesh-drop/internal/discovery/service.ts","./bindings/mesh-drop/internal/transfer/index.ts","./bindings/mesh-drop/internal/transfer/models.ts","./bindings/mesh-drop/internal/transfer/service.ts","./bindings/time/index.ts","./bindings/time/models.ts"],"version":"5.9.3"} \ No newline at end of file diff --git a/go.mod b/go.mod index e5f8e2c..9cdfac1 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( require ( dario.cat/mergo v1.0.2 // indirect + git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProtonMail/go-crypto v1.3.0 // indirect github.com/adrg/xdg v0.5.3 // indirect diff --git a/go.sum b/go.sum index 8957b11..dbb61f6 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3 h1:N3IGoHHp9pb6mj1cbXbuaSXV/UMKwmbKLf53nQmtqMA= +git.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3/go.mod h1:QtOLZGz8olr4qH2vWK0QH0w0O4T9fEIjMuWpKUsH7nc= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=