diff --git a/owmods_gui/backend/src/logging.rs b/owmods_gui/backend/src/logging.rs index 752010a6..8b90b9e4 100644 --- a/owmods_gui/backend/src/logging.rs +++ b/owmods_gui/backend/src/logging.rs @@ -83,7 +83,7 @@ impl log::Log for Logger { ProgressPayload::Finish(payload) => self.app.emit_all("PROGRESS-FINISH", payload), ProgressPayload::Unknown => Ok(()), } - } else if self.enabled(record.metadata()) { + } else if self.enabled(record.metadata()) && record.target().starts_with("owmods") { let message = format!("{}", record.args()); self.write_log_to_file(record.level(), &message) .unwrap_or_else(|e| { diff --git a/owmods_gui/frontend/package.json b/owmods_gui/frontend/package.json index d3cb4a7c..919d1d32 100644 --- a/owmods_gui/frontend/package.json +++ b/owmods_gui/frontend/package.json @@ -37,6 +37,7 @@ "prettier": "^2.8.8", "sass": "^1.62.1", "typescript": "^5.0.4", - "vite": "^4.3.5" + "vite": "^4.3.5", + "vite-imagetools": "^5.0.3" } } diff --git a/owmods_gui/frontend/pnpm-lock.yaml b/owmods_gui/frontend/pnpm-lock.yaml index 2f53f92d..fddc98da 100644 --- a/owmods_gui/frontend/pnpm-lock.yaml +++ b/owmods_gui/frontend/pnpm-lock.yaml @@ -60,6 +60,9 @@ devDependencies: vite: specifier: ^4.3.5 version: 4.3.5(sass@1.62.1) + vite-imagetools: + specifier: ^5.0.3 + version: 5.0.3 packages: /@ampproject/remapping@2.2.1: @@ -796,6 +799,23 @@ packages: } dev: false + /@rollup/pluginutils@5.0.2: + resolution: + { + integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + } + engines: { node: ">=14.0.0" } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + "@types/estree": 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@tauri-apps/api@1.3.0: resolution: { @@ -804,6 +824,13 @@ packages: engines: { node: ">= 14.6.0", npm: ">= 6.6.0", yarn: ">= 1.19.1" } dev: false + /@types/estree@1.0.1: + resolution: + { + integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + } + dev: true + /@types/json-schema@7.0.11: resolution: { @@ -1175,6 +1202,13 @@ packages: } dev: true + /base64-js@1.5.1: + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + } + dev: true + /binary-extensions@2.2.0: resolution: { @@ -1183,6 +1217,17 @@ packages: engines: { node: ">=8" } dev: true + /bl@4.1.0: + resolution: + { + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + } + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + /brace-expansion@1.1.11: resolution: { @@ -1217,6 +1262,16 @@ packages: update-browserslist-db: 1.0.11(browserslist@4.21.5) dev: true + /buffer@5.7.1: + resolution: + { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + /call-bind@1.0.2: resolution: { @@ -1283,6 +1338,13 @@ packages: fsevents: 2.3.2 dev: true + /chownr@1.1.4: + resolution: + { + integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + } + dev: true + /color-convert@1.9.3: resolution: { @@ -1316,6 +1378,27 @@ packages: } dev: true + /color-string@1.9.1: + resolution: + { + integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + } + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: true + + /color@4.2.3: + resolution: + { + integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + } + engines: { node: ">=12.5.0" } + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: true + /concat-map@0.0.1: resolution: { @@ -1364,6 +1447,24 @@ packages: ms: 2.1.2 dev: true + /decompress-response@6.0.0: + resolution: + { + integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + } + engines: { node: ">=10" } + dependencies: + mimic-response: 3.1.0 + dev: true + + /deep-extend@0.6.0: + resolution: + { + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + } + engines: { node: ">=4.0.0" } + dev: true + /deep-is@0.1.4: resolution: { @@ -1382,6 +1483,14 @@ packages: object-keys: 1.1.1 dev: true + /detect-libc@2.0.1: + resolution: + { + integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + } + engines: { node: ">=8" } + dev: true + /dir-glob@3.0.1: resolution: { @@ -1419,6 +1528,15 @@ packages: } dev: true + /end-of-stream@1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + } + dependencies: + once: 1.4.0 + dev: true + /es-abstract@1.21.2: resolution: { @@ -1721,6 +1839,13 @@ packages: engines: { node: ">=4.0" } dev: true + /estree-walker@2.0.2: + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + } + dev: true + /esutils@2.0.3: resolution: { @@ -1729,6 +1854,14 @@ packages: engines: { node: ">=0.10.0" } dev: true + /expand-template@2.0.3: + resolution: + { + integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + } + engines: { node: ">=6" } + dev: true + /fast-deep-equal@3.1.3: resolution: { @@ -1831,6 +1964,13 @@ packages: is-callable: 1.2.7 dev: true + /fs-constants@1.0.0: + resolution: + { + integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + } + dev: true + /fs.realpath@1.0.0: resolution: { @@ -1906,6 +2046,13 @@ packages: get-intrinsic: 1.2.0 dev: true + /github-from-package@0.0.0: + resolution: + { + integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + } + dev: true + /glob-parent@5.1.2: resolution: { @@ -2067,6 +2214,13 @@ packages: function-bind: 1.1.1 dev: true + /ieee754@1.2.1: + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + } + dev: true + /ignore@5.2.4: resolution: { @@ -2075,6 +2229,16 @@ packages: engines: { node: ">= 4" } dev: true + /imagetools-core@4.0.2: + resolution: + { + integrity: sha512-VG5x5MA2W5aQEBMFmk2rgRt+apkR6MSqxLgkw2QDfhOXsS+2R2dCMTjdlcEWUrn8M291bbsW4A15yF5YODc5Dw== + } + engines: { node: ">=12.0.0" } + dependencies: + sharp: 0.32.1 + dev: true + /immutable@4.3.0: resolution: { @@ -2118,6 +2282,13 @@ packages: } dev: true + /ini@1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + } + dev: true + /internal-slot@1.0.5: resolution: { @@ -2141,6 +2312,13 @@ packages: is-typed-array: 1.1.10 dev: true + /is-arrayish@0.3.2: + resolution: + { + integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + } + dev: true + /is-bigint@1.0.4: resolution: { @@ -2461,6 +2639,14 @@ packages: picomatch: 2.3.1 dev: true + /mimic-response@3.1.0: + resolution: + { + integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + } + engines: { node: ">=10" } + dev: true + /minimatch@3.1.2: resolution: { @@ -2470,6 +2656,20 @@ packages: brace-expansion: 1.1.11 dev: true + /minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + } + dev: true + + /mkdirp-classic@0.5.3: + resolution: + { + integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + } + dev: true + /ms@2.1.2: resolution: { @@ -2486,6 +2686,13 @@ packages: hasBin: true dev: true + /napi-build-utils@1.0.2: + resolution: + { + integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + } + dev: true + /natural-compare-lite@1.4.0: resolution: { @@ -2500,6 +2707,23 @@ packages: } dev: true + /node-abi@3.40.0: + resolution: + { + integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== + } + engines: { node: ">=10" } + dependencies: + semver: 7.5.0 + dev: true + + /node-addon-api@6.1.0: + resolution: + { + integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + } + dev: true + /node-releases@2.0.10: resolution: { @@ -2717,6 +2941,28 @@ packages: source-map-js: 1.0.2 dev: true + /prebuild-install@7.1.1: + resolution: + { + integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + } + engines: { node: ">=10" } + hasBin: true + dependencies: + detect-libc: 2.0.1 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.40.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: true + /prelude-ls@1.2.1: resolution: { @@ -2745,6 +2991,16 @@ packages: react-is: 16.13.1 dev: true + /pump@3.0.0: + resolution: + { + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + /punycode@2.3.0: resolution: { @@ -2760,6 +3016,19 @@ packages: } dev: true + /rc@1.2.8: + resolution: + { + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + } + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + /react-dom@18.2.0(react@18.2.0): resolution: { @@ -2823,6 +3092,18 @@ packages: loose-envify: 1.4.0 dev: false + /readable-stream@3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + } + engines: { node: ">= 6" } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + /readdirp@3.6.0: resolution: { @@ -2903,6 +3184,13 @@ packages: queue-microtask: 1.2.3 dev: true + /safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + } + dev: true + /safe-regex-test@1.0.0: resolution: { @@ -2955,6 +3243,24 @@ packages: lru-cache: 6.0.0 dev: true + /sharp@0.32.1: + resolution: + { + integrity: sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg== + } + engines: { node: ">=14.15.0" } + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.1 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.0 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: true + /shebang-command@2.0.0: resolution: { @@ -2984,6 +3290,33 @@ packages: object-inspect: 1.12.3 dev: true + /simple-concat@1.0.1: + resolution: + { + integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + } + dev: true + + /simple-get@4.0.1: + resolution: + { + integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + } + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: true + + /simple-swizzle@0.2.2: + resolution: + { + integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + } + dependencies: + is-arrayish: 0.3.2 + dev: true + /slash@3.0.0: resolution: { @@ -3050,6 +3383,15 @@ packages: es-abstract: 1.21.2 dev: true + /string_decoder@1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + } + dependencies: + safe-buffer: 5.2.1 + dev: true + /strip-ansi@6.0.1: resolution: { @@ -3060,6 +3402,14 @@ packages: ansi-regex: 5.0.1 dev: true + /strip-json-comments@2.0.1: + resolution: + { + integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + } + engines: { node: ">=0.10.0" } + dev: true + /strip-json-comments@3.1.1: resolution: { @@ -3096,6 +3446,32 @@ packages: engines: { node: ">= 0.4" } dev: true + /tar-fs@2.1.1: + resolution: + { + integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + } + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-stream@2.2.0: + resolution: + { + integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + } + engines: { node: ">=6" } + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + /text-table@0.2.0: resolution: { @@ -3141,6 +3517,15 @@ packages: typescript: 5.0.4 dev: true + /tunnel-agent@0.6.0: + resolution: + { + integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + } + dependencies: + safe-buffer: 5.2.1 + dev: true + /type-check@0.4.0: resolution: { @@ -3214,6 +3599,26 @@ packages: punycode: 2.3.0 dev: true + /util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + } + dev: true + + /vite-imagetools@5.0.3: + resolution: + { + integrity: sha512-K4578Kq7d608i4U/tCPfHVn9iOIUd+VyjtxuFtp3wSXOJZbsAZNc7V3G53s8LHiDY+ROKeoWyfXtq1VwTv9UFQ== + } + engines: { node: ">=12.0.0" } + dependencies: + "@rollup/pluginutils": 5.0.2 + imagetools-core: 4.0.2 + transitivePeerDependencies: + - rollup + dev: true + /vite@4.3.5(sass@1.62.1): resolution: { diff --git a/owmods_gui/frontend/src/components/modals/AboutModal.tsx b/owmods_gui/frontend/src/components/modals/AboutModal.tsx index db83c15e..9a3b8464 100644 --- a/owmods_gui/frontend/src/components/modals/AboutModal.tsx +++ b/owmods_gui/frontend/src/components/modals/AboutModal.tsx @@ -1,5 +1,5 @@ import Modal from "./Modal"; -import logo from "@assets/images/logo.png"; +import logo from "@assets/images/logo.png?w=256&h=256&format=webp&imagetools"; import Icon from "@components/common/Icon"; import { BsDiscord, BsGithub } from "react-icons/bs"; import { useGetTranslation } from "@hooks"; diff --git a/owmods_gui/frontend/src/imagetools.d.ts b/owmods_gui/frontend/src/imagetools.d.ts new file mode 100644 index 00000000..f3c1ed2a --- /dev/null +++ b/owmods_gui/frontend/src/imagetools.d.ts @@ -0,0 +1,9 @@ +declare module "*&imagetools" { + /** + * actual types + * - code https://github.com/JonasKruckenberg/imagetools/blob/main/packages/core/src/output-formats.ts + * - docs https://github.com/JonasKruckenberg/imagetools/blob/main/docs/guide/getting-started.md#metadata + */ + const out; + export default out; +} diff --git a/owmods_gui/frontend/vite.config.ts b/owmods_gui/frontend/vite.config.ts index 455148d1..8646a7ee 100644 --- a/owmods_gui/frontend/vite.config.ts +++ b/owmods_gui/frontend/vite.config.ts @@ -1,5 +1,9 @@ +/// + import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; +import { imagetools } from "vite-imagetools"; + import path from "path"; export default defineConfig({ @@ -9,7 +13,7 @@ export default defineConfig({ strictPort: true }, envPrefix: ["VITE_", "TAURI_"], - plugins: [react()], + plugins: [react(), imagetools()], build: { rollupOptions: { input: {