{{ $t('GCodeViewer.Downloading') }} - {{ Math.round(downloadSnackbar.percent) }} % @
diff --git a/src/components/mixins/theme.ts b/src/components/mixins/theme.ts
new file mode 100644
index 000000000..fee4bfb5b
--- /dev/null
+++ b/src/components/mixins/theme.ts
@@ -0,0 +1,47 @@
+import Vue from 'vue'
+import Component from 'vue-class-component'
+
+@Component
+export default class ThemeMixin extends Vue {
+ protected fgColor(alpha: number = 1, dark: boolean = this.$vuetify.theme.dark): string {
+ const base = dark ? 255 : 0
+ return `rgba(${base}, ${base}, ${base}, ${alpha})`
+ }
+
+ protected bgColor(alpha: number = 1) {
+ return this.fgColor(alpha, !this.$vuetify.theme.dark)
+ }
+
+ get fgColorHi() {
+ return this.fgColor(0.8)
+ }
+
+ get fgColorMid() {
+ return this.fgColor(0.5)
+ }
+
+ get fgColorLow() {
+ return this.fgColor(0.2)
+ }
+
+ get fgColorFaint() {
+ return this.fgColor(0.1)
+ }
+
+ get machineButtonCol() {
+ return this.$vuetify.theme.dark ? 'grey darken-3' : 'grey lighten-1'
+ }
+
+ get draggableBgStyle() {
+ const col = this.$vuetify.theme.dark ? '#282828' : '#e7e7e7'
+ return `background-color: ${col}`
+ }
+
+ get progressBarColor() {
+ return this.$vuetify.theme.dark ? 'white' : 'primary'
+ }
+
+ get sidebarBgImage() {
+ return this.$vuetify.theme.dark ? '/img/sidebar-background.svg' : '/img/sidebar-background-light.svg'
+ }
+}
diff --git a/src/components/panels/Extruder/ExtruderControlPanelControl.vue b/src/components/panels/Extruder/ExtruderControlPanelControl.vue
index 1c142e972..fdb7a10a8 100644
--- a/src/components/panels/Extruder/ExtruderControlPanelControl.vue
+++ b/src/components/panels/Extruder/ExtruderControlPanelControl.vue
@@ -311,6 +311,10 @@ export default class ExtruderControlPanel extends Mixins(BaseMixin, ExtruderMixi
}
}
+html.theme--light ._btn-group .v-btn {
+ border-color: rgba(0, 0, 0, 0.12) !important;
+}
+
._btn-qs {
font-size: 0.8rem !important;
max-height: 24px;
diff --git a/src/components/panels/Extruder/ExtruderControlPanelTools.vue b/src/components/panels/Extruder/ExtruderControlPanelTools.vue
index 5248d26f8..5cce8979d 100644
--- a/src/components/panels/Extruder/ExtruderControlPanelTools.vue
+++ b/src/components/panels/Extruder/ExtruderControlPanelTools.vue
@@ -66,4 +66,8 @@ export default class ExtruderControlPanel extends Mixins(BaseMixin, ControlMixin
border-left-width: 0;
}
}
+
+html.theme--light ._btn-group .v-btn {
+ border-color: rgba(0, 0, 0, 0.12);
+}
diff --git a/src/components/panels/FarmPrinterPanel.vue b/src/components/panels/FarmPrinterPanel.vue
index 00125b2c4..bcfb55959 100644
--- a/src/components/panels/FarmPrinterPanel.vue
+++ b/src/components/panels/FarmPrinterPanel.vue
@@ -57,15 +57,17 @@
style="background-color: rgba(0, 0, 0, 0.3); backdrop-filter: blur(3px)">
-
-
-
-
-
-
+
+
{{ printer_status }}
@@ -121,6 +123,7 @@ import { Debounce } from 'vue-debounce-decorator'
import WebcamMixin from '@/components/mixins/webcam'
import WebcamWrapper from '@/components/webcams/WebcamWrapper.vue'
import { GuiWebcamStateWebcam } from '@/store/gui/webcams/types'
+import ThemeMixin from '@/components/mixins/theme'
@Component({
components: {
@@ -129,7 +132,7 @@ import { GuiWebcamStateWebcam } from '@/store/gui/webcams/types'
'mainsail-logo': MainsailLogo,
},
})
-export default class FarmPrinterPanel extends Mixins(BaseMixin, WebcamMixin) {
+export default class FarmPrinterPanel extends Mixins(BaseMixin, ThemeMixin, WebcamMixin) {
mdiPrinter3d = mdiPrinter3d
mdiWebcam = mdiWebcam
mdiMenuDown = mdiMenuDown
@@ -176,9 +179,9 @@ export default class FarmPrinterPanel extends Mixins(BaseMixin, WebcamMixin) {
}
get printer_image() {
- if (this.currentWebcam) return '/img/sidebar-background.svg'
+ if (this.currentWebcam) return this.sidebarBgImage
- return this.$store.getters['farm/' + this.printer._namespace + '/getImage']
+ return this.$store.getters['farm/' + this.printer._namespace + '/getImage'] ?? this.sidebarBgImage
}
get printer_logo() {
diff --git a/src/components/panels/Machine/ConfigFilesPanel.vue b/src/components/panels/Machine/ConfigFilesPanel.vue
index 8d2d081e7..23e2c8085 100644
--- a/src/components/panels/Machine/ConfigFilesPanel.vue
+++ b/src/components/panels/Machine/ConfigFilesPanel.vue
@@ -515,7 +515,7 @@
-
+
({{ uploadSnackbar.number }}/{{ uploadSnackbar.max }})
@@ -536,6 +536,7 @@
+
+
diff --git a/src/components/panels/ToolheadControls/CircleControl.vue b/src/components/panels/ToolheadControls/CircleControl.vue
index abf89d2a7..265e8155f 100644
--- a/src/components/panels/ToolheadControls/CircleControl.vue
+++ b/src/components/panels/ToolheadControls/CircleControl.vue
@@ -745,6 +745,22 @@ svg a.step.outer {
fill: #333;
}
+html.theme--light svg a.step.inner {
+ fill: #ccc;
+}
+
+html.theme--light svg a.step.inner-mid {
+ fill: #ddd;
+}
+
+html.theme--light svg a.step.outer-mid {
+ fill: #eee;
+}
+
+html.theme--light svg a.step.outer {
+ fill: #fff;
+}
+
svg .disabled a.step {
pointer-events: none;
}
@@ -758,6 +774,11 @@ svg g#stepsXY {
fill: white;
}
+html.theme--light svg g#stepsZ,
+html.theme--light svg g#stepsXY {
+ fill: black;
+}
+
svg a#tilt_adjust text {
font-family: 'Roboto-Regular', 'Roboto', sans-serif;
font-size: 3px;
@@ -790,6 +811,11 @@ svg g#stepsZ.disabled text {
fill: rgba(255, 255, 255, 0.3);
}
+html.theme--light svg g#stepsXY.disabled text,
+html.theme--light svg g#stepsZ.disabled text {
+ fill: rgba(0, 0, 0, 0.5);
+}
+
svg a#tilt_adjust,
svg a#stepper_off {
transition: opacity 250ms;
diff --git a/src/components/panels/ToolheadControls/ZoffsetControl.vue b/src/components/panels/ToolheadControls/ZoffsetControl.vue
index ad8794731..207c447ce 100644
--- a/src/components/panels/ToolheadControls/ZoffsetControl.vue
+++ b/src/components/panels/ToolheadControls/ZoffsetControl.vue
@@ -237,6 +237,10 @@ export default class ZoffsetControl extends Mixins(BaseMixin, ZoffsetMixin) {
}
}
+html.theme--light ._btn-group .v-btn {
+ border-color: rgba(0, 0, 0, 0.12);
+}
+
._btn-qs {
font-size: 0.8rem !important;
font-weight: 400;
diff --git a/src/components/settings/SettingsMacrosTabExpert.vue b/src/components/settings/SettingsMacrosTabExpert.vue
index fb04efba7..eb4b5313d 100644
--- a/src/components/settings/SettingsMacrosTabExpert.vue
+++ b/src/components/settings/SettingsMacrosTabExpert.vue
@@ -64,7 +64,7 @@
attach
@change="updateGroupOptionColor">
-
+
@@ -93,9 +93,9 @@
outlined
v-bind="attrs"
class="ml-3 minwidth-0 px-2"
- :color="editGroup.showInStandby ? '' : 'secondary'"
+ :color="editGroup?.showInStandby ? '' : 'secondary'"
v-on="on"
- @click="updateGroupOptionShowInStandby(!editGroup.showInStandby)">
+ @click="updateGroupOptionShowInStandby(!editGroup?.showInStandby)">
{{ mdiSleep }}
@@ -108,9 +108,9 @@
outlined
v-bind="attrs"
class="ml-3 minwidth-0 px-2"
- :color="editGroup.showInPause ? '' : 'secondary'"
+ :color="editGroup?.showInPause ? '' : 'secondary'"
v-on="on"
- @click="updateGroupOptionShowInPause(!editGroup.showInPause)">
+ @click="updateGroupOptionShowInPause(!editGroup?.showInPause)">
{{ mdiPause }}
@@ -123,9 +123,9 @@
outlined
v-bind="attrs"
class="ml-3 minwidth-0 px-2"
- :color="editGroup.showInPrinting ? '' : 'secondary'"
+ :color="editGroup?.showInPrinting ? '' : 'secondary'"
v-on="on"
- @click="updateGroupOptionShowInPrinting(!editGroup.showInPrinting)">
+ @click="updateGroupOptionShowInPrinting(!editGroup?.showInPrinting)">
{{ mdiPrinter3dNozzle }}
@@ -134,7 +134,7 @@
{{ $t('Settings.MacrosTab.GroupMacros') }}
-
+
+ class="my-2 mx-0"
+ :style="draggableBgStyle">
{{ mdiDragVertical }}
@@ -292,6 +293,7 @@
-
-
diff --git a/src/components/settings/SettingsNavigationTab.vue b/src/components/settings/SettingsNavigationTab.vue
index d3f23d0ef..9e8dcd7fe 100644
--- a/src/components/settings/SettingsNavigationTab.vue
+++ b/src/components/settings/SettingsNavigationTab.vue
@@ -6,7 +6,8 @@
@@ -17,6 +18,7 @@
import { Component, Mixins } from 'vue-property-decorator'
import BaseMixin from '@/components/mixins/base'
import NavigationMixin, { NaviPoint } from '@/components/mixins/navigation'
+import ThemeMixin from '@/components/mixins/theme'
import SettingsRow from '@/components/settings/SettingsRow.vue'
import draggable from 'vuedraggable'
import SettingsNavigationTabItem from '@/components/settings/SettingsNavigationTabItem.vue'
@@ -24,7 +26,7 @@ import SettingsNavigationTabItem from '@/components/settings/SettingsNavigationT
@Component({
components: { SettingsNavigationTabItem, SettingsRow, draggable },
})
-export default class SettingsNavigationTab extends Mixins(NavigationMixin, BaseMixin) {
+export default class SettingsNavigationTab extends Mixins(NavigationMixin, BaseMixin, ThemeMixin) {
get sortableNaviPoints() {
return this.naviPoints.filter((naviPoint) => naviPoint.position > 0)
}
@@ -45,9 +47,3 @@ export default class SettingsNavigationTab extends Mixins(NavigationMixin, BaseM
}
}
-
-
diff --git a/src/components/settings/SettingsNavigationTabItem.vue b/src/components/settings/SettingsNavigationTabItem.vue
index 58b041333..8a24b119c 100644
--- a/src/components/settings/SettingsNavigationTabItem.vue
+++ b/src/components/settings/SettingsNavigationTabItem.vue
@@ -1,5 +1,5 @@
-
+
{{ mdiDragVertical }}
@@ -15,6 +15,7 @@
import { Component, Mixins, Prop } from 'vue-property-decorator'
import BaseMixin from '@/components/mixins/base'
import NavigationMixin, { NaviPoint } from '@/components/mixins/navigation'
+import ThemeMixin from '@/components/mixins/theme'
import SettingsRow from '@/components/settings/SettingsRow.vue'
import draggable from 'vuedraggable'
import { mdiDragVertical, mdiCheckboxMarked, mdiCheckboxBlankOutline } from '@mdi/js'
@@ -22,7 +23,7 @@ import { mdiDragVertical, mdiCheckboxMarked, mdiCheckboxBlankOutline } from '@md
@Component({
components: { SettingsRow, draggable },
})
-export default class SettingsNavigationTab extends Mixins(NavigationMixin, BaseMixin) {
+export default class SettingsNavigationTab extends Mixins(NavigationMixin, BaseMixin, ThemeMixin) {
mdiDragVertical = mdiDragVertical
@Prop({ type: Object, required: true }) naviPoint!: NaviPoint
@@ -54,9 +55,3 @@ export default class SettingsNavigationTab extends Mixins(NavigationMixin, BaseM
}
}
-
-
diff --git a/src/components/settings/SettingsUiSettingsTab.vue b/src/components/settings/SettingsUiSettingsTab.vue
index f8339aca3..bd4ba51e2 100644
--- a/src/components/settings/SettingsUiSettingsTab.vue
+++ b/src/components/settings/SettingsUiSettingsTab.vue
@@ -2,6 +2,12 @@
+
+
+
+
+ class="panel-toolbar"
+ :style="additionalStyle">
@@ -80,6 +81,10 @@ export default class Panel extends Mixins(BaseMixin) {
return output
}
+
+ get additionalStyle() {
+ return this.$vuetify.theme.dark ? '' : 'border-bottom: 1px solid #A8A8A8'
+ }
}
diff --git a/src/locales/en.json b/src/locales/en.json
index 6624ccb3c..2c376a130 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1158,6 +1158,10 @@
"ScrewsTiltAdjustDialogDescription": "Display helper dialog for SCREWS_TILT_CALCULATE.",
"TempchartHeight": "Height Temperature Chart",
"TempchartHeightDescription": "Modify the height of the temperature chart on the Dashboard.",
+ "Theme": "Theme",
+ "ThemeDark": "Dark",
+ "ThemeDescription": "Change the overall look and feel of the application",
+ "ThemeLight": "Light",
"UiSettings": "UI-Settings"
},
"Update": "update",
diff --git a/src/main.ts b/src/main.ts
index 1c4169c33..269588c33 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -35,6 +35,7 @@ import { DatasetComponent, GridComponent, LegendComponent, TooltipComponent } fr
import 'vue-resize/dist/vue-resize.css'
// @ts-ignore
import VueResize from 'vue-resize'
+import { defaultTheme } from './store/variables'
Vue.config.productionTip = false
@@ -75,6 +76,10 @@ const initLoad = async () => {
if ('defaultLocale' in file) {
await setAndLoadLocale(file.defaultLocale as string)
}
+
+ // Handle theme outside of store init and before vue mount for consistency in dialog
+ const theme = file.defaultTheme ?? defaultTheme
+ vuetify.framework.theme.dark = theme !== 'light'
} catch (e) {
window.console.error('Failed to load config.json')
window.console.error(e)
@@ -85,12 +90,12 @@ const initLoad = async () => {
if (store?.state?.instancesDB === 'moonraker') Vue.$socket.connect()
}
-initLoad()
-
-new Vue({
- vuetify,
- router,
- store,
- i18n,
- render: (h) => h(App),
-}).$mount('#app')
+initLoad().then(() =>
+ new Vue({
+ vuetify,
+ router,
+ store,
+ i18n,
+ render: (h) => h(App),
+ }).$mount('#app')
+)
diff --git a/src/pages/Heightmap.vue b/src/pages/Heightmap.vue
index 062ac7b15..c51019992 100644
--- a/src/pages/Heightmap.vue
+++ b/src/pages/Heightmap.vue
@@ -400,6 +400,7 @@
import { Component, Mixins, Watch } from 'vue-property-decorator'
import BaseMixin from '@/components/mixins/base'
import ControlMixin from '@/components/mixins/control'
+import ThemeMixin from '@/components/mixins/theme'
import Panel from '@/components/ui/Panel.vue'
import {
@@ -449,7 +450,7 @@ interface HeightmapSerie {
Panel,
},
})
-export default class PageHeightmap extends Mixins(BaseMixin, ControlMixin) {
+export default class PageHeightmap extends Mixins(BaseMixin, ControlMixin, ThemeMixin) {
declare $refs: {
// eslint-disable-next-line
heightmap: any
@@ -503,30 +504,21 @@ export default class PageHeightmap extends Mixins(BaseMixin, ControlMixin) {
private meshOpacity = 1
private flatOpacity = 0.5
- private colorAxisName = 'rgba(255,255,255,0.5)'
- private colorAxisLabel = 'rgba(255,255,255,0.5)'
- private colorAxisLine = 'rgba(255,255,255,0.2)'
- private colorAxisTick = 'rgba(255,255,255,0.2)'
- private colorSplitLine = 'rgba(255,255,255,0.2)'
-
- private colorAxisPointer = 'rgba(255,255,255,0.8)'
-
- private colorVisualMap = 'rgba(255,255,255,0.8)'
private fontSizeVisualMap = 14
get chartOptions() {
return {
tooltip: {
- backgroundColor: 'rgba(0,0,0,0.9)',
+ backgroundColor: this.bgColor(0.9),
borderWidth: 0,
textStyle: {
- color: '#fff',
+ color: this.fgColor(1),
fontSize: '14px',
},
padding: 15,
formatter: this.tooltipFormatter,
},
- darkMode: true,
+ darkMode: this.$vuetify.theme.dark,
animation: false,
legend: {
show: false,
@@ -549,14 +541,14 @@ export default class PageHeightmap extends Mixins(BaseMixin, ControlMixin) {
itemHeight: 550,
precision: 3,
textStyle: {
- color: this.colorVisualMap,
+ color: this.fgColorHi,
fontSize: this.fontSizeVisualMap,
},
},
xAxis3D: {
type: 'value',
nameTextStyle: {
- color: this.colorAxisName,
+ color: this.fgColorMid,
},
min: this.rangeX[0],
max: this.rangeX[1],
@@ -565,7 +557,7 @@ export default class PageHeightmap extends Mixins(BaseMixin, ControlMixin) {
yAxis3D: {
type: 'value',
nameTextStyle: {
- color: this.colorAxisName,
+ color: this.fgColorMid,
},
min: this.rangeY[0],
max: this.rangeY[1],
@@ -575,7 +567,7 @@ export default class PageHeightmap extends Mixins(BaseMixin, ControlMixin) {
min: this.scaleZMax * -1,
max: this.scaleZMax,
nameTextStyle: {
- color: this.colorAxisName,
+ color: this.fgColorMid,
},
axisPointer: {
label: {
@@ -589,31 +581,31 @@ export default class PageHeightmap extends Mixins(BaseMixin, ControlMixin) {
grid3D: {
axisLabel: {
textStyle: {
- color: this.colorAxisLabel,
+ color: this.fgColorMid,
},
},
axisLine: {
lineStyle: {
- color: this.colorAxisLine,
+ color: this.fgColorLow,
},
},
axisTick: {
lineStyle: {
- color: this.colorAxisTick,
+ color: this.fgColorLow,
},
},
splitLine: {
lineStyle: {
- color: this.colorSplitLine,
+ color: this.fgColorLow,
},
},
axisPointer: {
lineStyle: {
- color: this.colorAxisPointer,
+ color: this.fgColorHi,
},
label: {
textStyle: {
- color: this.colorAxisPointer,
+ color: this.fgColorHi,
},
},
},
diff --git a/src/plugins/vuetify.ts b/src/plugins/vuetify.ts
index 1f6eb8f68..f6abac99e 100644
--- a/src/plugins/vuetify.ts
+++ b/src/plugins/vuetify.ts
@@ -9,12 +9,6 @@ Vue.use(Vuetify, {
export default new Vuetify({
theme: {
dark: true,
- themes: {
- dark: {
- panel: '#1e1e1e',
- toolbar: '#272727',
- },
- },
options: { customProperties: true },
},
icons: {
diff --git a/src/store/actions.ts b/src/store/actions.ts
index c43520e9b..07197c4d5 100644
--- a/src/store/actions.ts
+++ b/src/store/actions.ts
@@ -29,7 +29,7 @@ export const actions: ActionTree = {
/**
* This function will parse the config.json content and config mainsail
*/
- importConfigJson({ commit }, payload: ConfigJson) {
+ async importConfigJson({ commit }, payload: ConfigJson) {
type RootStateInstancesDbType = 'moonraker' | 'browser' | 'json'
let instancesDB: RootStateInstancesDbType = payload.instancesDB ?? 'moonraker'
if (import.meta.env.VUE_APP_INSTANCES_DB)
diff --git a/src/store/farm/printer/getters.ts b/src/store/farm/printer/getters.ts
index 2b135b1a6..2c425fc85 100644
--- a/src/store/farm/printer/getters.ts
+++ b/src/store/farm/printer/getters.ts
@@ -125,7 +125,7 @@ export const getters: GetterTree = {
getImage: (state) => {
if (state.current_file.filename && state.current_file.thumbnails?.length) {
const indexLastDir = state.current_file.filename.lastIndexOf('/')
- const dir = indexLastDir !== -1 ? state.current_file.filename.substr(0, indexLastDir) + '/' : ''
+ const dir = indexLastDir !== -1 ? state.current_file.filename.substring(0, indexLastDir) + '/' : ''
const thumbnail = state.current_file.thumbnails.find((thumb) => thumb.width >= thumbnailBigMin)
if (thumbnail && 'relative_path' in thumbnail)
@@ -140,7 +140,7 @@ export const getters: GetterTree = {
)
}
- return '/img/sidebar-background.svg'
+ return null
},
getThemeFileUrl: (state) => (acceptName: string, acceptExtensions: string[]) => {
diff --git a/src/store/files/getters.ts b/src/store/files/getters.ts
index 829d01db1..e55b4deae 100644
--- a/src/store/files/getters.ts
+++ b/src/store/files/getters.ts
@@ -216,11 +216,11 @@ export const getters: GetterTree = {
return getters['getThemeFileUrl'](acceptName, acceptExtensions) ?? ''
},
- getSidebarBackground: (state, getters) => {
+ getCustomSidebarBackground: (state, getters) => {
const acceptName = 'sidebar-background'
const acceptExtensions = ['jpg', 'jpeg', 'png', 'gif', 'svg']
- return getters['getThemeFileUrl'](acceptName, acceptExtensions) ?? '/img/sidebar-background.svg'
+ return getters['getThemeFileUrl'](acceptName, acceptExtensions) ?? null
},
getMainBackground: (state, getters) => {
diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts
index 99376754c..1e192c60f 100644
--- a/src/store/gui/index.ts
+++ b/src/store/gui/index.ts
@@ -3,7 +3,7 @@ import { Module } from 'vuex'
import { actions } from '@/store/gui/actions'
import { mutations } from '@/store/gui/mutations'
import { getters } from '@/store/gui/getters'
-import { defaultLogoColor, defaultPrimaryColor, defaultBigThumbnailBackground } from '@/store/variables'
+import { defaultTheme, defaultLogoColor, defaultPrimaryColor, defaultBigThumbnailBackground } from '@/store/variables'
// load modules
import { console } from '@/store/gui/console'
@@ -149,6 +149,7 @@ export const getDefaultState = (): GuiState => {
entries: [],
},
uiSettings: {
+ theme: defaultTheme,
logo: defaultLogoColor,
primary: defaultPrimaryColor,
displayCancelPrint: false,
diff --git a/src/store/gui/types.ts b/src/store/gui/types.ts
index 7bafd8b27..930961603 100644
--- a/src/store/gui/types.ts
+++ b/src/store/gui/types.ts
@@ -98,6 +98,7 @@ export interface GuiState {
presets?: GuiPresetsState
remoteprinters?: GuiRemoteprintersState
uiSettings: {
+ theme: 'dark' | 'light'
logo: string
primary: string
displayCancelPrint: boolean
diff --git a/src/store/printer/getters.ts b/src/store/printer/getters.ts
index ae86074d9..417e5157c 100644
--- a/src/store/printer/getters.ts
+++ b/src/store/printer/getters.ts
@@ -10,6 +10,7 @@ import {
PrinterStateMiscellaneous,
PrinterStateMcu,
PrinterStateMacro,
+ PrinterStateToolchangeMacro,
PrinterGetterObject,
PrinterStateLight,
} from '@/store/printer/types'
diff --git a/src/store/server/history/getters.ts b/src/store/server/history/getters.ts
index 89f38fa70..593ab593e 100644
--- a/src/store/server/history/getters.ts
+++ b/src/store/server/history/getters.ts
@@ -105,9 +105,6 @@ export const getters: GetterTree = {
value: 1,
itemStyle,
showInTable: !rootState.gui?.view.history.hidePrintStatus.includes(current.status),
- label: {
- color: '#fff',
- },
})
}
})
@@ -144,9 +141,6 @@ export const getters: GetterTree = {
borderRadius: 3,
},
showInTable: true,
- label: {
- color: '#fff',
- },
})
}
@@ -191,9 +185,6 @@ export const getters: GetterTree = {
value: 1,
itemStyle: itemStyle,
showInTable: !rootState.gui?.view.history.hidePrintStatus.includes(current.status),
- label: {
- color: '#fff',
- },
})
}
})
diff --git a/src/store/server/history/types.ts b/src/store/server/history/types.ts
index ada84d13b..2c36f048c 100644
--- a/src/store/server/history/types.ts
+++ b/src/store/server/history/types.ts
@@ -37,7 +37,4 @@ export interface ServerHistoryStateAllPrintStatusEntry {
borderWidth: number
borderRadius: number
}
- label: {
- color: string
- }
}
diff --git a/src/store/types.ts b/src/store/types.ts
index 1c48ecfb7..b35b6f4a0 100644
--- a/src/store/types.ts
+++ b/src/store/types.ts
@@ -25,6 +25,7 @@ export interface RootStateDependency {
}
export interface ConfigJson {
+ defaultTheme?: 'dark' | 'light'
hostname?: string | null
port?: string | number | null
instancesDB?: 'moonraker' | 'browser' | 'json'
diff --git a/src/store/variables.ts b/src/store/variables.ts
index 71c6ca2f2..9e4a57473 100644
--- a/src/store/variables.ts
+++ b/src/store/variables.ts
@@ -1,3 +1,4 @@
+export const defaultTheme = 'dark'
export const defaultLogoColor = '#D41216'
export const defaultPrimaryColor = '#2196f3'
export const defaultBigThumbnailBackground = '#1e1e1e'
From 20524b0a712865eab34744e03a04d0253dd619bf Mon Sep 17 00:00:00 2001
From: dictor93 <33715075+dictor93@users.noreply.github.com>
Date: Sat, 16 Dec 2023 11:47:40 +0200
Subject: [PATCH 03/12] fix: add port to webcam url if port is not 80 (#1566)
Co-authored-by: Stefan Dej
---
src/components/mixins/base.ts | 2 +-
src/components/mixins/webcam.ts | 4 ++++
.../webcams/streamers/MjpegstreamerAdaptive.vue | 10 +++++-----
.../webcams/streamers/WebrtcCameraStreamer.vue | 7 +------
4 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/src/components/mixins/base.ts b/src/components/mixins/base.ts
index e8a4f9fd2..1f02143dd 100644
--- a/src/components/mixins/base.ts
+++ b/src/components/mixins/base.ts
@@ -13,7 +13,7 @@ export default class BaseMixin extends Vue {
return this.$store.getters['socket/getHostUrl']
}
- get hostPort(): boolean {
+ get hostPort(): number {
return this.$store.state.socket.port ?? 80
}
diff --git a/src/components/mixins/webcam.ts b/src/components/mixins/webcam.ts
index 784b3dce0..28ade9195 100644
--- a/src/components/mixins/webcam.ts
+++ b/src/components/mixins/webcam.ts
@@ -23,6 +23,10 @@ export default class WebcamMixin extends Mixins(BaseMixin) {
// overwrite url to baseUrl, if it is an absolute URL
if (baseUrl.startsWith('http') || baseUrl.startsWith('://')) url = new URL(baseUrl)
+ if (baseUrl.startsWith('/webcam') && ![80, 7125, 7130].includes(this.hostPort)) {
+ url.port = this.hostPort.toString()
+ }
+
return decodeURIComponent(url.toString())
}
diff --git a/src/components/webcams/streamers/MjpegstreamerAdaptive.vue b/src/components/webcams/streamers/MjpegstreamerAdaptive.vue
index 41ca032c1..fcd1399a8 100644
--- a/src/components/webcams/streamers/MjpegstreamerAdaptive.vue
+++ b/src/components/webcams/streamers/MjpegstreamerAdaptive.vue
@@ -84,6 +84,10 @@ export default class MjpegstreamerAdaptive extends Mixins(BaseMixin, WebcamMixin
return [90, 270].includes(this.camSettings.rotation ?? 0)
}
+ get url() {
+ return this.convertUrl(this.camSettings?.snapshot_url, this.printerUrl)
+ }
+
refreshFrame() {
if (this.isVisible) {
this.refresh = new Date().getTime()
@@ -92,11 +96,7 @@ export default class MjpegstreamerAdaptive extends Mixins(BaseMixin, WebcamMixin
}
async setFrame() {
- const baseUrl = this.camSettings.snapshot_url
-
- let url = new URL(baseUrl, this.printerUrl === null ? this.hostUrl.toString() : this.printerUrl)
- if (baseUrl.startsWith('http') || baseUrl.startsWith('://')) url = new URL(baseUrl)
-
+ let url = new URL(this.url)
url.searchParams.append('bypassCache', this.refresh.toString())
this.request_start_time = performance.now()
diff --git a/src/components/webcams/streamers/WebrtcCameraStreamer.vue b/src/components/webcams/streamers/WebrtcCameraStreamer.vue
index 16140d76a..334ff82e4 100644
--- a/src/components/webcams/streamers/WebrtcCameraStreamer.vue
+++ b/src/components/webcams/streamers/WebrtcCameraStreamer.vue
@@ -37,12 +37,7 @@ export default class WebrtcCameraStreamer extends Mixins(BaseMixin, WebcamMixin)
@Ref() declare stream: HTMLVideoElement
get url() {
- const baseUrl = this.camSettings.stream_url
- let url = new URL(baseUrl, this.printerUrl === null ? this.hostUrl.toString() : this.printerUrl)
-
- if (baseUrl.startsWith('http') || baseUrl.startsWith('://')) url = new URL(baseUrl)
-
- return decodeURIComponent(url.toString())
+ return this.convertUrl(this.camSettings?.stream_url, this.printerUrl)
}
get webcamStyle() {
From c97dfbc836bf61600001da97f48e3724c785a012 Mon Sep 17 00:00:00 2001
From: Stefan Dej
Date: Sat, 16 Dec 2023 13:48:28 +0100
Subject: [PATCH 04/12] refactor: import unused getter from printer/getters
(#1686)
Signed-off-by: Stefan Dej
---
src/store/printer/getters.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/store/printer/getters.ts b/src/store/printer/getters.ts
index 417e5157c..ae86074d9 100644
--- a/src/store/printer/getters.ts
+++ b/src/store/printer/getters.ts
@@ -10,7 +10,6 @@ import {
PrinterStateMiscellaneous,
PrinterStateMcu,
PrinterStateMacro,
- PrinterStateToolchangeMacro,
PrinterGetterObject,
PrinterStateLight,
} from '@/store/printer/types'
From eeaa6a4da80c4aaa9ee9a67b84cf9d8bed465f13 Mon Sep 17 00:00:00 2001
From: "Michal Dziekonski (mdz)"
Date: Sat, 16 Dec 2023 14:41:54 +0100
Subject: [PATCH 05/12] feat: Improve contrast of job queue items count (#1678)
Co-authored-by: Stefan Dej
---
src/components/panels/StatusPanel.vue | 12 ++++++++++--
src/locales/cz.json | 2 +-
src/locales/da.json | 2 +-
src/locales/de.json | 2 +-
src/locales/en.json | 2 +-
src/locales/es.json | 2 +-
src/locales/fr.json | 2 +-
src/locales/hu.json | 2 +-
src/locales/it.json | 2 +-
src/locales/ja.json | 2 +-
src/locales/ko.json | 2 +-
src/locales/nl.json | 2 +-
src/locales/pl.json | 2 +-
src/locales/pt.json | 2 +-
src/locales/ru.json | 2 +-
src/locales/tr.json | 2 +-
src/locales/uk.json | 2 +-
src/locales/zh.json | 2 +-
src/locales/zh_TW.json | 2 +-
19 files changed, 28 insertions(+), 20 deletions(-)
diff --git a/src/components/panels/StatusPanel.vue b/src/components/panels/StatusPanel.vue
index 793bd8b53..a193f0a5b 100644
--- a/src/components/panels/StatusPanel.vue
+++ b/src/components/panels/StatusPanel.vue
@@ -91,7 +91,11 @@
{{ $t('Panels.StatusPanel.Status') }}
{{ $t('Panels.StatusPanel.Files') }}
- {{ $t('Panels.StatusPanel.Jobqueue', { count: jobsCount }) }}
+
+
+ {{ $t('Panels.StatusPanel.Jobqueue') }}
+
+
@@ -173,7 +177,11 @@ export default class StatusPanel extends Mixins(BaseMixin) {
}
get jobsCount() {
- return this.$store.getters['server/jobQueue/getJobsCount'] ?? 0
+ return this.jobs.length ?? 0
+ }
+
+ get jobQueueBadgeColor() {
+ return this.jobsCount > 0 ? 'primary darken-2' : 'grey darken-2'
}
get current_filename() {
diff --git a/src/locales/cz.json b/src/locales/cz.json
index 228e1af95..b40f8b5f4 100644
--- a/src/locales/cz.json
+++ b/src/locales/cz.json
@@ -600,7 +600,7 @@
"Files": "Soubory",
"Flow": "Průtok",
"Headline": "Stav",
- "Jobqueue": "Seznam úloh ({count})",
+ "Jobqueue": "Seznam úloh",
"JobqueueMoreFiles": "žádné další úlohy | jedna další úloha | {count} dalších úloh",
"Layer": "Vrstva",
"Max": "max",
diff --git a/src/locales/da.json b/src/locales/da.json
index 06d87292d..1e0f9061c 100644
--- a/src/locales/da.json
+++ b/src/locales/da.json
@@ -668,7 +668,7 @@
"Files": "Filer",
"Flow": "Flow",
"Headline": "Status",
- "Jobqueue": "Jobkø: ({count})",
+ "Jobqueue": "Jobkø",
"JobqueueMoreFiles": "Ikke flere jobs | Et job til | {count} jobs tilbage",
"Layer": "Lag",
"Max": "maks",
diff --git a/src/locales/de.json b/src/locales/de.json
index 10ab43ba8..3ba45b186 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -676,7 +676,7 @@
"Files": "Dateien",
"Flow": "Fluss",
"Headline": "Status",
- "Jobqueue": "Warteschlange ({count})",
+ "Jobqueue": "Warteschlange",
"JobqueueMoreFiles": "keine weiteren Aufträge | einen weiteren Auftrag | {count} weitere Aufträge",
"Layer": "Schicht",
"Max": "max",
diff --git a/src/locales/en.json b/src/locales/en.json
index 2c376a130..643ccf94a 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -676,7 +676,7 @@
"Files": "Files",
"Flow": "Flow",
"Headline": "Status",
- "Jobqueue": "Job Queue ({count})",
+ "Jobqueue": "Job Queue",
"JobqueueMoreFiles": "no more jobs | one more job | {count} more jobs",
"Layer": "Layer",
"Max": "max",
diff --git a/src/locales/es.json b/src/locales/es.json
index ca9a4825c..79fde2cb6 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -638,7 +638,7 @@
"Files": "Archivos",
"Flow": "Flujo",
"Headline": "Estado",
- "Jobqueue": "Cola de trabajo ({count})",
+ "Jobqueue": "Cola de trabajo",
"JobqueueMoreFiles": "no mas trabajos | un trabajo mas | {count} trabajos mas",
"Layer": "Capa",
"Max": "max",
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 3acc3abeb..29359ae44 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -670,7 +670,7 @@
"Files": "Fichiers",
"Flow": "Débit",
"Headline": "Statut",
- "Jobqueue": "File d'attente ({count})",
+ "Jobqueue": "File d'attente",
"JobqueueMoreFiles": "pas de travaux | un travail | {count} travaux",
"Layer": "Couche",
"Max": "max",
diff --git a/src/locales/hu.json b/src/locales/hu.json
index a9e9fb57d..bac5776ac 100644
--- a/src/locales/hu.json
+++ b/src/locales/hu.json
@@ -543,7 +543,7 @@
"Files": "Fájlok",
"Flow": "Anyagáramlás",
"Headline": "Állapot",
- "Jobqueue": "Várólista ({count})",
+ "Jobqueue": "Várólista",
"JobqueueMoreFiles": "Nincs több munka | Még egy munka | {count} munka hátra",
"Layer": "Réteg",
"Max": "max",
diff --git a/src/locales/it.json b/src/locales/it.json
index b389d6327..c3149a23b 100644
--- a/src/locales/it.json
+++ b/src/locales/it.json
@@ -668,7 +668,7 @@
"Files": "Files",
"Flow": "Flusso",
"Headline": "Stato",
- "Jobqueue": "Coda di lavoro ({count})",
+ "Jobqueue": "Coda di lavoro",
"JobqueueMoreFiles": "niente più lavori | resta un lavoro | restano {count} lavori",
"Layer": "Layer",
"Max": "max",
diff --git a/src/locales/ja.json b/src/locales/ja.json
index f83e6388e..fc744aa71 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -600,7 +600,7 @@
"Files": "ファイル",
"Flow": "フロー",
"Headline": "状態",
- "Jobqueue": "ジョブキュー ({count})",
+ "Jobqueue": "ジョブキュー",
"JobqueueMoreFiles": "ジョブなし | あとひとつのジョブ | あと {count}個のジョブ",
"Layer": "層",
"Max": "最大",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index db66d0fb4..51ee3ef87 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -601,7 +601,7 @@
"Files": "파일",
"Flow": "유량",
"Headline": "출력 상태",
- "Jobqueue": "작업 대기열({count})",
+ "Jobqueue": "작업 대기열",
"JobqueueMoreFiles": "더 이상 작업 없음 | 1개 이상의 작업 | {count}개 이상의 작업",
"Layer": "레이어",
"Max": "최대",
diff --git a/src/locales/nl.json b/src/locales/nl.json
index 7219ff20e..4690724da 100644
--- a/src/locales/nl.json
+++ b/src/locales/nl.json
@@ -600,7 +600,7 @@
"Files": "Bestanden",
"Flow": "Flow",
"Headline": "Status",
- "Jobqueue": "Wachtrij ({count})",
+ "Jobqueue": "Wachtrij",
"JobqueueMoreFiles": "geen jobs meer | nog een job | {count} jobs",
"Layer": "Laag",
"Max": "max",
diff --git a/src/locales/pl.json b/src/locales/pl.json
index c7c4a7e99..da91fd503 100644
--- a/src/locales/pl.json
+++ b/src/locales/pl.json
@@ -668,7 +668,7 @@
"Files": "Pliki",
"Flow": "Przepływ",
"Headline": "Status",
- "Jobqueue": "W kolejce ({count})",
+ "Jobqueue": "W kolejce",
"JobqueueMoreFiles": "brak więcej wydruków | jeszcze jeden wydruk | {count} więcej wydruków",
"Layer": "Warstwa",
"Max": "Maks.",
diff --git a/src/locales/pt.json b/src/locales/pt.json
index 290597e79..2674c4bbc 100644
--- a/src/locales/pt.json
+++ b/src/locales/pt.json
@@ -607,7 +607,7 @@
"Files": "Arquivos",
"Flow": "Fluxo",
"Headline": "Status",
- "Jobqueue": "Fila de trabalhos ({count})",
+ "Jobqueue": "Fila de trabalhos",
"JobqueueMoreFiles": "nenhum trabalho | mais um trabalho | {count} mais trabalhos",
"Layer": "Camada",
"Max": "max",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index b8e046b1d..7724ba0ab 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -607,7 +607,7 @@
"Files": "Файлы",
"Flow": "Поток",
"Headline": "Статус",
- "Jobqueue": "Очередь ({count})",
+ "Jobqueue": "Очередь",
"JobqueueMoreFiles": "Нет больше задач | Еще одна задача | Еще {count} задач(и)",
"Layer": "Слой",
"Max": "макс.",
diff --git a/src/locales/tr.json b/src/locales/tr.json
index 812ec8b8d..7b44299e8 100644
--- a/src/locales/tr.json
+++ b/src/locales/tr.json
@@ -639,7 +639,7 @@
"Files": "Dosyalar",
"Flow": "Akış",
"Headline": "Durum",
- "Jobqueue": "İş Kuyruğu ({count})",
+ "Jobqueue": "İş Kuyruğu",
"JobqueueMoreFiles": "daha fazla iş yok | bir iş daha var | {count} iş daha var",
"Layer": "Katman",
"Max": "maks.",
diff --git a/src/locales/uk.json b/src/locales/uk.json
index 10d1e5993..02e6b68ca 100644
--- a/src/locales/uk.json
+++ b/src/locales/uk.json
@@ -553,7 +553,7 @@
"Files": "Файли",
"Flow": "Потік",
"Headline": "Статус",
- "Jobqueue": "Черга робіт ({count})",
+ "Jobqueue": "Черга робіт",
"JobqueueMoreFiles": "більше нема робіт | ще одна робота | {count} більше робіт",
"Layer": "Шар",
"Max": "макс",
diff --git a/src/locales/zh.json b/src/locales/zh.json
index c7c728db7..9f5a29050 100644
--- a/src/locales/zh.json
+++ b/src/locales/zh.json
@@ -668,7 +668,7 @@
"Files": "文件",
"Flow": "流量",
"Headline": "状态",
- "Jobqueue": "任务队列({count})",
+ "Jobqueue": "任务队列",
"JobqueueMoreFiles": "没有任务 | 一个任务 | {count}个任务",
"Layer": "打印层",
"Max": "最高",
diff --git a/src/locales/zh_TW.json b/src/locales/zh_TW.json
index 6a386fc9c..7209586b7 100644
--- a/src/locales/zh_TW.json
+++ b/src/locales/zh_TW.json
@@ -579,7 +579,7 @@
"Files": "檔案",
"Flow": "流量",
"Headline": "狀態",
- "Jobqueue": "任務隊列({count})",
+ "Jobqueue": "任務隊列",
"JobqueueMoreFiles": "沒有任務 | 一個任務 | {count}個任務",
"Layer": "層",
"Max": "最高",
From ac698b7734a82c6f598c882054c2d46d21232e4d Mon Sep 17 00:00:00 2001
From: Stefan Dej
Date: Sat, 16 Dec 2023 16:07:19 +0100
Subject: [PATCH 06/12] locale(de): update german locale (#1687)
---
src/locales/de.json | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/locales/de.json b/src/locales/de.json
index 3ba45b186..56a3df8d8 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -736,13 +736,17 @@
"ToolheadControlPanel": {
"Absolute": "absolut",
"ALL": "ALLE",
+ "ControlButtons": "Kontrollknöpfe",
+ "CoordinateFields": "Koordinatenfelder",
"Headline": "Werkzeugkopf",
"PleaseConfigureSteps": "Bitte Schritte konfigurieren",
"Position": "Position",
+ "PositionOutput": "Positionsausgabe",
"QGL": "QGL",
"Relative": "relativ",
"SettingsInterfaceControl": "Einstellungen > Interface > Steuerung",
"SpeedFactor": "Geschwindigkeitsfaktor",
+ "ZOffset": "Z-Versatz",
"ZTilt": "Z Tilt"
},
"WebcamPanel": {
@@ -861,6 +865,8 @@
"Style": "Stil",
"ValueGreaterThan": "Wert muss größer als {value} sein",
"ZOffsetIncrements": "Schrittweiten Z-Versatz (in mm)",
+ "ZOffsetSaveOption": "Z-Versatz Speicheroption",
+ "ZOffsetSaveOptionDescription": "Wechsel die Option zum Speichern des Z-Versatzes.",
"ZTiltAdjust": "Z-Tilt Adjust{isDefault}"
},
"DashboardTab": {
@@ -936,6 +942,18 @@
"RestoreDialog": "Bitte wähle alle Abschnitte aus, die du wiederherstellen möchtest:",
"TimeFormat": "Zeitformat"
},
+ "HeightmapTab": {
+ "ColorSchemes": "Farbschemen",
+ "Heightmap": "Höhenkarte",
+ "IsDefault": "(Standard)",
+ "Schemes": {
+ "GrayScale": "Graustufen",
+ "Hot": "Heiß",
+ "Hsv": "Hsv",
+ "Portland": "Portland",
+ "Spring": "Frühling"
+ }
+ },
"InterfaceSettings": "Interface Einstellungen",
"MacrosTab": {
"Add": "hinzufügen",
@@ -1140,6 +1158,10 @@
"ScrewsTiltAdjustDialogDescription": "Zeige ein Hilfsfenster für SCREWS_TILT_CALCULATE an.",
"TempchartHeight": "Temperatur-Chart Höhe",
"TempchartHeightDescription": "Verändert die Höhe vom Temperatur-Chart auf dem Dashboard.",
+ "Theme": "Theme",
+ "ThemeDark": "Dunkel",
+ "ThemeDescription": "Ändern Sie das allgemeine Erscheinungsbild der Anwendung.",
+ "ThemeLight": "Hell",
"UiSettings": "UI-Einstellungen"
},
"Update": "speichern",
@@ -1179,6 +1201,7 @@
"Vertically": "vertikal",
"Webcams": "Webcams",
"WebrtcCameraStreamer": "WebRTC (camera-streamer)",
+ "WebrtcGo2rtc": "WebRTC (go2rtc)",
"WebrtcJanus": "WebRTC (janus-gateway)",
"WebrtcMediaMTX": "WebRTC (MediaMTX)"
}
From eb7773d667df5b664a1ff6119886b6fba2aa5e3f Mon Sep 17 00:00:00 2001
From: Stefan Dej
Date: Sat, 16 Dec 2023 16:52:32 +0100
Subject: [PATCH 07/12] fix: add random colors, when colorArray is too small
(#1688)
---
src/store/printer/tempHistory/actions.ts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/store/printer/tempHistory/actions.ts b/src/store/printer/tempHistory/actions.ts
index f4bf566e3..0451d7a05 100644
--- a/src/store/printer/tempHistory/actions.ts
+++ b/src/store/printer/tempHistory/actions.ts
@@ -145,6 +145,12 @@ export const actions: ActionTree = {
if (!color) {
color = colorArray[colorNumber]
colorNumber++
+
+ // fallback -> get random color
+ if (color === undefined) {
+ // color generator from https://css-tricks.com/snippets/javascript/random-hex-color/
+ color = '#' + Math.floor(0xffffff * Math.random()).toString(16)
+ }
}
}
From c92f4c0d093f709b5b4fd5f27e2dc1dd49209be6 Mon Sep 17 00:00:00 2001
From: "Michal Dziekonski (mdz)"
Date: Sat, 16 Dec 2023 16:59:12 +0100
Subject: [PATCH 08/12] fix: Incorrect sum of rest jobs printing time (#1689)
---
src/components/panels/Status/Jobqueue.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/panels/Status/Jobqueue.vue b/src/components/panels/Status/Jobqueue.vue
index 44ab173aa..7de8ca37b 100644
--- a/src/components/panels/Status/Jobqueue.vue
+++ b/src/components/panels/Status/Jobqueue.vue
@@ -89,7 +89,7 @@ export default class StatusPanelJobqueue extends Mixins(BaseMixin) {
if (item.metadata?.filament_total) filamentLength += item.metadata?.filament_total * count
if (item.metadata?.filament_weight_total) filamentWeight += item.metadata?.filament_weight_total * count
- if (item.metadata?.estimated_time) printTime = item.metadata.estimated_time * count
+ if (item.metadata?.estimated_time) printTime += item.metadata.estimated_time * count
})
let output = ''
From af5a3e108e11b78de236786693e55d17d4d63470 Mon Sep 17 00:00:00 2001
From: Stefan Dej
Date: Sat, 16 Dec 2023 17:21:09 +0100
Subject: [PATCH 09/12] feat: add mmu.log to logfiles panel (#1685)
---
.../panels/Machine/LogfilesPanel.vue | 159 ++----------------
.../LogfilesPanel/LogfilesPanelGenericLog.vue | 67 ++++++++
.../LogfilesPanelRolloverDialog.vue | 94 +++++++++++
src/store/variables.ts | 5 +
4 files changed, 178 insertions(+), 147 deletions(-)
create mode 100644 src/components/panels/Machine/LogfilesPanel/LogfilesPanelGenericLog.vue
create mode 100644 src/components/panels/Machine/LogfilesPanel/LogfilesPanelRolloverDialog.vue
diff --git a/src/components/panels/Machine/LogfilesPanel.vue b/src/components/panels/Machine/LogfilesPanel.vue
index c4889c984..06f93b9c6 100644
--- a/src/components/panels/Machine/LogfilesPanel.vue
+++ b/src/components/panels/Machine/LogfilesPanel.vue
@@ -1,7 +1,7 @@
@@ -25,166 +25,31 @@
-
-
-
- {{ mdiDownload }}
- Klipper
-
-
-
-
- {{ mdiDownload }}
- Moonraker
-
-
-
-
- {{ mdiDownload }}
- Crowsnest
-
-
-
-
- {{ mdiDownload }}
- Sonar
-
-
+
+
-
-
-
-
- {{ mdiCloseThick }}
-
-
-
-
-
- {{ $t('Machine.LogfilesPanel.RolloverDescription') }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('Machine.LogfilesPanel.Cancel') }}
-
-
- {{ $t('Machine.LogfilesPanel.Accept') }}
-
-
-
-
+
diff --git a/src/components/panels/Machine/LogfilesPanel/LogfilesPanelGenericLog.vue b/src/components/panels/Machine/LogfilesPanel/LogfilesPanelGenericLog.vue
new file mode 100644
index 000000000..489703359
--- /dev/null
+++ b/src/components/panels/Machine/LogfilesPanel/LogfilesPanelGenericLog.vue
@@ -0,0 +1,67 @@
+
+
+
+ {{ mdiDownload }}
+ {{ name }}
+
+
+
+
+
diff --git a/src/components/panels/Machine/LogfilesPanel/LogfilesPanelRolloverDialog.vue b/src/components/panels/Machine/LogfilesPanel/LogfilesPanelRolloverDialog.vue
new file mode 100644
index 000000000..2cbb1edab
--- /dev/null
+++ b/src/components/panels/Machine/LogfilesPanel/LogfilesPanelRolloverDialog.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+ {{ mdiCloseThick }}
+
+
+
+
+
+ {{ $t('Machine.LogfilesPanel.RolloverDescription') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Machine.LogfilesPanel.Cancel') }}
+
+
+ {{ $t('Machine.LogfilesPanel.Accept') }}
+
+
+
+
+
+
+
diff --git a/src/store/variables.ts b/src/store/variables.ts
index 9e4a57473..8afa67f6f 100644
--- a/src/store/variables.ts
+++ b/src/store/variables.ts
@@ -130,6 +130,11 @@ export const hiddenDirectories = ['.git']
*/
export const availableKlipperConfigReferenceTranslations = ['it', 'hu', 'zh']
+/*
+ * List of all downloadable logfiles
+ */
+export const genericLogfiles = ['klippy', 'moonraker', 'crowsnest', 'mmu', 'sonar']
+
/*
* List of all rollover logfiles
*/
From a56e50d0afb26ed77e658c1da7eb67f1225cecc5 Mon Sep 17 00:00:00 2001
From: Stefan Dej
Date: Sat, 16 Dec 2023 18:46:24 +0100
Subject: [PATCH 10/12] fix: fix panels squeezed on mobile when navi is open
(#1690)
---
src/App.vue | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index 0af7f9de4..065416668 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -102,8 +102,10 @@ export default class App extends Mixins(BaseMixin, ThemeMixin) {
}
// overwrite padding left for the sidebar
- if (this.naviDrawer && this.navigationStyle === 'iconsAndText') style.paddingLeft = '220px'
- if (this.naviDrawer && this.navigationStyle === 'iconsOnly') style.paddingLeft = '56px'
+ if (this.naviDrawer && !this.$vuetify.breakpoint.mdAndDown) {
+ if (this.navigationStyle === 'iconsAndText') style.paddingLeft = '220px'
+ if (this.navigationStyle === 'iconsOnly') style.paddingLeft = '56px'
+ }
return style
}
From b3a0a21e8fdd11971c57460890f91ed367829436 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 16 Dec 2023 17:54:23 +0000
Subject: [PATCH 11/12] chore: push version number to v2.9.0
---
package-lock.json | 4 ++--
package.json | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 46813fa9d..40aeb590c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "mainsail",
- "version": "2.8.0",
+ "version": "2.9.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mainsail",
- "version": "2.8.0",
+ "version": "2.9.0",
"dependencies": {
"@codemirror/commands": "^6.0.1",
"@codemirror/lang-css": "^6.0.0",
diff --git a/package.json b/package.json
index 24a1efda6..3723804f5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "mainsail",
- "version": "2.8.0",
+ "version": "2.9.0",
"private": true,
"decription": "a klipper web interface",
"author": {
From 0783b4e82b8b7e406ce7a13d645ab1c122fae604 Mon Sep 17 00:00:00 2001
From: meteyou
Date: Sat, 16 Dec 2023 17:57:01 +0000
Subject: [PATCH 12/12] docs(changelog): update changelog
---
CHANGELOG.md | 1315 ++++++++++++++++++++++++++------------------------
1 file changed, 694 insertions(+), 621 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eeb9ad570..6d099e32f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,754 +2,827 @@
# Changelog
All notable changes to Mainsail will be documented in this file.
+## [2.9.0](https://github.com/mainsail-crew/mainsail/releases/tag/v2.9.0) - 2023-12-16
+### Features
+
+- **file browsers**: Add ability to quickly jump to any segment ([#1659](/pull/1659))
+- **webcam**: Add support for go2rtc webrtc ([#1651](/pull/1651))
+- Rework spoolman change dialog to display spool ids ([#1605](/pull/1605))
+- Add buttons for PURGE_FILAMENT and CLEAN_NOZZLE ([#1641](/pull/1641))
+- Add different color maps for heightmap ([#1666](/pull/1666))
+- Add option to change the save z-offset method ([#1631](/pull/1631))
+- Add option to hide parts of the ToolheadPanel ([#1621](/pull/1621))
+- Add macro prompt dialog ([#1630](/pull/1630))
+- Add minimum_cruise_ratio support in MotionSettingsPanel ([#1670](/pull/1670))
+- Show filament sensor state even when it is disabled ([#1656](/pull/1656))
+- Add option to hide parts of the ExtruderPanel ([#1679](/pull/1679))
+- Add moonraker init component check with warning ([#1680](/pull/1680))
+- Resize heightmap to get a better heightmap overview ([#1683](/pull/1683))
+- Light mode ui ([#1580](/pull/1580))
+- Improve contrast of job queue items count ([#1678](/pull/1678))
+- Add mmu.log to logfiles panel ([#1685](/pull/1685))
+
+### Bug Fixes and Improvements
+
+- **pwa**: Make sure the service worker can be loaded ([#1594](/pull/1594))
+- Allow null as spool id response from spoolman ([#1611](/pull/1611))
+- Fix filament type check in StartPrintDialog ([#1620](/pull/1620))
+- Fix round issue in git commit list diff calculation ([#1637](/pull/1637))
+- Fix hide/show navi points in different languages ([#1638](/pull/1638))
+- Fix adding multiple presets ([#1636](/pull/1636))
+- Fix wrong output in temp chart tooltip ([#1646](/pull/1646))
+- Fix ETA 12hour detection if the user use default setting ([#1657](/pull/1657))
+- Fix 12hour browser time format detection ([#1660](/pull/1660))
+- Fix 12-hour time format in ETA output ([#1662](/pull/1662))
+- Fix issue with hidden LED groups ([#1669](/pull/1669))
+- More tolerant with thumbnails sizes ([#1674](/pull/1674))
+- Add anchor to regex for special msg replacement ([#1635](/pull/1635))
+- Add port to webcam url if port is not 80 ([#1566](/pull/1566))
+- Add random colors, when colorArray is too small ([#1688](/pull/1688))
+- Incorrect sum of rest jobs printing time ([#1689](/pull/1689))
+- Fix panels squeezed on mobile when navi is open ([#1690](/pull/1690))
+
+### Performance
+
+- **vite**: Chunk webcams, locales and large libraries ([#1578](/pull/1578))
+
+### Refactor
+
+- Also allow FILAMENT_LOAD and FILAMENT_UNLOAD macros ([#1639](/pull/1639))
+- Fix linter issue in SettingsControlTab ([#1677](/pull/1677))
+- Import unused getter from printer/getters ([#1686](/pull/1686))
+
+### Localization
+
+- **da**: Update Danish locale ([#1634](/pull/1634))
+- **de**: Update german locale ([#1687](/pull/1687))
+- **fr**: French translation of the Spoolman module ([#1598](/pull/1598))
+- **fr**: French full translation ([#1613](/pull/1613))
+- **fr**: Correction of several errors ([#1614](/pull/1614))
+- **fr**: Correction of the term Unretract ([#1628](/pull/1628))
+- **fr**: Add translation clean_nozzle and purge_filament ([#1645](/pull/1645))
+- **fr**: Add HeightMapTab and others updates ([#1667](/pull/1667))
+- **it**: Italian translation of the Spoolman module ([#1606](/pull/1606))
+- **it**: Italian translation completed and more fixes ([#1608](/pull/1608))
+- **it**: Fix several old translation errors ([#1609](/pull/1609))
+- **pl**: Update Polish translations ([#1593](/pull/1593))
+- **zh**: Update Chinese (zh) localization ([#1595](/pull/1595))
+
+### Other
+
+- Disable workbox logs ([#1629](/pull/1629))
+- Add workflow to check PR title for conventional commits ([#1640](/pull/1640))
+- Update check_locale.yml to new github workflow output ([#1584](/pull/1584))
+- Fix check-pr-title workflow to allow locale as type ([#1663](/pull/1663))
+
## [2.8.0](https://github.com/mainsail-crew/mainsail/releases/tag/v2.8.0) - 2023-10-07
### Features
-- Add warning for outdated browsers ([#1537](https://github.com/mainsail-crew/mainsail/issues/1537))
-- Automatic selection of the gcode offset save gcode ([#1531](https://github.com/mainsail-crew/mainsail/issues/1531))
-- Hide Moonraker power devices with a `_` as first char ([#1545](https://github.com/mainsail-crew/mainsail/issues/1545))
-- Add option to block autoscroll in console ([#1519](https://github.com/mainsail-crew/mainsail/issues/1519))
-- Add 12-hour time format in printers overview ([#1571](https://github.com/mainsail-crew/mainsail/issues/1571))
-- Add monitors (like TMC2240) to Temperature Panel ([#1532](https://github.com/mainsail-crew/mainsail/issues/1532))
-- Add spoolman support ([#1542](https://github.com/mainsail-crew/mainsail/issues/1542))
-- Add optional background color for big gcode thumbnails ([#1535](https://github.com/mainsail-crew/mainsail/issues/1535))
+- Add warning for outdated browsers ([#1537](/pull/1537))
+- Automatic selection of the gcode offset save gcode ([#1531](/pull/1531))
+- Hide Moonraker power devices with a `_` as first char ([#1545](/pull/1545))
+- Add option to block autoscroll in console ([#1519](/pull/1519))
+- Add 12-hour time format in printers overview ([#1571](/pull/1571))
+- Add monitors (like TMC2240) to Temperature Panel ([#1532](/pull/1532))
+- Add spoolman support ([#1542](/pull/1542))
+- Add optional background color for big gcode thumbnails ([#1535](/pull/1535))
### Bug Fixes and Improvements
-- Show confirm emergency stop dialog only when turned on ([#1526](https://github.com/mainsail-crew/mainsail/issues/1526))
-- Eta time format detection from browser ([#1522](https://github.com/mainsail-crew/mainsail/issues/1522))
-- Fix min/max positions in heightmap current mesh data panel ([#1533](https://github.com/mainsail-crew/mainsail/issues/1533))
-- Fix autorestart of webcam camerastreamer ([#1546](https://github.com/mainsail-crew/mainsail/issues/1546))
-- Fix missing reset options for print history data ([#1534](https://github.com/mainsail-crew/mainsail/issues/1534))
-- Fix some issues with the presets ([#1529](https://github.com/mainsail-crew/mainsail/issues/1529))
-- Fix macro parameter with spaces ([#1551](https://github.com/mainsail-crew/mainsail/issues/1551))
-- Fix type issue in TemperaturePanelListItem ([#1563](https://github.com/mainsail-crew/mainsail/issues/1563))
-- Fix webcam (camera-streamer) stop autorestart beforeDestory ([#1556](https://github.com/mainsail-crew/mainsail/issues/1556))
-- Fix gcode command for generic_heater in presets ([#1569](https://github.com/mainsail-crew/mainsail/issues/1569))
-- Fix wrong date function in multiple files ([#1568](https://github.com/mainsail-crew/mainsail/issues/1568))
-- Fix WebRTC (camera-streamer) port with external instance ([#1586](https://github.com/mainsail-crew/mainsail/issues/1586))
-- Fix webcam flip in timelapse preview ([#1587](https://github.com/mainsail-crew/mainsail/issues/1587))
-- Fix webcam switch button ([#1589](https://github.com/mainsail-crew/mainsail/issues/1589))
+- Show confirm emergency stop dialog only when turned on ([#1526](/pull/1526))
+- Eta time format detection from browser ([#1522](/pull/1522))
+- Fix min/max positions in heightmap current mesh data panel ([#1533](/pull/1533))
+- Fix autorestart of webcam camerastreamer ([#1546](/pull/1546))
+- Fix missing reset options for print history data ([#1534](/pull/1534))
+- Fix some issues with the presets ([#1529](/pull/1529))
+- Fix macro parameter with spaces ([#1551](/pull/1551))
+- Fix type issue in TemperaturePanelListItem ([#1563](/pull/1563))
+- Fix webcam (camera-streamer) stop autorestart beforeDestory ([#1556](/pull/1556))
+- Fix gcode command for generic_heater in presets ([#1569](/pull/1569))
+- Fix wrong date function in multiple files ([#1568](/pull/1568))
+- Fix WebRTC (camera-streamer) port with external instance ([#1586](/pull/1586))
+- Fix webcam flip in timelapse preview ([#1587](/pull/1587))
+- Fix webcam switch button ([#1589](/pull/1589))
### Refactor
-- Refactor ToolheadControlPanel ([#1530](https://github.com/mainsail-crew/mainsail/issues/1530))
-- Split ExtruderControlPanel.vue in multiple SFC ([#1565](https://github.com/mainsail-crew/mainsail/issues/1565))
-- Remove unused import in store/printer/getters.ts ([#1574](https://github.com/mainsail-crew/mainsail/issues/1574))
-- Rework tool color in extruder panel ([#1576](https://github.com/mainsail-crew/mainsail/issues/1576))
-- Update webcam "WebRTC MediaMTX" client ([#1558](https://github.com/mainsail-crew/mainsail/issues/1558))
+- Refactor ToolheadControlPanel ([#1530](/pull/1530))
+- Split ExtruderControlPanel.vue in multiple SFC ([#1565](/pull/1565))
+- Remove unused import in store/printer/getters.ts ([#1574](/pull/1574))
+- Rework tool color in extruder panel ([#1576](/pull/1576))
+- Update webcam "WebRTC MediaMTX" client ([#1558](/pull/1558))
### Localization
-- **de**: Update german translations ([#1583](https://github.com/mainsail-crew/mainsail/issues/1583))
-- **en**: Remove unused keys in english locale ([#1585](https://github.com/mainsail-crew/mainsail/issues/1585))
-- **es**: Update spanish locale ([#1548](https://github.com/mainsail-crew/mainsail/issues/1548))
-- **pl**: Update Polish translations ([#1544](https://github.com/mainsail-crew/mainsail/issues/1544))
-- **pl**: Update polish locale ([#1554](https://github.com/mainsail-crew/mainsail/issues/1554))
-- **pl**: Update Polish translations ([#1573](https://github.com/mainsail-crew/mainsail/issues/1573))
-- **zh**: Update Chinese (zh) localization ([#1588](https://github.com/mainsail-crew/mainsail/issues/1588))
+- **de**: Update german translations ([#1583](/pull/1583))
+- **en**: Remove unused keys in english locale ([#1585](/pull/1585))
+- **es**: Update spanish locale ([#1548](/pull/1548))
+- **pl**: Update Polish translations ([#1544](/pull/1544))
+- **pl**: Update polish locale ([#1554](/pull/1554))
+- **pl**: Update Polish translations ([#1573](/pull/1573))
+- **zh**: Update Chinese (zh) localization ([#1588](/pull/1588))
### Other
-- Fix ftp upload in release workflow ([#1590](https://github.com/mainsail-crew/mainsail/issues/1590))
+- Fix ftp upload in release workflow ([#1590](/pull/1590))
## [2.7.1](https://github.com/mainsail-crew/mainsail/releases/tag/v2.7.1) - 2023-08-16
### Bug Fixes and Improvements
-- Fix issue on tablet and smaller devices with the sidebar ([#1518](https://github.com/mainsail-crew/mainsail/issues/1518))
+- Fix issue on tablet and smaller devices with the sidebar ([#1518](/pull/1518))
### Localization
-- **zh**: Update Chinese (zh) localization ([#1521](https://github.com/mainsail-crew/mainsail/issues/1521))
+- **zh**: Update Chinese (zh) localization ([#1521](/pull/1521))
## [2.7.0](https://github.com/mainsail-crew/mainsail/releases/tag/v2.7.0) - 2023-08-12
### Features
-- Hide screws tilt adjust dialog, when using MAX_DEVIATION ([#1474](https://github.com/mainsail-crew/mainsail/issues/1474))
-- Add option to hide MCU/Host sensors in the temp panel ([#1496](https://github.com/mainsail-crew/mainsail/issues/1496))
-- Hide axis controls during print ([#1452](https://github.com/mainsail-crew/mainsail/issues/1452))
-- Add an option to set the sidebar default state ([#1462](https://github.com/mainsail-crew/mainsail/issues/1462))
-- Add option to hide FPS counter in webcams ([#1488](https://github.com/mainsail-crew/mainsail/issues/1488))
-- Add a select all option on the backup and restore dialogs ([#1448](https://github.com/mainsail-crew/mainsail/issues/1448))
-- Add nevermore to temperature panel ([#1511](https://github.com/mainsail-crew/mainsail/issues/1511))
+- Hide screws tilt adjust dialog, when using MAX_DEVIATION ([#1474](/pull/1474))
+- Add option to hide MCU/Host sensors in the temp panel ([#1496](/pull/1496))
+- Hide axis controls during print ([#1452](/pull/1452))
+- Add an option to set the sidebar default state ([#1462](/pull/1462))
+- Add option to hide FPS counter in webcams ([#1488](/pull/1488))
+- Add a select all option on the backup and restore dialogs ([#1448](/pull/1448))
+- Add nevermore to temperature panel ([#1511](/pull/1511))
### Bug Fixes and Improvements
-- Fix cursor style for item name to be a pointer ([#1514](https://github.com/mainsail-crew/mainsail/issues/1514))
+- Fix cursor style for item name to be a pointer ([#1514](/pull/1514))
### Refactor
-- Soft down info buttons in update manager ([#1513](https://github.com/mainsail-crew/mainsail/issues/1513))
+- Soft down info buttons in update manager ([#1513](/pull/1513))
### Localization
-- **pl**: Update Polish translation ([#1502](https://github.com/mainsail-crew/mainsail/issues/1502))
-- **pl**: Update Polish translation ([#1515](https://github.com/mainsail-crew/mainsail/issues/1515))
-- **zh**: Update Chinese (zh) localization ([#1503](https://github.com/mainsail-crew/mainsail/issues/1503))
+- **pl**: Update Polish translation ([#1502](/pull/1502))
+- **pl**: Update Polish translation ([#1515](/pull/1515))
+- **zh**: Update Chinese (zh) localization ([#1503](/pull/1503))
## [2.6.2](https://github.com/mainsail-crew/mainsail/releases/tag/v2.6.2) - 2023-07-30
### Bug Fixes and Improvements
-- Fix editor save & restart button behavior ([#1483](https://github.com/mainsail-crew/mainsail/issues/1483))
-- Hide rpm in temperature_fans without tachometer_pin ([#1489](https://github.com/mainsail-crew/mainsail/issues/1489))
-- Fix flip function in several webcam clients ([#1487](https://github.com/mainsail-crew/mainsail/issues/1487))
-- Fix issue with camel-case object names in temperature panel ([#1491](https://github.com/mainsail-crew/mainsail/issues/1491))
-- Use webcam name instead of UUID for timelapse plugin ([#1492](https://github.com/mainsail-crew/mainsail/issues/1492))
-- Fix issue with create/edit presets and refactor settings ([#1499](https://github.com/mainsail-crew/mainsail/issues/1499))
-- Fix multiple issues in the refactored update manager ([#1497](https://github.com/mainsail-crew/mainsail/issues/1497))
-- Fix issue with cannot extrude after a Klipper restart ([#1495](https://github.com/mainsail-crew/mainsail/issues/1495))
+- Fix editor save & restart button behavior ([#1483](/pull/1483))
+- Hide rpm in temperature_fans without tachometer_pin ([#1489](/pull/1489))
+- Fix flip function in several webcam clients ([#1487](/pull/1487))
+- Fix issue with camel-case object names in temperature panel ([#1491](/pull/1491))
+- Use webcam name instead of UUID for timelapse plugin ([#1492](/pull/1492))
+- Fix issue with create/edit presets and refactor settings ([#1499](/pull/1499))
+- Fix multiple issues in the refactored update manager ([#1497](/pull/1497))
+- Fix issue with cannot extrude after a Klipper restart ([#1495](/pull/1495))
### Refactor
-- Refactor SettingsRow ([#1484](https://github.com/mainsail-crew/mainsail/issues/1484))
+- Refactor SettingsRow ([#1484](/pull/1484))
### Localization
-- **pl**: Update Polish translation ([#1482](https://github.com/mainsail-crew/mainsail/issues/1482))
-- **zh**: Update chinese locale ([#1486](https://github.com/mainsail-crew/mainsail/issues/1486))
+- **pl**: Update Polish translation ([#1482](/pull/1482))
+- **zh**: Update chinese locale ([#1486](/pull/1486))
## [2.6.1](https://github.com/mainsail-crew/mainsail/releases/tag/v2.6.1) - 2023-07-24
### Bug Fixes and Improvements
-- Show delete dialog for single files too ([#1442](https://github.com/mainsail-crew/mainsail/issues/1442))
-- Remove variable check in klipper config StreamParser ([#1435](https://github.com/mainsail-crew/mainsail/issues/1435))
-- Fix condition in restartServiceNameExists check ([#1450](https://github.com/mainsail-crew/mainsail/issues/1450))
-- Avoid hitting 100% before print is complete ([#1455](https://github.com/mainsail-crew/mainsail/issues/1455))
-- Fix issue with ETA and 12h time format ([#1463](https://github.com/mainsail-crew/mainsail/issues/1463))
-- Fix issue with CSV separator in contents ([#1460](https://github.com/mainsail-crew/mainsail/issues/1460))
-- Fix issue with webcams in farm printers ([#1469](https://github.com/mainsail-crew/mainsail/issues/1469))
+- Show delete dialog for single files too ([#1442](/pull/1442))
+- Remove variable check in klipper config StreamParser ([#1435](/pull/1435))
+- Fix condition in restartServiceNameExists check ([#1450](/pull/1450))
+- Avoid hitting 100% before print is complete ([#1455](/pull/1455))
+- Fix issue with ETA and 12h time format ([#1463](/pull/1463))
+- Fix issue with CSV separator in contents ([#1460](/pull/1460))
+- Fix issue with webcams in farm printers ([#1469](/pull/1469))
### Refactor
-- Build version file for moonraker ([#1449](https://github.com/mainsail-crew/mainsail/issues/1449))
-- Use moonraker webcam api instead of direct DB access ([#1445](https://github.com/mainsail-crew/mainsail/issues/1445))
-- Change SettingsGeneralTab file ([#1475](https://github.com/mainsail-crew/mainsail/issues/1475))
-- Extract Presets and Settings from TemperaturePanel ([#1465](https://github.com/mainsail-crew/mainsail/issues/1465))
-- Display errors and warnings in the update_manager ([#1453](https://github.com/mainsail-crew/mainsail/issues/1453))
+- Build version file for moonraker ([#1449](/pull/1449))
+- Use moonraker webcam api instead of direct DB access ([#1445](/pull/1445))
+- Change SettingsGeneralTab file ([#1475](/pull/1475))
+- Extract Presets and Settings from TemperaturePanel ([#1465](/pull/1465))
+- Display errors and warnings in the update_manager ([#1453](/pull/1453))
### Localization
-- **pl**: Update Polish translation ([#1434](https://github.com/mainsail-crew/mainsail/issues/1434))
-- **pl**: Update Polish translation ([#1447](https://github.com/mainsail-crew/mainsail/issues/1447))
-- **pl**: Update polish locale ([#1471](https://github.com/mainsail-crew/mainsail/issues/1471))
-- **pl**: Update Polish translation ([#1476](https://github.com/mainsail-crew/mainsail/issues/1476))
-- **tr**: Update turkish locale ([#1480](https://github.com/mainsail-crew/mainsail/issues/1480))
-- **zh**: Update Chinese (zh) localization ([#1459](https://github.com/mainsail-crew/mainsail/issues/1459))
+- **pl**: Update Polish translation ([#1434](/pull/1434))
+- **pl**: Update Polish translation ([#1447](/pull/1447))
+- **pl**: Update polish locale ([#1471](/pull/1471))
+- **pl**: Update Polish translation ([#1476](/pull/1476))
+- **tr**: Update turkish locale ([#1480](/pull/1480))
+- **zh**: Update Chinese (zh) localization ([#1459](/pull/1459))
### Other
-- **pwa**: Remove debug warnings in browser console ([#1441](https://github.com/mainsail-crew/mainsail/issues/1441))
-- Add dev-dist to .gitignore ([#1451](https://github.com/mainsail-crew/mainsail/issues/1451))
+- **pwa**: Remove debug warnings in browser console ([#1441](/pull/1441))
+- Add dev-dist to .gitignore ([#1451](/pull/1451))
## [2.6.0](https://github.com/mainsail-crew/mainsail/releases/tag/v2.6.0) - 2023-06-19
### Features
-- Allow negative time estimate in slicer ([#1372](https://github.com/mainsail-crew/mainsail/issues/1372))
-- Customize sidebar navi ([#1336](https://github.com/mainsail-crew/mainsail/issues/1336))
-- Add AHT10 to additionalSensors ([#1378](https://github.com/mainsail-crew/mainsail/issues/1378))
-- Add function to duplicate gcode files ([#1321](https://github.com/mainsail-crew/mainsail/issues/1321))
-- Add jmuxer-stream webcam type, supporting raw h264 ([#1342](https://github.com/mainsail-crew/mainsail/issues/1342))
-- Add options to disable klipper helper dialogs ([#1319](https://github.com/mainsail-crew/mainsail/issues/1319))
-- Add facility to Scan Metadata from G-code Files ([#1316](https://github.com/mainsail-crew/mainsail/issues/1316))
-- Allows adjustable tab size in file editor ([#1354](https://github.com/mainsail-crew/mainsail/issues/1354))
-- Add printer name to browser tab while printing or complete ([#1371](https://github.com/mainsail-crew/mainsail/issues/1371))
-- Add an option to change the height of the temperatur chart ([#1391](https://github.com/mainsail-crew/mainsail/issues/1391))
-- Updating WebRTC with camera-streamer signaling protocol ([#1417](https://github.com/mainsail-crew/mainsail/issues/1417))
-- Add portuguese/brazil translate ([#1407](https://github.com/mainsail-crew/mainsail/issues/1407))
-- Add bed aspect ratio to heightmap graph ([#1420](https://github.com/mainsail-crew/mainsail/issues/1420))
-- Add WebRTC (MediaMTX / rtsp-simple-server) webcam mode ([#1318](https://github.com/mainsail-crew/mainsail/issues/1318))
-- Add retry button to ScrewsTiltAdjust helper dialog ([#1429](https://github.com/mainsail-crew/mainsail/issues/1429))
+- Allow negative time estimate in slicer ([#1372](/pull/1372))
+- Customize sidebar navi ([#1336](/pull/1336))
+- Add AHT10 to additionalSensors ([#1378](/pull/1378))
+- Add function to duplicate gcode files ([#1321](/pull/1321))
+- Add jmuxer-stream webcam type, supporting raw h264 ([#1342](/pull/1342))
+- Add options to disable klipper helper dialogs ([#1319](/pull/1319))
+- Add facility to Scan Metadata from G-code Files ([#1316](/pull/1316))
+- Allows adjustable tab size in file editor ([#1354](/pull/1354))
+- Add printer name to browser tab while printing or complete ([#1371](/pull/1371))
+- Add an option to change the height of the temperatur chart ([#1391](/pull/1391))
+- Updating WebRTC with camera-streamer signaling protocol ([#1417](/pull/1417))
+- Add portuguese/brazil translate ([#1407](/pull/1407))
+- Add bed aspect ratio to heightmap graph ([#1420](/pull/1420))
+- Add WebRTC (MediaMTX / rtsp-simple-server) webcam mode ([#1318](/pull/1318))
+- Add retry button to ScrewsTiltAdjust helper dialog ([#1429](/pull/1429))
### Bug Fixes and Improvements
-- Find LOAD & UNLOAD_FILAMENT macros case-insensitive ([#1335](https://github.com/mainsail-crew/mainsail/issues/1335))
-- Fix thumbnail guide link in settings ([#1337](https://github.com/mainsail-crew/mainsail/issues/1337))
-- Fix configuration guide link for thumbnails ([#1338](https://github.com/mainsail-crew/mainsail/issues/1338))
-- Fix miscellaneous slider + button for fans/outputs with max power ([#1344](https://github.com/mainsail-crew/mainsail/issues/1344))
-- Add gcode offset to live position in gcodeviewer ([#1341](https://github.com/mainsail-crew/mainsail/issues/1341))
-- Fix zip file timestamp ([#1375](https://github.com/mainsail-crew/mainsail/issues/1375))
-- Make the correct notification appear on gcode file move ([#1376](https://github.com/mainsail-crew/mainsail/issues/1376))
-- Fix issue when moving a file to the root directory ([#1377](https://github.com/mainsail-crew/mainsail/issues/1377))
-- DisableFanAnimation getter getting wrong value ([#1381](https://github.com/mainsail-crew/mainsail/issues/1381))
-- Check only not empty filename for metadata in farm printers ([#1392](https://github.com/mainsail-crew/mainsail/issues/1392))
-- Fix navigation to display allPrinters ([#1423](https://github.com/mainsail-crew/mainsail/issues/1423))
+- Find LOAD & UNLOAD_FILAMENT macros case-insensitive ([#1335](/pull/1335))
+- Fix thumbnail guide link in settings ([#1337](/pull/1337))
+- Fix configuration guide link for thumbnails ([#1338](/pull/1338))
+- Fix miscellaneous slider + button for fans/outputs with max power ([#1344](/pull/1344))
+- Add gcode offset to live position in gcodeviewer ([#1341](/pull/1341))
+- Fix zip file timestamp ([#1375](/pull/1375))
+- Make the correct notification appear on gcode file move ([#1376](/pull/1376))
+- Fix issue when moving a file to the root directory ([#1377](/pull/1377))
+- DisableFanAnimation getter getting wrong value ([#1381](/pull/1381))
+- Check only not empty filename for metadata in farm printers ([#1392](/pull/1392))
+- Fix navigation to display allPrinters ([#1423](/pull/1423))
### Refactor
-- Improve syntax highlighting and change theme in editor ([#1200](https://github.com/mainsail-crew/mainsail/issues/1200))
-- Add webcam-wrapper component ([#1422](https://github.com/mainsail-crew/mainsail/issues/1422))
-- Refactor Panel.vue ([#1427](https://github.com/mainsail-crew/mainsail/issues/1427))
-- Remove unused import in FarmPrinterPanel.vue ([#1428](https://github.com/mainsail-crew/mainsail/issues/1428))
+- Improve syntax highlighting and change theme in editor ([#1200](/pull/1200))
+- Add webcam-wrapper component ([#1422](/pull/1422))
+- Refactor Panel.vue ([#1427](/pull/1427))
+- Remove unused import in FarmPrinterPanel.vue ([#1428](/pull/1428))
### Styling
-- Fix eslint issue in SettingsNavigationTabItem ([#1383](https://github.com/mainsail-crew/mainsail/issues/1383))
+- Fix eslint issue in SettingsNavigationTabItem ([#1383](/pull/1383))
### Localization
-- **de**: Update German localization ([#1424](https://github.com/mainsail-crew/mainsail/issues/1424))
-- **en**: Remove unused key ([#1425](https://github.com/mainsail-crew/mainsail/issues/1425))
-- **ko**: Update Korean localization ([#1368](https://github.com/mainsail-crew/mainsail/issues/1368))
-- **pl**: Update Polish language ([#1411](https://github.com/mainsail-crew/mainsail/issues/1411))
-- **ru**: Update russian localization ([#1394](https://github.com/mainsail-crew/mainsail/issues/1394))
-- **zh**: Fix translation ([#1418](https://github.com/mainsail-crew/mainsail/issues/1418))
-- **zh_TW**: Update Chinese localization ([#1386](https://github.com/mainsail-crew/mainsail/issues/1386))
+- **de**: Update German localization ([#1424](/pull/1424))
+- **en**: Remove unused key ([#1425](/pull/1425))
+- **ko**: Update Korean localization ([#1368](/pull/1368))
+- **pl**: Update Polish language ([#1411](/pull/1411))
+- **ru**: Update russian localization ([#1394](/pull/1394))
+- **zh**: Fix translation ([#1418](/pull/1418))
+- **zh_TW**: Update Chinese localization ([#1386](/pull/1386))
### Documentation
-- Add Contributing section in README.md ([#1339](https://github.com/mainsail-crew/mainsail/issues/1339))
-- Fix broken coding standards link in contributing doc ([#1415](https://github.com/mainsail-crew/mainsail/issues/1415))
+- Add Contributing section in README.md ([#1339](/pull/1339))
+- Fix broken coding standards link in contributing doc ([#1415](/pull/1415))
### Other
-- Exclude htaccess file on upload to my.mainsail.xyz ([#1347](https://github.com/mainsail-crew/mainsail/issues/1347))
-- Add PULL_REQUEST_TEMPLATE ([#1340](https://github.com/mainsail-crew/mainsail/issues/1340))
-- Add PWA caching and cache updater ([#1421](https://github.com/mainsail-crew/mainsail/issues/1421))
-- Update ftp upload action in release workflow ([#1430](https://github.com/mainsail-crew/mainsail/issues/1430))
+- Exclude htaccess file on upload to my.mainsail.xyz ([#1347](/pull/1347))
+- Add PULL_REQUEST_TEMPLATE ([#1340](/pull/1340))
+- Add PWA caching and cache updater ([#1421](/pull/1421))
+- Update ftp upload action in release workflow ([#1430](/pull/1430))
## [2.5.1](https://github.com/mainsail-crew/mainsail/releases/tag/v2.5.1) - 2023-04-02
### Bug Fixes and Improvements
-- Missing M117 output in status panel ([#1309](https://github.com/mainsail-crew/mainsail/issues/1309))
-- Disallow non-ascii chars in bed_mesh name ([#1311](https://github.com/mainsail-crew/mainsail/issues/1311))
-- Fix issue of empty Screws tilt adjust helper dialog ([#1329](https://github.com/mainsail-crew/mainsail/issues/1329))
-- Fix invalid name input checks ([#1312](https://github.com/mainsail-crew/mainsail/issues/1312))
+- Missing M117 output in status panel ([#1309](