Fixa omladdningsloopen + churn; CI/släpp flyttat till x64-byggnoden
Some checks failed
check / check (push) Failing after 1m4s

- KRITISKT: notify-watchern reagerade på Access-events, så vår egen
  läsning av configen triggade ny omladdning i all oändlighet (var
  155:e ms). Panelen revs och byggdes om konstant → blinkande hover,
  klick som aldrig landade. Nu filtreras eventen till riktiga
  skrivningar (Modify/Create/Remove/Close-Write).
- Titeländringar (webbläsare/terminaler) bygger inte längre om UI:t;
  tooltips slås i stället upp färskt vid hover (query-tooltip), och
  klick/skroll/menyer agerar på färskt fönster-state vid eventtillfället.
- hotspots::rebuild är idempotent (skippar om config+skärmar oförändrade).
- Settings: markup-escape i rubriker (Kant & skugga-varningen).
- CI: check + release körs på byggnoden brasse-linux01 (runs-on
  linux-amd64) — waydock byggs BARA för x86_64, aldrig på Pi5:ns
  arm-runner. Ny release.yaml: vX.Y.Z-tagg bygger x64-binären och
  laddar upp till Gitea-släppsidan + rullande latest. release.sh är
  nu bara tagga-och-pusha.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-29 23:51:27 +02:00
parent 0ded844b3a
commit e4e4d39405
10 changed files with 230 additions and 70 deletions

View File

@@ -1,7 +1,8 @@
name: check
# Kompilerings- och lintvakt på Pi5-runnern (arm64). Bygger inga
# artefakter — släpp byggs lokalt på brasse-linux01 via ./release.sh.
# Kompilerings- och lintvakt på byggnoden på brasse-linux01 (x64-runnern
# med exklusiva labeln linux-amd64). waydock byggs BARA för x86_64 —
# aldrig på Pi5:ns arm-runner.
on:
push:
branches: [master]
@@ -14,7 +15,7 @@ on:
jobs:
check:
runs-on: ubuntu-latest
runs-on: linux-amd64
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -0,0 +1,101 @@
name: release
# Släppbygge på byggnoden på brasse-linux01 (x64-runnern, label
# linux-amd64). En vX.Y.Z-tagg ger en versionerad release + uppdaterar
# rullande "latest". Bara linux-x64 byggs — waydock är en desktopapp
# för brasse-linux01, ingen arm-build.
on:
push:
tags: ["v*"]
workflow_dispatch:
inputs:
tag:
description: "Release-tag (lämna tom för 'latest')"
required: false
jobs:
build-release:
runs-on: linux-amd64
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Bestäm tag
id: t
run: |
case "$GITHUB_REF" in
refs/tags/*) T="$GITHUB_REF_NAME" ;;
*) T="${{ inputs.tag }}"; [ -z "$T" ] && T="latest" ;;
esac
echo "tag=$T" >> "$GITHUB_OUTPUT"
echo "bygger release: $T"
- name: Install toolchain + GTK4 deps
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y -qq curl build-essential pkg-config git jq \
libgtk-4-dev meson ninja-build wayland-protocols libwayland-dev
if ! apt-get install -y -qq libgtk4-layer-shell-dev; then
git clone --depth 1 https://github.com/wmww/gtk4-layer-shell.git /tmp/g4ls
meson setup /tmp/g4ls/build /tmp/g4ls \
-Dintrospection=false -Dvapi=false -Dexamples=false \
-Ddocs=false -Dtests=false
ninja -C /tmp/g4ls/build install
ldconfig
arch_dir=$(gcc -dumpmachine)
echo "PKG_CONFIG_PATH=/usr/local/lib/${arch_dir}/pkgconfig:/usr/local/lib/pkgconfig" >> "$GITHUB_ENV"
echo "LD_LIBRARY_PATH=/usr/local/lib/${arch_dir}:/usr/local/lib" >> "$GITHUB_ENV"
fi
curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Bygg x64-binären
run: |
cargo build --release --locked
cargo test --locked
mkdir -p out
cp target/release/waydock "out/waydock-${{ steps.t.outputs.tag }}-linux-x64"
cp target/release/waydock out/waydock-latest-linux-x64
cp install.sh out/install.sh
cd out && sha256sum waydock-* install.sh > checksums.txt && ls -la
- name: Skapa Gitea-release + ladda upp assets
env:
API: ${{ github.server_url }}/api/v1
REPO: ${{ github.repository }}
TAG: ${{ steps.t.outputs.tag }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BODY="waydock $TAG — linux-x64. Installera: curl -fsSL https://gitea.brasse-pc.eu/brasse/waydock/raw/branch/master/install.sh | sh"
publish() { # $1 = releasetagg, $2... = assetfiler
local tag=$1; shift
local rid
rid=$(curl -s -X POST "$API/repos/$REPO/releases" \
-H "Authorization: token $TOKEN" -H 'Content-Type: application/json' \
-d "{\"tag_name\":\"$tag\",\"name\":\"waydock $tag\",\"body\":\"$BODY\"}" | jq -r '.id // empty')
[ -z "$rid" ] && rid=$(curl -s "$API/repos/$REPO/releases/tags/$tag" \
-H "Authorization: token $TOKEN" | jq -r '.id')
echo "release $tag -> id $rid"
for f in "$@"; do
local aid
aid=$(curl -s "$API/repos/$REPO/releases/$rid/assets" \
-H "Authorization: token $TOKEN" | jq -r ".[] | select(.name==\"$f\") | .id")
if [ -n "$aid" ] && [ "$aid" != "null" ]; then
curl -s -X DELETE "$API/repos/$REPO/releases/$rid/assets/$aid" \
-H "Authorization: token $TOKEN" -o /dev/null
fi
curl -s -X POST "$API/repos/$REPO/releases/$rid/assets?name=$f" \
-H "Authorization: token $TOKEN" -F "attachment=@out/$f" \
-o /dev/null -w " $f -> HTTP %{http_code}\n"
done
}
if [ "$TAG" != "latest" ]; then
publish "$TAG" "waydock-$TAG-linux-x64" install.sh checksums.txt
fi
# rullande latest: flytta taggen till HEAD och publicera om
git config user.name gitea-actions
git config user.email actions@gitea.brasse-pc.eu
git tag -f latest
git push -f origin latest || echo "kunde inte flytta latest-taggen (fortsätter ändå)"
publish latest waydock-latest-linux-x64 install.sh checksums.txt