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,56 +1,24 @@
#!/usr/bin/env bash
# Lokalt släppbygge för waydock (körs på brasse-linux01, x64).
# Släpp waydock: taggar vX.Y.Z och pushar — själva bygget och uppladdningen
# till Gitea-releasen görs av CI-jobbet .gitea/workflows/release.yaml på
# byggnoden (x64-runnern på brasse-linux01).
# ./release.sh v0.2.0
# Taggar, bygger release-binären, skapar Gitea-release med binären som
# asset och uppdaterar den rullande "latest"-releasen.
set -euo pipefail
TAG="${1:?användning: ./release.sh vX.Y.Z}"
[[ "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "taggen ska vara vX.Y.Z"; exit 1; }
OWNER=brasse REPO=waydock
API=https://gitea.brasse-pc.eu/api/v1
TOKEN="${GITEA_TOKEN:-$(jq -r .token ~/.config/giteactl/config.json)}"
BIN=target/release/waydock
ASSET="waydock-${TAG}-linux-x64"
# versionen i Cargo.toml ska matcha taggen
CARGO_VER=$(grep -m1 '^version' Cargo.toml | cut -d'"' -f2)
[[ "v$CARGO_VER" == "$TAG" ]] || { echo "Cargo.toml har $CARGO_VER, taggen är $TAG — uppdatera först"; exit 1; }
echo "==> bygger $TAG"
echo "==> snabbkoll innan tagg"
cargo build --release --locked
cargo test --locked
echo "==> taggar + pushar"
echo "==> taggar + pushar (CI bygger och publicerar releasen)"
git tag -a "$TAG" -m "waydock $TAG"
git push origin master "$TAG"
api() { # method path [json|@fil]
local m=$1 p=$2; shift 2
curl -fsS -X "$m" -H "Authorization: token $TOKEN" "$@" "$API$p"
}
make_release() { # tag namn prerelease
api POST "/repos/$OWNER/$REPO/releases" \
-H 'Content-Type: application/json' \
-d "{\"tag_name\":\"$1\",\"name\":\"$2\",\"body\":\"waydock $TAG — linux-x64.\\n\\nInstallera:\\n\`\`\`\\ncurl -fsSL https://gitea.brasse-pc.eu/brasse/waydock/raw/branch/master/install.sh | sh\\n\`\`\`\"}"
}
upload() { # release-id filnamn
api POST "/repos/$OWNER/$REPO/releases/$1/assets?name=$2" \
-F "attachment=@$BIN;filename=$2" > /dev/null
}
echo "==> skapar release $TAG"
REL_ID=$(make_release "$TAG" "waydock $TAG" | jq .id)
upload "$REL_ID" "$ASSET"
echo "==> uppdaterar rullande latest"
OLD=$(api GET "/repos/$OWNER/$REPO/releases/tags/latest" 2>/dev/null | jq -r .id) || OLD=""
[[ -n "$OLD" && "$OLD" != null ]] && api DELETE "/repos/$OWNER/$REPO/releases/$OLD" || true
git tag -f latest && git push -f origin latest
LATEST_ID=$(make_release "latest" "waydock latest ($TAG)" | jq .id)
upload "$LATEST_ID" "waydock-latest-linux-x64"
echo "==> klart: https://gitea.brasse-pc.eu/$OWNER/$REPO/releases"
echo "==> följ bygget: giteactl runs waydock"
echo "==> releaser: https://gitea.brasse-pc.eu/brasse/waydock/releases"