From f0f076450eceb1c41d065a4d1c935842caaccac8 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 29 Aug 2024 14:17:21 +0100 Subject: [PATCH 01/12] feat: don't show quotes on default macro params (#1487) Signed-off-by: Pedro Lamas --- src/components/widgets/macros/MacroBtn.vue | 22 +++++++++++++++---- src/util/__tests__/gcode-macro-params.spec.ts | 9 ++++---- src/util/gcode-macro-params.ts | 10 ++++++++- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/components/widgets/macros/MacroBtn.vue b/src/components/widgets/macros/MacroBtn.vue index bfb89ea596..59c574bfff 100644 --- a/src/components/widgets/macros/MacroBtn.vue +++ b/src/components/widgets/macros/MacroBtn.vue @@ -118,15 +118,29 @@ export default class MacroBtn extends Mixins(StateMixin) { */ get runCommand () { const command = this.macro.name.toUpperCase() - const paramSeparator = this.isMacroForGcodeCommand - ? '' - : '=' + const isMacroForGcodeCommand = this.isMacroForGcodeCommand if (this.params) { const params = this.isMacroWithRawParam ? this.params.message.value.toString() : Object.entries(this.params) - .map(([key, param]) => `${key.toUpperCase()}${paramSeparator}${param.value}`) + .map(([key, param]) => { + const value = param.value.toString() + + if (!value) { + return null + } + + const valueDelimiter = value.includes(' ') + ? '"' + : '' + const paramSeparator = isMacroForGcodeCommand && !valueDelimiter + ? '' + : '=' + + return `${key.toUpperCase()}${paramSeparator}${valueDelimiter}${value}${valueDelimiter}` + }) + .filter(x => x != null) .join(' ') if (params) { diff --git a/src/util/__tests__/gcode-macro-params.spec.ts b/src/util/__tests__/gcode-macro-params.spec.ts index 5be03027d8..fc26583d8f 100644 --- a/src/util/__tests__/gcode-macro-params.spec.ts +++ b/src/util/__tests__/gcode-macro-params.spec.ts @@ -15,8 +15,8 @@ describe('gcodeMacroParamDefault', () => { it.each([ [' | default(0, true) | float', '0'], [' | int | default(0.005, true) | float', '0.005'], - [' | default("PLA", true)', '"PLA"'], - [' | default("PLA")', '"PLA"'], + [' | default("PLA", true)', 'PLA'], + [' | default("PLA")', 'PLA'], ['| int | default(0.2)', '0.2'], ['| int | default(-0.2)', '-0.2'], ['| int | default( -0.2 )', '-0.2'], @@ -24,9 +24,8 @@ describe('gcodeMacroParamDefault', () => { ['|default(printer)|int', ''], ['|default(-somevar)|int', ''], ['|default(printer.configfile.settings.printer.max_velocity)|int', ''], - ['|default("this, \\"works,\\"" , true)|trim', '"this, \\"works,\\""'], - ['|default(",\\"fine,\\"",true)|trim', '",\\"fine,\\""'], - ['|default(\',2\',true)|trim', '\',2\''] + ['|default("this, \\"works,\\"" , true)|trim', 'this, \\"works,\\"'], + ['|default(",\\"fine,\\"",true)|trim', ',\\"fine,\\"'] ])('Expects param default of "%s" to be %s', (param, expected) => { expect(gcodeMacroParamDefault(param)).toBe(expected) }) diff --git a/src/util/gcode-macro-params.ts b/src/util/gcode-macro-params.ts index afaa577047..070436064a 100644 --- a/src/util/gcode-macro-params.ts +++ b/src/util/gcode-macro-params.ts @@ -4,7 +4,15 @@ const defaultValueRegExp = /\|\s*default\s*\(\s*((["'])(?:\\\2|.)*?\2|-?\d[^,)]* export const gcodeMacroParamDefault = (param: string) => { const valueMatch = defaultValueRegExp.exec(param) - return ((valueMatch && valueMatch[1]) || '').trim() + if (!valueMatch) { + return '' + } + + const value = (valueMatch[1] || '').trim() + + return valueMatch[2] + ? value.substring(1, value.length - 1) + : value } const gcodeMacroParams = (gcode: string) => { From 62fe1564faec39370ca7713855dd4d1507c0321b Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Sun, 8 Sep 2024 16:06:56 +0100 Subject: [PATCH 02/12] feat: show Minimum Cruise Ratio as percentage Signed-off-by: Pedro Lamas --- src/components/widgets/limits/PrinterLimits.vue | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/components/widgets/limits/PrinterLimits.vue b/src/components/widgets/limits/PrinterLimits.vue index 7c56d1222a..fd184a9607 100644 --- a/src/components/widgets/limits/PrinterLimits.vue +++ b/src/components/widgets/limits/PrinterLimits.vue @@ -79,12 +79,12 @@ :value="minimumCruiseRatio" :reset-value="defaultMinimumCruiseRatio" :min="0" - :max="0.99" - :step="0.01" + :max="100" :disabled="!klippyReady" overridable :locked="isMobileViewport" :loading="hasWait($waits.onSetMinimumCruiseRatio)" + suffix="%" @submit="setMinimumCruiseRatio" /> @@ -144,11 +144,15 @@ export default class PrinterLimits extends Mixins(StateMixin, BrowserMixin) { get defaultMinimumCruiseRatio (): number { const defaultMinimumCruiseRatio = this.$store.getters['printer/getPrinterSettings']('printer.minimum_cruise_ratio') as number | undefined - return defaultMinimumCruiseRatio ?? 0.5 + return Math.round((defaultMinimumCruiseRatio ?? 0.5) * 100) } get minimumCruiseRatio (): number | undefined { - return this.$store.state.printer.printer.toolhead.minimum_cruise_ratio as number | undefined + const minimumCruiseRatio = this.$store.state.printer.printer.toolhead.minimum_cruise_ratio as number | undefined + + return minimumCruiseRatio != null + ? Math.round(minimumCruiseRatio * 100) + : undefined } get defaultSquareCornerVelocity (): number { @@ -172,7 +176,7 @@ export default class PrinterLimits extends Mixins(StateMixin, BrowserMixin) { } setMinimumCruiseRatio (val: number) { - this.sendGcode(`SET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=${val}`, this.$waits.onSetMinimumCruiseRatio) + this.sendGcode(`SET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=${val / 100}`, this.$waits.onSetMinimumCruiseRatio) } setSquareCornerVelocity (val: number) { From 441825668ee52febc146d404a94b77cf41164d09 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Sun, 8 Sep 2024 16:25:46 +0100 Subject: [PATCH 03/12] feat: restore positioning mode after extrude/move (#1492) Signed-off-by: Pedro Lamas --- .../widgets/toolhead/ExtruderMoves.vue | 16 ++---- .../toolhead/ToolheadControlBarsAxis.vue | 12 ++-- .../toolhead/ToolheadControlCircle.vue | 56 +++++++++---------- .../widgets/toolhead/ToolheadControlCross.vue | 18 +++--- .../widgets/toolhead/ToolheadPosition.vue | 11 ++-- src/mixins/state.ts | 18 ++++++ 6 files changed, 69 insertions(+), 62 deletions(-) diff --git a/src/components/widgets/toolhead/ExtruderMoves.vue b/src/components/widgets/toolhead/ExtruderMoves.vue index a45f52d388..5298432ec4 100644 --- a/src/components/widgets/toolhead/ExtruderMoves.vue +++ b/src/components/widgets/toolhead/ExtruderMoves.vue @@ -31,7 +31,7 @@ {{ $t('app.general.btn.retract') }} $chevronUp @@ -68,7 +68,7 @@ {{ $t('app.general.btn.extrude') }} $chevronDown @@ -136,19 +136,15 @@ export default class ExtruderMoves extends Mixins(StateMixin, ToolheadMixin) { return this.$rules.numberLessThanOrEqual(this.maxExtrudeSpeed)(value) } - sendRetractGcode (amount: number, rate: number, wait?: string) { + retract () { if (this.valid) { - const gcode = `M83 -G1 E-${amount} F${rate * 60}` - this.sendGcode(gcode, wait) + this.sendExtrudeGcode(-this.extrudeLength, this.extrudeSpeed, this.$waits.onExtrude) } } - sendExtrudeGcode (amount: number, rate: number, wait?: string) { + extrude () { if (this.valid) { - const gcode = `M83 -G1 E${amount} F${rate * 60}` - this.sendGcode(gcode, wait) + this.sendExtrudeGcode(this.extrudeLength, this.extrudeSpeed, this.$waits.onExtrude) } } diff --git a/src/components/widgets/toolhead/ToolheadControlBarsAxis.vue b/src/components/widgets/toolhead/ToolheadControlBarsAxis.vue index 5075c242f3..c6e83ab71e 100644 --- a/src/components/widgets/toolhead/ToolheadControlBarsAxis.vue +++ b/src/components/widgets/toolhead/ToolheadControlBarsAxis.vue @@ -9,14 +9,14 @@ color="primary" :disabled="!klippyReady || printerPrinting || !homed" class="d-flex" - @click="sendMoveGcode($event)" + @click="moveBy($event)" > diff --git a/src/components/widgets/toolhead/ToolheadControlCross.vue b/src/components/widgets/toolhead/ToolheadControlCross.vue index 4f4e6e159e..bc6411f8cb 100644 --- a/src/components/widgets/toolhead/ToolheadControlCross.vue +++ b/src/components/widgets/toolhead/ToolheadControlCross.vue @@ -13,7 +13,7 @@ :color="axisButtonColor(yHomed)" :disabled="axisButtonDisabled(yHomed, yHasMultipleSteppers)" icon="$up" - @click="sendMoveGcode('Y', toolheadMoveLength)" + @click="moveAxisBy('Y', toolheadMoveLength)" /> @@ -39,7 +39,7 @@ :disabled="!klippyReady || (!yHomed && !yForceMove)" :readonly="printerBusy" :value="(useGcodeCoords) ? gcodePosition[1].toFixed(2) : toolheadPosition[1].toFixed(2)" - @change="moveTo('Y', $event)" + @change="moveAxisTo('Y', $event)" @focus="$event.target.select()" /> @@ -58,7 +58,7 @@ :disabled="!klippyReady || (!zHomed && !zForceMove)" :readonly="printerBusy" :value="(useGcodeCoords) ? gcodePosition[2].toFixed(2) : toolheadPosition[2].toFixed(2)" - @change="moveTo('Z', $event)" + @change="moveAxisTo('Z', $event)" @focus="$event.target.select()" /> @@ -159,7 +159,7 @@ export default class ToolheadPosition extends Mixins(StateMixin, ToolheadMixin) this.sendGcode(`G9${value}`) } - moveTo (axis: string, pos: string) { + moveAxisTo (axis: string, pos: string) { const axisIndexMap: any = { X: 0, Y: 1, Z: 2 } const currentPos = (this.useGcodeCoords) ? this.gcodePosition[axisIndexMap[axis]] @@ -174,8 +174,7 @@ export default class ToolheadPosition extends Mixins(StateMixin, ToolheadMixin) : this.$store.state.printer.printer.toolhead.max_accel this.sendGcode(`FORCE_MOVE STEPPER=stepper_${axis.toLowerCase()} DISTANCE=${pos} VELOCITY=${rate} ACCEL=${accel}`) } else { - this.sendGcode(`G90 -G1 ${axis}${pos} F${rate * 60}`) + this.sendMoveGcode(`${axis}${pos}`, rate, true) } } } diff --git a/src/mixins/state.ts b/src/mixins/state.ts index 0e5d23a9d2..49cbebc7d5 100644 --- a/src/mixins/state.ts +++ b/src/mixins/state.ts @@ -99,6 +99,24 @@ export default class StateMixin extends Vue { this.addConsoleEntry(gcode) } + sendMoveGcode (movementGcode: string, rate: number, absolute = false, wait?: string) { + const gcode = `SAVE_GCODE_STATE NAME=_ui_movement +G9${absolute ? 0 : 1} +G1 ${movementGcode} F${rate * 60} +RESTORE_GCODE_STATE NAME=_ui_movement` + + this.sendGcode(gcode, wait) + } + + sendExtrudeGcode (amount: number, rate: number, wait?: string) { + const gcode = `SAVE_GCODE_STATE NAME=_ui_retract +M83 +G1 E${amount} F${rate * 60} +RESTORE_GCODE_STATE NAME=_ui_retract` + + this.sendGcode(gcode, wait) + } + addConsoleEntry (message: string) { this.$store.dispatch('console/onAddConsoleEntry', { message, type: 'command' }) } From 8665e7d5693ecde9c359560bbc2f026db29747cb Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 12 Sep 2024 11:43:33 +0100 Subject: [PATCH 04/12] chore: dependency updates Signed-off-by: Pedro Lamas --- package-lock.json | 377 ++++++++++-------- package.json | 28 +- .../widgets/thermals/TemperatureTargets.vue | 4 - 3 files changed, 223 insertions(+), 186 deletions(-) diff --git a/package-lock.json b/package-lock.json index d04db8d8ca..026b19a32a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,11 +10,11 @@ "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^4.1.0", - "@fontsource/raleway": "^5.0.20", - "@fontsource/roboto": "^5.0.14", + "@fontsource/raleway": "^5.0.21", + "@fontsource/roboto": "^5.0.15", "@irojs/iro-core": "^1.2.1", "@jaames/iro": "^5.5.2", - "axios": "^1.7.5", + "axios": "^1.7.7", "consola": "^3.2.3", "dompurify": "^3.1.6", "echarts": "^5.5.1", @@ -22,7 +22,7 @@ "hls.js": "^1.5.15", "jwt-decode": "^4.0.0", "lodash-es": "^4.17.21", - "marked": "^14.1.0", + "marked": "^14.1.2", "marked-base-url": "^1.1.5", "md5": "^2.3.0", "monaco-editor": "^0.51.0", @@ -34,7 +34,7 @@ "qrcode.vue": "^1.7.0", "semver": "^7.6.3", "shlex": "^2.1.2", - "sortablejs": "^1.15.2", + "sortablejs": "^1.15.3", "uuid": "^10.0.0", "vue": "^2.7.16", "vue-class-component": "^7.2.6", @@ -58,34 +58,34 @@ "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/md5": "^2.3.5", - "@types/node": "^20.16.1", + "@types/node": "^20.16.5", "@types/semver": "^7.5.8", "@types/sortablejs": "^1.15.8", "@types/uuid": "^10.0.0", - "@typescript-eslint/eslint-plugin": "^7.17.0", - "@typescript-eslint/parser": "^7.17.0", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-vue2": "^2.3.1", "@vue/eslint-config-standard": "^8.0.1", "@vue/eslint-config-typescript": "^13.0.0", "@vue/test-utils": "^1.3.6", "@vue/tsconfig": "~0.1.3", "eslint": "^8.57.0", - "eslint-plugin-vue": "^9.27.0", - "husky": "^9.1.5", + "eslint-plugin-vue": "^9.28.0", + "husky": "^9.1.6", "jsdom": "^25.0.0", "mockdate": "^3.0.5", "monaco-vscode-textmate-theme-converter": "^0.1.7", - "rollup": "^4.21.1", + "rollup": "^4.21.3", "sass": "~1.32.13", "shx": "^0.3.4", - "skott": "^0.35.2", + "skott": "^0.35.3", "standard-version": "^9.5.0", "typescript": "^5.5.4", "unplugin-vue-components": "^0.27.4", - "vite": "^5.4.2", + "vite": "^5.4.4", "vite-plugin-checker": "^0.7.2", "vite-plugin-monaco-editor": "^1.1.0", - "vite-plugin-pwa": "^0.20.1", + "vite-plugin-pwa": "^0.20.5", "vitest": "^1.6.0", "vue-debounce-decorator": "^1.0.1", "vue-i18n-extract": "^2.0.7", @@ -2399,14 +2399,16 @@ } }, "node_modules/@fontsource/raleway": { - "version": "5.0.20", - "resolved": "https://registry.npmjs.org/@fontsource/raleway/-/raleway-5.0.20.tgz", - "integrity": "sha512-ZgTAEnlVYUIk75RM1Xsyk932zQ29DgxVr7io0QwVfDwcr88LHop0e2BZhBBI4MxL4b5L+T91RYwm6mLl/CXnpA==" + "version": "5.0.21", + "resolved": "https://registry.npmjs.org/@fontsource/raleway/-/raleway-5.0.21.tgz", + "integrity": "sha512-RXvN0mM6DyDQMdp+6OdaUBgcjDWpWeoDqutfCALo4OTpjqmcdpy9eJ7Z0rl1NOFOoltYth/nt27o7YKveT86dw==", + "license": "OFL-1.1" }, "node_modules/@fontsource/roboto": { - "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.14.tgz", - "integrity": "sha512-zHAxlTTm9RuRn9/StwclFJChf3z9+fBrOxC3fw71htjHP1BgXNISwRjdJtAKAmMe5S2BzgpnjkQR93P9EZYI/Q==" + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.15.tgz", + "integrity": "sha512-352XiID9jfwmYaHpdmS3ocGJi3PA+vOm4HzJIRfSyPEyLP6dZN8iiEKUbdAfB5YXQO3YxO2KZpR+R28q2zMiYw==", + "license": "Apache-2.0" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", @@ -3045,208 +3047,224 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz", - "integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz", - "integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz", - "integrity": "sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz", - "integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz", - "integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz", - "integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz", - "integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz", - "integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz", - "integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz", - "integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz", - "integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz", - "integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz", - "integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz", - "integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz", - "integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz", - "integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3345,10 +3363,11 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.16.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz", - "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==", + "version": "20.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", + "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -3407,16 +3426,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz", - "integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/type-utils": "7.17.0", - "@typescript-eslint/utils": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -3440,15 +3460,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "engines": { @@ -3468,13 +3489,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", - "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -3485,13 +3507,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", - "integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/utils": "7.17.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -3512,10 +3535,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -3525,13 +3549,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", - "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3553,15 +3578,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", - "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -3575,12 +3601,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/types": "7.18.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4270,9 +4297,10 @@ } }, "node_modules/axios": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", - "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -7073,17 +7101,18 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz", - "integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==", + "version": "9.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz", + "integrity": "sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "globals": "^13.24.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.0", + "semver": "^7.6.3", "vue-eslint-parser": "^9.4.3", "xml-name-validator": "^4.0.0" }, @@ -8596,10 +8625,11 @@ } }, "node_modules/husky": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", - "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", + "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true, + "license": "MIT", "bin": { "husky": "bin.js" }, @@ -9758,9 +9788,10 @@ } }, "node_modules/marked": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.0.tgz", - "integrity": "sha512-P93GikH/Pde0hM5TAXEd8I4JAYi8IB03n8qzW8Bh1BIEFpEyBoYxi/XWZA53LSpTeLBiMQOoSMj0u5E/tiVYTA==", + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.2.tgz", + "integrity": "sha512-f3r0yqpz31VXiDB/wj9GaOB0a2PRLQl6vJmXiFrniNwjkKdvakqJRULhjFKJpxOchlCRiG5fcacoUZY5Xa6PEQ==", + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -10879,9 +10910,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", "funding": [ { "type": "opencollective", @@ -10896,6 +10927,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.1", @@ -11579,10 +11611,11 @@ } }, "node_modules/rollup": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz", - "integrity": "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -11594,22 +11627,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.1", - "@rollup/rollup-android-arm64": "4.21.1", - "@rollup/rollup-darwin-arm64": "4.21.1", - "@rollup/rollup-darwin-x64": "4.21.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.1", - "@rollup/rollup-linux-arm-musleabihf": "4.21.1", - "@rollup/rollup-linux-arm64-gnu": "4.21.1", - "@rollup/rollup-linux-arm64-musl": "4.21.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.1", - "@rollup/rollup-linux-riscv64-gnu": "4.21.1", - "@rollup/rollup-linux-s390x-gnu": "4.21.1", - "@rollup/rollup-linux-x64-gnu": "4.21.1", - "@rollup/rollup-linux-x64-musl": "4.21.1", - "@rollup/rollup-win32-arm64-msvc": "4.21.1", - "@rollup/rollup-win32-ia32-msvc": "4.21.1", - "@rollup/rollup-win32-x64-msvc": "4.21.1", + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", "fsevents": "~2.3.2" } }, @@ -11949,10 +11982,11 @@ "dev": true }, "node_modules/skott": { - "version": "0.35.2", - "resolved": "https://registry.npmjs.org/skott/-/skott-0.35.2.tgz", - "integrity": "sha512-HDUWqsB4LBHi7qaXo3wtq926UpORd4ezU8FeKfKbTxY8i/Xas0U6+B6PkrLLRvcHIcp/iWUfXgGi8qh9RNBu0g==", + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/skott/-/skott-0.35.3.tgz", + "integrity": "sha512-pyHupNHBtmJJYvZu4tTwEQEOvoDSEnxoW9cdd1FXIoBiaDZkqHzD53DTNpOJYP5a8ceicoUjtzshFE2kspBzXA==", "dev": true, + "license": "MIT", "dependencies": { "@parcel/watcher": "^2.3.0", "@typescript-eslint/typescript-estree": "7.13.1", @@ -11976,7 +12010,7 @@ "parse-gitignore": "^2.0.0", "polka": "^0.5.2", "sirv": "^2.0.3", - "skott-webapp": "^2.1.1", + "skott-webapp": "^2.2.0", "typescript": "5.4.5" }, "bin": { @@ -11984,10 +12018,14 @@ } }, "node_modules/skott-webapp": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/skott-webapp/-/skott-webapp-2.1.1.tgz", - "integrity": "sha512-w5lNKEa/Az+S3d3KEX/4Xm2whJIZEoAQeRcfQggQTOlzBIXSBBm8H1NxdqfX9DWUIS4+WUse/1A/2wd9ynIBJA==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/skott-webapp/-/skott-webapp-2.2.0.tgz", + "integrity": "sha512-pvqvbvc1ULZdBDjo/vtztcuGOHsDEFpiqThnkKelOtPQylZqr1WBTpsGCWztAtsDJ8lRF/UmaVOdm89y8ToBLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "digraph-js": "^2.2.3" + } }, "node_modules/skott/node_modules/@typescript-eslint/types": { "version": "7.13.1", @@ -12094,9 +12132,10 @@ "dev": true }, "node_modules/sortablejs": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", - "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==" + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.3.tgz", + "integrity": "sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg==", + "license": "MIT" }, "node_modules/source-map": { "version": "0.6.1", @@ -13361,13 +13400,14 @@ } }, "node_modules/vite": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", - "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.4.tgz", + "integrity": "sha512-RHFCkULitycHVTtelJ6jQLd+KSAAzOgEYorV32R2q++M6COBjKJR6BxqClwp5sf0XaBDjVMuJ9wnNfyAJwjMkA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.41", + "postcss": "^8.4.43", "rollup": "^4.20.0" }, "bin": { @@ -13552,12 +13592,13 @@ } }, "node_modules/vite-plugin-pwa": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.20.1.tgz", - "integrity": "sha512-M6Pk4b18i5ryrhKgiIF8Zud0HGphYiCbEfLsCdlvmwn/CEnS6noVwfIDG/+3V7r6yxpPV/gLiKw+rIlCCiCCoQ==", + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.20.5.tgz", + "integrity": "sha512-aweuI/6G6n4C5Inn0vwHumElU/UEpNuO+9iZzwPZGTCH87TeZ6YFMrEY6ZUBQdIHHlhTsbMDryFARcSuOdsz9Q==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.3.4", + "debug": "^4.3.6", "pretty-bytes": "^6.1.1", "tinyglobby": "^0.2.0", "workbox-build": "^7.1.0", @@ -13570,7 +13611,7 @@ "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@vite-pwa/assets-generator": "^0.2.4", + "@vite-pwa/assets-generator": "^0.2.6", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0", "workbox-build": "^7.1.0", "workbox-window": "^7.1.0" diff --git a/package.json b/package.json index 84f0dce033..e394532614 100644 --- a/package.json +++ b/package.json @@ -33,11 +33,11 @@ "main": "index.js", "dependencies": { "@ctrl/tinycolor": "^4.1.0", - "@fontsource/raleway": "^5.0.20", - "@fontsource/roboto": "^5.0.14", + "@fontsource/raleway": "^5.0.21", + "@fontsource/roboto": "^5.0.15", "@irojs/iro-core": "^1.2.1", "@jaames/iro": "^5.5.2", - "axios": "^1.7.5", + "axios": "^1.7.7", "consola": "^3.2.3", "dompurify": "^3.1.6", "echarts": "^5.5.1", @@ -45,7 +45,7 @@ "hls.js": "^1.5.15", "jwt-decode": "^4.0.0", "lodash-es": "^4.17.21", - "marked": "^14.1.0", + "marked": "^14.1.2", "marked-base-url": "^1.1.5", "md5": "^2.3.0", "monaco-editor": "^0.51.0", @@ -57,7 +57,7 @@ "qrcode.vue": "^1.7.0", "semver": "^7.6.3", "shlex": "^2.1.2", - "sortablejs": "^1.15.2", + "sortablejs": "^1.15.3", "uuid": "^10.0.0", "vue": "^2.7.16", "vue-class-component": "^7.2.6", @@ -81,34 +81,34 @@ "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/md5": "^2.3.5", - "@types/node": "^20.16.1", + "@types/node": "^20.16.5", "@types/semver": "^7.5.8", "@types/sortablejs": "^1.15.8", "@types/uuid": "^10.0.0", - "@typescript-eslint/eslint-plugin": "^7.17.0", - "@typescript-eslint/parser": "^7.17.0", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", "@vitejs/plugin-vue2": "^2.3.1", "@vue/eslint-config-standard": "^8.0.1", "@vue/eslint-config-typescript": "^13.0.0", "@vue/test-utils": "^1.3.6", "@vue/tsconfig": "~0.1.3", "eslint": "^8.57.0", - "eslint-plugin-vue": "^9.27.0", - "husky": "^9.1.5", + "eslint-plugin-vue": "^9.28.0", + "husky": "^9.1.6", "jsdom": "^25.0.0", "mockdate": "^3.0.5", "monaco-vscode-textmate-theme-converter": "^0.1.7", - "rollup": "^4.21.1", + "rollup": "^4.21.3", "sass": "~1.32.13", "shx": "^0.3.4", - "skott": "^0.35.2", + "skott": "^0.35.3", "standard-version": "^9.5.0", "typescript": "^5.5.4", "unplugin-vue-components": "^0.27.4", - "vite": "^5.4.2", + "vite": "^5.4.4", "vite-plugin-checker": "^0.7.2", "vite-plugin-monaco-editor": "^1.1.0", - "vite-plugin-pwa": "^0.20.1", + "vite-plugin-pwa": "^0.20.5", "vitest": "^1.6.0", "vue-debounce-decorator": "^1.0.1", "vue-i18n-extract": "^2.0.7", diff --git a/src/components/widgets/thermals/TemperatureTargets.vue b/src/components/widgets/thermals/TemperatureTargets.vue index 782734e6af..0c78251a4f 100644 --- a/src/components/widgets/thermals/TemperatureTargets.vue +++ b/src/components/widgets/thermals/TemperatureTargets.vue @@ -260,10 +260,6 @@ import type { ChartData } from '@/store/charts/types' } }) export default class TemperatureTargets extends Mixins(StateMixin) { - get colors () { - return this.$colorset.colorList - } - get extruder () { return this.$store.state.printer.printer.extruder } From cd73dda48b7cfb7da02afc25ba696c3b47ee12fc Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 3 Sep 2024 23:09:23 +0200 Subject: [PATCH 05/12] feat(i18n-tr): Update Turkish translations Translated using Weblate Currently translated at 100.0% (757 of 757 strings) Translation: fluidd/fluidd Translate-URL: https://hosted.weblate.org/projects/fluidd/fluidd/tr/ Co-authored-by: fatih5228 Signed-off-by: fatih5228 --- src/locales/tr.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/locales/tr.yaml b/src/locales/tr.yaml index 6f9977c202..3b9e5b6cd9 100644 --- a/src/locales/tr.yaml +++ b/src/locales/tr.yaml @@ -522,6 +522,11 @@ app: standby: Beklemede title: printer_status: Yazıcı Durumu + stepper_driver_overheating: Step sürücü '%{name}' aşırı ısınıyor + msg: + possible_print_failure: Bu, başarısız bir yazdırmaya yol açabilir + url: + stepper_driver_overheating: '%{klipperDomain}/TMC_Drivers.html#tmc-reports-error-ot1overtemperror' setting: btn: add_camera: Kamera Ekle From 6c8008a2d6b8e10ad7769ca78395d18c1642416c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 3 Sep 2024 23:09:23 +0200 Subject: [PATCH 06/12] feat(i18n-pt_BR): Update Portuguese (Brazil) translations Translated using Weblate Currently translated at 61.2% (464 of 757 strings) Translation: fluidd/fluidd Translate-URL: https://hosted.weblate.org/projects/fluidd/fluidd/pt_BR/ feat(i18n-pt_BR): Update Portuguese (Brazil) translations Translated using Weblate Currently translated at 33.0% (250 of 757 strings) Translation: fluidd/fluidd Translate-URL: https://hosted.weblate.org/projects/fluidd/fluidd/pt_BR/ feat(i18n-pt_BR): Update Portuguese (Brazil) translations Translated using Weblate Currently translated at 0.6% (5 of 757 strings) Translation: fluidd/fluidd Translate-URL: https://hosted.weblate.org/projects/fluidd/fluidd/pt_BR/ feat(i18n-pt_BR): Add Portuguese (Brazil) translations Co-authored-by: Flavio Faria Co-authored-by: Hosted Weblate Signed-off-by: Flavio Faria --- src/locales/pt_BR.yaml | 626 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 626 insertions(+) create mode 100644 src/locales/pt_BR.yaml diff --git a/src/locales/pt_BR.yaml b/src/locales/pt_BR.yaml new file mode 100644 index 0000000000..97c621e29c --- /dev/null +++ b/src/locales/pt_BR.yaml @@ -0,0 +1,626 @@ +app: + bedmesh: + label: + active: ativo + base: base + box_scale: Caixa de escala + flat_surface: Mostrar plano baixo + mesh_matrix: Matriz de malha + wireframe: Wireframe + scale: Escala de cor + profile_name: Perfil + remove_profile: Remover perfil %{name} + probed_matrix: Matriz sondada + msg: + hint: Se salvar como algo diferente de % {name}, pode escolher remover também + o perfil % {name} + not_found: Não existe uma malha de nivelamentos da mesa. + not_loaded: Nenhuma malha carregada + tooltip: + load: Carregar perfil + copy_image: Copiar imagem da malha da cama + calibrate: Começa uma nova calibração, salvando o perfil como 'default' + delete: Apagar perfil + save: Salva perfil calibrado no arquivo printer.cfg + endpoint: + msg: + trouble: Está com problemas? Veja aqui + para mais informações. + error: + cors_error: bloqueado pela política CORS + cors_note: Isso pode significar que você precisa modificar a configuração do + moonraker. Consulte a documentação sobre configurações de várias impressoras + aqui + cant_connect: Algo está errado! O Fluidd não é possível encontrar o destino. + Tem a certeza de que este é o endereço correto? + hint: + add_printer: Ex., http://fluiddpi.local + tooltip: + endpoint_examples: 'Insira o URL da API.
Alguns exemplos podem ser;
http: //fluidd.local, http://192.168.1.150
' + file_system: + label: + transfer_rate: Taxa de transferência + uploaded: Carregado + view_section_documentation: Ver documentação para '%{section}' + dir_name: Nome diretório + disk_usage: Disco usado + diskinfo: Informações sobre o Disco + downloaded: Descarregado + file_name: Nome arquivo + title: + add_dir: Adicionar diretório + rename_dir: Renomear diretório + command_palette: Palete de comandos + devices: Dispositivos + duplicate_dir: Duplicar diretório + add_file: Adicionar arquivo + download_file: Recuperando arquivo + duplicate_file: Duplicar arquivo + go_to_file: Ir para arquivo + rename_file: Renomear arquivo + upload_file: Carregando arquivo | Carregando arquivos + filters: + label: + klipper_backup_files: Filtrar cópias de segurança do Klipper + hidden_files_folders: Filtrar arquivos e pastas escondidas + crowsnest_backup_files: Filtrar arquivos de cópia de segurança do Crowsnest + print_start_time: Filtrar já impressos + moonraker_backup_files: Filtrar arquivos de cópia de segurança do Moonraker + rolled_log_files: Filtrar arquivos de registo antigos + tooltip: + low_on_space: Pouco espaço em disco + items_count: '{count} item | {count} itens' + root_disabled: A raiz {root} não está disponível. Por favor verifique os seus + arquivos de log. + url: + klipper_config: '%{klipperDomain}/Config_Reference.html#%{hash}' + moonraker_config: https://moonraker.readthedocs.io/en/latest/configuration/#%{hash} + moonraker_telegram_bot_config: https://github.com/nlef/moonraker-telegram-bot/wiki/Sample-config#%{hash} + crowsnest_config: https://crowsnest.mainsail.xyz/configuration/%{hash}-section + msg: + not_found: Não foram encontrados arquivos + processing: Processando + overlay: + drag_files_folders_upload: Arrastar aqui, arquivos e pastas + para carregar + drag_files_enqueue: Arrastar para aqui, arquivos para juntar + à fila + gcode: + btn: + load_current_file: Carregar arquivo atual + label: + layer: Camada + layers: Camadas + parsed: Analisado + show_next_layer: Mostrar camada seguinte + show_parts: Mostrar partes + current_layer_height: Altura da Camada Atual + exclude_object: Excluir Objeto + show_current_layer: Apresentar camada atual + show_retractions: Mostrar retrações + parsing_file: Analisando Arquivo + follow_progress: Seguir progresso + show_extrusions: Apresentar extrusões + show_moves: Mostrar movimentos + show_previous_layer: Mostrar camada anterior + msg: + confirm: O arquivo "%{filename}" tem %{size}, o que pode consumir bastante recurso + para o seu sistema. Tem a certeza? + overlay: + drag_file_load: Arraste um arquivo de gcode para aqui afim + de carregar + general: + btn: + abort: Abortar + accept: Aceitar + add: Adicionar + add_dir: Adicionar diretório + add_file: Adicionar arquivo + add_to_queue: Adicionar à Fila + adjust_layout: Ajuste o layout do painel + clear_profile: Limpar Perfil + close: Fechar + config_reference: Referencias da configuração + copied: Copiado + copy: Copiar + create_zip_archive: Criar Arquivo ZIP + download: Download + duplicate: Duplicar + edit: Editar + exit_layout: Sair do modo de layout + filter: Filtrar + extrude: Extrudar + heaters_off: Heaters desligados + forgot_password: Esqueceu sua senha? + go_to_file: Ir para arquivo + remove: Remover + remove_all: Remover todos + rename: Renomear + reprint: Reimprimir + reset_file: Limpar arquivo + reset_layout: Reiniciar layout + restart_service_moonraker: Reiniciar Moonraker + resume: Retomar + retract: Retração + retry: Repetir + save: Salvar + return_dashboard: Voltar ao painel + shutdown: Desligar + set_default_layout: Escolher como Layout Padrão + upload_files: Carregar Arquivos + add_printer: Adicionar impressora + adjusted: Ajustado + all: Tudo + calibrate: Calibrar + cancel: Cancelar + delete: Apagar + load_all: Carregar tudo + auth_unsure: Não sabe porque está vendo isto? + job_queue: Fila de Trabalho + login: Login + logout: Logout + more_information: Mais informações + multiply: Multiplicar + pause: Pausa + preheat: Pré aquecer + restart_firmware: Reiniciar firmware + restart_service: Reiniciar %{service} + restart_service_klipper: Reiniciar Klipper + save_as: Salvar como + send: Enviar + set_color: Escolher Cor + snooze: Suspender + socket_reconnect: Reconectar + socket_refresh: Forçar atualização + thumbnail_size: Tamanho da miniatura + upload: Envio + upload_folder: Carregar Pasta + view: Ver + reset_default_layout: Voltar para o Layout Padrão + save_config_and_restart: Salvar a configuração e reiniciar + select_columns: Selecionar colunas + reset_stats: Reiniciar estatísticas + save_restart: Salvar e Reiniciar + upload_print: Envio e Impressão + refresh_metadata: Atualizar Metadados + presets: Pre configuração + refresh: Atualizar + preview_gcode: Pré-visualizar Gcode + quad_gantry_level: QGL + reload: Recarregar + print: Imprimir + reboot: Reiniciar + recover: Recuperar + error: + app_warnings_found: '%{appName} avisos encontrados.' + app_setup_link: Os requisitos de configuração do Fluidd podem ser encontrados + aqui. + components_config: A configuração do plugin Moonraker pode ser encontrada aqui. + failed_components: O Moonraker tem falhas nos plug-ins, verifique os logs, atualize + a sua configuração e reinicie o moonraker. + label: + add_filter: Adicionar Filtro + add_preset: Adicionar predefinição + layer: Camada + layout: Layout + ldap: LDAP + longest_job: Maior trabalho + pressure_advance: Pressure Advance + unknown: Desconhecido + unretract_speed: Velocidade de DesRetração + unsaved_changes: Mudanças não Salvas + alias: Apelido + apply_z_offset: Aplicar e atualizar Z_Offset + add_category: Adicionar categoria + accel_to_decel: Acel. para Desacel. + acceleration: Aceleração + actual_time: Atual + add_user: Adicionar usuário + all: Tudo + bars: Barras + command: Comando + clear_all: Limpar tudo + confirm: Confirmar + cross: Cruzar + circle: Círculo + compact: Compacto + current_password: Senha Atual + default: Padrão + edit_camera: Editar câmera + edit_filter: Editar Filtro + edit_preset: Editar predefinição + extrude_length: Comprimento extrusão + extrude_speed: Velocidade extrusão + filament: Filamento + finish_time: Terminar + flow: Fluxo + free: livre + heaters_busy: A impressora está ocupada no momento. Desligar os aquecedores + pode resultar em falha na impressão. + high: Alto + low: Baixo + m117: M117 + moonraker: Moonraker + name: Nome + no_notifications: Sem notificações + 'on': Ligado + 'off': Desligado + partial_of_total: '%{partial} de %{total}' + pause_at_layer: Pausa na Camada + pause_at_next_layer: Pausa na próxima camada + pause_at_layer_number: Pausa na camada número + power: Energia + printers: Impressoras + progress: Progresso + retract_length: Distância de Retração + retract_speed: Velocidade de Retração + save_as: Salvar como + screw_index: Índice do Parafuso + screw_name: Nome do parafuso + screw_number: Parafuso %{index} + services: Serviços + slicer: Fatiador + speed: Velocidade + sqv: Velocidade do canto quadrado + host: Host + manage_accounts: Administrar Contas + numeric_prefix_sort: Ordenar por prefixo numérico + range: Faixa + total_time: Tempo total + z_offset: Z Offset + username: Usuário + color: Cor + accepted_screws: Parafusos aceitos + add_camera: Adicionar Câmera + api_url: URL da API + change_password: Mudar Senha + file: Arquivo + current_user: Usuário atual + edit_user: Editar usuário + requested_speed: Velocidade + minimum_cruise_ratio: Taxa mínima de deslocamento + user_managed_source: Usuário administrado por autenticação %{source} + new_password: Nova senha + password: Senha + unretract_extra_length: Comprimento Extra de DesRetração + edit_category: Editar Categoria + file_time: Arquivo + api_key: Chave Api + category: Categoria + stepper_enabled: Motor Ligado + total_filament: Total filamento usado + total_jobs: Total trabalhos impressos + total_print_time_avg: Média por impressão + total_time_avg: Média por impressão + turn_device_off: Desligar %{device} + velocity: Velocidade + version_sort: Ordenar por versão + visible: Visível + thumbnail_size: Tamanho da Miniatura + auth_source: Fonte de Autenticação + total: Total + turn_device_on: Ligar %{device} + upload_and_print: Carregar e Imprimir + used: usado + total_filament_avg: Média por impressão + disabled_while_printing: Desativado durante a impressão + uncategorized: Sem categoria + total_print_time: Tempo de impressão total + smooth_time: Tempo de Suavização + synced_extruder: Extrusora sincronizada + msg: + password_changed: Senha trocada + wrong_password: Oops, algo errado! Sua senha esta correta? + welcome_back: Bem-vindo de volta.
Faça login abaixo para manter contato com + sua impressora. + offline_ready: Fluidd está pronto para trabalhar offline. + needs_refresh: Novo conteúdo disponível, clique no botão Recarregar para + atualizar. + pending_configuration_sections_deleted: As seguintes seções estão marcadas para + exclusão + rolledover_logs: 'Os seguintes logs de aplicativos foram transferidos: %{applications}' + not_valid_fluidd_backup_file: Não é um arquivo de backup válido do Fluidd! + fluidd_settings_backup_failed: Falha ao fazer backup das configurações do Fluidd! + fluidd_settings_restore_failed: Falha ao restaurar as configurações do Fluidd! + bed_screws_adjust: Clique em Ajustado se for necessário um ajuste significativo + no parafuso atual; caso contrário, clique em Aceitar para continuar. + simple_form: + msg: + confirm_reboot_host: Tem certeza? O sistema vai reiniciar. + confirm_shutdown_host: Tem certeza? O sistema vai desligar. + confirm: Tem certeza? + confirm_delete: Tem a certeza? Vai excluir o item selecionado. | Tem certeza? + Vai excluir os {count} itens selecionados. + confirm_clear_mesh: A impressora está ocupada no momento. Tem certeza de que + deseja limpar a malha da cama? + confirm_forcemove_toggle: Tem certeza? Isso pode danificar a impressora. + confirm_load_bedmesh_profile: A impressora está ocupada no momento. Tem certeza + de que deseja carregar o perfil %{name}? + confirm_remove_user: Tem certeza de que deseja remover o usuário %{username}? + confirm_service_start: Tem certeza de que deseja iniciar o serviço %{name}? + confirm_service_restart: Tem certeza de que deseja reiniciar o serviço %{name}? + confirm_service_stop: Tem certeza de que deseja interromper o serviço %{name}? + no_file_preview: '%{name} não pode ser visualizado no momento.' + confirm_cancel_print: Tem certeza de que deseja cancelar a impressão atual? + confirm_emergency_stop: Tem certeza de que deseja parar a impressora em emergência? + confirm_exclude_object: Tem certeza de que deseja excluir este objeto da impressão? + confirm_power_device_toggle: Tem certeza? Isso alternará a energia deste dispositivo. + unsaved_changes: Você tem alterações não salvas. Tem certeza de que deseja + fechar este arquivo? + error: + arrayofnums: Apenas números + exists: Já existe + invalid_url: URL inválido + max: Max. %{max} + min: Min. %{min} + min_or_0: Min %{min} ou 0 + required: Obrigatório + credentials: Credenciais inválidas + invalid_number: Número Inválido + invalid_expression: Expressão inválida + password_username: Não é possível encontrar o usuário + invalid_aspect: Proporção de Aspecto Inválida + table: + header: + slicer_version: Versão do Fatiador + start_time: Iniciado + size: Tamanho + actions: Ações + end_time: Terminado + estimated_time: Tempo estimado + filament: Filamento + filament_used: Filamento usado + first_layer_bed_temp: Temperatura da mesa na primeira camada + first_layer_extr_temp: Temperatura da extrusora na primeira camada + first_layer_height: Altura da primeira camada + height: Altura + last_printed: Ultima impressão + layer_height: Altura da camada + modified: Modificado + name: Nome + print_duration: Tempo de impressão + slicer: Fatiador + status: Estado + total_duration: Duração total + chamber_temp: Temperatura da câmara + filament_type: Tipo de filamento + filament_weight_total: Peso do filamento + filament_name: Nome do filamento + nozzle_diameter: Diâmetro do bico + time_added: Tempo adicionado + time_in_queue: Tempo na fila + title: + config_files: Arquivos de Configuração + add_printer: Adicionar impressora + bedmesh: Malha da Cama + bedmesh_controls: Controles da malha de cama + camera: Câmera | Cameras + configure: Configuração + endstops: Fins de curso + fans_outputs: Ventoinhas e saídas + history: Histórico trabalhos + home: Painel + jobs: Trabalhos + limits: Limites da impressora + macros: Macros + runout_sensors: Sensores filamento + settings: Definições + stats: Estatísticas da impressora + temperature: Temperatura + tool: Ferramenta + tune: Afinação + console: Console + add_chart: Adicionar gráfico + diagnostics: Diagnósticos + edit_chart: Editar gráfico + gcode_preview: Prévia do Gcode + job_queue: Fila de Trabalhos + metrics_explorer: Explorador de Métricas + not_found: 404 Não Encontrado + other_files: Outros arquivos + pending_configuration_changes: Alterações de configuração pendentes + retract: Retração pelo Firmware + rollover_logs: Limpar logs + system_overview: Informações do Sistema + system: Sistema + tooltip: + estop: Parada de Emergência + reload_klipper: Recarrega a configuração do klipper. + reload_restart_klipper: Recarrega a configuração do klipper e reinicia os MCUs. + restart_klipper: Reinicia o serviço do sistema klipper. + browse_metrics: Navegue pelas métricas disponíveis + managed_by_moonraker: Gerenciado pela sua configuração do moonraker + notifications: Notificações + file_browser_help: Arraste e solte arquivos ou pastas de fora do navegador para + carregá-los aqui
Mova arquivos e pastas arrastando e soltando-os em subpastas + ou ".." + file_browser_configuration_help: Copie arquivos e pastas para os Arquivos de + Configuração arrastando-os daqui e soltando-os ali + run_collector: Executar coletor + rollover_logs: Limpar Logs + setting: + btn: + add_thermal_preset: Adicionar Predefinição + reset: Reset + select_theme: Selecionar tema + add_camera: Adicionar Câmera + add_category: Adicionar categoria + add_metric: Adicionar métrica + add_user: Adicionar Usuário + restore: Restaurar + add_filter: Adicionar filtro + title: + camera: Camera | Cameras + general: Geral + macros: Macros + theme: Tema + thermal_presets: Pré-ajustes térmicos + tool: Ferramentas + camera_type_options: + mjpegadaptive: MJPEG Adaptativo + mjpegstream: MJPEG Stream + video: IP Câmera + iframe: Página HTTP + label: + all_off: Tudo Desligado + all_on: Tudo Ligado + camera_flip_x: Girar horizontal + camera_flip_y: Girar vertical + camera_stream_type: Tipo do stream + dark_mode: Modo escuro + default_extrude_length: Comprimento de extrusão padrão + default_extrude_speed: Velocidade de extrusão padrão + default_toolhead_move_length: Comprimento de movimento da Cabeça de Impressão + padrão + default_toolhead_xy_speed: Velocidade XY da Cabeça de Impressão padrão + default_toolhead_z_speed: Velocidade Z da Cabeça de Impressão padrão + enable: Habilitar + enable_notifications: Ativar notificações + fps_target: Frames por segundo + gcode_coords: Usar Coordenadas GCode + invert_x_control: Inverter controlo X + invert_y_control: Inverter controlo Y + invert_z_control: Inverter controlo Z + language: Mostrar Linguagem + primary_color: Cor principal + printer_name: Nome impressora + reset: Redefinir as configurações + thermal_preset_name: Nome predefinição + z_adjust_values: Ajustar valores Z + aspect_ratio: proporções de aspecto + auto_edit_extensions: Extensões para abrir automaticamente no modo de edição + auto_follow_on_file_load: Acompanhar automaticamente o progresso no carregamento + do arquivo + auto_load_on_print_start: Carregar arquivo automaticamente no início da impressão + auto_load_mobile_on_print_start: Carregar arquivo automaticamente em dispositivos + móveis + axes: Eixos + camera_fullscreen_action: + embed: Incorporado + title: Ação em tela cheia + camera_rotate_by: Girar por + camera_url_snapshot: URL para foto instantânea da câmera + camera_url_stream: URL para Stream da câmera + card: Cartão + collector: Coletor + confirm_on_estop: Exigir confirmação na Parada de Emergência + confirm_on_save_config_and_restart: Revise as alterações de configuração pendentes + antes de salvar e reiniciar + confirm_dirty_editor_close: Exigir confirmação ao fechar o editor com alterações + não salvas + contains: Contém + dashed: Tracejado + default_min_layer_height: Altura mínima padrão da camada + dotted: Pontilhado + draw_background: Desenhar fundo + draw_origin: Desenhar origem + enable_diagnostics: Habilitar diagnósticos + enable_xy_homing: Habilitar XY Homing + expression: Expressão + extrusion_line_width: Largura da linha de extrusão + confirm_on_power_device_change: Exigir confirmação sobre alterações de energia + do dispositivo + timer_options: + file: Estimativa do ficheiro + slicer: Slicer + duration: Só duração + filament: Estimativas filamento + tooltip: + gcode_coords: Usar a posição GCode em vez da posição da toolhead no painel + camera_rotate_options: + none: Nenhum + socket: + msg: + connecting: A conectar ao moonraker... + no_connection: Sem coneção ao moonraker. Por favor verifique o estado do moonraker + e / ou faça atualizar. + sensors: + title: + sensors: Sensores + console: + label: + flip_layout: Inverter layout + auto_scroll: Auto rolagem + hide_temp_waits: Ocultar espera de temperaturas + tooltip: + help: Introduza "help" para comandos
Carregue em Tab para auto + complemento
Carregue em e para o + histórico + chart: + label: + power: Energia + target: Alvo + rate_of_change: Mudança + current: Atual + item: Nome + tooltip: + help: Mantenha a tecla Shift pressionada para aumentar o zoom.
Clique num item para alternar no gráfico.
Clique em Ligar para alternar + no gráfico. + endstop: + label: + triggered: ATIVADO + open: ABERTO + msg: + subtitle: Use o botão de atualização para atualizar o status do fim de curso. + printer: + state: + busy: Ocupado + complete: Completo + idle: Disponivel + loading: Carregando + paused: Pausado + printing: Imprimindo + ready: Pronto + standby: Aguardando + cancelled: Cancelado + title: + printer_status: Status da impressora + stepper_driver_overheating: O driver do motor de passo '%{name}' está superaquecendo + msg: + possible_print_failure: Isso pode levar a uma impressão com falha + tool: + btn: + home_x: X + home_y: Y + tooltip: + extruder_disabled: extruder disabilitado, abaixo min_extrude_temp (%{min}°C) + home_xy: Origem XY + home_z: Origem Z + version: + btn: + check_for_updates: Verificar atualizações + finish: Terminar + update: Atualizar + label: + dirty: DIRTY + invalid: INVÁLIDO + os_packages: Pacotes de SO + package_list: Lista de Pacotes + up_to_date: ATUALIZADO + status: + finished: Atualizações terminadas + updating: A atualizar... + title: Atualizações de software + tooltip: + dirty: indicação de erro no cabeçalho, não existente na fonte ou fonte inválida + invalid: indicação de alteração do local da repo + packages: Pacotes + release_notes: Notas de lançamento + history: + msg: + confirm: Tem certeza? Isso limpará todo o histórico e as estatísticas da impressora + confirm_jobs: Tem certeza? Isso limpará todos os trabalhos. + confirm_stats: Tem certeza? Isso limpará todas as estatísticas. + job_queue: + msg: + confirm: Tem certeza? Isso limpará toda a fila da impressora + label: + number_of_copies: Número de cópias + title: + multiply_job: Multiplicar Trabalho | Multiplicar Trabalhos + tooltip: + help: Enfileirar trabalhos arrastando arquivos dos trabalhos e soltando-os aqui
Ajuste + a ordem dos trabalhos enfileirados arrastando-os para cima ou para baixo From e4567ac4409bf09591754e0edbf08c2580378ccf Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 3 Sep 2024 23:09:24 +0200 Subject: [PATCH 07/12] feat(i18n-fr): Update French translations Translated using Weblate Currently translated at 100.0% (757 of 757 strings) Translation: fluidd/fluidd Translate-URL: https://hosted.weblate.org/projects/fluidd/fluidd/fr/ Co-authored-by: Hosted Weblate Co-authored-by: Nackophilz Signed-off-by: Nackophilz --- src/locales/fr.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/locales/fr.yaml b/src/locales/fr.yaml index 5682b7d13d..de51d6c68e 100644 --- a/src/locales/fr.yaml +++ b/src/locales/fr.yaml @@ -498,6 +498,11 @@ app: cancelled: Annulé title: printer_status: État de l'imprimante + stepper_driver_overheating: Le moteur pas à pas '%{name}' surchauffe + url: + stepper_driver_overheating: '%{klipperDomain}/TMC_Drivers.html#tmc-reports-error-ot1overtemperror' + msg: + possible_print_failure: Cela peut entraîner un échec de l'impression setting: btn: add_camera: Ajouter une caméra @@ -750,7 +755,7 @@ app: canbus_warning: Seuls les nœuds de bus CAN non assignés peuvent être détectés.
Il est recommandé de n'avoir qu'un seul dispositif non assigné connecté au bus CAN pour éviter les problèmes de communication.
De plus amples informations - peuvent être trouvées ici. tool: btn: @@ -862,6 +867,8 @@ app: last_used: Dernière utilisation device_camera: Périphérique vendor: Vendeur + weight: Poids + length: Longueur btn: scan_code: Scanner le code select: Sélectionner | Sélectionner pour {macro} @@ -884,6 +891,7 @@ app: warn_on_filament_type_mismatch: Afficher un avertissement lorsque le type de filament de la bobine et celui sélectionné dans le slicer ne correspondent pas + remaining_filament_unit: Montrer le filament restant comme history: msg: confirm_jobs: Êtes-vous sûr ? Cette opération effacera tous les jobs. From 5889c887f47f89ae679af22e1a4a808455103045 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 12 Sep 2024 12:09:02 +0100 Subject: [PATCH 08/12] chore: updates CHANGELOG.md and package version Signed-off-by: Pedro Lamas --- CHANGELOG.md | 20 ++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc4ffba7f8..738f96f12e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.30.4](https://github.com/fluidd-core/fluidd/compare/v1.30.3...v1.30.4) (2024-09-12) + + +### Features + +* don't show quotes on default macro params ([#1487](https://github.com/fluidd-core/fluidd/issues/1487)) ([f0f0764](https://github.com/fluidd-core/fluidd/commit/f0f076450eceb1c41d065a4d1c935842caaccac8)) +* **FileSystem:** Filter KlipperScreen rolled logs ([#1482](https://github.com/fluidd-core/fluidd/issues/1482)) ([48c158f](https://github.com/fluidd-core/fluidd/commit/48c158fd0b0a59002c3216c4cbc9fd113a8d2c80)) +* hides macro parameters starting with "_" ([#1485](https://github.com/fluidd-core/fluidd/issues/1485)) ([872e9d8](https://github.com/fluidd-core/fluidd/commit/872e9d8455cdb82d3e522d61fd6a95e6a8c457b7)) +* **i18n-fr:** Update French translations ([e4567ac](https://github.com/fluidd-core/fluidd/commit/e4567ac4409bf09591754e0edbf08c2580378ccf)) +* **i18n-pt_BR:** Update Portuguese (Brazil) translations ([6c8008a](https://github.com/fluidd-core/fluidd/commit/6c8008a2d6b8e10ad7769ca78395d18c1642416c)) +* **i18n-tr:** Update Turkish translations ([cd73dda](https://github.com/fluidd-core/fluidd/commit/cd73dda48b7cfb7da02afc25ba696c3b47ee12fc)) +* restore positioning mode after extrude/move ([#1492](https://github.com/fluidd-core/fluidd/issues/1492)) ([4418256](https://github.com/fluidd-core/fluidd/commit/441825668ee52febc146d404a94b77cf41164d09)) +* show Minimum Cruise Ratio as percentage ([62fe156](https://github.com/fluidd-core/fluidd/commit/62fe1564faec39370ca7713855dd4d1507c0321b)) + + +### Bug Fixes + +* don't use separator for gcode macros ([#1483](https://github.com/fluidd-core/fluidd/issues/1483)) ([7ec4626](https://github.com/fluidd-core/fluidd/commit/7ec462600df533aa321d46832da11d3e867a0ef7)) +* null check cards on layout init ([#1484](https://github.com/fluidd-core/fluidd/issues/1484)) ([3f1d22e](https://github.com/fluidd-core/fluidd/commit/3f1d22ea0e48aa0809461171da2f340c2417382a)) + ## [1.30.3](https://github.com/fluidd-core/fluidd/compare/v1.30.2...v1.30.3) (2024-08-14) diff --git a/package-lock.json b/package-lock.json index 026b19a32a..79706dba42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "fluidd", - "version": "1.30.3", + "version": "1.30.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "fluidd", - "version": "1.30.3", + "version": "1.30.4", "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^4.1.0", diff --git a/package.json b/package.json index e394532614..80efd3928c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fluidd", - "version": "1.30.3", + "version": "1.30.4", "private": true, "type": "module", "description": "fluidd, a klipper web client.", From 0bddef26a72826dd677e4beca4cba4cd48633b46 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 12 Sep 2024 15:13:33 +0100 Subject: [PATCH 09/12] fix: set Minimum Cruise Ratio maximum to 99% Signed-off-by: Pedro Lamas --- src/components/widgets/limits/PrinterLimits.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/widgets/limits/PrinterLimits.vue b/src/components/widgets/limits/PrinterLimits.vue index fd184a9607..3ad7eeb7ff 100644 --- a/src/components/widgets/limits/PrinterLimits.vue +++ b/src/components/widgets/limits/PrinterLimits.vue @@ -79,9 +79,8 @@ :value="minimumCruiseRatio" :reset-value="defaultMinimumCruiseRatio" :min="0" - :max="100" + :max="99" :disabled="!klippyReady" - overridable :locked="isMobileViewport" :loading="hasWait($waits.onSetMinimumCruiseRatio)" suffix="%" From 07e94a5d6d8f5527691382f0f25e47de4842aae9 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Tue, 17 Sep 2024 09:57:41 +0100 Subject: [PATCH 10/12] style: remove pointer events from images Signed-off-by: Pedro Lamas --- .../widgets/camera/services/MjpegstreamerAdaptiveCamera.vue | 1 + src/components/widgets/camera/services/MjpegstreamerCamera.vue | 1 + src/components/widgets/filesystem/FileSystemBrowser.vue | 1 + src/components/widgets/filesystem/FileSystemContextMenu.vue | 2 +- src/components/widgets/status/StatusTab.vue | 2 ++ src/components/widgets/timelapse/TimelapseStatusCard.vue | 1 + src/scss/file-system.scss | 1 + 7 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/widgets/camera/services/MjpegstreamerAdaptiveCamera.vue b/src/components/widgets/camera/services/MjpegstreamerAdaptiveCamera.vue index 1d78b33d52..7398bf0c8c 100644 --- a/src/components/widgets/camera/services/MjpegstreamerAdaptiveCamera.vue +++ b/src/components/widgets/camera/services/MjpegstreamerAdaptiveCamera.vue @@ -4,6 +4,7 @@ :src="cameraImageSource" :style="cameraStyle" :crossorigin="crossorigin" + class="no-pointer-events" @load="handleImageLoad" > diff --git a/src/components/widgets/camera/services/MjpegstreamerCamera.vue b/src/components/widgets/camera/services/MjpegstreamerCamera.vue index 27c2c240e3..8a18226f95 100644 --- a/src/components/widgets/camera/services/MjpegstreamerCamera.vue +++ b/src/components/widgets/camera/services/MjpegstreamerCamera.vue @@ -4,6 +4,7 @@ :src="cameraImageSource" :style="cameraStyle" :crossorigin="crossorigin" + class="no-pointer-events" > diff --git a/src/components/widgets/filesystem/FileSystemBrowser.vue b/src/components/widgets/filesystem/FileSystemBrowser.vue index b1b828403f..045ad1c0eb 100644 --- a/src/components/widgets/filesystem/FileSystemBrowser.vue +++ b/src/components/widgets/filesystem/FileSystemBrowser.vue @@ -67,6 +67,7 @@
diff --git a/src/components/widgets/filesystem/FileSystemContextMenu.vue b/src/components/widgets/filesystem/FileSystemContextMenu.vue index 495003bc32..a3b02975af 100644 --- a/src/components/widgets/filesystem/FileSystemContextMenu.vue +++ b/src/components/widgets/filesystem/FileSystemContextMenu.vue @@ -175,7 +175,7 @@ @click="$emit('view-thumbnail', file)" > diff --git a/src/components/widgets/status/StatusTab.vue b/src/components/widgets/status/StatusTab.vue index 1ec86d64f0..5a50496088 100644 --- a/src/components/widgets/status/StatusTab.vue +++ b/src/components/widgets/status/StatusTab.vue @@ -430,6 +430,7 @@ export default class StatusTab extends Mixins(StateMixin, FilesMixin, ToolheadMi .print-thumb { display: block; max-height: 110px; + pointer-events: none; } .filename { @@ -453,5 +454,6 @@ export default class StatusTab extends Mixins(StateMixin, FilesMixin, ToolheadMi max-height: 70px; border-radius: 50%; overflow: hidden; + pointer-events: none; } diff --git a/src/components/widgets/timelapse/TimelapseStatusCard.vue b/src/components/widgets/timelapse/TimelapseStatusCard.vue index 97ff053d78..722d076917 100644 --- a/src/components/widgets/timelapse/TimelapseStatusCard.vue +++ b/src/components/widgets/timelapse/TimelapseStatusCard.vue @@ -157,6 +157,7 @@ export default class StatusCard extends Mixins(StateMixin, FilesMixin) {