diff --git a/Modules/Bar/Widgets/SystemMonitor.qml b/Modules/Bar/Widgets/SystemMonitor.qml index 5f15563..9d97f7e 100644 --- a/Modules/Bar/Widgets/SystemMonitor.qml +++ b/Modules/Bar/Widgets/SystemMonitor.qml @@ -5,12 +5,8 @@ import qs.Commons import qs.Services import qs.Widgets - - - Rectangle { - id: root - - +Rectangle { + id: root property ShellScreen screen property real scaling: 1.0 @@ -41,395 +37,392 @@ import qs.Widgets readonly property bool showNetworkStats: (widgetSettings.showNetworkStats !== undefined) ? widgetSettings.showNetworkStats : widgetMetadata.showNetworkStats readonly property bool showDiskUsage: (widgetSettings.showDiskUsage !== undefined) ? widgetSettings.showDiskUsage : widgetMetadata.showDiskUsage + anchors.centerIn: parent + implicitWidth: (barPosition === "left" || barPosition === "right") ? Math.round(Style.capsuleHeight * scaling) : Math.round(horizontalLayout.implicitWidth + Style.marginM * 2 * scaling) + implicitHeight: (barPosition === "left" || barPosition === "right") ? Math.round(verticalLayout.implicitHeight + Style.marginM * 2 * scaling) : Math.round(Style.capsuleHeight * scaling) + radius: Math.round(Style.radiusM * scaling) + color: Color.mSurfaceVariant - + // Horizontal layout for top/bottom bars + RowLayout { + id: horizontalLayout anchors.centerIn: parent - implicitWidth: (barPosition === "left" || barPosition === "right") ? Math.round(Style.capsuleHeight * scaling) : Math.round(horizontalLayout.implicitWidth + Style.marginM * 2 * scaling) - implicitHeight: (barPosition === "left" || barPosition === "right") ? Math.round(verticalLayout.implicitHeight + Style.marginM * 2 * scaling) : Math.round(Style.capsuleHeight * scaling) - radius: Math.round(Style.radiusM * scaling) - color: Color.mSurfaceVariant + anchors.leftMargin: Style.marginM * scaling + anchors.rightMargin: Style.marginM * scaling + spacing: Style.marginXS * scaling + visible: barPosition === "top" || barPosition === "bottom" - // Horizontal layout for top/bottom bars - RowLayout { - id: horizontalLayout - anchors.centerIn: parent - anchors.leftMargin: Style.marginM * scaling - anchors.rightMargin: Style.marginM * scaling - spacing: Style.marginXS * scaling - visible: barPosition === "top" || barPosition === "bottom" + // CPU Usage Component + Item { + Layout.preferredWidth: cpuUsageRow.implicitWidth + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.alignment: Qt.AlignVCenter + visible: showCpuUsage - // CPU Usage Component - Item { - Layout.preferredWidth: cpuUsageRow.implicitWidth - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.alignment: Qt.AlignVCenter - visible: showCpuUsage + RowLayout { + id: cpuUsageRow + anchors.centerIn: parent + spacing: Style.marginXXS * scaling - RowLayout { - id: cpuUsageRow - anchors.centerIn: parent - spacing: Style.marginXXS * scaling - - NIcon { - icon: "cpu-usage" - font.pointSize: Style.fontSizeM * scaling - Layout.alignment: Qt.AlignVCenter - } - - NText { - text: `${SystemStatService.cpuUsage}%` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXS * scaling - font.weight: Style.fontWeightMedium - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignVCenter - color: Color.mPrimary - } + NIcon { + icon: "cpu-usage" + font.pointSize: Style.fontSizeM * scaling + Layout.alignment: Qt.AlignVCenter } - } - // CPU Temperature Component - Item { - Layout.preferredWidth: cpuTempRow.implicitWidth - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.alignment: Qt.AlignVCenter - visible: showCpuTemp - - RowLayout { - id: cpuTempRow - anchors.centerIn: parent - spacing: Style.marginXXS * scaling - - NIcon { - icon: "cpu-temperature" - // Fire is so tall, we need to make it smaller - font.pointSize: Style.fontSizeS * scaling - Layout.alignment: Qt.AlignVCenter - } - - NText { - text: `${SystemStatService.cpuTemp}°C` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXS * scaling - font.weight: Style.fontWeightMedium - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignVCenter - color: Color.mPrimary - } - } - } - - // Memory Usage Component - Item { - Layout.preferredWidth: memoryUsageRow.implicitWidth - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.alignment: Qt.AlignVCenter - visible: showMemoryUsage - - RowLayout { - id: memoryUsageRow - anchors.centerIn: parent - spacing: Style.marginXXS * scaling - - NIcon { - icon: "memory" - font.pointSize: Style.fontSizeM * scaling - Layout.alignment: Qt.AlignVCenter - } - - NText { - text: showMemoryAsPercent ? `${SystemStatService.memPercent}%` : `${SystemStatService.memGb}G` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXS * scaling - font.weight: Style.fontWeightMedium - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignVCenter - color: Color.mPrimary - } - } - } - - // Network Download Speed Component - Item { - Layout.preferredWidth: networkDownloadRow.implicitWidth - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.alignment: Qt.AlignVCenter - visible: showNetworkStats - - RowLayout { - id: networkDownloadRow - anchors.centerIn: parent - spacing: Style.marginXS * scaling - - NIcon { - icon: "download-speed" - font.pointSize: Style.fontSizeM * scaling - Layout.alignment: Qt.AlignVCenter - } - - NText { - text: SystemStatService.formatSpeed(SystemStatService.rxSpeed) - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXS * scaling - font.weight: Style.fontWeightMedium - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignVCenter - color: Color.mPrimary - } - } - } - - // Network Upload Speed Component - Item { - Layout.preferredWidth: networkUploadRow.implicitWidth - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.alignment: Qt.AlignVCenter - visible: showNetworkStats - - RowLayout { - id: networkUploadRow - anchors.centerIn: parent - spacing: Style.marginXS * scaling - - NIcon { - icon: "upload-speed" - font.pointSize: Style.fontSizeM * scaling - Layout.alignment: Qt.AlignVCenter - } - - NText { - text: SystemStatService.formatSpeed(SystemStatService.txSpeed) - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXS * scaling - font.weight: Style.fontWeightMedium - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignVCenter - color: Color.mPrimary - } - } - } - - // Disk Usage Component (primary drive) - Item { - Layout.preferredWidth: diskUsageRow.implicitWidth - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.alignment: Qt.AlignVCenter - visible: showDiskUsage - - RowLayout { - id: diskUsageRow - anchors.centerIn: parent - spacing: Style.marginXS * scaling - - NIcon { - icon: "storage" - font.pointSize: Style.fontSizeM * scaling - Layout.alignment: Qt.AlignVCenter - } - - NText { - text: `${SystemStatService.diskPercent}%` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXS * scaling - font.weight: Style.fontWeightMedium - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignVCenter - color: Color.mPrimary - } + NText { + text: `${SystemStatService.cpuUsage}%` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXS * scaling + font.weight: Style.fontWeightMedium + Layout.alignment: Qt.AlignVCenter + verticalAlignment: Text.AlignVCenter + color: Color.mPrimary } } } - // Vertical layout for left/right bars - ColumnLayout { - id: verticalLayout - anchors.centerIn: parent - anchors.topMargin: Style.marginS * scaling - anchors.bottomMargin: Style.marginS * scaling - width: Math.round(28 * scaling) - spacing: Style.marginS * scaling - visible: barPosition === "left" || barPosition === "right" + // CPU Temperature Component + Item { + Layout.preferredWidth: cpuTempRow.implicitWidth + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.alignment: Qt.AlignVCenter + visible: showCpuTemp - // CPU Usage Component - Item { - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.preferredWidth: Math.round(28 * scaling) - Layout.alignment: Qt.AlignHCenter - visible: showCpuUsage + RowLayout { + id: cpuTempRow + anchors.centerIn: parent + spacing: Style.marginXXS * scaling - Column { - id: cpuUsageRowVertical - anchors.centerIn: parent - spacing: Style.marginXXS * scaling + NIcon { + icon: "cpu-temperature" + // Fire is so tall, we need to make it smaller + font.pointSize: Style.fontSizeS * scaling + Layout.alignment: Qt.AlignVCenter + } - NText { - text: `${Math.round(SystemStatService.cpuUsage)}%` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXXS * scaling - font.weight: Style.fontWeightMedium - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - color: Color.mPrimary - } - - NIcon { - icon: "cpu-usage" - font.pointSize: Style.fontSizeS * scaling - anchors.horizontalCenter: parent.horizontalCenter - } + NText { + text: `${SystemStatService.cpuTemp}°C` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXS * scaling + font.weight: Style.fontWeightMedium + Layout.alignment: Qt.AlignVCenter + verticalAlignment: Text.AlignVCenter + color: Color.mPrimary } } + } - // CPU Temperature Component - Item { - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.preferredWidth: Math.round(28 * scaling) - Layout.alignment: Qt.AlignHCenter - visible: showCpuTemp + // Memory Usage Component + Item { + Layout.preferredWidth: memoryUsageRow.implicitWidth + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.alignment: Qt.AlignVCenter + visible: showMemoryUsage - Column { - id: cpuTempRowVertical - anchors.centerIn: parent - spacing: Style.marginXXS * scaling + RowLayout { + id: memoryUsageRow + anchors.centerIn: parent + spacing: Style.marginXXS * scaling - NText { - text: `${SystemStatService.cpuTemp}°` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXXS * scaling - font.weight: Style.fontWeightMedium - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - color: Color.mPrimary - } + NIcon { + icon: "memory" + font.pointSize: Style.fontSizeM * scaling + Layout.alignment: Qt.AlignVCenter + } - NIcon { - icon: "cpu-temperature" - // Fire is so tall, we need to make it smaller - font.pointSize: Style.fontSizeXS * scaling - anchors.horizontalCenter: parent.horizontalCenter - } + NText { + text: showMemoryAsPercent ? `${SystemStatService.memPercent}%` : `${SystemStatService.memGb}G` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXS * scaling + font.weight: Style.fontWeightMedium + Layout.alignment: Qt.AlignVCenter + verticalAlignment: Text.AlignVCenter + color: Color.mPrimary } } + } - // Memory Usage Component - Item { - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.preferredWidth: Math.round(28 * scaling) - Layout.alignment: Qt.AlignHCenter - visible: showMemoryUsage + // Network Download Speed Component + Item { + Layout.preferredWidth: networkDownloadRow.implicitWidth + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.alignment: Qt.AlignVCenter + visible: showNetworkStats - Column { - id: memoryUsageRowVertical - anchors.centerIn: parent - spacing: Style.marginXXS * scaling + RowLayout { + id: networkDownloadRow + anchors.centerIn: parent + spacing: Style.marginXS * scaling - NText { - text: showMemoryAsPercent ? `${SystemStatService.memPercent}%` : `${Math.round(SystemStatService.memGb)}G` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXXS * scaling - font.weight: Style.fontWeightMedium - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - color: Color.mPrimary - } + NIcon { + icon: "download-speed" + font.pointSize: Style.fontSizeM * scaling + Layout.alignment: Qt.AlignVCenter + } - NIcon { - icon: "memory" - font.pointSize: Style.fontSizeS * scaling - anchors.horizontalCenter: parent.horizontalCenter - } + NText { + text: SystemStatService.formatSpeed(SystemStatService.rxSpeed) + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXS * scaling + font.weight: Style.fontWeightMedium + Layout.alignment: Qt.AlignVCenter + verticalAlignment: Text.AlignVCenter + color: Color.mPrimary } } + } - // Network Download Speed Component - Item { - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.preferredWidth: Math.round(28 * scaling) - Layout.alignment: Qt.AlignHCenter - visible: showNetworkStats + // Network Upload Speed Component + Item { + Layout.preferredWidth: networkUploadRow.implicitWidth + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.alignment: Qt.AlignVCenter + visible: showNetworkStats - Column { - id: networkDownloadRowVertical - anchors.centerIn: parent - spacing: Style.marginXXS * scaling + RowLayout { + id: networkUploadRow + anchors.centerIn: parent + spacing: Style.marginXS * scaling - NIcon { - icon: "download-speed" - font.pointSize: Style.fontSizeS * scaling - anchors.horizontalCenter: parent.horizontalCenter - } + NIcon { + icon: "upload-speed" + font.pointSize: Style.fontSizeM * scaling + Layout.alignment: Qt.AlignVCenter + } - NText { - text: SystemStatService.formatSpeed(SystemStatService.rxSpeed) - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXXS * scaling - font.weight: Style.fontWeightMedium - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - color: Color.mPrimary - } + NText { + text: SystemStatService.formatSpeed(SystemStatService.txSpeed) + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXS * scaling + font.weight: Style.fontWeightMedium + Layout.alignment: Qt.AlignVCenter + verticalAlignment: Text.AlignVCenter + color: Color.mPrimary } } + } - // Network Upload Speed Component - Item { - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.preferredWidth: Math.round(28 * scaling) - Layout.alignment: Qt.AlignHCenter - visible: showNetworkStats + // Disk Usage Component (primary drive) + Item { + Layout.preferredWidth: diskUsageRow.implicitWidth + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.alignment: Qt.AlignVCenter + visible: showDiskUsage - Column { - id: networkUploadRowVertical - anchors.centerIn: parent - spacing: Style.marginXXS * scaling + RowLayout { + id: diskUsageRow + anchors.centerIn: parent + spacing: Style.marginXS * scaling - NIcon { - icon: "upload-speed" - font.pointSize: Style.fontSizeS * scaling - anchors.horizontalCenter: parent.horizontalCenter - } - - NText { - text: SystemStatService.formatSpeed(SystemStatService.txSpeed) - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXXS * scaling - font.weight: Style.fontWeightMedium - anchors.horizontalCenter: parent.horizontalCenter - horizontalAlignment: Text.AlignHCenter - color: Color.mPrimary - } + NIcon { + icon: "storage" + font.pointSize: Style.fontSizeM * scaling + Layout.alignment: Qt.AlignVCenter } - } - // Disk Usage Component (primary drive) - Item { - Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) - Layout.preferredWidth: Math.round(28 * scaling) - Layout.alignment: Qt.AlignHCenter - visible: showDiskUsage - - ColumnLayout { - id: diskUsageRowVertical - anchors.centerIn: parent - spacing: Style.marginXXS * scaling - - NIcon { - icon: "storage" - font.pointSize: Style.fontSizeS * scaling - Layout.alignment: Qt.AlignHCenter - } - - NText { - text: `${SystemStatService.diskPercent}%` - font.family: Settings.data.ui.fontFixed - font.pointSize: Style.fontSizeXXS * scaling - font.weight: Style.fontWeightMedium - Layout.alignment: Qt.AlignHCenter - horizontalAlignment: Text.AlignHCenter - color: Color.mPrimary - } + NText { + text: `${SystemStatService.diskPercent}%` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXS * scaling + font.weight: Style.fontWeightMedium + Layout.alignment: Qt.AlignVCenter + verticalAlignment: Text.AlignVCenter + color: Color.mPrimary } } } } + // Vertical layout for left/right bars + ColumnLayout { + id: verticalLayout + anchors.centerIn: parent + anchors.topMargin: Style.marginS * scaling + anchors.bottomMargin: Style.marginS * scaling + width: Math.round(28 * scaling) + spacing: Style.marginS * scaling + visible: barPosition === "left" || barPosition === "right" + + // CPU Usage Component + Item { + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.preferredWidth: Math.round(28 * scaling) + Layout.alignment: Qt.AlignHCenter + visible: showCpuUsage + + Column { + id: cpuUsageRowVertical + anchors.centerIn: parent + spacing: Style.marginXXS * scaling + + NText { + text: `${Math.round(SystemStatService.cpuUsage)}%` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXXS * scaling + font.weight: Style.fontWeightMedium + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + color: Color.mPrimary + } + + NIcon { + icon: "cpu-usage" + font.pointSize: Style.fontSizeS * scaling + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + + // CPU Temperature Component + Item { + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.preferredWidth: Math.round(28 * scaling) + Layout.alignment: Qt.AlignHCenter + visible: showCpuTemp + + Column { + id: cpuTempRowVertical + anchors.centerIn: parent + spacing: Style.marginXXS * scaling + + NText { + text: `${SystemStatService.cpuTemp}°` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXXS * scaling + font.weight: Style.fontWeightMedium + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + color: Color.mPrimary + } + + NIcon { + icon: "cpu-temperature" + // Fire is so tall, we need to make it smaller + font.pointSize: Style.fontSizeXS * scaling + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + + // Memory Usage Component + Item { + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.preferredWidth: Math.round(28 * scaling) + Layout.alignment: Qt.AlignHCenter + visible: showMemoryUsage + + Column { + id: memoryUsageRowVertical + anchors.centerIn: parent + spacing: Style.marginXXS * scaling + + NText { + text: showMemoryAsPercent ? `${SystemStatService.memPercent}%` : `${Math.round(SystemStatService.memGb)}G` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXXS * scaling + font.weight: Style.fontWeightMedium + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + color: Color.mPrimary + } + + NIcon { + icon: "memory" + font.pointSize: Style.fontSizeS * scaling + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + + // Network Download Speed Component + Item { + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.preferredWidth: Math.round(28 * scaling) + Layout.alignment: Qt.AlignHCenter + visible: showNetworkStats + + Column { + id: networkDownloadRowVertical + anchors.centerIn: parent + spacing: Style.marginXXS * scaling + + NIcon { + icon: "download-speed" + font.pointSize: Style.fontSizeS * scaling + anchors.horizontalCenter: parent.horizontalCenter + } + + NText { + text: SystemStatService.formatSpeed(SystemStatService.rxSpeed) + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXXS * scaling + font.weight: Style.fontWeightMedium + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + color: Color.mPrimary + } + } + } + + // Network Upload Speed Component + Item { + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.preferredWidth: Math.round(28 * scaling) + Layout.alignment: Qt.AlignHCenter + visible: showNetworkStats + + Column { + id: networkUploadRowVertical + anchors.centerIn: parent + spacing: Style.marginXXS * scaling + + NIcon { + icon: "upload-speed" + font.pointSize: Style.fontSizeS * scaling + anchors.horizontalCenter: parent.horizontalCenter + } + + NText { + text: SystemStatService.formatSpeed(SystemStatService.txSpeed) + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXXS * scaling + font.weight: Style.fontWeightMedium + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + color: Color.mPrimary + } + } + } + + // Disk Usage Component (primary drive) + Item { + Layout.preferredHeight: Math.round(Style.capsuleHeight * scaling) + Layout.preferredWidth: Math.round(28 * scaling) + Layout.alignment: Qt.AlignHCenter + visible: showDiskUsage + + ColumnLayout { + id: diskUsageRowVertical + anchors.centerIn: parent + spacing: Style.marginXXS * scaling + + NIcon { + icon: "storage" + font.pointSize: Style.fontSizeS * scaling + Layout.alignment: Qt.AlignHCenter + } + + NText { + text: `${SystemStatService.diskPercent}%` + font.family: Settings.data.ui.fontFixed + font.pointSize: Style.fontSizeXXS * scaling + font.weight: Style.fontWeightMedium + Layout.alignment: Qt.AlignHCenter + horizontalAlignment: Text.AlignHCenter + color: Color.mPrimary + } + } + } + } +} diff --git a/Services/UpdateService.qml b/Services/UpdateService.qml index 266d34c..36a36a7 100644 --- a/Services/UpdateService.qml +++ b/Services/UpdateService.qml @@ -8,8 +8,8 @@ Singleton { id: root // Public properties - property string baseVersion: "2.8.0" - property bool isDevelopment: true + property string baseVersion: "2.9.0" + property bool isDevelopment: false property string currentVersion: `v${!isDevelopment ? baseVersion : baseVersion + "-dev"}`