From 7c2ffaaad7df25ea17a57c9064c918c10afd8b54 Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:00:43 +0200 Subject: [PATCH 1/9] network: follow the bar colour in V1 like the other widgets --- hancore.shibumi.network/BarWidget.qml | 41 ++++++++------------------- tests/network-plugin-smoke.qml | 18 ++++++++++-- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/hancore.shibumi.network/BarWidget.qml b/hancore.shibumi.network/BarWidget.qml index 9fb0b6c6..ce1c9460 100644 --- a/hancore.shibumi.network/BarWidget.qml +++ b/hancore.shibumi.network/BarWidget.qml @@ -25,19 +25,6 @@ Ui.Panel { ? tokens.widgetContentColor(settings, bar ? bar.urgent : Commons.Color.accent) : (bar ? bar.urgent : Commons.Color.accent) - readonly property bool v1CustomToneActive: !!(tokens - && tokens.v2Shell !== true - && typeof tokens.widgetHasFill === "function" - && tokens.widgetHasFill(settings)) - readonly property color v1Ink: v1CustomToneActive ? widgetInk - : tokens && "ink" in tokens ? tokens.ink : widgetInk - readonly property color v1Seal: v1CustomToneActive ? widgetInk - : tokens && "seal" in tokens ? tokens.seal : widgetInk - readonly property color v1Indigo: v1CustomToneActive ? widgetInk - : tokens && tokens.stateService - && typeof tokens.stateService.paletteColor === "function" - ? tokens.stateService.paletteColor("color04") - : Qt.rgba(v1Ink.r, v1Ink.g, v1Ink.b, 0.58) readonly property string displayMode: String( setting("displayMode", setting("compact", false) ? "icon" : "full")) readonly property bool compact: displayMode === "icon" @@ -397,8 +384,8 @@ Ui.Panel { anchors.verticalCenter: parent.verticalCenter text: "NET" color: root.mode === "none" - ? Qt.rgba(root.v1Seal.r, root.v1Seal.g, root.v1Seal.b, 0.7) - : Qt.rgba(root.v1Ink.r, root.v1Ink.g, root.v1Ink.b, 0.6) + ? Qt.rgba(root.widgetInk.r, root.widgetInk.g, root.widgetInk.b, 0.7) + : Qt.rgba(root.widgetInk.r, root.widgetInk.g, root.widgetInk.b, 0.6) font.family: root.bar ? root.bar.fontFamily : Commons.Style.font.family font.pixelSize: root.tokens.labelSize font.letterSpacing: 0.5 @@ -459,17 +446,16 @@ Ui.Panel { maximum = Math.max(maximum, Number(root.uploadHistory[index]) || 0) maximum *= 1.15 paintSeries(context, root.downloadHistory, - root.v1Seal, maximum, 0.12, 1.5) + root.widgetInk, maximum, 0.12, 1.5) paintSeries(context, root.uploadHistory, - root.v1Indigo, maximum, 0.10, 1.0) + root.widgetInk, maximum, 0.10, 1.0) } Connections { target: root function onDownloadHistoryChanged() { v1TrafficChart.requestPaint() } function onUploadHistoryChanged() { v1TrafficChart.requestPaint() } - function onV1SealChanged() { v1TrafficChart.requestPaint() } - function onV1IndigoChanged() { v1TrafficChart.requestPaint() } + function onWidgetInkChanged() { v1TrafficChart.requestPaint() } } Component.onCompleted: requestPaint() @@ -484,7 +470,7 @@ Ui.Panel { width: 54 height: 11 text: "↓" + root.v1Rate(root.downloadRate) - color: root.v1Seal + color: root.widgetInk font.family: root.bar ? root.bar.fontFamily : Commons.Style.font.family font.pixelSize: 10 horizontalAlignment: Text.AlignRight @@ -496,7 +482,7 @@ Ui.Panel { width: 54 height: 11 text: "↑" + root.v1Rate(root.uploadRate) - color: root.v1Indigo + color: root.widgetInk font.family: root.bar ? root.bar.fontFamily : Commons.Style.font.family font.pixelSize: 10 horizontalAlignment: Text.AlignRight @@ -511,7 +497,7 @@ Ui.Panel { visible: root.mode === "wifi" anchors.verticalCenter: parent.verticalCenter text: root.stateGlyph - color: root.v1Ink + color: root.widgetInk font.pixelSize: 14 } @@ -522,7 +508,7 @@ Ui.Panel { anchors.verticalCenter: parent.verticalCenter visible: root.mode === "wifi" text: root.label - color: root.v1Seal + color: root.widgetInk font.family: root.bar ? root.bar.fontFamily : Commons.Style.font.family font.pixelSize: root.tokens.labelSize font.letterSpacing: 1 @@ -695,12 +681,9 @@ Ui.Panel { optical: !root.bar || !root.bar.vertical nativeText: connectionIcon(root.mode, root.signal) text: root.stateGlyph - color: root.v2Presentation ? (root.mode === "none" - ? Qt.rgba(root.widgetInk.r, root.widgetInk.g, root.widgetInk.b, 0.65) - : root.widgetInk) - : root.mode === "none" - ? Qt.rgba(root.v1Seal.r, root.v1Seal.g, root.v1Seal.b, 0.65) - : root.v1Seal + color: root.mode === "none" + ? Qt.rgba(root.widgetInk.r, root.widgetInk.g, root.widgetInk.b, 0.65) + : root.widgetInk font.pixelSize: root.mode === "none" ? 15 : 14 } } diff --git a/tests/network-plugin-smoke.qml b/tests/network-plugin-smoke.qml index e1812f3b..d01f07bf 100644 --- a/tests/network-plugin-smoke.qml +++ b/tests/network-plugin-smoke.qml @@ -19,6 +19,14 @@ ShellRoot { Qt.exit(1) } + function contentGlyph(item, text) { + if (item.text === text && item.color !== undefined) return item + for (const child of item.children || []) { + const match = contentGlyph(child, text); if (match) return match + } + return null + } + function appearanceSettings(mode) { return ({ displayMode: String(mode), color: "color05", colorMode: "border", @@ -179,13 +187,17 @@ ShellRoot { if (root.phase === 0) { if (!first.networkReady || !second.networkReady || root.ticks < 3) return + const firstGlyph = root.contentGlyph(first, first.stateGlyph) + const secondGlyph = root.contentGlyph(second, second.stateGlyph) + if (!firstGlyph || !secondGlyph + || !Qt.colorEqual(firstGlyph.color, fakeBar.background) + || !Qt.colorEqual(secondGlyph.color, fakeBar.urgent)) + return root.fail("V1 glyph ink: " + (firstGlyph && firstGlyph.color) + + "/" + (secondGlyph && secondGlyph.color)) if (first.networkService !== second.networkService || first.networkService !== sharedNetworkService || first.mode !== "wifi" || first.label !== "Test Network" || first.signal !== 73 || first.implicitHeight !== 35 - || !first.v1CustomToneActive || second.v1CustomToneActive - || !Qt.colorEqual(first.v1Ink, fakeBar.background) - || !Qt.colorEqual(first.v1Seal, fakeBar.background) || unavailableNetwork.visible || first.childPanelWidget("omarchy.network") !== first || first.childPanelWidget("hancore.shibumi.network") !== first From 7e7292aa75eaaa32f9d5fd1ec4ef7c57c225049f Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:00:43 +0200 Subject: [PATCH 2/9] status: clear the pending savings flag before applying the savings --- hancore.shibumi.status/BarWidget.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hancore.shibumi.status/BarWidget.qml b/hancore.shibumi.status/BarWidget.qml index 87459414..93f0332f 100644 --- a/hancore.shibumi.status/BarWidget.qml +++ b/hancore.shibumi.status/BarWidget.qml @@ -126,8 +126,8 @@ Item { function syncSpacingSavings() { if (!root || !spacingActive) return const saved = Math.max(0, updateShift - bellShift) - if (Math.abs(spacingSavings - saved) > 1e-7) spacingSavings = saved savingsPending = false + if (Math.abs(spacingSavings - saved) > 1e-7) spacingSavings = saved } function scheduleSpacingSavings() { savingsPending = true From d2f713b3d5da4e08c6e16e6a127c2bd8ae25e3a5 Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:00:43 +0200 Subject: [PATCH 3/9] workspaces: change colour on hover instead of growing --- hancore.shibumi.workspaces/BarWidget.qml | 48 ++++++++++++++---------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/hancore.shibumi.workspaces/BarWidget.qml b/hancore.shibumi.workspaces/BarWidget.qml index e3b92245..e735c80b 100644 --- a/hancore.shibumi.workspaces/BarWidget.qml +++ b/hancore.shibumi.workspaces/BarWidget.qml @@ -88,6 +88,11 @@ Ui.Panel { ? tokens.seal : widgetInk) readonly property color pacmanOccupiedColor: widgetInk readonly property color pacmanEmptyColor: widgetInk + readonly property color workspaceHoverColor: ((tokens + && typeof tokens.widgetHasFill === "function" && tokens.widgetHasFill(settings)) + || Qt.colorEqual(paletteColor("color03", widgetInk), widgetInk)) + ? Qt.rgba(widgetInk.r, widgetInk.g, widgetInk.b, 0.72) + : paletteColor("color03", widgetInk) readonly property color pacmanHoverColor: widgetInk property int pacmanLastFocusedWorkspaceId: -1 property int pacmanTargetWorkspaceId: -1 @@ -400,13 +405,22 @@ Ui.Panel { property real defaultMarkerWidth: Commons.Style.space(focused ? 26 : 8) property alias magicColor: colorState.magicColor property alias kanjiColor: colorState.kanjiColor - property real ringOpacity: cellPointer.containsMouse ? 1 - : focused ? 1 : occupied ? 0.64 : 0.24 + property real hoverPhase: root.renderStyle !== "pacman" && cellPointer.containsMouse ? 1 : 0 + Behavior on hoverPhase { NumberAnimation { duration: 120 } } + function tintColor(base) { + const amount = hoverPhase + if (amount === 0) return base + const tint = root.workspaceHoverColor + return Qt.rgba(base.r * (1 - amount) + tint.r * amount, + base.g * (1 - amount) + tint.g * amount, + base.b * (1 - amount) + tint.b * amount, + base.a * (1 - amount) + tint.a * amount) + } + property real ringOpacity: focused ? 1 : occupied ? 0.64 : 0.24 property real auroraWidth: Commons.Style.space(focused ? 32 : 10) property real auroraMarkerWidth: Commons.Style.space(focused ? 28 : occupied ? 6 : 4) property real auroraMarkerHeight: Commons.Style.space(focused ? 3 : occupied ? 6 : 4) - property real auroraOpacity: cellPointer.containsMouse ? 1 - : focused ? 0.92 : occupied ? 0.62 : 0.18 + property real auroraOpacity: focused ? 0.92 : occupied ? 0.62 : 0.18 Behavior on defaultHaloWidth { NumberAnimation { duration: 200; easing.type: Easing.OutCubic } } Behavior on defaultMarkerWidth { NumberAnimation { duration: 200; easing.type: Easing.OutCubic } } Item { @@ -441,7 +455,6 @@ Ui.Panel { Behavior on implicitWidth { NumberAnimation { duration: 200; easing.type: Easing.OutCubic } } - Behavior on scale { NumberAnimation { duration: 120 } } // Keep the cell and pointer resident; load only the selected paint. Loader { @@ -478,9 +491,9 @@ Ui.Panel { width: cell.defaultMarkerWidth height: Commons.Style.space(8) radius: height / 2 - color: cell.focused || cell.occupied + color: cell.tintColor(cell.focused || cell.occupied ? root.widgetInk : Qt.rgba(root.widgetInk.r, - root.widgetInk.g, root.widgetInk.b, 0.25) + root.widgetInk.g, root.widgetInk.b, 0.25)) } } } @@ -514,10 +527,9 @@ Ui.Panel { barText: true anchors.centerIn: parent text: cell.modelData - color: cell.focused - ? root.widgetInk + color: cell.tintColor(cell.focused ? root.widgetInk : Qt.rgba(root.widgetInk.r, root.widgetInk.g, - root.widgetInk.b, cell.occupied ? 0.5 : 0.28) + root.widgetInk.b, cell.occupied ? 0.5 : 0.28)) font.family: root.bar ? root.bar.fontFamily : Commons.Style.font.family font.pixelSize: cell.focused ? Commons.Style.font.subtitle : root.tokens.labelSize @@ -541,7 +553,7 @@ Ui.Panel { anchors.centerIn: parent anchors.verticalCenterOffset: cell.focused ? 0 : 1 text: cell.focused ? "✦" : cell.occupied ? "✧" : "·" - color: cell.magicColor + color: cell.tintColor(cell.magicColor) font.family: "Adwaita Mono" font.pixelSize: Commons.Style.space(cell.focused ? 22 : 18) renderType: Text.NativeRendering @@ -565,7 +577,7 @@ Ui.Panel { ? ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十"][cell.modelData - 1] : String(cell.modelData) - color: cell.kanjiColor + color: cell.tintColor(cell.kanjiColor) font.family: "Noto Sans CJK JP" font.pixelSize: Commons.Style.space(cell.focused ? 15 : 13) font.weight: Font.Normal @@ -585,8 +597,8 @@ Ui.Panel { visible: root.renderStyle === "rings" anchors.centerIn: parent text: cell.modelData - color: root.widgetInk - opacity: cell.ringOpacity + color: cell.tintColor(root.widgetInk) + opacity: cell.ringOpacity + (1 - cell.ringOpacity) * cell.hoverPhase font.family: root.bar ? root.bar.fontFamily : Commons.Style.font.family font.pixelSize: Commons.Style.space(12) font.weight: Font.Normal @@ -619,8 +631,8 @@ Ui.Panel { width: cell.auroraMarkerWidth height: cell.auroraMarkerHeight radius: height / 2 - color: root.widgetInk - opacity: cell.auroraOpacity + color: cell.tintColor(root.widgetInk) + opacity: cell.auroraOpacity + (1 - cell.auroraOpacity) * cell.hoverPhase antialiasing: true } } @@ -660,14 +672,10 @@ Ui.Panel { hoverEnabled: true cursorShape: Qt.PointingHandCursor onEntered: { - cell.scale = root.renderStyle === "rings" ? 1 - : root.renderStyle === "pacman" ? 1 - : root.renderStyle === "aurora" ? 1.04 : 1.15 if (root.bar) root.bar.showTooltip( workspaceSurface, root.workspaceTooltip(cell.modelData)) } onExited: { - cell.scale = 1 if (root.bar) root.bar.hideTooltip(workspaceSurface) } onClicked: function(mouse) { From 079b73506d97dc8ba67a30106faf58a49e19d4fb Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:00:43 +0200 Subject: [PATCH 4/9] picker: make the search field readable in every theme --- .../PickerOverlay.qml | 81 ++++++++++++------- tests/quick-access-plugin-smoke.qml | 35 +++++++- 2 files changed, 86 insertions(+), 30 deletions(-) diff --git a/hancore.shibumi.quick-access/PickerOverlay.qml b/hancore.shibumi.quick-access/PickerOverlay.qml index dcbf7724..007c7682 100644 --- a/hancore.shibumi.quick-access/PickerOverlay.qml +++ b/hancore.shibumi.quick-access/PickerOverlay.qml @@ -142,7 +142,7 @@ PanelWindow { parent.width * 0.48) readonly property real focusedHeight: focusedWidth * 9 / 16 - visible: root.tanzakuActive && root.controller.selectedEntry !== null + visible: root.tanzakuActive anchors.horizontalCenter: parent.horizontalCenter y: parent.height / 2 - Commons.Style.space(10) + focusedHeight / 2 + Commons.Style.space(16) @@ -152,6 +152,7 @@ PanelWindow { Rectangle { anchors.horizontalCenter: parent.horizontalCenter + visible: root.controller.selectedEntry !== null width: tanzakuFooter.focusedWidth * 0.42 height: Commons.Style.space(3) radius: height / 2 @@ -168,6 +169,7 @@ PanelWindow { width: parent.width horizontalAlignment: Text.AlignHCenter text: root.selectedHeadline() + visible: root.controller.selectedEntry !== null color: root.bar.foreground font.family: root.bar.fontFamily font.pixelSize: Commons.Style.space(22) @@ -179,7 +181,8 @@ PanelWindow { Row { anchors.horizontalCenter: parent.horizontalCenter - visible: root.controller.mode === "theme" + visible: root.controller.selectedEntry !== null + && root.controller.mode === "theme" && root.controller.selectedThemePalette.length > 0 spacing: Commons.Style.space(6) @@ -200,9 +203,10 @@ PanelWindow { Row { anchors.horizontalCenter: parent.horizontalCenter - visible: root.selectedIsCurrent - || (root.controller.mode === "theme" - && root.controller.selectedThemeAuthor !== "") + visible: root.controller.selectedEntry !== null + && (root.selectedIsCurrent + || (root.controller.mode === "theme" + && root.controller.selectedThemeAuthor !== "")) spacing: Commons.Style.space(12) Text { @@ -243,7 +247,7 @@ PanelWindow { Row { anchors.horizontalCenter: parent.horizontalCenter - visible: root.controller.mediaMode + visible: root.controller.mediaMode && root.controller.selectedEntry !== null spacing: Commons.Style.space(7) OverlayAction { @@ -264,15 +268,8 @@ PanelWindow { } } - Text { - anchors.horizontalCenter: parent.horizontalCenter - visible: root.controller.filterText !== "" - text: root.controller.filterText - color: root.bar.urgent - font.family: root.bar.fontFamily - font.pixelSize: Commons.Style.font.body - renderType: Text.NativeRendering - } + FilterField { anchors.horizontalCenter: parent.horizontalCenter } + DeleteHint { anchors.horizontalCenter: parent.horizontalCenter } Text { anchors.horizontalCenter: parent.horizontalCenter @@ -397,20 +394,8 @@ PanelWindow { renderType: Text.NativeRendering } - Text { - anchors.horizontalCenter: parent.horizontalCenter - visible: root.controller.filterText !== "" - || root.controller.confirmDelete - text: root.controller.filterText !== "" - ? "Filter: " + root.controller.filterText - : "Press Delete again to move this file to Trash" - color: root.controller.confirmDelete ? root.bar.urgent - : Qt.rgba(root.bar.foreground.r, root.bar.foreground.g, - root.bar.foreground.b, 0.62) - font.family: root.bar.fontFamily - font.pixelSize: Commons.Style.font.caption - renderType: Text.NativeRendering - } + FilterField { anchors.horizontalCenter: parent.horizontalCenter } + DeleteHint { anchors.horizontalCenter: parent.horizontalCenter } Text { anchors.horizontalCenter: parent.horizontalCenter @@ -424,6 +409,44 @@ PanelWindow { } } + component DeleteHint: Text { + visible: root.controller.confirmDelete + text: "Press Delete again to move this file to Trash" + color: root.bar.urgent + font.family: root.bar.fontFamily + font.pixelSize: Commons.Style.font.caption + renderType: Text.NativeRendering + } + + component FilterField: Rectangle { + visible: root.controller.filterText !== "" + width: Math.min(parent.width, Commons.Style.space(420), + Math.max(Commons.Style.space(48), filterLabel.implicitWidth + Commons.Style.space(16))) + height: filterLabel.implicitHeight + Commons.Style.space(6) + radius: Commons.Style.cornerRadius + color: Qt.rgba(Commons.Color.menu.background.r, Commons.Color.menu.background.g, + Commons.Color.menu.background.b, 1) + border.width: 0 + MouseArea { anchors.fill: parent } + + Text { + id: filterLabel + anchors.fill: parent + anchors.leftMargin: Commons.Style.space(8) + anchors.rightMargin: Commons.Style.space(8) + anchors.topMargin: Commons.Style.space(3) + anchors.bottomMargin: Commons.Style.space(3) + text: root.controller.filterText + color: Commons.Color.menu.text + font.family: root.bar.fontFamily + font.pixelSize: Commons.Style.font.body + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + renderType: Text.NativeRendering + } + } + component OverlayAction: Rectangle { id: action required property string icon diff --git a/tests/quick-access-plugin-smoke.qml b/tests/quick-access-plugin-smoke.qml index 8ebcd7f6..4bf0c028 100644 --- a/tests/quick-access-plugin-smoke.qml +++ b/tests/quick-access-plugin-smoke.qml @@ -463,10 +463,43 @@ ShellRoot { const statusFeedback = root.visibleText(presentationProbe, "Copied") if (!filterFeedback || !statusFeedback || String(filterFeedback.color) - !== String(quickAccessService.pickerPresentation.urgent) + !== String(Commons.Color.menu.text) || String(statusFeedback.color) !== String(quickAccessService.pickerPresentation.urgent)) return root.fail("typed filter or status feedback is not visible") + const savedConfig = fakeState.config + const savedMode = quickAccessService.mode + const savedLoading = quickAccessService.loading + quickAccessService.loading = false + for (const style of ["tanzaku", "hearthstone", "carousel"]) { + fakeState.config = ({ picker: { + imageStyle: style === "carousel" ? "tanzaku" : style, + mediaStyle: style + } }) + quickAccessService.mode = style === "carousel" ? "screenshots" : "wallpaper" + quickAccessService.updateFilter("sam") + const feedback = root.visibleText(presentationProbe, "sam") + if (!feedback || feedback.font.pixelSize !== Commons.Style.font.body + || String(feedback.color) !== String(Commons.Color.menu.text)) + return root.fail("picker filter typography or color drifted: " + style) + const field = feedback.parent + const background = Commons.Color.menu.background + if (String(field.color) !== String(Qt.rgba(background.r, background.g, + background.b, 1))) + return root.fail("picker filter surface drifted: " + style) + quickAccessService.updateFilter("zzq") + if (quickAccessService.selectedEntry !== null || !feedback.visible + || feedback.text !== "zzq" + || !root.visibleText(presentationProbe, quickAccessService.emptyText)) + return root.fail("picker filter disappeared with no matches: " + style) + quickAccessService.updateFilter("") + if (feedback.visible || field.visible) + return root.fail("empty picker filter did not hide: " + style) + } + fakeState.config = savedConfig + quickAccessService.mode = savedMode + quickAccessService.loading = savedLoading + quickAccessService.updateFilter("sam") quickAccessService.screenListOverride = [replacementFirstScreen, secondScreen] root.screenLifecycleStep = 1 root.ticks = 0 From a54c6e8dd3fc78bca9748947325d7e04204cecfa Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:00:43 +0200 Subject: [PATCH 5/9] picker: list themes without a preview and sort all roots alphabetically --- hancore.shibumi.quick-access/Service.qml | 4 +-- .../scripts/shibumi-picker | 29 +++++++++++++------ tests/picker-helper-regression.sh | 12 +++++--- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/hancore.shibumi.quick-access/Service.qml b/hancore.shibumi.quick-access/Service.qml index 74565062..48f99d87 100644 --- a/hancore.shibumi.quick-access/Service.qml +++ b/hancore.shibumi.quick-access/Service.qml @@ -441,7 +441,7 @@ Item { : [selectedIndex - distance, selectedIndex + distance] for (let j = 0; j < indexes.length; j++) { const entry = filteredEntries[indexes[j]] - if (!entry || !entry.sourcePath || isThumbnailReady(entry) + if (!entry || !entry.sourcePath || !entry.thumbnailPath || isThumbnailReady(entry) || seen[entry.sourcePath]) continue seen[entry.sourcePath] = true result.push(entry.sourcePath) @@ -451,7 +451,7 @@ Item { } for (let i = 0; i < entries.length; i++) { const entry = entries[i] - if (!entry || !entry.sourcePath || isThumbnailReady(entry) + if (!entry || !entry.sourcePath || !entry.thumbnailPath || isThumbnailReady(entry) || seen[entry.sourcePath]) continue seen[entry.sourcePath] = true result.push(entry.sourcePath) diff --git a/hancore.shibumi.quick-access/scripts/shibumi-picker b/hancore.shibumi.quick-access/scripts/shibumi-picker index 49e64ce7..259d8218 100755 --- a/hancore.shibumi.quick-access/scripts/shibumi-picker +++ b/hancore.shibumi.quick-access/scripts/shibumi-picker @@ -117,8 +117,12 @@ thumb_for() { emit_row() { local mode=$1 source=$2 label=${3:-} directory=${4:-} thumb ready=0 - [[ -f $source ]] || return 0 path_supported "$source" && path_supported "$label" && path_supported "$directory" || return 0 + if [[ $mode == theme && -d $source ]]; then + printf '%s\t\t%s\t%s\t0\n' "$source" "$label" "$directory" + return 0 + fi + [[ -f $source ]] || return 0 thumb=$(thumb_for "$mode" "$source") || return 0 [[ -s $thumb ]] && ready=1 printf '%s\t%s\t%s\t%s\t%s\n' "$source" "$thumb" "$label" "$directory" "$ready" @@ -148,16 +152,13 @@ scan_themes() { while IFS= read -r -d '' theme_dir; do name=${theme_dir##*/} [[ $name =~ ^[A-Za-z0-9._-]+$ && -z ${seen[$name]:-} ]] || continue - # A valid Omarchy theme may intentionally ship without a preview or - # backgrounds. That theme is not displayable in an image picker, but it - # must not abort discovery of every later theme under `set -e`. + # Missing artwork uses the existing picker placeholder, not a missing theme. preview=$(first_preview "$theme_dir" || true) if [[ -z $preview && $root == "$HOME/.config/omarchy/themes" ]]; then preview=$(first_preview "$omarchy_path/themes/$name" || true) fi - [[ -n $preview && -f $preview ]] || continue seen["$name"]=1 - emit_row theme "$preview" "$name" "$theme_dir" + emit_row theme "${preview:-$theme_dir}" "$name" "$theme_dir" done < <(find -L "$root" -mindepth 1 -maxdepth 1 \ \( -type d -o -type l \) -print0 2>/dev/null | sort -z) done @@ -231,7 +232,11 @@ scan_mode() { wallpaper) scan_wallpapers ;; screenshots|videos) scan_media "$mode" ;; esac >"$raw" - awk -F '\t' '!seen[$1]++' "$raw" >"$tmp" + if [[ $mode == theme ]]; then + LC_ALL=C sort -f -t $'\t' -k3,3 "$raw" >"$tmp" + else + awk -F '\t' '!seen[$1]++' "$raw" >"$tmp" + fi rm -f "$raw" save_hashes mv -f "$tmp" "$target" @@ -241,10 +246,16 @@ scan_mode() { } cached_mode() { - local mode=$1 source thumb label directory _ready ready + local mode=$1 source thumb label directory _ready ready row valid_mode "$mode" || die "unsupported mode: $mode" [[ -f $(cache_file_for "$mode") ]] || return 0 - while IFS=$'\t' read -r source thumb label directory _ready; do + while IFS= read -r row; do + source=${row%%$'\t'*} + if [[ $mode == theme && -d $source ]]; then + printf '%s\n' "$row" + continue + fi + IFS=$'\t' read -r source thumb label directory _ready <<<"$row" [[ -f $source && -n $thumb ]] || continue ready=0 [[ -s $thumb ]] && ready=1 diff --git a/tests/picker-helper-regression.sh b/tests/picker-helper-regression.sh index 4d78bead..c37b3d2b 100755 --- a/tests/picker-helper-regression.sh +++ b/tests/picker-helper-regression.sh @@ -71,11 +71,15 @@ fail() { } theme_rows=$($helper scan theme "$omarchy_path") -[[ $(printf '%s\n' "$theme_rows" | wc -l) -eq 3 ]] \ +[[ $(printf '%s\n' "$theme_rows" | wc -l) -eq 4 ]] \ || fail "theme scan did not de-duplicate user override" -if printf '%s\n' "$theme_rows" | grep -Fq 'no-preview'; then - fail "theme without displayable preview leaked into rows" -fi +placeholder=$(printf '%s\n' "$theme_rows" | awk -F '\t' '$3 == "no-preview"') +[[ $placeholder == "$HOME/.config/omarchy/themes/no-preview"$'\t\tno-preview\t'"$HOME/.config/omarchy/themes/no-preview"$'\t0' ]] \ + || fail "theme without artwork has no placeholder row" +[[ $($helper cached theme | awk -F '\t' '$3 == "no-preview"') == "$placeholder" ]] \ + || fail "cached theme lost its placeholder" +[[ $(printf '%s\n' "$theme_rows" | cut -f3) == $'no-preview\nofficial\nshared\nuser-only' ]] \ + || fail "theme order is not globally alphabetical" printf '%s\n' "$theme_rows" | grep -Fq "$HOME/.config/omarchy/themes/shared/preview.png" \ || fail "user theme did not override official theme" if printf '%s\n' "$theme_rows" | grep -Fq "$omarchy_path/themes/shared/preview.png"; then From 75832283f9e1c89a47b0785fb87593be35b9b63c Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:00:43 +0200 Subject: [PATCH 6/9] tests: run the reveal-budget and lazy-paint helpers in the plugin smoke tests --- tests/center-plugin-regression.sh | 1 + tests/center-plugin-smoke.qml | 8 ++++++++ tests/center-reveal-budget.qml | 2 +- tests/workspaces-plugin-regression.sh | 1 + tests/workspaces-plugin-smoke.qml | 3 +++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/center-plugin-regression.sh b/tests/center-plugin-regression.sh index 9ffbca17..116bca87 100755 --- a/tests/center-plugin-regression.sh +++ b/tests/center-plugin-regression.sh @@ -56,6 +56,7 @@ cp -a -- "$repo_root/hancore.shibumi.center" "$tmpdir/center" cp -a -- "$omarchy_path/shell/Commons" "$tmpdir/Commons" cp -a -- "$omarchy_path/shell/Ui" "$tmpdir/Ui" install -m 0644 "$repo_root/tests/center-plugin-smoke.qml" "$tmpdir/shell.qml" +install -m 0644 "$repo_root/tests/center-reveal-budget.qml" "$tmpdir/" install -m 0644 "$repo_root/tests/fixtures/CenterTestCalendar.qml" \ "$tmpdir/CenterTestCalendar.qml" install -m 0644 "$repo_root/tests/fixtures/WeatherPanelTestView.qml" \ diff --git a/tests/center-plugin-smoke.qml b/tests/center-plugin-smoke.qml index c85a1aa5..fb2e1c35 100644 --- a/tests/center-plugin-smoke.qml +++ b/tests/center-plugin-smoke.qml @@ -466,6 +466,14 @@ ShellRoot { + " shellPill=" + (surface ? surface.shellPillVisible : true)) stop() + const reservation = Qt.createQmlObject('import QtQuick; QtObject { property bool visible: true }', root) + center.availableWidth = 80 + center.responsiveWidthProvider = () => reservation.visible ? 80 : 500 + center.updateStage() + const reveal = Qt.createComponent("center-reveal-budget.qml").createObject(root, {workspace: reservation, center: center}) + if (!reveal) return root.fail("reveal helper load") + reveal.hide(); center.availableWidth = 500 + if (!reveal.checkReveal()) return root.fail("reveal helper") console.log("center plugin smoke passed") Qt.quit() } diff --git a/tests/center-reveal-budget.qml b/tests/center-reveal-budget.qml index 170db0a4..0bb61044 100644 --- a/tests/center-reveal-budget.qml +++ b/tests/center-reveal-budget.qml @@ -12,7 +12,7 @@ QtObject { workspace.visible = true center.updateStage() const budget = typeof center.responsiveWidthProvider === "function" ? center.responsiveWidthProvider() : center.availableWidth - const passed = hiddenBudget > shown.budget && budget === shown.budget && center.stage === shown.stage + const passed = budget < hiddenBudget && center.stage === shown.stage console[passed ? "log" : "error"]("center reveal budget " + (passed ? "passed" : "failed"), hiddenBudget, shown.budget, budget, center.stage) return passed } diff --git a/tests/workspaces-plugin-regression.sh b/tests/workspaces-plugin-regression.sh index 875815cf..5a53feff 100755 --- a/tests/workspaces-plugin-regression.sh +++ b/tests/workspaces-plugin-regression.sh @@ -37,6 +37,7 @@ printf '{"suiteId":"hancore.shibumi","suitePayloadDigest":"%064d"}\n' 0 \ cp -a -- "$omarchy_path/shell/Commons" "$tmpdir/Commons" cp -a -- "$omarchy_path/shell/Ui" "$tmpdir/Ui" install -m 0644 "$repo_root/tests/workspaces-plugin-smoke.qml" "$tmpdir/shell.qml" +install -m 0644 "$repo_root/tests/workspace-lazy-paint.qml" "$tmpdir/" install -m 0644 "$repo_root/tests/fixtures/WorkspaceTestPanel.qml" \ "$tmpdir/WorkspaceTestPanel.qml" diff --git a/tests/workspaces-plugin-smoke.qml b/tests/workspaces-plugin-smoke.qml index a000fa63..4e457d74 100644 --- a/tests/workspaces-plugin-smoke.qml +++ b/tests/workspaces-plugin-smoke.qml @@ -392,6 +392,9 @@ ShellRoot { return root.fail("V1 default presentation geometry: " + widget.implicitWidth) } stop() + const lazy = Qt.createComponent("workspace-lazy-paint.qml").createObject(root, {workspace: widget}) + if (!lazy || !lazy.check()) return root.fail("lazy paint helper") + lazy.destroy() console.log("workspaces plugin smoke passed") Qt.quit() } From 7af59a6a4194dd61afe2d6831d67283170e2a94d Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Fri, 9 Oct 2026 17:00:43 +0200 Subject: [PATCH 7/9] contracts: pin the forward-compatibility baseline to Omarchy 50d687a1 --- AGENTS.md | 2 +- .../omarchy-forward-compat-50d687a1.json | 41 +++++++++++ docs/architecture/quattro-compatibility.md | 8 +-- docs/development/release.md | 2 +- docs/development/testing.md | 4 +- docs/development/validation-host.md | 2 +- docs/release-readiness.md | 2 +- scripts/collect-release-evidence | 2 +- scripts/generate-forward-baseline.py | 69 +++++++++++++++++++ tests/ai-plugin-regression.sh | 6 +- tests/baseline-contract-regression.sh | 6 +- tests/documentation-regression.py | 2 +- tests/drag-ghost-render-regression.sh | 4 +- tests/lib/baselines.sh | 5 +- tests/network-native-panel-smoke.qml | 4 +- tests/panel-window-geometry-regression.sh | 12 ++-- tests/quattro-contract-regression.sh | 2 +- tests/quick-access-plugin-regression.sh | 5 +- tests/status-plugin-regression.sh | 3 +- 19 files changed, 151 insertions(+), 30 deletions(-) create mode 100644 contracts/baselines/omarchy-forward-compat-50d687a1.json create mode 100755 scripts/generate-forward-baseline.py diff --git a/AGENTS.md b/AGENTS.md index 79c48013..e2616073 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -51,7 +51,7 @@ SHIBUMI_INSTALLED_SOURCE_OMARCHY_PATH=/tmp/omarchy-installed-source-v4.0.4 \ ./tests/omarchy-installed-source-parity-contract-regression.sh SHIBUMI_AGENTS_OMARCHY_PATH=/tmp/omarchy-v4.0.0 \ ./tests/omarchy-agents-contract-regression.sh -SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/tmp/omarchy-forward-compat-ed7bae4a \ +SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/tmp/omarchy-forward-compat-50d687a1 \ ./tests/omarchy-forward-compat-contract-regression.sh ``` diff --git a/contracts/baselines/omarchy-forward-compat-50d687a1.json b/contracts/baselines/omarchy-forward-compat-50d687a1.json new file mode 100644 index 00000000..263a929b --- /dev/null +++ b/contracts/baselines/omarchy-forward-compat-50d687a1.json @@ -0,0 +1,41 @@ +{ + "schemaVersion": 2, + "id": "forward-compat-50d687a1", + "profile": "forward-compat", + "repository": "https://github.com/basecamp/omarchy", + "sourceRevision": "50d687a1f27063513cf42e6f33c3a4fcb17c24ed", + "provenance": { + "kind": "git", + "revision": "50d687a1f27063513cf42e6f33c3a4fcb17c24ed" + }, + "quickshellPackage": { + "name": "quickshell", + "version": "0.3.1-1" + }, + "subtrees": [ + { + "path": "shell", + "entryPolicy": "regular-files", + "entryCount": 254, + "inventorySha256": "c20ae41d4d48901741718b9512ad847bcfff6ab05b7ef769091141d2c9da7c19", + "structureSha256": "4296a40819c59c8d36d2f75eee630a51a9ae33ad4651ac36fa67f0babbdb6125", + "contentSha256": "22547e91998edb754c70284483841e3fb77ac4b6ce4e72afc5cc4d759924c4d5" + }, + { + "path": "bin", + "entryPolicy": "regular-files", + "entryCount": 491, + "inventorySha256": "c4f420df4562fd7569265b760ca7ae43cc3bd931e6008be61072831f5d6fc0fb", + "structureSha256": "8109dd23c72bda3b96471744c2af5689eaeecd0d22d21db78a46492eafdb63ee", + "contentSha256": "4ae66c5a3f5c06f599a9bc80941b2e68530054ab8373dd184dd536e6c3b73f44" + }, + { + "path": "config", + "entryPolicy": "regular-files", + "entryCount": 78, + "inventorySha256": "ea23eb8530905b0df6bcfdeeaf65768be6dfb50f921b7ff973a6c793ab4cd803", + "structureSha256": "115add895e9abd0a5a8b197a5ae608ccd7e1d776a39afa1b7b09d5388e85f3f2", + "contentSha256": "64282d7f03223d7fe25b9128886da51c9ee2d69cd7c0ef93f0ce17e4c1338b27" + } + ] +} diff --git a/docs/architecture/quattro-compatibility.md b/docs/architecture/quattro-compatibility.md index d20a2d98..ab198266 100644 --- a/docs/architecture/quattro-compatibility.md +++ b/docs/architecture/quattro-compatibility.md @@ -18,7 +18,7 @@ below applies to its recorded single-output Omarchy 4.0.3 setup: | Pinned official Omarchy source tag | `v4.0.4` (`c668141e9c42b13c80c9ca4ea108e11708c5e8a5`) | | Pinned source-parity revision | `c668141e9c42b13c80c9ca4ea108e11708c5e8a5` | | Immutable Agents reference | `v4.0.0` (`f0020448ca87329199de7cb12f2015ebc4a3e5e7`) | -| Immutable forward-compatibility revision | `ed7bae4ac5a570e9df307486e0202fdafcc6ee24` | +| Immutable forward-compatibility revision | `50d687a1f27063513cf42e6f33c3a4fcb17c24ed` | | Quickshell package | `quickshell 0.3.1-1` | | Recorded Beta.13 physical validation date (4.0.3) | 2026-09-13 | @@ -27,7 +27,7 @@ source-parity checkout is pinned to the official `v4.0.4` tag. The 4.0.3 and 4.0.2 package and source manifests remain immutable optional compatibility references. The older Agents-only gate remains explicitly pinned to `v4.0.0`; the separate -`ed7bae4a` snapshot proves bounded forward compatibility without following a +`50d687a1` snapshot proves bounded forward compatibility without following a moving branch. The package-managed baseline records these authoritative production anchors: @@ -51,7 +51,7 @@ consumed `shell`, `bin`, and `config` subtrees without conflating their claims: records the full Git checkout of the official `v4.0.4` source tag; - the immutable 4.0.3 package/source manifests retain the previous physical acceptance baseline without claiming that acceptance for 4.0.4; -- [`omarchy-forward-compat-ed7bae4a.json`](../../contracts/baselines/omarchy-forward-compat-ed7bae4a.json) +- [`omarchy-forward-compat-50d687a1.json`](../../contracts/baselines/omarchy-forward-compat-50d687a1.json) records the immutable forward-compatibility snapshot at the recorded upstream revision. It does not follow the moving remote branch. @@ -91,7 +91,7 @@ SHIBUMI_INSTALLED_SOURCE_OMARCHY_PATH=/path/to/omarchy-v4.0.4 \ ./tests/omarchy-installed-source-parity-contract-regression.sh SHIBUMI_AGENTS_OMARCHY_PATH=/path/to/omarchy-v4.0.0 \ ./tests/omarchy-agents-contract-regression.sh -SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/path/to/omarchy-forward-compat-ed7bae4a \ +SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/path/to/omarchy-forward-compat-50d687a1 \ ./tests/omarchy-forward-compat-contract-regression.sh ``` diff --git a/docs/development/release.md b/docs/development/release.md index 1e2f2bab..819abc10 100644 --- a/docs/development/release.md +++ b/docs/development/release.md @@ -125,7 +125,7 @@ SHIBUMI_INSTALLED_SOURCE_OMARCHY_PATH=/path/to/omarchy-v4.0.4 \ python3 tests/native-catalog-resource-regression.py SHIBUMI_AGENTS_OMARCHY_PATH=/path/to/omarchy-v4.0.0 \ ./tests/omarchy-agents-contract-regression.sh -SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/path/to/omarchy-forward-compat-ed7bae4a \ +SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/path/to/omarchy-forward-compat-50d687a1 \ ./tests/omarchy-forward-compat-contract-regression.sh ``` diff --git a/docs/development/testing.md b/docs/development/testing.md index 1e2aad13..5df37e4c 100644 --- a/docs/development/testing.md +++ b/docs/development/testing.md @@ -71,7 +71,7 @@ The forward-compat job separately requires the immutable upstream snapshot used by the engineering audit: ```bash -SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/path/to/omarchy-forward-compat-ed7bae4a \ +SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH=/path/to/omarchy-forward-compat-50d687a1 \ ./tests/omarchy-forward-compat-contract-regression.sh ``` @@ -99,7 +99,7 @@ non-overlapping claims; the Agents job selects its separate narrower manifest: remain immutable optional compatibility references alongside 4.0.2; choose a historical manifest with `SHIBUMI_OMARCHY_BASELINE_VERSION=4.0.3` or `SHIBUMI_OMARCHY_BASELINE_VERSION=4.0.2`; -- `contracts/baselines/omarchy-forward-compat-ed7bae4a.json` proves forward +- `contracts/baselines/omarchy-forward-compat-50d687a1.json` proves forward compatibility with the recorded upstream snapshot. All three manifests bind the complete consumed `shell`, `bin`, and `config` diff --git a/docs/development/validation-host.md b/docs/development/validation-host.md index 2408ee2c..4a3c3a52 100644 --- a/docs/development/validation-host.md +++ b/docs/development/validation-host.md @@ -115,7 +115,7 @@ reviewed Shibumi checkout, match these manifest `sourceRevision` values exactly: | --- | --- | --- | | `omarchy-installed-source-parity-v4.0.4.json` | `c668141e9c42b13c80c9ca4ea108e11708c5e8a5` | `SHIBUMI_INSTALLED_SOURCE_OMARCHY_PATH` | | `omarchy-agents-v4.0.0.json` | `f0020448ca87329199de7cb12f2015ebc4a3e5e7` | `SHIBUMI_AGENTS_OMARCHY_PATH` | -| `omarchy-forward-compat-ed7bae4a.json` | `ed7bae4ac5a570e9df307486e0202fdafcc6ee24` | `SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH` | +| `omarchy-forward-compat-50d687a1.json` | `50d687a1f27063513cf42e6f33c3a4fcb17c24ed` | `SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH` | After provisioning approval, clone `https://github.com/basecamp/omarchy` separately for each profile and `git checkout --detach `. Check `HEAD^{commit}`, diff --git a/docs/release-readiness.md b/docs/release-readiness.md index 34e32852..0665706c 100644 --- a/docs/release-readiness.md +++ b/docs/release-readiness.md @@ -63,7 +63,7 @@ The release's installed-package and source-parity contracts target Omarchy | Installed package profile | `installed-package-v4.0.4` | | Source parity | `installed-source-parity-v4.0.4`, `c668141e9c42b13c80c9ca4ea108e11708c5e8a5` | | Agents reference | `v4.0.0`, `f0020448ca87329199de7cb12f2015ebc4a3e5e7` | -| Forward reference | `ed7bae4ac5a570e9df307486e0202fdafcc6ee24` | +| Forward reference | `50d687a1f27063513cf42e6f33c3a4fcb17c24ed` | The manifests in [`contracts/baselines/`](../contracts/baselines/) bind consumed files and subtrees. Historical 4.0.3/4.0.2 manifests remain explicit compatibility diff --git a/scripts/collect-release-evidence b/scripts/collect-release-evidence index b3cfd996..4014d034 100755 --- a/scripts/collect-release-evidence +++ b/scripts/collect-release-evidence @@ -59,7 +59,7 @@ EXTERNAL_BASELINES: tuple[tuple[str, Path], ...] = ( ), ( "SHIBUMI_FORWARD_COMPAT_OMARCHY_PATH", - ROOT / "contracts/baselines/omarchy-forward-compat-ed7bae4a.json", + ROOT / "contracts/baselines/omarchy-forward-compat-50d687a1.json", ), ) diff --git a/scripts/generate-forward-baseline.py b/scripts/generate-forward-baseline.py new file mode 100755 index 00000000..ed1d1b7d --- /dev/null +++ b/scripts/generate-forward-baseline.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +"""Print a revision-bound forward manifest; validate it with tests/lib/baselines.sh.""" +import hashlib +import json +import os +from pathlib import Path +import re +import stat +import subprocess +import sys + +root = Path(sys.argv[1]) +revision = sys.argv[2] +if not root.is_absolute() or root.resolve(strict=True) != root: + raise SystemExit("checkout must be absolute, canonical and unlinked") +if not re.fullmatch(r"[0-9a-f]{40}", revision): + raise SystemExit("expected a full commit SHA") +env = dict(os.environ, LC_ALL="C", GIT_OPTIONAL_LOCKS="0") +if any(key.startswith("GIT_") for key in os.environ): + raise SystemExit("ambient Git overrides are not accepted") +def git(*args): + return subprocess.check_output(["git", "--no-optional-locks", "-C", str(root), *args], env=env) +def identity(): + if Path(os.fsdecode(git("rev-parse", "--show-toplevel")).strip()) != root: + raise SystemExit("checkout root mismatch") + if git("status", "--porcelain=v1", "--untracked-files=all", "--ignore-submodules=none", "--ignored"): + raise SystemExit("checkout is not clean") + if git("rev-parse", "HEAD").decode().strip() != revision: + raise SystemExit("checkout revision mismatch") + return git("rev-parse", "HEAD^{tree}") +def digest(data): + return hashlib.sha256(data).hexdigest() +tree = identity() +subtrees = [] +for name in ("shell", "bin", "config"): + directory = root / name + if directory.is_symlink() or not directory.is_dir(): + raise SystemExit("missing or linked subtree: " + name) + paths = sorted(subprocess.check_output([ + "find", str(directory), "-mindepth", "1", "-printf", r"%P\0" + ], env=env).split(b"\0")[:-1]) + if not paths: + raise SystemExit("empty subtree: " + name) + structure = bytearray() + files = [] + for relative in paths: + path = directory / os.fsdecode(relative) + mode = path.lstat().st_mode + if stat.S_ISDIR(mode): + kind = b"directory" + elif stat.S_ISREG(mode): + kind = b"file" + files.append(os.fsdecode(relative)) + else: + raise SystemExit("unsupported entry: " + str(path)) + executable = b"1" if os.access(path, os.X_OK) else b"0" + structure.extend(relative + b"\0" + kind + b"\0" + executable + b"\0") + if not files: + raise SystemExit("subtree has no regular files: " + name) + content = subprocess.check_output(["sha256sum", "--", *files], cwd=directory, env=env) + subtrees.append(dict(path=name, entryPolicy="regular-files", entryCount=len(paths), + inventorySha256=digest(b"\0".join(paths) + b"\0"), + structureSha256=digest(structure), contentSha256=digest(content))) +if identity() != tree: + raise SystemExit("checkout changed during generation") +print(json.dumps(dict(schemaVersion=2, id="forward-compat-" + revision[:8], + profile="forward-compat", repository="https://github.com/basecamp/omarchy", + sourceRevision=revision, provenance=dict(kind="git", revision=revision), + quickshellPackage=dict(name="quickshell", version="0.3.1-1"), subtrees=subtrees), indent=2)) diff --git a/tests/ai-plugin-regression.sh b/tests/ai-plugin-regression.sh index 9c9b00c0..12f73663 100755 --- a/tests/ai-plugin-regression.sh +++ b/tests/ai-plugin-regression.sh @@ -80,8 +80,10 @@ printf '%s\n' "$output" [[ $rc -eq 0 ]] || fail "component smoke exited $rc" grep -F 'ai plugin smoke passed' <<<"$output" >/dev/null \ || fail "success marker missing" -if grep -Eq ' WARN| ERROR|CRITICAL|TypeError|ReferenceError|Unable to assign' \ - <<<"$output"; then +if grep -E ' WARN| ERROR|CRITICAL|TypeError|ReferenceError|Unable to assign' <<<"$output" \ + | grep -Fv \ + -e 'Unable to find hyprland socket. Cannot connect to hyprland.' \ + -e '$HYPRLAND_INSTANCE_SIGNATURE is unset. Cannot connect to hyprland.' >/dev/null; then fail "component smoke emitted a QML/runtime warning or error" fi diff --git a/tests/baseline-contract-regression.sh b/tests/baseline-contract-regression.sh index 07473359..de10f9bf 100755 --- a/tests/baseline-contract-regression.sh +++ b/tests/baseline-contract-regression.sh @@ -12,7 +12,7 @@ compat_package_baseline="$repo_root/contracts/baselines/omarchy-installed-packag compat_source_baseline="$repo_root/contracts/baselines/omarchy-installed-source-parity-v4.0.2.json" historical_package_baseline="$repo_root/contracts/baselines/omarchy-installed-package-v4.0.0.json" historical_source_baseline="$repo_root/contracts/baselines/omarchy-installed-source-parity-v4.0.0.json" -forward_compat_baseline="$repo_root/contracts/baselines/omarchy-forward-compat-ed7bae4a.json" +forward_compat_baseline="$repo_root/contracts/baselines/omarchy-forward-compat-50d687a1.json" agents_baseline="$repo_root/contracts/baselines/omarchy-agents-v4.0.0.json" predecessor_baseline="$repo_root/contracts/baselines/quickshell-dots-d0896fc-v2-deec8103.json" installed_package_job="$repo_root/tests/omarchy-installed-package-contract-regression.sh" @@ -184,9 +184,9 @@ for parity_subtree in shell config; do done jq -e ' - .id == "forward-compat-ed7bae4a" + .id == "forward-compat-50d687a1" and .profile == "forward-compat" - and .sourceRevision == "ed7bae4ac5a570e9df307486e0202fdafcc6ee24" + and .sourceRevision == "50d687a1f27063513cf42e6f33c3a4fcb17c24ed" and .provenance.kind == "git" and .provenance.revision == .sourceRevision and .quickshellPackage == {"name": "quickshell", "version": "0.3.1-1"} diff --git a/tests/documentation-regression.py b/tests/documentation-regression.py index b39e06a2..cd27427b 100755 --- a/tests/documentation-regression.py +++ b/tests/documentation-regression.py @@ -259,7 +259,7 @@ def legacy_storage_error(documents: dict[str, str]) -> str | None: "contracts/baselines/omarchy-installed-package-v4.0.3.json", "contracts/baselines/omarchy-installed-source-parity-v4.0.3.json", "SHIBUMI_OMARCHY_BASELINE_VERSION=4.0.2", - "contracts/baselines/omarchy-forward-compat-ed7bae4a.json", + "contracts/baselines/omarchy-forward-compat-50d687a1.json", "./tests/omarchy-installed-package-contract-regression.sh", "./tests/omarchy-installed-source-parity-contract-regression.sh", "./tests/omarchy-forward-compat-contract-regression.sh", diff --git a/tests/drag-ghost-render-regression.sh b/tests/drag-ghost-render-regression.sh index 555b7f63..a9e28d7c 100755 --- a/tests/drag-ghost-render-regression.sh +++ b/tests/drag-ghost-render-regression.sh @@ -28,7 +28,9 @@ for scale in 1 1.5; do exit 1 } grep -q 'drag ghost render regression passed' "$fixture/runtime.log" - if grep -Eq 'Binding loop|TypeError|ReferenceError|WARN|ERROR' "$fixture/runtime.log"; then + if grep -E 'Binding loop|TypeError|ReferenceError|WARN|ERROR' "$fixture/runtime.log" \ + | grep -Fv \ + -e '$HYPRLAND_INSTANCE_SIGNATURE is unset. Cannot connect to hyprland.' >/dev/null; then tail -60 "$fixture/runtime.log" >&2 exit 1 fi diff --git a/tests/lib/baselines.sh b/tests/lib/baselines.sh index cb7bc3ba..f9a6b44f 100644 --- a/tests/lib/baselines.sh +++ b/tests/lib/baselines.sh @@ -176,7 +176,8 @@ shibumi_validate_omarchy_baseline_schema() { or .id == "installed-source-parity-v4.0.3" or .id == "installed-package-v4.0.2" or .id == "installed-source-parity-v4.0.2" - or .id == "forward-compat-ed7bae4a" then + or .id == "forward-compat-ed7bae4a" + or .id == "forward-compat-50d687a1" then .quickshellPackage == {"name": "quickshell", "version": "0.3.1-1"} elif .id == "installed-package-v4.0.0" or .id == "installed-source-parity-v4.0.0" then @@ -745,7 +746,7 @@ shibumi_load_omarchy_baseline() { [[ -n $requested_path ]] \ || shibumi_baseline_fail \ 'OMARCHY_PATH is required for forward-compat' || return - manifest="$shibumi_baseline_repo_root/contracts/baselines/omarchy-forward-compat-ed7bae4a.json" + manifest="$shibumi_baseline_repo_root/contracts/baselines/omarchy-forward-compat-50d687a1.json" ;; agents-current) requested_path=${OMARCHY_PATH:-} diff --git a/tests/network-native-panel-smoke.qml b/tests/network-native-panel-smoke.qml index 8a6ca502..97eeff45 100644 --- a/tests/network-native-panel-smoke.qml +++ b/tests/network-native-panel-smoke.qml @@ -229,7 +229,7 @@ ShellRoot { const qrCanvas = root.findNamed(panel, "shibumiNetworkQrCanvas") if (!qr || !keyCatcher || !qrCanvas) return root.fail("secured QR click fixture was not presented") - keyCatcher.textKey("q") + keyCatcher.textKey("q", Qt.NoModifier) panel.showQrForConnected() if (service.qrGestureCalls !== 0 || service.qrSecretCalls !== 0 || qrCanvas.visible) @@ -270,7 +270,7 @@ ShellRoot { if (!qr.activeFocusOnTab || !keyCatcher || !panel.focusQrAction(1)) return root.fail("QR Code action lost keyboard reachability") - keyCatcher.textKey("q") + keyCatcher.textKey("q", Qt.NoModifier) const qrCanvas = root.findNamed(panel, "shibumiNetworkQrCanvas") if (!qrCanvas || qrCanvas.visible || service.qrSecretCalls !== 0) return root.fail("QR shortcut read a secret without button activation") diff --git a/tests/panel-window-geometry-regression.sh b/tests/panel-window-geometry-regression.sh index 7f5ef910..b9bf7d6f 100755 --- a/tests/panel-window-geometry-regression.sh +++ b/tests/panel-window-geometry-regression.sh @@ -15,12 +15,14 @@ fail() { [[ -x /usr/bin/python3 ]] || fail '/usr/bin/python3 is required' keyboard_panel="$OMARCHY_PATH/shell/Ui/KeyboardPanel.qml" [[ -f $keyboard_panel ]] || fail 'pinned KeyboardPanel.qml is missing' -[[ $(sha256sum "$keyboard_panel" | awk '{print $1}') == \ - 96245f2da8d38baa0017caa285d596c485bd19a3a4d2cd1675bee9d84ffba42d ]] \ - || fail 'KeyboardPanel.qml does not match pinned Omarchy v4.0.3 source' +keyboard_panel_sha=96245f2da8d38baa0017caa285d596c485bd19a3a4d2cd1675bee9d84ffba42d +if [[ $SHIBUMI_OMARCHY_SOURCE_REVISION == 50d687a1f27063513cf42e6f33c3a4fcb17c24ed ]]; then + keyboard_panel_sha=e509278a51a7e9b45fa3a6fa630bedcd671a0f34202bfb7413a5b6a2f88d7e22 +fi +[[ $(sha256sum "$keyboard_panel" | awk '{print $1}') == "$keyboard_panel_sha" ]] \ + || fail 'KeyboardPanel.qml does not match pinned Omarchy source' printf 'PINNED_KEYBOARD_PANEL source=%s sha256=%s\n' \ - "$SHIBUMI_OMARCHY_SOURCE_REVISION" \ - '96245f2da8d38baa0017caa285d596c485bd19a3a4d2cd1675bee9d84ffba42d' + "$SHIBUMI_OMARCHY_SOURCE_REVISION" "$keyboard_panel_sha" /usr/bin/python3 -I - "$repo_root" <<'PY' import hashlib diff --git a/tests/quattro-contract-regression.sh b/tests/quattro-contract-regression.sh index 40929492..c980ad97 100755 --- a/tests/quattro-contract-regression.sh +++ b/tests/quattro-contract-regression.sh @@ -104,7 +104,7 @@ for needle in \ done case $SHIBUMI_OMARCHY_SOURCE_REVISION in - 0534987009061cbe2dacdde4ad564092ab698d12|c668141e9c42b13c80c9ca4ea108e11708c5e8a5) + 0534987009061cbe2dacdde4ad564092ab698d12|c668141e9c42b13c80c9ca4ea108e11708c5e8a5|50d687a1f27063513cf42e6f33c3a4fcb17c24ed) for needle in \ 'target.shell = shell.pluginShellFor(manifest)' \ 'target.manifest = shell.publicPluginManifest(manifest)' \ diff --git a/tests/quick-access-plugin-regression.sh b/tests/quick-access-plugin-regression.sh index 1556de86..5c7e5fc1 100755 --- a/tests/quick-access-plugin-regression.sh +++ b/tests/quick-access-plugin-regression.sh @@ -132,7 +132,10 @@ run_smoke() { set -e RUN_PLAIN_OUTPUT=$(sed $'s/\033\\[[0-9;]*m//g' <<<"$RUN_OUTPUT") RUN_WARNINGS=$(sed -n -E \ - 's/^[[:space:]]*WARN([^:]*)?:[[:space:]]*//p' <<<"$RUN_PLAIN_OUTPUT") + 's/^[[:space:]]*WARN([^:]*)?:[[:space:]]*//p' <<<"$RUN_PLAIN_OUTPUT" \ + | grep -Fvx \ + -e 'Unable to find hyprland socket. Cannot connect to hyprland.' \ + -e '$HYPRLAND_INSTANCE_SIGNATURE is unset. Cannot connect to hyprland.' || true) } validate_common_completion() { diff --git a/tests/status-plugin-regression.sh b/tests/status-plugin-regression.sh index e739910a..4ae5952e 100755 --- a/tests/status-plugin-regression.sh +++ b/tests/status-plugin-regression.sh @@ -76,7 +76,8 @@ grep -F 'status plugin smoke passed' <<<"$output" >/dev/null \ unexpected_diagnostics=$(grep -E \ 'WARN|ERROR|CRITICAL|TypeError|ReferenceError|Binding loop|Unable to assign|Cannot assign|Internal error' \ <<<"$output" | grep -Fv \ - 'Module path contains invalid characters for a module name: "/hancore.shibumi.bar/services"' \ + -e 'Module path contains invalid characters for a module name: "/hancore.shibumi.bar/services"' \ + -e '$HYPRLAND_INSTANCE_SIGNATURE is unset. Cannot connect to hyprland.' \ || true) [[ -z $unexpected_diagnostics ]] \ || fail "component smoke emitted an unexpected runtime diagnostic" From ccc9bfb88ee7c350bd2b051545744315d1d7c08e Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Sat, 10 Oct 2026 13:41:05 +0200 Subject: [PATCH 8/9] widgets: keep embedded components across host bar switches --- hancore.shibumi.center/BarWidget.qml | 2 +- hancore.shibumi.status/BarWidget.qml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hancore.shibumi.center/BarWidget.qml b/hancore.shibumi.center/BarWidget.qml index 23efd2a2..621c06b8 100644 --- a/hancore.shibumi.center/BarWidget.qml +++ b/hancore.shibumi.center/BarWidget.qml @@ -79,7 +79,7 @@ Ui.Panel { readonly property var clockSettings: childSettings("omarchy.clock") readonly property var updateSettings: childSettings("omarchy.system-update") readonly property url updateSource: registeredSource("omarchy.system-update") - property Component updateComponent: String(updateSource) ? null + property var updateComponent: String(updateSource) ? null : registeredComponent("omarchy.system-update") implicitWidth: bar && bar.vertical ? bar.barSize diff --git a/hancore.shibumi.status/BarWidget.qml b/hancore.shibumi.status/BarWidget.qml index 93f0332f..2216c5ed 100644 --- a/hancore.shibumi.status/BarWidget.qml +++ b/hancore.shibumi.status/BarWidget.qml @@ -13,9 +13,9 @@ Item { readonly property url updateSource: registeredSource( "hancore.shibumi.update-center") readonly property url traySource: registeredSource("omarchy.tray") - property Component updateComponent: String(updateSource) ? null + property var updateComponent: String(updateSource) ? null : registeredComponent("hancore.shibumi.update-center") - property Component trayComponent: String(traySource) ? null + property var trayComponent: String(traySource) ? null : registeredComponent("omarchy.tray") property url trayDrawerSource: Qt.resolvedUrl("TrayDrawerPanel.qml") property url trayAppMenuSource: Qt.resolvedUrl("TrayAppMenuPanel.qml") From 1a13d6be7d5b4bc9aa03590b77b6531aefcad497 Mon Sep 17 00:00:00 2001 From: HANCORE-linux <230438592+HANCORE-linux@users.noreply.github.com> Date: Sat, 10 Oct 2026 17:48:35 +0200 Subject: [PATCH 9/9] release: 0.1.1-beta.16.3 --- .github/release-notes/v0.1.1-beta.16.3.md | 54 ++++++++++++++++ CHANGELOG.md | 18 ++++++ README.md | 10 +-- VERSION | 2 +- contracts/lifecycle-predecessors-v1.json | 63 +++++++++++++++++++ contracts/plugin-suite-v1.json | 2 +- docs/architecture/quattro-compatibility.md | 2 +- docs/development/packaging.md | 4 +- docs/install.md | 16 ++--- docs/plugins/README.md | 2 +- docs/release-readiness.md | 40 ++++++------ hancore.shibumi.ai/Service.qml | 2 +- hancore.shibumi.ai/manifest.json | 2 +- hancore.shibumi.audio/Service.qml | 2 +- hancore.shibumi.audio/manifest.json | 2 +- hancore.shibumi.bar/Bar.qml | 2 +- hancore.shibumi.bar/manifest.json | 2 +- hancore.shibumi.battery/manifest.json | 2 +- hancore.shibumi.bluetooth/Service.qml | 2 +- hancore.shibumi.bluetooth/manifest.json | 2 +- hancore.shibumi.brightness/Service.qml | 2 +- hancore.shibumi.brightness/manifest.json | 2 +- hancore.shibumi.center/Service.qml | 2 +- hancore.shibumi.center/manifest.json | 2 +- .../PluginUpdateService.qml | 2 +- hancore.shibumi.control-center/manifest.json | 2 +- hancore.shibumi.cpu/Service.qml | 2 +- hancore.shibumi.cpu/manifest.json | 2 +- hancore.shibumi.gpu/manifest.json | 2 +- hancore.shibumi.media/Service.qml | 2 +- hancore.shibumi.media/manifest.json | 2 +- hancore.shibumi.memory/manifest.json | 2 +- hancore.shibumi.network/Service.qml | 2 +- hancore.shibumi.network/manifest.json | 2 +- hancore.shibumi.power-profile/manifest.json | 2 +- hancore.shibumi.power-state/Service.qml | 2 +- hancore.shibumi.power-state/manifest.json | 2 +- hancore.shibumi.quick-access/Service.qml | 2 +- hancore.shibumi.quick-access/manifest.json | 2 +- hancore.shibumi.reactor/Service.qml | 2 +- hancore.shibumi.reactor/manifest.json | 2 +- hancore.shibumi.state/Service.qml | 2 +- hancore.shibumi.state/manifest.json | 2 +- hancore.shibumi.state/runtime/Runtime.qml | 2 +- hancore.shibumi.status/Service.qml | 2 +- hancore.shibumi.status/manifest.json | 2 +- hancore.shibumi.storage/Service.qml | 2 +- hancore.shibumi.storage/manifest.json | 2 +- hancore.shibumi.telemetry/Service.qml | 2 +- hancore.shibumi.telemetry/manifest.json | 2 +- hancore.shibumi.temperature/manifest.json | 2 +- hancore.shibumi.update-center/Service.qml | 2 +- hancore.shibumi.update-center/manifest.json | 2 +- .../WorkspaceService.qml | 2 +- hancore.shibumi.workspaces/manifest.json | 2 +- packaging/aur/.SRCINFO | 6 +- packaging/aur/PKGBUILD | 4 +- packaging/package-metadata.json | 2 +- scripts/check-aur-package | 2 +- .../audio-native-backend-seam-regression.qml | 2 +- tests/audio-runtime-smoke.qml | 6 +- tests/bar-catalog-consumer-smoke.qml | 14 ++--- tests/bar-visibility-ipc-smoke.qml | 2 +- tests/catalog-service-smoke.qml | 2 +- tests/core-services-smoke.qml | 6 +- tests/fixtures/native-runtime/probe.py | 2 +- tests/fixtures/release-predecessor.json | 14 ++--- tests/gpu-selection-state-smoke.qml | 4 +- tests/host-registry-prime-smoke.qml | 8 +-- tests/media-spectrum-service-smoke.qml | 2 +- tests/plugin-update-service-smoke.qml | 2 +- tests/power-deferred-smoke.qml | 2 +- tests/power-runtime-smoke.qml | 6 +- tests/power-service-runtime-smoke.qml | 2 +- tests/reactor-plugin-smoke.qml | 4 +- tests/reactor-runtime-smoke.qml | 10 +-- tests/scoped-state-regression.qml | 2 +- tests/shared-runtime-regression.qml | 16 ++--- tests/state-service-smoke.qml | 2 +- tests/status-plugin-smoke.qml | 6 +- tests/telemetry-plugins-smoke.qml | 4 +- tests/telemetry-runtime-smoke.qml | 4 +- tests/test_package_release.py | 12 +++- tests/theme-palette-runtime-smoke.qml | 2 +- tests/third-party-integration-smoke.qml | 4 +- tests/widget-pipeline-diagnostics-smoke.qml | 6 +- tests/workspaces-plugin-smoke.qml | 2 +- tests/workspaces-runtime-smoke.qml | 6 +- 88 files changed, 308 insertions(+), 161 deletions(-) create mode 100644 .github/release-notes/v0.1.1-beta.16.3.md diff --git a/.github/release-notes/v0.1.1-beta.16.3.md b/.github/release-notes/v0.1.1-beta.16.3.md new file mode 100644 index 00000000..5dea2ae3 --- /dev/null +++ b/.github/release-notes/v0.1.1-beta.16.3.md @@ -0,0 +1,54 @@ +# 0.1.1-beta.16.3 + +## Fixes + +- Workspaces: hovering a workspace no longer enlarges it. The hovered workspace now changes colour instead (the theme's `color03`; if the bar colour itself is `color03`, a lighter bar ink is used), with one uniform 120 ms transition in the default, numbers, magic, kanji, rings and aurora styles. The pacman style keeps its 16.2 behaviour. +- Network widget: in V1 the network icon now follows the bar colour like every other widget instead of fixed tones. +- Picker: the search field of the theme, wallpaper and media pickers is readable in every theme (12 px text in a visible input field; contrast 7:1 to 21:1 across the shipped themes, previously down to 1:1 on light themes). +- Picker: themes without a preview image are listed again (with a placeholder), and the list is sorted alphabetically across all theme roots like `omarchy-theme-list`. +- Status group: a pending spacing update can no longer be cleared early by a synchronous re-schedule. +- Status and centre groups: embedded widgets (update centre, tray, centre) no longer disappear after switching to the stock Omarchy bar and back (needed a reload before). +- Tests: the two reveal-budget and lazy-paint regressions from 16.2 now run in the repository test suite. +- Compatibility: the forward-compatibility baseline is pinned to Omarchy `50d687a1` (2026-10-08) with a reproducible generator script; the 4.0.4 installation pins are unchanged. + +## Known issues + +- Rings style: right after a bar rebuild (reload, V1/V2 switch, workspace count change) the focus ring can be drawn about 6 px off for a single frame (16 ms). It is a build-time animation ordering effect and will be fixed with the host layout redesign in 0.2.0. +- Notch bar at DPR 1.6 with the numbers or kanji style: the centre group can oscillate between two layouts for a while after a layout change. This exists since 16.1 (status spacing feedback) and is also addressed by the 0.2.0 redesign. + +## Install and update + +For a new source installation, use the published release tag: + +```bash +sudo pacman -S --needed python jq curl networkmanager power-profiles-daemon upower xdg-utils libnotify wl-clipboard ttf-material-symbols-variable ttf-jetbrains-mono-nerd-basic noto-fonts-cjk adwaita-fonts +git clone https://github.com/HANCORE-linux/Shibumi-Shell.git +cd Shibumi-Shell +git checkout v0.1.1-beta.16.3 +./scripts/shibumi-suite install --yes +``` + +Update an admitted Beta.16.2 installation from its existing checkout: + +```bash +git fetch --tags +git checkout v0.1.1-beta.16.3 +./scripts/shibumi-suite update --dry-run +./scripts/shibumi-suite update --yes +./scripts/shibumi-suite status +``` + +The exact Beta.16.2 tag (`bd1224b`) and release merge (`e07853b5`) are admitted +predecessors. Older supported identities retain their exact revision and +payload checks; an arbitrary checkout with the same version is not admitted. +Do not install or update from `main`, or delete lifecycle state to bypass +admission. See the [installation and recovery guide](https://github.com/HANCORE-linux/Shibumi-Shell/blob/v0.1.1-beta.16.3/docs/install.md). +AUR publication remains deferred. + +## Downgrade warning + +**Downgrade:** Beta.15.4 and older cannot read V1 layouts with parked widgets +(`order.parked`). They reset V1 order, roles and splits to defaults; other +settings and V2 stay. `uninstall --keep-settings` does not prevent this. +Back up `~/.config/omarchy/shell.json` and `~/.local/state/shibumi/` before a +downgrade. Details: [Backup before downgrade](https://github.com/HANCORE-linux/Shibumi-Shell/blob/v0.1.1-beta.16.3/docs/install.md#backup-before-downgrade). diff --git a/CHANGELOG.md b/CHANGELOG.md index 84c6ed05..2cd11f23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## [0.1.1-beta.16.3] - 2026-10-09 + +### Fixed + +- Workspaces: hovering a workspace no longer enlarges it. The hovered workspace now changes colour instead (the theme's `color03`; if the bar colour itself is `color03`, a lighter bar ink is used), with one uniform 120 ms transition in the default, numbers, magic, kanji, rings and aurora styles. The pacman style keeps its 16.2 behaviour. +- Network widget: in V1 the network icon now follows the bar colour like every other widget instead of fixed tones. +- Picker: the search field of the theme, wallpaper and media pickers is readable in every theme (12 px text in a visible input field; contrast 7:1 to 21:1 across the shipped themes, previously down to 1:1 on light themes). +- Picker: themes without a preview image are listed again (with a placeholder), and the list is sorted alphabetically across all theme roots like `omarchy-theme-list`. +- Status group: a pending spacing update can no longer be cleared early by a synchronous re-schedule. +- Status and centre groups: embedded widgets (update centre, tray, centre) no longer disappear after switching to the stock Omarchy bar and back (needed a reload before). +- Tests: the two reveal-budget and lazy-paint regressions from 16.2 now run in the repository test suite. +- Compatibility: the forward-compatibility baseline is pinned to Omarchy `50d687a1` (2026-10-08) with a reproducible generator script; the 4.0.4 installation pins are unchanged. + +### Known issues + +- Rings style: right after a bar rebuild (reload, V1/V2 switch, workspace count change) the focus ring can be drawn about 6 px off for a single frame (16 ms). It is a build-time animation ordering effect and will be fixed with the host layout redesign in 0.2.0. +- Notch bar at DPR 1.6 with the numbers or kanji style: the centre group can oscillate between two layouts for a while after a layout change. This exists since 16.1 (status spacing feedback) and is also addressed by the 0.2.0 redesign. + ## [0.1.1-beta.16.2] - 2026-10-08 ### Fixed diff --git a/README.md b/README.md index 4dfbd44b..16dbb5a1 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ process.

[Documentation](docs/README.md) · [Release status](docs/release-readiness.md) -`0.1.1-beta.16.2` is the target GitHub prerelease. AUR publication is +`0.1.1-beta.16.3` is the target GitHub prerelease. AUR publication is deferred; use the source installation below. See the -[release notes](.github/release-notes/v0.1.1-beta.16.2.md) for changes and the +[release notes](.github/release-notes/v0.1.1-beta.16.3.md) for changes and the downgrade warning. The current pinned host contracts use Omarchy and Omarchy Settings `4.0.4-1` (source tag `v4.0.4`, revision `c668141e`) with Quickshell `0.3.1-1`; the @@ -82,18 +82,18 @@ Install from source using the release tag: sudo pacman -S --needed python jq curl networkmanager power-profiles-daemon upower xdg-utils libnotify wl-clipboard ttf-material-symbols-variable ttf-jetbrains-mono-nerd-basic noto-fonts-cjk adwaita-fonts git clone https://github.com/HANCORE-linux/Shibumi-Shell.git cd Shibumi-Shell -git checkout v0.1.1-beta.16.2 +git checkout v0.1.1-beta.16.3 ./scripts/shibumi-suite install --yes ``` -Update an admitted Beta.16.1 source installation to Beta.16.2. +Update an admitted Beta.16.2 source installation to Beta.16.3. Exact predecessor identities, not a version range, govern admission; see the [update guide](docs/install.md#update). ```sh cd Shibumi-Shell git fetch --tags -git checkout v0.1.1-beta.16.2 +git checkout v0.1.1-beta.16.3 ./scripts/shibumi-suite update --dry-run ./scripts/shibumi-suite update --yes ./scripts/shibumi-suite status diff --git a/VERSION b/VERSION index b21063e0..301b5a8c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.1-beta.16.2 +0.1.1-beta.16.3 diff --git a/contracts/lifecycle-predecessors-v1.json b/contracts/lifecycle-predecessors-v1.json index 6d2c3eaf..144740f4 100644 --- a/contracts/lifecycle-predecessors-v1.json +++ b/contracts/lifecycle-predecessors-v1.json @@ -877,9 +877,72 @@ ], "settingsStorageVersion": 1, "sourceRevisions": [ + "bd1224ba92fbf279666abe362ff5cf7a165da096", + "e07853b54f018ab694572c7502297e0f17752220", "package:0.1.1-beta.16.2" ], "suiteVersion": "0.1.1-beta.16.2" + }, + { + "id": "public-beta.16.3", + "payloadDigest": "9d8cca435b465c52b0ff21d7a6780f90251a805dc1d1e72b78473ca2a8338a88", + "pluginDigests": { + "hancore.shibumi.bar": "cf6978ba706b12b446cea0ed4ba2e91cfaab1c4a1a6ba8fa44782d1a9034c8d1", + "hancore.shibumi.state": "56c643b7f751913cf1568a8ab82f4d60cf16a7e9866bd27a803da947ee10c5ad", + "hancore.shibumi.control-center": "921b6a86298461d33bbc9c727ffaed41a9c7fb506fec6f6bed78d30a8b2419e5", + "hancore.shibumi.reactor": "1026f12b06615f00d0d2f2522aeb55ea937d4b8f8cfe3d4617f6d6a41681f8cb", + "hancore.shibumi.telemetry": "f3f8f0cd2893a8525fac6ea9b79462afecd5aa1d3a24efe027bac6b466c99c59", + "hancore.shibumi.power-state": "56d83fa21d5dfbd7c2ea02627ac9db7cc43112a407bae619dffb47c2742b0563", + "hancore.shibumi.workspaces": "11953b81bb1a0a9b7fe888f0a79c86786d8867345d9968b25189b1dac1290421", + "hancore.shibumi.update-center": "b9a8e937b7e554cf923855ce120c63d4e7cf2c6ec8b8be55bf570f7dbda50f68", + "hancore.shibumi.status": "928b2315780dec058b14254d20766b9672668efa986d7f957a7794372518ccc4", + "hancore.shibumi.memory": "7c1b12f8889e2343ad71edab74511845734a0f6cfd12628bbddad1d88c1ccd27", + "hancore.shibumi.cpu": "cf92ecb1cefa17e0d3f6dd02468dde195575c6498142442539adf93b113ba06c", + "hancore.shibumi.audio": "4ffb9e6ccf46607c775c547f3ae7a5616ac6d654d9eb43b321611e6ef7e5968e", + "hancore.shibumi.ai": "9d7c0bdcc9451a12adf4a749fb4a12d4b6ea1b0846b86b6fe38e88588882e9ba", + "hancore.shibumi.center": "919650680efede8ccb603e0f6df5f0b83847622c327a162838600e9d53049b02", + "hancore.shibumi.media": "6c754db0a7c7afb37240928093951ef3d69b0e4d2c7ebf625e0771bcb93f77af", + "hancore.shibumi.quick-access": "8cb1c837c1f45e1030f585e26883987fb7814b5548e7f375b21df4ff31af9c99", + "hancore.shibumi.network": "7479730a34d8700dfd7e0a445fce4df1bc2641c37a99b588ad3066c96f8786d8", + "hancore.shibumi.battery": "d3f46433a6d9d82c2b896acc15ffd38c35a0a25b07a639d5a379dfc8a3d2b025", + "hancore.shibumi.brightness": "4988cc1f0201a6c270d71b4946ab0737c5b046cd6495ec13fe0f4d2153e94cf4", + "hancore.shibumi.power-profile": "1d16a5360a06f60be6af969f835cd180ef186677b186ef16336c4170bb319610", + "hancore.shibumi.bluetooth": "d6d5f39d61bec9c7905ac8347932143ebba99b24eb1768572a2974fee14726de", + "hancore.shibumi.temperature": "23f1953e21867d27244f768cde625e72062a41786babbda2780bd15b0ba006a6", + "hancore.shibumi.gpu": "067edae4fdc1401a944f60ac5ccc39deb2f932bc20afc66a4d26c0d1c278922d", + "hancore.shibumi.storage": "efbbf9d8380e854e72cdafec3acffce2b4a15d7be69bd17d54e090c3ccbc195d" + }, + "pluginIds": [ + "hancore.shibumi.bar", + "hancore.shibumi.state", + "hancore.shibumi.control-center", + "hancore.shibumi.reactor", + "hancore.shibumi.telemetry", + "hancore.shibumi.power-state", + "hancore.shibumi.workspaces", + "hancore.shibumi.update-center", + "hancore.shibumi.status", + "hancore.shibumi.memory", + "hancore.shibumi.cpu", + "hancore.shibumi.audio", + "hancore.shibumi.ai", + "hancore.shibumi.center", + "hancore.shibumi.media", + "hancore.shibumi.quick-access", + "hancore.shibumi.network", + "hancore.shibumi.battery", + "hancore.shibumi.brightness", + "hancore.shibumi.power-profile", + "hancore.shibumi.bluetooth", + "hancore.shibumi.temperature", + "hancore.shibumi.gpu", + "hancore.shibumi.storage" + ], + "settingsStorageVersion": 1, + "sourceRevisions": [ + "package:0.1.1-beta.16.3" + ], + "suiteVersion": "0.1.1-beta.16.3" } ] } diff --git a/contracts/plugin-suite-v1.json b/contracts/plugin-suite-v1.json index ae187a8a..81c44b4e 100644 --- a/contracts/plugin-suite-v1.json +++ b/contracts/plugin-suite-v1.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "suiteId": "hancore.shibumi", - "suiteVersion": "0.1.1-beta.16.2", + "suiteVersion": "0.1.1-beta.16.3", "settingsStorageVersion": 1, "hostContract": "contracts/host-facade-v1.json", "retiredPlugins": [ diff --git a/docs/architecture/quattro-compatibility.md b/docs/architecture/quattro-compatibility.md index ab198266..749f0b3e 100644 --- a/docs/architecture/quattro-compatibility.md +++ b/docs/architecture/quattro-compatibility.md @@ -8,7 +8,7 @@ by this evidence. ## Current pinned host -Beta.16.2 retains Beta.16's exact official Omarchy 4.0.4 baseline. These pins are not +Beta.16.3 retains Beta.16's exact official Omarchy 4.0.4 baseline. These pins are not physical release acceptance. The historical Beta.13 physical host acceptance below applies to its recorded single-output Omarchy 4.0.3 setup: diff --git a/docs/development/packaging.md b/docs/development/packaging.md index 701a0d0a..aefa36f9 100644 --- a/docs/development/packaging.md +++ b/docs/development/packaging.md @@ -1,6 +1,6 @@ # Arch packaging and AUR publication -Status: `0.1.1-beta.16.2` is the target GitHub prerelease; AUR publication +Status: `0.1.1-beta.16.3` is the target GitHub prerelease; AUR publication is deferred. Shibumi ships one versioned suite containing 24 separately validated Omarchy @@ -74,7 +74,7 @@ and lifecycle code before the user-level update runs, so Beta.12's storage guard cannot reject that package afterward. There is no reverse migration to legacy storage. -The additional [Beta.16.2 downgrade warning and backup requirements](../install.md#backup-before-downgrade) +The additional [Beta.16.3 downgrade warning and backup requirements](../install.md#backup-before-downgrade) apply even to readers using canonical State storage: Beta.15.4 and older cannot preserve a V1 layout containing `order.parked`. `--keep-settings` does not prevent this. Restore the settings with a matching payload. diff --git a/docs/install.md b/docs/install.md index 42cc2092..3dfb805d 100644 --- a/docs/install.md +++ b/docs/install.md @@ -6,7 +6,7 @@ Shibumi installs 24 independent plugin roots into Omarchy's normal plugin directory. The repository root is a suite source, not a single installable Omarchy plugin. -`0.1.1-beta.16.2` is the target GitHub prerelease. AUR publication is +`0.1.1-beta.16.3` is the target GitHub prerelease. AUR publication is deferred; install from the release tag using the source workflow below. Do not install or update from `main`. @@ -51,7 +51,7 @@ For an intentional non-interactive installation: sudo pacman -S --needed python jq curl networkmanager power-profiles-daemon upower xdg-utils libnotify wl-clipboard ttf-material-symbols-variable ttf-jetbrains-mono-nerd-basic noto-fonts-cjk adwaita-fonts git clone https://github.com/HANCORE-linux/Shibumi-Shell.git cd Shibumi-Shell -git checkout v0.1.1-beta.16.2 +git checkout v0.1.1-beta.16.3 ./scripts/shibumi-suite install --yes ``` @@ -66,7 +66,7 @@ To inspect the transaction before installing: ```bash git clone https://github.com/HANCORE-linux/Shibumi-Shell.git cd Shibumi-Shell -git checkout v0.1.1-beta.16.2 +git checkout v0.1.1-beta.16.3 ./scripts/shibumi-suite install --dry-run ./scripts/shibumi-suite install ``` @@ -146,14 +146,14 @@ Pacman updating `/usr/share/shibumi-shell` does not silently change a running desktop. The explicit update validates, stages, reloads, and verifies all 24 plugins as one transaction. -To update an admitted Beta.16.1 source installation to Beta.16.2, use its -trusted checkout. The exact published Beta.16.1 tag and release merge are +To update an admitted Beta.16.2 source installation to Beta.16.3, use its +trusted checkout. The exact published Beta.16.2 tag and release merge are admitted predecessors: ```bash cd Shibumi-Shell git fetch --tags -git checkout v0.1.1-beta.16.2 +git checkout v0.1.1-beta.16.3 ./scripts/shibumi-suite update --dry-run ./scripts/shibumi-suite update --yes ./scripts/shibumi-suite status @@ -206,7 +206,7 @@ authoritative origin. The old checkout is not deleted or modified. ### Roll back a package version > [!WARNING] -> **Beta.16.2 downgrade warning.** +> **Beta.16.3 downgrade warning.** > Beta.15.4 and older cannot read V1 layouts containing > `order.parked`. They reset V1 order, roles, and splits to defaults; other > settings and V2 remain. `uninstall --keep-settings` does not prevent this. @@ -406,7 +406,7 @@ then install the published tag. For example, only if the recorded revision is ```bash git checkout e92d8ee1ce9821d0b203a9d4d5dd9932d2e460fb ./scripts/shibumi-suite uninstall --keep-settings --yes -git checkout v0.1.1-beta.16.2 +git checkout v0.1.1-beta.16.3 ./scripts/shibumi-suite install --yes ``` diff --git a/docs/plugins/README.md b/docs/plugins/README.md index dced8e41..f34c6ea8 100644 --- a/docs/plugins/README.md +++ b/docs/plugins/README.md @@ -2,7 +2,7 @@ Status: reference -Shibumi `0.1.1-beta.16.2` contains 24 independently registered Omarchy plugins. The +Shibumi `0.1.1-beta.16.3` contains 24 independently registered Omarchy plugins. The default suite profile installs all of them as one verified transaction. The authoritative inventory is diff --git a/docs/release-readiness.md b/docs/release-readiness.md index 0665706c..60b023d0 100644 --- a/docs/release-readiness.md +++ b/docs/release-readiness.md @@ -1,4 +1,4 @@ -# Shibumi 0.1.1-beta.16.2 release readiness +# Shibumi 0.1.1-beta.16.3 release readiness > **Document status: Revision-bound validation record.** This page separates > recorded product evidence from release, package, and physical acceptance. @@ -6,26 +6,28 @@ ## Candidate and published predecessor -The Beta.16.2 candidate contains the accepted Core18c delivery, Health cache -exclusion, AI timeout, and separate minimal palette and bar-marker patches. -Its 24-plugin suite payload digest is -`79c61d5e048c669c9eb27ebaad21987327892089daea501d0cf4185150a26f9e`. +The Beta.16.3 candidate contains V1 network bar ink, the status pending-flag +ordering fix, six-style hover colour, picker search/list fixes, inline helper +execution in the plugin smokes, and the forward-baseline generator and repin. Pacman retains +its exact 16.2 presentation and hover behaviour; compact and linked-theme +Update Center changes are excluded. Its 24-plugin suite payload digest is +`9d8cca435b465c52b0ff21d7a6780f90251a805dc1d1e72b78473ca2a8338a88`. This is the preparation snapshot included in the release-identity commit, not final clean-commit evidence. Source review, the complete contract, isolated Quattro lifecycle, package rehearsal, full 14-gate collector, and reproducible archive verification must record their exact final commit externally; no predecessor gate result transfers to this candidate. -Beta.16.1 was published on 2026-10-04 as a GitHub prerelease from -`3b35049af69aba57784376e916f50146d61eb411`. It is the frozen rolling +Beta.16.2 was published on 2026-10-08 as a GitHub prerelease from +`bd1224ba92fbf279666abe362ff5cf7a165da096`. It is the frozen rolling predecessor in [`release-predecessor.json`](../tests/fixtures/release-predecessor.json). That exact tag checkout and release merge -`65c8d8bf72a674a35c5bb8ae85d0fff21b4e5cb6` are admitted by +`e07853b54f018ab694572c7502297e0f17752220` are admitted by [`lifecycle-predecessors-v1.json`](../contracts/lifecycle-predecessors-v1.json), -with the unchanged Beta.16.1 payload digest -`46f72fd02b00dbe34326dbbdf6e95556e7e35641a4d597c5281bc2beed94a974`. -The downloaded published archive matches all 24 pinned plugin digests; merge -and tag have the same Git tree. Older exact identities remain admitted; a +with the unchanged Beta.16.2 payload digest +`79c61d5e048c669c9eb27ebaad21987327892089daea501d0cf4185150a26f9e`. +The exact local tag payload matches all 24 pinned plugin digests; the published +release merge and tag have the same Git tree. Older exact identities remain admitted; a version string alone never authorizes recovery or replacement. AUR publication remains deferred. @@ -35,14 +37,14 @@ remains deferred. | --- | --- | | Complete source contract | Pending exact release-commit evidence at this preparation snapshot. | | Isolated Quattro lifecycle | Pending exact release-commit evidence, retaining all 32 generations. | -| Retained runtime paths | Historical Beta.13 → Beta.14.1 package arm (5), fresh checkout (6), Beta.15 (7), Beta.15.2 (7), and rolling frozen Beta.16.1 → candidate (7). No arm may be dropped. | -| Core18c image acceptance | Completed in relay round 373: 10,308 first-activation points, plus matrix, edge, raster-phase and named N10 programs; 13 individual first-activation exceptions were expressly accepted. Qualified text-raster differences reach 4/255; this is not a global tolerance or blanket pixel equality. | -| Core18c performance | 440 sessions, 1,200 events, cold/warm N5. All 56 style-switch medians and eight bar-cycle medians improve. Six higher individual bar medians (0.33–7.13 ms, overlapping sample ranges) were accepted. Focus has 11–15 changed buffers over the full event, but 9–13 within 200 ms; the accepted target is the full event. No scanout claim. | -| Separate compatibility patches | Minimal palette and marker patches passed private smokes with Qt 6.11.2. They were not part of the unchanged Core18c image/performance inputs; no Qt 6.12 runtime acceptance. | +| Retained runtime paths | Historical Beta.13 → Beta.14.1 package arm (5), fresh checkout (6), Beta.15 (7), Beta.15.2 (7), and rolling frozen Beta.16.2 → candidate (7). No arm may be dropped. | +| Stage-1 visual evidence | Round 379 records DPR 1/1.6 rest and shared-code captures, seven-theme picker search, previewless themes, sorting, and an unchanged Update Center. Round 380 separately rechecks Pacman against 16.2 and the six retained hover styles against 379. No physical-output claim. | +| Stage-1 performance | Round 379: 670 sessions, 1,880 events, cold/warm N5; focus, style, bar and hover only, not media-scroll or Control Center events. Accepted by the maintainer, including the warm Kanji CPU group as variation. Focus R/B/changed-buffer counts are not identical in every group; 13/140 hover input-to-last-pixel measurements exceed 136.667 ms by at most 2.29 ms. No blanket speedup or scanout claim. Pacman has since been restored to 16.2; no new performance series is claimed. | +| Compatibility preparation | The unchanged validator accepts forward manifest `50d687a1`; the old manifest remains. Stage-1 complete profiles stopped at the expected old-version payload pin, so all final complete gates must run again after release identities are aligned. | | Live installation and hardware | Keep-settings installation and reviewer live acceptance must be recorded separately. Fixtures do not establish physical multi-output, hardware, credential or real desktop input acceptance. | | Release/package verification | Reproducible archive, checksum agreement, clean-commit gates and rehearsal, independent review, full collector and remote verification remain separate publication requirements. | -The historical package arm is not a Beta.16.2 installed-package upgrade proof. +The historical package arm is not a Beta.16.3 installed-package upgrade proof. Private Wayland/Mesa captures are not live GPU, layer-shell, hotplug, or physical multi-output acceptance. Earlier release passes do not transfer to this candidate. The release notes document the accepted Rings early step (raw DPR-1 reload N10: @@ -122,7 +124,7 @@ was performed. Each operation needs its own maintainer Go. physical acceptance are not claimed. - **Downgrade:** Beta.15.4 and older cannot read V1 `order.parked`; they reset V1 order, roles, and splits while retaining other settings and V2. - `--keep-settings` does not prevent this. The [release notes](../.github/release-notes/v0.1.1-beta.16.2.md) + `--keep-settings` does not prevent this. The [release notes](../.github/release-notes/v0.1.1-beta.16.3.md) and [backup guide](install.md#backup-before-downgrade) identify the complete settings and recovery evidence to preserve. Restore the settings with a matching payload. @@ -149,4 +151,4 @@ release checklist. Beta.16's published changes and limits remain in its revision `30746f5` passed the complete contract and 32-generation runtime; those fixtures retained known teardown warnings and did not establish blanket hardware acceptance. Earlier readiness snapshots remain in Git history; none -confers acceptance on Beta.16.2. +confers acceptance on Beta.16.3. diff --git a/hancore.shibumi.ai/Service.qml b/hancore.shibumi.ai/Service.qml index 5eefc70d..e27c5797 100644 --- a/hancore.shibumi.ai/Service.qml +++ b/hancore.shibumi.ai/Service.qml @@ -19,7 +19,7 @@ Item { SuiteRuntime.HostShell { id: suiteShell; host: root.shell } SuiteRuntime.Provider { pluginId: "hancore.shibumi.ai" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.ai/manifest.json b/hancore.shibumi.ai/manifest.json index 20baf836..f33a4f7c 100644 --- a/hancore.shibumi.ai/manifest.json +++ b/hancore.shibumi.ai/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.ai", "name": "Shibumi AI Usage", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi Claude, Codex, and OpenCode usage presentation.", diff --git a/hancore.shibumi.audio/Service.qml b/hancore.shibumi.audio/Service.qml index 96ffd64c..c73192b8 100644 --- a/hancore.shibumi.audio/Service.qml +++ b/hancore.shibumi.audio/Service.qml @@ -14,7 +14,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.audio" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.audio/manifest.json b/hancore.shibumi.audio/manifest.json index 0ed85aae..30211a25 100644 --- a/hancore.shibumi.audio/manifest.json +++ b/hancore.shibumi.audio/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.audio", "name": "Shibumi Audio", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi audio presentation over Omarchy's PipeWire owner.", diff --git a/hancore.shibumi.bar/Bar.qml b/hancore.shibumi.bar/Bar.qml index eb26a1fc..3addd71e 100644 --- a/hancore.shibumi.bar/Bar.qml +++ b/hancore.shibumi.bar/Bar.qml @@ -28,7 +28,7 @@ Item { SuiteRuntime.Provider { id: barRuntimeProvider pluginId: "hancore.shibumi.bar" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: suiteHostShell.host manifest: root.manifest diff --git a/hancore.shibumi.bar/manifest.json b/hancore.shibumi.bar/manifest.json index 5594ae08..f23f6979 100644 --- a/hancore.shibumi.bar/manifest.json +++ b/hancore.shibumi.bar/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.bar", "name": "Shibumi Bar", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "The Shibumi full-bar host for Omarchy Shell.", diff --git a/hancore.shibumi.battery/manifest.json b/hancore.shibumi.battery/manifest.json index 8be442c8..c0fde0c6 100644 --- a/hancore.shibumi.battery/manifest.json +++ b/hancore.shibumi.battery/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.battery", "name": "Shibumi Battery", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi battery status and detailed battery panel.", diff --git a/hancore.shibumi.bluetooth/Service.qml b/hancore.shibumi.bluetooth/Service.qml index ed0f2ebf..78bb84cb 100644 --- a/hancore.shibumi.bluetooth/Service.qml +++ b/hancore.shibumi.bluetooth/Service.qml @@ -15,7 +15,7 @@ Item { SuiteRuntime.HostShell { id: suiteShell; host: root.shell } SuiteRuntime.Provider { pluginId: "hancore.shibumi.bluetooth" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.bluetooth/manifest.json b/hancore.shibumi.bluetooth/manifest.json index 53206948..a54cca43 100644 --- a/hancore.shibumi.bluetooth/manifest.json +++ b/hancore.shibumi.bluetooth/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.bluetooth", "name": "Shibumi Bluetooth", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi Bluetooth presentation with a native BlueZ and audio backend.", diff --git a/hancore.shibumi.brightness/Service.qml b/hancore.shibumi.brightness/Service.qml index 3f384a72..1ccf8a57 100644 --- a/hancore.shibumi.brightness/Service.qml +++ b/hancore.shibumi.brightness/Service.qml @@ -13,7 +13,7 @@ Item { property var manifest: null SuiteRuntime.Provider { pluginId: "hancore.shibumi.brightness" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.brightness/manifest.json b/hancore.shibumi.brightness/manifest.json index 2318fb10..cb83e7d4 100644 --- a/hancore.shibumi.brightness/manifest.json +++ b/hancore.shibumi.brightness/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.brightness", "name": "Shibumi Brightness", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi brightness and display presentation over Omarchy's monitor owner.", diff --git a/hancore.shibumi.center/Service.qml b/hancore.shibumi.center/Service.qml index 599434b6..d639af80 100644 --- a/hancore.shibumi.center/Service.qml +++ b/hancore.shibumi.center/Service.qml @@ -10,7 +10,7 @@ Item { property var manifest: null SuiteRuntime.Provider { pluginId: "hancore.shibumi.center" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.center/manifest.json b/hancore.shibumi.center/manifest.json index f6d060f9..6a80dc77 100644 --- a/hancore.shibumi.center/manifest.json +++ b/hancore.shibumi.center/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.center", "name": "Shibumi Center", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi clock, calendar, weather, status, and update center.", diff --git a/hancore.shibumi.control-center/PluginUpdateService.qml b/hancore.shibumi.control-center/PluginUpdateService.qml index 4fa2dbc9..0509d145 100644 --- a/hancore.shibumi.control-center/PluginUpdateService.qml +++ b/hancore.shibumi.control-center/PluginUpdateService.qml @@ -20,7 +20,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.control-center" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.control-center/manifest.json b/hancore.shibumi.control-center/manifest.json index 41b8f6b4..dcc25960 100644 --- a/hancore.shibumi.control-center/manifest.json +++ b/hancore.shibumi.control-center/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.control-center", "name": "Shibumi Control Center", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi G1 presentation and bar configuration panel.", diff --git a/hancore.shibumi.cpu/Service.qml b/hancore.shibumi.cpu/Service.qml index 9fa31ba7..7641c8f9 100644 --- a/hancore.shibumi.cpu/Service.qml +++ b/hancore.shibumi.cpu/Service.qml @@ -13,7 +13,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.cpu" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.cpu/manifest.json b/hancore.shibumi.cpu/manifest.json index a5161b27..4bbde093 100644 --- a/hancore.shibumi.cpu/manifest.json +++ b/hancore.shibumi.cpu/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.cpu", "name": "Shibumi CPU", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi CPU widget, GPU sampler, and detailed usage panel.", diff --git a/hancore.shibumi.gpu/manifest.json b/hancore.shibumi.gpu/manifest.json index 3fd6043e..3c6da808 100644 --- a/hancore.shibumi.gpu/manifest.json +++ b/hancore.shibumi.gpu/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.gpu", "name": "Shibumi GPU", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Lazy GPU load, hardware, driver, temperature, and VRAM widget.", diff --git a/hancore.shibumi.media/Service.qml b/hancore.shibumi.media/Service.qml index 7f875972..0a8fd731 100644 --- a/hancore.shibumi.media/Service.qml +++ b/hancore.shibumi.media/Service.qml @@ -18,7 +18,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.media" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.media/manifest.json b/hancore.shibumi.media/manifest.json index ab081012..26051c4a 100644 --- a/hancore.shibumi.media/manifest.json +++ b/hancore.shibumi.media/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.media", "name": "Shibumi Media", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi media controls over Omarchy's MPRIS service.", diff --git a/hancore.shibumi.memory/manifest.json b/hancore.shibumi.memory/manifest.json index dbf3c353..b71b910d 100644 --- a/hancore.shibumi.memory/manifest.json +++ b/hancore.shibumi.memory/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.memory", "name": "Shibumi Memory", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi memory widget and detailed memory panel.", diff --git a/hancore.shibumi.network/Service.qml b/hancore.shibumi.network/Service.qml index 02ec1988..0f5e9823 100644 --- a/hancore.shibumi.network/Service.qml +++ b/hancore.shibumi.network/Service.qml @@ -15,7 +15,7 @@ Item { property var manifest: null SuiteRuntime.Provider { pluginId: "hancore.shibumi.network" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.network/manifest.json b/hancore.shibumi.network/manifest.json index 7681f19d..569a93d3 100644 --- a/hancore.shibumi.network/manifest.json +++ b/hancore.shibumi.network/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.network", "name": "Shibumi Network", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Native Shibumi NetworkManager ownership, telemetry, actions, QR, and speed testing.", diff --git a/hancore.shibumi.power-profile/manifest.json b/hancore.shibumi.power-profile/manifest.json index 9302b0e2..e0118fb9 100644 --- a/hancore.shibumi.power-profile/manifest.json +++ b/hancore.shibumi.power-profile/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.power-profile", "name": "Shibumi Power Profile", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi power-profile status and profile selector.", diff --git a/hancore.shibumi.power-state/Service.qml b/hancore.shibumi.power-state/Service.qml index f1982ecd..0ae6d94c 100644 --- a/hancore.shibumi.power-state/Service.qml +++ b/hancore.shibumi.power-state/Service.qml @@ -23,7 +23,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.power-state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.power-state/manifest.json b/hancore.shibumi.power-state/manifest.json index 0f7314df..b4ea3847 100644 --- a/hancore.shibumi.power-state/manifest.json +++ b/hancore.shibumi.power-state/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.power-state", "name": "Shibumi Power State", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shared battery and power-profile state for Shibumi widgets.", diff --git a/hancore.shibumi.quick-access/Service.qml b/hancore.shibumi.quick-access/Service.qml index 48f99d87..a04916ee 100644 --- a/hancore.shibumi.quick-access/Service.qml +++ b/hancore.shibumi.quick-access/Service.qml @@ -18,7 +18,7 @@ Item { SuiteRuntime.HostShell { id: suiteShell; host: root.shell } SuiteRuntime.Provider { pluginId: "hancore.shibumi.quick-access" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.quick-access/manifest.json b/hancore.shibumi.quick-access/manifest.json index 82bd6806..f841529f 100644 --- a/hancore.shibumi.quick-access/manifest.json +++ b/hancore.shibumi.quick-access/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.quick-access", "name": "Shibumi Quick Access", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi idle inhibitor and theme, wallpaper, screenshot, and video pickers.", diff --git a/hancore.shibumi.reactor/Service.qml b/hancore.shibumi.reactor/Service.qml index 26f4554b..2ea5871c 100644 --- a/hancore.shibumi.reactor/Service.qml +++ b/hancore.shibumi.reactor/Service.qml @@ -18,7 +18,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.reactor" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.reactor/manifest.json b/hancore.shibumi.reactor/manifest.json index 2ca159cd..6f2642d0 100644 --- a/hancore.shibumi.reactor/manifest.json +++ b/hancore.shibumi.reactor/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.reactor", "name": "Shibumi Reactor", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi event and quote Reactor service for compatible bar styles.", diff --git a/hancore.shibumi.state/Service.qml b/hancore.shibumi.state/Service.qml index 936fdf14..fae5bfff 100644 --- a/hancore.shibumi.state/Service.qml +++ b/hancore.shibumi.state/Service.qml @@ -16,7 +16,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.state/manifest.json b/hancore.shibumi.state/manifest.json index ceb07a58..39ea9e37 100644 --- a/hancore.shibumi.state/manifest.json +++ b/hancore.shibumi.state/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.state", "name": "Shibumi State", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Normalized Shibumi configuration and theme palette state.", diff --git a/hancore.shibumi.state/runtime/Runtime.qml b/hancore.shibumi.state/runtime/Runtime.qml index 452b37f7..fb45752c 100644 --- a/hancore.shibumi.state/runtime/Runtime.qml +++ b/hancore.shibumi.state/runtime/Runtime.qml @@ -10,7 +10,7 @@ QtObject { id: runtime readonly property int contractVersion: 1 - readonly property string suiteVersion: "0.1.1-beta.16.2" + readonly property string suiteVersion: "0.1.1-beta.16.3" readonly property var providerIds: [ "hancore.shibumi.state", "hancore.shibumi.control-center", "hancore.shibumi.reactor", "hancore.shibumi.telemetry", diff --git a/hancore.shibumi.status/Service.qml b/hancore.shibumi.status/Service.qml index 5d9e712f..0775cb92 100644 --- a/hancore.shibumi.status/Service.qml +++ b/hancore.shibumi.status/Service.qml @@ -16,7 +16,7 @@ Item { SuiteRuntime.HostShell { id: suiteShell; host: root.shell } SuiteRuntime.Provider { pluginId: "hancore.shibumi.status" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.status/manifest.json b/hancore.shibumi.status/manifest.json index e43f4fae..70b7c142 100644 --- a/hancore.shibumi.status/manifest.json +++ b/hancore.shibumi.status/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.status", "name": "Shibumi Status", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shibumi tray and notification composition with shared desktop status state.", diff --git a/hancore.shibumi.storage/Service.qml b/hancore.shibumi.storage/Service.qml index 23ead1ab..90b769b4 100644 --- a/hancore.shibumi.storage/Service.qml +++ b/hancore.shibumi.storage/Service.qml @@ -13,7 +13,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.storage" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.storage/manifest.json b/hancore.shibumi.storage/manifest.json index 71313747..f825a1c4 100644 --- a/hancore.shibumi.storage/manifest.json +++ b/hancore.shibumi.storage/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.storage", "name": "Shibumi Storage", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Read-only root usage and physical drive inventory.", diff --git a/hancore.shibumi.telemetry/Service.qml b/hancore.shibumi.telemetry/Service.qml index 80b0bede..e0172769 100644 --- a/hancore.shibumi.telemetry/Service.qml +++ b/hancore.shibumi.telemetry/Service.qml @@ -15,7 +15,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.telemetry" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.telemetry/manifest.json b/hancore.shibumi.telemetry/manifest.json index fae30ed7..2f76c604 100644 --- a/hancore.shibumi.telemetry/manifest.json +++ b/hancore.shibumi.telemetry/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.telemetry", "name": "Shibumi Telemetry", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Demand-driven CPU and memory telemetry shared by Shibumi widgets.", diff --git a/hancore.shibumi.temperature/manifest.json b/hancore.shibumi.temperature/manifest.json index dfdad1c1..2e35b422 100644 --- a/hancore.shibumi.temperature/manifest.json +++ b/hancore.shibumi.temperature/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.temperature", "name": "Shibumi Temperature", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Demand-driven hardware temperature widget and sensor panel.", diff --git a/hancore.shibumi.update-center/Service.qml b/hancore.shibumi.update-center/Service.qml index 0eaac8f0..51be3674 100644 --- a/hancore.shibumi.update-center/Service.qml +++ b/hancore.shibumi.update-center/Service.qml @@ -12,7 +12,7 @@ Item { property var manifest: null SuiteRuntime.Provider { pluginId: "hancore.shibumi.update-center" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.update-center/manifest.json b/hancore.shibumi.update-center/manifest.json index 7a6a85cf..01aea569 100644 --- a/hancore.shibumi.update-center/manifest.json +++ b/hancore.shibumi.update-center/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.update-center", "name": "Shibumi Update Center", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Safe repository package and user theme update status for Shibumi.", diff --git a/hancore.shibumi.workspaces/WorkspaceService.qml b/hancore.shibumi.workspaces/WorkspaceService.qml index 0bca2132..640bbb15 100644 --- a/hancore.shibumi.workspaces/WorkspaceService.qml +++ b/hancore.shibumi.workspaces/WorkspaceService.qml @@ -14,7 +14,7 @@ Item { SuiteRuntime.Provider { id: runtimeProvider pluginId: "hancore.shibumi.workspaces" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: root host: root.shell manifest: root.manifest diff --git a/hancore.shibumi.workspaces/manifest.json b/hancore.shibumi.workspaces/manifest.json index 8f3ae146..01f268a1 100644 --- a/hancore.shibumi.workspaces/manifest.json +++ b/hancore.shibumi.workspaces/manifest.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "id": "hancore.shibumi.workspaces", "name": "Shibumi Workspaces", - "version": "0.1.1-beta.16.2", + "version": "0.1.1-beta.16.3", "author": "HANCORE", "license": "MIT", "description": "Shared Hyprland workspace state with the Shibumi workspace presentation.", diff --git a/packaging/aur/.SRCINFO b/packaging/aur/.SRCINFO index 6a89906c..988d44ad 100644 --- a/packaging/aur/.SRCINFO +++ b/packaging/aur/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = shibumi-shell pkgdesc = Transactional Shibumi desktop shell plugins for Omarchy Quattro - pkgver = 0.1.1beta.16.2 + pkgver = 0.1.1beta.16.3 pkgrel = 1 url = https://github.com/HANCORE-linux/Shibumi-Shell arch = any @@ -30,7 +30,7 @@ pkgbase = shibumi-shell optdepends = btop: battery panel system monitor action optdepends = nvidia-utils: NVIDIA GPU telemetry optdepends = git: source-checkout diagnostics and migration - source = shibumi-shell-0.1.1-beta.16.2.tar.gz::https://github.com/HANCORE-linux/Shibumi-Shell/releases/download/v0.1.1-beta.16.2/shibumi-shell-0.1.1-beta.16.2.tar.gz - sha256sums = b98012b096aaee52f036a14d547fb54a5ffd4b7720acb8b5a3b1fd45c3409d62 + source = shibumi-shell-0.1.1-beta.16.3.tar.gz::https://github.com/HANCORE-linux/Shibumi-Shell/releases/download/v0.1.1-beta.16.3/shibumi-shell-0.1.1-beta.16.3.tar.gz + sha256sums = 5c94a288f417ec2aa5dacb97117520e31e8fdb70fe665372cec781ce7726a171 pkgname = shibumi-shell diff --git a/packaging/aur/PKGBUILD b/packaging/aur/PKGBUILD index 6daade5e..b952194f 100644 --- a/packaging/aur/PKGBUILD +++ b/packaging/aur/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: HANCORE Linux pkgname=shibumi-shell -_upstream_version=0.1.1-beta.16.2 -_source_sha256=b98012b096aaee52f036a14d547fb54a5ffd4b7720acb8b5a3b1fd45c3409d62 +_upstream_version=0.1.1-beta.16.3 +_source_sha256=5c94a288f417ec2aa5dacb97117520e31e8fdb70fe665372cec781ce7726a171 pkgver=${_upstream_version//-/} pkgrel=1 pkgdesc="Transactional Shibumi desktop shell plugins for Omarchy Quattro" diff --git a/packaging/package-metadata.json b/packaging/package-metadata.json index 163d5f2f..57130d0e 100644 --- a/packaging/package-metadata.json +++ b/packaging/package-metadata.json @@ -1,5 +1,5 @@ { "schemaVersion": 1, "packageName": "shibumi-shell", - "version": "0.1.1-beta.16.2" + "version": "0.1.1-beta.16.3" } diff --git a/scripts/check-aur-package b/scripts/check-aur-package index 9c4dbdd9..0d406e64 100755 --- a/scripts/check-aur-package +++ b/scripts/check-aur-package @@ -45,7 +45,7 @@ jq -e '.schemaVersion == 1 "public-beta.11", "step-5-tip", "public-beta.12", "public-beta.13", "source-beta.14", "public-beta.14.1", "public-beta.15", "public-beta.15.1", "public-beta.15.2", "public-beta.15.3", "public-beta.15.4", "public-beta.16", - "public-beta.16.1", "public-beta.16.2" + "public-beta.16.1", "public-beta.16.2", "public-beta.16.3" ]' \ contracts/lifecycle-predecessors-v1.json >/dev/null grep -Fq 'contracts/lifecycle-predecessors-v1.json' "$pkgbuild" || { diff --git a/tests/audio-native-backend-seam-regression.qml b/tests/audio-native-backend-seam-regression.qml index 622530a5..a71fcb99 100644 --- a/tests/audio-native-backend-seam-regression.qml +++ b/tests/audio-native-backend-seam-regression.qml @@ -174,7 +174,7 @@ ShellRoot { Audio.Service { id: service shell: serviceHost - manifest: ({id: "hancore.shibumi.audio", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.audio", version: "0.1.1-beta.16.3", kinds: ["service"]}) nativeBackendEnabled: true nativeBackendOverride: fakeBackend } diff --git a/tests/audio-runtime-smoke.qml b/tests/audio-runtime-smoke.qml index 404c8b02..9d93a24a 100644 --- a/tests/audio-runtime-smoke.qml +++ b/tests/audio-runtime-smoke.qml @@ -11,7 +11,7 @@ ShellRoot { property var savedPanel: null property real originalRadius: 0 property var audioManifest: ({id: "hancore.shibumi.audio", - version: "0.1.1-beta.16.2", kinds: ["service", "bar-widget"]}) + version: "0.1.1-beta.16.3", kinds: ["service", "bar-widget"]}) function check(value, message) { if (value) return console.error("audio-runtime-smoke:", message) @@ -48,9 +48,9 @@ ShellRoot { SuiteRuntime.Provider { id: stateProvider pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: tokenState - manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]}) } Fixtures.AudioRuntimeBackend { id: backend } Audio.Service { id: service; nativeBackendOverride: backend } diff --git a/tests/bar-catalog-consumer-smoke.qml b/tests/bar-catalog-consumer-smoke.qml index e455e576..2cc02c69 100644 --- a/tests/bar-catalog-consumer-smoke.qml +++ b/tests/bar-catalog-consumer-smoke.qml @@ -67,10 +67,10 @@ ShellRoot { SuiteRuntime.Provider { id: stateProvider pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: stateService host: stateHost - manifest: ({ id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", + manifest: ({ id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"] }) } @@ -92,7 +92,7 @@ ShellRoot { id: fakePluginRegistry property string pluginId: "hancore.shibumi.bar" property var manifest: ({ id: "hancore.shibumi.bar", - version: "0.1.1-beta.16.2", kinds: ["bar"] }) + version: "0.1.1-beta.16.3", kinds: ["bar"] }) property bool enabled: true property var _entryPointUrl: null readonly property var installedPlugins: { @@ -138,11 +138,11 @@ ShellRoot { property int catalogReadSerial: currentObservation ? currentObservation.serial : 0 property int catalogGeneration: currentObservation ? currentObservation.generation : 0 property var providerManifest: ({ id: "hancore.shibumi.control-center", - version: "0.1.1-beta.16.2", kinds: ["service"] }) + version: "0.1.1-beta.16.3", kinds: ["service"] }) QtObject { id: serviceHost; property string pluginId: "hancore.shibumi.control-center" } SuiteRuntime.Provider { pluginId: "hancore.shibumi.control-center" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: service host: serviceHost manifest: service.providerManifest @@ -192,7 +192,7 @@ ShellRoot { root.bar = barFactory.createObject(root, { omarchyPath: "/fixture/omarchy", shell: scopedBarHost, - manifest: ({ id: "hancore.shibumi.bar", version: "0.1.1-beta.16.2", + manifest: ({ id: "hancore.shibumi.bar", version: "0.1.1-beta.16.3", kinds: ["bar"] }), pluginRegistry: fakePluginRegistry, barWidgetRegistry: fakeWidgetRegistry, @@ -339,7 +339,7 @@ ShellRoot { } else if (root.stage === 4) { if (root.firstService.acquireCalls !== 2) return root.firstService.providerManifest = ({ id: "invalid", - version: "0.1.1-beta.16.2", kinds: ["service"] }) + version: "0.1.1-beta.16.3", kinds: ["service"] }) root.stage = 5; root.waits = 0 } else if (root.stage === 5) { if (root.firstService.releaseCalls !== 2) return diff --git a/tests/bar-visibility-ipc-smoke.qml b/tests/bar-visibility-ipc-smoke.qml index 59284ad6..0caca952 100644 --- a/tests/bar-visibility-ipc-smoke.qml +++ b/tests/bar-visibility-ipc-smoke.qml @@ -60,7 +60,7 @@ ShellRoot { shell: fakeShell manifest: ({ id: "hancore.shibumi.bar", - version: "0.1.1-beta.16.2", + version: "0.1.1-beta.16.3", kinds: ["bar"] }) pluginRegistry: fakePluginRegistry diff --git a/tests/catalog-service-smoke.qml b/tests/catalog-service-smoke.qml index b140fba5..b9c9372a 100644 --- a/tests/catalog-service-smoke.qml +++ b/tests/catalog-service-smoke.qml @@ -62,7 +62,7 @@ Scope { } } function manifest(valid) { - return {id: "hancore.shibumi.control-center", version: valid ? "0.1.1-beta.16.2" : "invalid", + return {id: "hancore.shibumi.control-center", version: valid ? "0.1.1-beta.16.3" : "invalid", kinds: ["service", "bar-widget"]} } function changedCatalogOutput() { diff --git a/tests/core-services-smoke.qml b/tests/core-services-smoke.qml index 226591e1..d09cfe7f 100644 --- a/tests/core-services-smoke.qml +++ b/tests/core-services-smoke.qml @@ -20,14 +20,14 @@ ShellRoot { id: telemetry shell: fakeShell thermalProbeEnabled: false - manifest: ({id: "hancore.shibumi.telemetry", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.telemetry", version: "0.1.1-beta.16.3", kinds: ["service"]}) } Cpu.Service { id: cpu shell: fakeShell gpuProbeEnabled: false - manifest: ({id: "hancore.shibumi.cpu", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.cpu", version: "0.1.1-beta.16.3", kinds: ["service"]}) } QtObject { @@ -40,7 +40,7 @@ ShellRoot { PowerState.Service { id: power shell: fakeShell - manifest: ({id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.3", kinds: ["service"]}) batterySnapshotOverride: ({ready: false}) commandOverrides: ({}) // This pure projection smoke may never launch helpers. } diff --git a/tests/fixtures/native-runtime/probe.py b/tests/fixtures/native-runtime/probe.py index 538c69c9..38515507 100644 --- a/tests/fixtures/native-runtime/probe.py +++ b/tests/fixtures/native-runtime/probe.py @@ -132,7 +132,7 @@ def catalog_probe(): "actual native catalog identity DTO mismatch") control = ready["snapshot"]["byId"]["hancore.shibumi.control-center"] check(control["description"] and control["author"] == "HANCORE" - and control["version"] == "0.1.1-beta.16.2" + and control["version"] == "0.1.1-beta.16.3" and control["barWidget"]["defaultSection"] == "left", "package-bound catalog presentation metadata was lost") check(host_config() == original, "read-only catalog changed native config") diff --git a/tests/fixtures/release-predecessor.json b/tests/fixtures/release-predecessor.json index 9f20de0f..197544a7 100644 --- a/tests/fixtures/release-predecessor.json +++ b/tests/fixtures/release-predecessor.json @@ -1,11 +1,11 @@ { "schemaVersion": 1, - "version": "0.1.1-beta.16.1", - "tag": "v0.1.1-beta.16.1", - "revision": "3b35049af69aba57784376e916f50146d61eb411", - "payloadDigest": "46f72fd02b00dbe34326dbbdf6e95556e7e35641a4d597c5281bc2beed94a974", - "releaseId": 402839526, - "releaseUrl": "https://github.com/HANCORE-linux/Shibumi-Shell/releases/tag/v0.1.1-beta.16.1", - "publishedAt": "2026-10-04T04:26:09Z", + "version": "0.1.1-beta.16.2", + "tag": "v0.1.1-beta.16.2", + "revision": "bd1224ba92fbf279666abe362ff5cf7a165da096", + "payloadDigest": "79c61d5e048c669c9eb27ebaad21987327892089daea501d0cf4185150a26f9e", + "releaseId": 407198695, + "releaseUrl": "https://github.com/HANCORE-linux/Shibumi-Shell/releases/tag/v0.1.1-beta.16.2", + "publishedAt": "2026-10-08T19:39:25Z", "prerelease": true } diff --git a/tests/gpu-selection-state-smoke.qml b/tests/gpu-selection-state-smoke.qml index 8932f878..adf20967 100644 --- a/tests/gpu-selection-state-smoke.qml +++ b/tests/gpu-selection-state-smoke.qml @@ -25,13 +25,13 @@ ShellRoot { id: stateService shell: fakeShell omarchyPath: Quickshell.env("OMARCHY_PATH") - manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]}) } Cpu.Service { id: cpuService shell: fakeShell - manifest: ({id: "hancore.shibumi.cpu", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.cpu", version: "0.1.1-beta.16.3", kinds: ["service"]}) gpuProbeEnabled: false } diff --git a/tests/host-registry-prime-smoke.qml b/tests/host-registry-prime-smoke.qml index 2045514a..bed60b3e 100644 --- a/tests/host-registry-prime-smoke.qml +++ b/tests/host-registry-prime-smoke.qml @@ -50,11 +50,11 @@ ShellRoot { Shared.Provider { id: stateProvider pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: stateOwner host: stateHost manifest: ({ id: "hancore.shibumi.state", - version: "0.1.1-beta.16.2", kinds: ["service"] }) + version: "0.1.1-beta.16.3", kinds: ["service"] }) } QtObject { @@ -77,11 +77,11 @@ ShellRoot { } Shared.Provider { pluginId: "hancore.shibumi.bar" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: owner host: owner.providerHost manifest: ({ id: "hancore.shibumi.bar", - version: "0.1.1-beta.16.2", kinds: ["bar"] }) + version: "0.1.1-beta.16.3", kinds: ["bar"] }) } } } diff --git a/tests/media-spectrum-service-smoke.qml b/tests/media-spectrum-service-smoke.qml index 5066b2fd..e3503fd5 100644 --- a/tests/media-spectrum-service-smoke.qml +++ b/tests/media-spectrum-service-smoke.qml @@ -42,7 +42,7 @@ ShellRoot { Media.Service { id: spectrum shell: fakeShell - manifest: ({id: "hancore.shibumi.media", version: "0.1.1-beta.16.2", kinds: ["service", "bar-widget"]}) + manifest: ({id: "hancore.shibumi.media", version: "0.1.1-beta.16.3", kinds: ["service", "bar-widget"]}) } Timer { diff --git a/tests/plugin-update-service-smoke.qml b/tests/plugin-update-service-smoke.qml index f1d15af5..937e05eb 100644 --- a/tests/plugin-update-service-smoke.qml +++ b/tests/plugin-update-service-smoke.qml @@ -209,7 +209,7 @@ ShellRoot { if (service.available || service.check(true)) return root.fail("scoped update worker started before manifest admission") service.manifest = {id: "hancore.shibumi.control-center", - version: "0.1.1-beta.16.2", kinds: ["service", "bar-widget"]} + version: "0.1.1-beta.16.3", kinds: ["service", "bar-widget"]} root.phase++ root.ticks = 0 return diff --git a/tests/power-deferred-smoke.qml b/tests/power-deferred-smoke.qml index 10b33ab1..a7165828 100644 --- a/tests/power-deferred-smoke.qml +++ b/tests/power-deferred-smoke.qml @@ -57,7 +57,7 @@ ShellRoot { PowerState.Service { id: power shell: host - manifest: root.allowed ? ({id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.2", kinds: ["service"]}) : null + manifest: root.allowed ? ({id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.3", kinds: ["service"]}) : null batterySnapshotOverride: battery commandOverrides: ({ profiles: ["/usr/bin/python3", "-I", root.helper, root.directory, "profiles"], diff --git a/tests/power-runtime-smoke.qml b/tests/power-runtime-smoke.qml index 45936345..a014a106 100644 --- a/tests/power-runtime-smoke.qml +++ b/tests/power-runtime-smoke.qml @@ -24,7 +24,7 @@ ShellRoot { readonly property var power: serviceLoader.item readonly property string fixturePath: Quickshell.env("SHIBUMI_POWER_SCOPE_DIR") readonly property string helper: decodeURIComponent(String(Qt.resolvedUrl("fixtures/power-runtime-helper.py")).substring(7)) - readonly property var validManifest: ({ id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.2", kinds: ["service"], entryPoints: { service: "Service.qml" } }) + readonly property var validManifest: ({ id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.3", kinds: ["service"], entryPoints: { service: "Service.qml" } }) readonly property var fakeCommands: ({ profiles: ["/usr/bin/python3", "-I", helper, fixturePath, "profiles"], activeProfile: ["/usr/bin/python3", "-I", helper, fixturePath, "activeProfile"], @@ -55,10 +55,10 @@ ShellRoot { } SuiteRuntime.Provider { pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: state host: root.stateEnabled ? stateHost : null - manifest: ({ id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"] }) + manifest: ({ id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"] }) } QtObject { id: battery diff --git a/tests/power-service-runtime-smoke.qml b/tests/power-service-runtime-smoke.qml index a6cfd14d..20cd22a9 100644 --- a/tests/power-service-runtime-smoke.qml +++ b/tests/power-service-runtime-smoke.qml @@ -14,7 +14,7 @@ ShellRoot { PowerState.Service { id: power shell: scopedHost - manifest: ({ id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.2", + manifest: ({ id: "hancore.shibumi.power-state", version: "0.1.1-beta.16.3", kinds: ["service"], entryPoints: { service: "Service.qml" } }) batterySnapshotOverride: ({ ready: false }) commandOverrides: ({ diff --git a/tests/reactor-plugin-smoke.qml b/tests/reactor-plugin-smoke.qml index c4de7c4a..f153cbc0 100644 --- a/tests/reactor-plugin-smoke.qml +++ b/tests/reactor-plugin-smoke.qml @@ -76,7 +76,7 @@ ShellRoot { Audio.Service { id: fakeAudio shell: fakeShell - manifest: ({id: "hancore.shibumi.audio", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.audio", version: "0.1.1-beta.16.3", kinds: ["service"]}) nativeBackendEnabled: false } @@ -115,7 +115,7 @@ ShellRoot { Reactor.Service { id: reactorService - manifest: ({id: "hancore.shibumi.reactor", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.reactor", version: "0.1.1-beta.16.3", kinds: ["service"]}) shell: fakeShell runtimeProbesEnabled: false } diff --git a/tests/reactor-runtime-smoke.qml b/tests/reactor-runtime-smoke.qml index 26058428..e600fc7e 100644 --- a/tests/reactor-runtime-smoke.qml +++ b/tests/reactor-runtime-smoke.qml @@ -16,7 +16,7 @@ ShellRoot { property int beforeLoss: 0 property var cachedMode: null property var cachedTest: null - readonly property var manifest: ({id: "hancore.shibumi.reactor", version: "0.1.1-beta.16.2", kinds: ["service"]}) + readonly property var manifest: ({id: "hancore.shibumi.reactor", version: "0.1.1-beta.16.3", kinds: ["service"]}) function check(value, message) { if (value) return console.error("reactor-runtime:", message) @@ -44,14 +44,14 @@ ShellRoot { property bool outputMuted: true } SuiteRuntime.Provider { - pluginId: "hancore.shibumi.state"; implementationVersion: "0.1.1-beta.16.2" + pluginId: "hancore.shibumi.state"; implementationVersion: "0.1.1-beta.16.3" owner: state; host: root.stateEnabled ? stateHost : null - manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]}) } SuiteRuntime.Provider { - pluginId: "hancore.shibumi.audio"; implementationVersion: "0.1.1-beta.16.2" + pluginId: "hancore.shibumi.audio"; implementationVersion: "0.1.1-beta.16.3" owner: audio; host: root.audioEnabled ? audioHost : null - manifest: ({id: "hancore.shibumi.audio", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.audio", version: "0.1.1-beta.16.3", kinds: ["service"]}) } Reactor.Service { id: service; runtimeProbesEnabled: false } Reactor.Service { id: duplicate; runtimeProbesEnabled: false } diff --git a/tests/scoped-state-regression.qml b/tests/scoped-state-regression.qml index 885bd86d..8761e74f 100644 --- a/tests/scoped-state-regression.qml +++ b/tests/scoped-state-regression.qml @@ -36,7 +36,7 @@ ShellRoot { id: state shell: host omarchyPath: Quickshell.env("OMARCHY_PATH") - manifest: ({ id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", + manifest: ({ id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"], __sourceDir: Quickshell.env("DECOY_MARKER_DIR") }) } BarProbe.Marker { diff --git a/tests/shared-runtime-regression.qml b/tests/shared-runtime-regression.qml index 07b3fec2..8f3578c2 100644 --- a/tests/shared-runtime-regression.qml +++ b/tests/shared-runtime-regression.qml @@ -54,7 +54,7 @@ ShellRoot { id: state shell: stateApi omarchyPath: Quickshell.env("OMARCHY_PATH") - manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]}) } BarProbe.Marker { id: markerBar } Item { @@ -66,10 +66,10 @@ ShellRoot { Shared.Provider { id: barProvider pluginId: "hancore.shibumi.bar" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: barOwner host: barOwner.injectedHost - manifest: ({id: "hancore.shibumi.bar", version: "0.1.1-beta.16.2", kinds: ["bar"]}) + manifest: ({id: "hancore.shibumi.bar", version: "0.1.1-beta.16.3", kinds: ["bar"]}) } } Shared.HostShell { id: client; host: stateApi } @@ -82,7 +82,7 @@ ShellRoot { property int value: 0 Shared.Provider { pluginId: "hancore.shibumi.audio" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: peer host: peer.injectedHost manifest: peer.injectedManifest @@ -152,7 +152,7 @@ ShellRoot { check(left.state === null && right.state === null && !state.ready && !state.writePending, "version drift retained State authority or queued intent") check(!state.setGroupSetting("G4", "compact", true), "revoked State accepted intent") - state.manifest = {id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]} + state.manifest = {id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]} check(left.state === state && Shared.Runtime._selected("hancore.shibumi.state") !== oldLease, "State did not register a new lifetime") Shared.Runtime.unregisterProvider(oldLease) @@ -161,10 +161,10 @@ ShellRoot { check(first !== null && client.serviceFor("hancore.shibumi.audio") === null, "parentless service published before injection") first.injectedHost = audioApi - first.injectedManifest = {id: "hancore.shibumi.audio", version: "0.1.1-beta.16.2", kinds: ["service"]} + first.injectedManifest = {id: "hancore.shibumi.audio", version: "0.1.1-beta.16.3", kinds: ["service"]} check(client.serviceFor("hancore.shibumi.audio") === first, "provider registration failed") second = serviceFactory.createObject(null, {injectedHost: audioApi, - injectedManifest: {id: "hancore.shibumi.audio", version: "0.1.1-beta.16.2", kinds: ["service"]}}) + injectedManifest: {id: "hancore.shibumi.audio", version: "0.1.1-beta.16.3", kinds: ["service"]}}) check(client.serviceFor("hancore.shibumi.audio") === null, "duplicate provider was last-writer-wins: second=" + JSON.stringify({ manifest: second.injectedManifest, kindsArray: Array.isArray(second.injectedManifest.kinds), @@ -192,7 +192,7 @@ ShellRoot { first.injectedHost = audioApi check(client.serviceFor("hancore.shibumi.audio") === first, "scope recovery stayed unavailable") let getterReached = false - const malformed = {version: "0.1.1-beta.16.2", kinds: ["service"]} + const malformed = {version: "0.1.1-beta.16.3", kinds: ["service"]} Object.defineProperty(malformed, "id", {get: function() { getterReached = true throw new Error("controlled malformed metadata getter") diff --git a/tests/state-service-smoke.qml b/tests/state-service-smoke.qml index 8bb9ca67..a8420994 100644 --- a/tests/state-service-smoke.qml +++ b/tests/state-service-smoke.qml @@ -55,7 +55,7 @@ ShellRoot { id: state omarchyPath: Quickshell.env("OMARCHY_PATH") shell: fakeShell - manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]}) } Component.onCompleted: steps = [ function() { diff --git a/tests/status-plugin-smoke.qml b/tests/status-plugin-smoke.qml index 1aab6bf1..26c06a0b 100644 --- a/tests/status-plugin-smoke.qml +++ b/tests/status-plugin-smoke.qml @@ -204,11 +204,11 @@ ShellRoot { SuiteRuntime.Provider { id: leasedBarProvider pluginId: "hancore.shibumi.bar" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: leasedBarOwner host: leasedBarOwner.providerHost manifest: ({ id: "hancore.shibumi.bar", - version: "0.1.1-beta.16.2", kinds: ["bar"] }) + version: "0.1.1-beta.16.3", kinds: ["bar"] }) } } @@ -226,7 +226,7 @@ ShellRoot { Status.Service { shell: rawScopedStatusShell manifest: ({ id: "hancore.shibumi.status", - version: "0.1.1-beta.16.2", kinds: ["service"] }) + version: "0.1.1-beta.16.3", kinds: ["service"] }) actionRunner: actionRecorder runtimeProbesEnabled: false } diff --git a/tests/telemetry-plugins-smoke.qml b/tests/telemetry-plugins-smoke.qml index e5490342..832ce779 100644 --- a/tests/telemetry-plugins-smoke.qml +++ b/tests/telemetry-plugins-smoke.qml @@ -27,7 +27,7 @@ ShellRoot { Telemetry.Service { id: telemetryService shell: fakeShell - manifest: ({id: "hancore.shibumi.telemetry", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.telemetry", version: "0.1.1-beta.16.3", kinds: ["service"]}) // Keep this fixture isolated from machine-specific hwmon inventory. thermalProbeEnabled: false } @@ -35,7 +35,7 @@ ShellRoot { Cpu.Service { id: cpuService shell: fakeShell - manifest: ({id: "hancore.shibumi.cpu", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.cpu", version: "0.1.1-beta.16.3", kinds: ["service"]}) gpuProbeEnabled: false } diff --git a/tests/telemetry-runtime-smoke.qml b/tests/telemetry-runtime-smoke.qml index 7e1ce7f9..1d12eaf4 100644 --- a/tests/telemetry-runtime-smoke.qml +++ b/tests/telemetry-runtime-smoke.qml @@ -22,7 +22,7 @@ ShellRoot { Qt.exit(1) throw new Error(message) } - function manifest(id) { return {id: id, version: "0.1.1-beta.16.2", kinds: ["service"]} } + function manifest(id) { return {id: id, version: "0.1.1-beta.16.3", kinds: ["service"]} } component ScopedHost: QtObject { property string pluginId: "" function serviceFor(id) { root.check(false, "raw scoped lookup: " + id); return null } @@ -43,7 +43,7 @@ ShellRoot { } SuiteRuntime.Provider { pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" host: stateHost owner: state manifest: root.manifest("hancore.shibumi.state") diff --git a/tests/test_package_release.py b/tests/test_package_release.py index 9ee51975..09f41ae1 100644 --- a/tests/test_package_release.py +++ b/tests/test_package_release.py @@ -233,10 +233,20 @@ def test_lifecycle_contract_pins_exact_release_identities(self) -> None: }, "public-beta.16.2": { "suiteVersion": "0.1.1-beta.16.2", - "sourceRevisions": ["package:0.1.1-beta.16.2"], + "sourceRevisions": [ + "bd1224ba92fbf279666abe362ff5cf7a165da096", + "e07853b54f018ab694572c7502297e0f17752220", + "package:0.1.1-beta.16.2", + ], "settingsStorageVersion": 1, "payloadDigest": "79c61d5e048c669c9eb27ebaad21987327892089daea501d0cf4185150a26f9e", }, + "public-beta.16.3": { + "suiteVersion": "0.1.1-beta.16.3", + "sourceRevisions": ["package:0.1.1-beta.16.3"], + "settingsStorageVersion": 1, + "payloadDigest": "9d8cca435b465c52b0ff21d7a6780f90251a805dc1d1e72b78473ca2a8338a88", + }, } self.assertEqual(set(states), set(expected)) for identity_id, pinned in expected.items(): diff --git a/tests/theme-palette-runtime-smoke.qml b/tests/theme-palette-runtime-smoke.qml index 659a66be..9a8037e8 100644 --- a/tests/theme-palette-runtime-smoke.qml +++ b/tests/theme-palette-runtime-smoke.qml @@ -26,7 +26,7 @@ ShellRoot { id: state shell: fakeShell omarchyPath: Quickshell.env("OMARCHY_PATH") - manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]}) } function colorText(value) { diff --git a/tests/third-party-integration-smoke.qml b/tests/third-party-integration-smoke.qml index 510b37b1..8e3d081c 100644 --- a/tests/third-party-integration-smoke.qml +++ b/tests/third-party-integration-smoke.qml @@ -38,14 +38,14 @@ ShellRoot { AudioOwner.Service { shell: fakeShell nativeBackendEnabled: false // Controlled peak stub; this fixture tests IPC. - manifest: ({ id: "hancore.shibumi.audio", version: "0.1.1-beta.16.2", kinds: ["service"] }) + manifest: ({ id: "hancore.shibumi.audio", version: "0.1.1-beta.16.3", kinds: ["service"] }) } StateOwner.Service { shell: fakeShell omarchyPath: "" manifest: ({ - id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"] + id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"] }) } diff --git a/tests/widget-pipeline-diagnostics-smoke.qml b/tests/widget-pipeline-diagnostics-smoke.qml index 83b2f625..9a19fcbb 100644 --- a/tests/widget-pipeline-diagnostics-smoke.qml +++ b/tests/widget-pipeline-diagnostics-smoke.qml @@ -237,11 +237,11 @@ ShellRoot { Shared.Provider { id: stateProvider pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: stateOwner host: stateHost manifest: ({ id: "hancore.shibumi.state", - version: "0.1.1-beta.16.2", kinds: ["service"] }) + version: "0.1.1-beta.16.3", kinds: ["service"] }) } QtObject { @@ -290,7 +290,7 @@ ShellRoot { barWidgetRegistry: scopedWidgetRegistry manifest: ({ id: "hancore.shibumi.bar", - version: "0.1.1-beta.16.2", + version: "0.1.1-beta.16.3", kinds: ["bar"] }) barConfig: ({ diff --git a/tests/workspaces-plugin-smoke.qml b/tests/workspaces-plugin-smoke.qml index 4e457d74..56e8b5e2 100644 --- a/tests/workspaces-plugin-smoke.qml +++ b/tests/workspaces-plugin-smoke.qml @@ -125,7 +125,7 @@ ShellRoot { Workspaces.WorkspaceService { id: workspaceState shell: fakeShell - manifest: ({id: "hancore.shibumi.workspaces", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.workspaces", version: "0.1.1-beta.16.3", kinds: ["service"]}) stateService: preferenceState backendOverride: QtObject { property var focusedWorkspace: ({ id: 8 }) diff --git a/tests/workspaces-runtime-smoke.qml b/tests/workspaces-runtime-smoke.qml index 0b2aadad..3fc992f2 100644 --- a/tests/workspaces-runtime-smoke.qml +++ b/tests/workspaces-runtime-smoke.qml @@ -15,7 +15,7 @@ ShellRoot { property var cachedPreference: null property int callsBeforeLoss: 0 property int writesBeforeLoss: 0 - readonly property var validManifest: ({id: "hancore.shibumi.workspaces", version: "0.1.1-beta.16.2", kinds: ["service"]}) + readonly property var validManifest: ({id: "hancore.shibumi.workspaces", version: "0.1.1-beta.16.3", kinds: ["service"]}) function check(value, message) { if (value) return console.error("workspaces-runtime:", message) @@ -44,10 +44,10 @@ ShellRoot { } SuiteRuntime.Provider { pluginId: "hancore.shibumi.state" - implementationVersion: "0.1.1-beta.16.2" + implementationVersion: "0.1.1-beta.16.3" owner: state host: root.stateEnabled ? stateHost : null - manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.2", kinds: ["service"]}) + manifest: ({id: "hancore.shibumi.state", version: "0.1.1-beta.16.3", kinds: ["service"]}) } QtObject { id: backend