@@ -15,10 +15,10 @@ concurrency:
1515 cancel-in-progress : false
1616env :
1717 # Immutable commit in A3S-Lab/a3s containing the Web workspace sources.
18- A3S_WEB_SOURCE_REF : 898f6a55554cf566e81903847c17651250d9c444
18+ A3S_WEB_SOURCE_REF : 4ba68fde4c2a80afb84cc09636f3408a5d457699
1919 # Exact companion prerequisite; preflight rejects an absent or incomplete release.
20- A3S_WEBVIEW_VERSION : 0.1.2
21- A3S_CODE_CORE_VERSION : 6.1 .0
20+ A3S_WEBVIEW_VERSION : 0.1.5
21+ A3S_CODE_CORE_VERSION : 6.3 .0
2222 A3S_SEARCH_VERSION : 2.0.0
2323 A3S_TUI_VERSION : 0.1.13
2424jobs :
@@ -126,7 +126,7 @@ jobs:
126126 "a3s-search $A3S_SEARCH_VERSION"
127127 "a3s-acl 0.2.2"
128128 "a3s-updater 0.3.0"
129- "a3s-use-extension 0.1.2 "
129+ "a3s-use-extension 0.1.3 "
130130 )
131131 for requirement in "${required_crates[@]}"; do
132132 read -r crate dependency_version <<<"$requirement"
@@ -624,8 +624,7 @@ jobs:
624624 shell : bash
625625 run : |
626626 set -euo pipefail
627- cp .release-manifest/Cargo.toml Cargo.toml
628- cp .release-manifest/Cargo.lock Cargo.lock
627+ bash .github/scripts/use-published-a3s-crates.sh
629628 cargo metadata --locked --no-deps --format-version 1 >/dev/null
630629 - name : Download Web workspace
631630 uses : actions/download-artifact@v4
@@ -839,18 +838,24 @@ jobs:
839838 run : |
840839 set -euo pipefail
841840 tag="$GITHUB_REF_NAME"
842- for target in \
843- aarch64-apple-darwin \
844- x86_64-apple-darwin \
845- x86_64-unknown-linux-gnu \
846- aarch64-unknown-linux-gnu \
847- x86_64-pc-windows-msvc; do
848- base="a3s-${tag}-${target}"
849- printf '%s\n' "${base}.tar.gz" "${base}.sha256"
850- if [[ "$target" == x86_64-pc-windows-msvc ]]; then
851- printf '%s\n' "${base}.zip"
852- fi
853- done | sort > expected-assets.txt
841+ version="${tag#v}"
842+ {
843+ for target in \
844+ aarch64-apple-darwin \
845+ x86_64-apple-darwin \
846+ x86_64-unknown-linux-gnu \
847+ aarch64-unknown-linux-gnu \
848+ x86_64-pc-windows-msvc; do
849+ base="a3s-${tag}-${target}"
850+ printf '%s\n' "${base}.tar.gz" "${base}.sha256"
851+ if [[ "$target" == x86_64-pc-windows-msvc ]]; then
852+ printf '%s\n' "${base}.zip"
853+ fi
854+ done
855+ printf '%s\n' \
856+ "a3s-web-v${version}.tar.gz" \
857+ "a3s-web-v${version}.tar.gz.sha256"
858+ } | sort > expected-assets.txt
854859 gh release view "$tag" --json assets \
855860 --jq '.assets[].name' | sort > actual-assets.txt
856861 if ! diff -u expected-assets.txt actual-assets.txt; then
@@ -897,6 +902,29 @@ jobs:
897902 done
898903 done
899904
905+ web_archive="a3s-web-v${version}.tar.gz"
906+ web_checksum="release-assets/${web_archive}.sha256"
907+ web_checksum_lines="$(awk 'END { print NR }' "$web_checksum")"
908+ web_checksum_entries="$(awk 'NF == 2 { count += 1 } END { print count + 0 }' "$web_checksum")"
909+ if [[ "$web_checksum_lines" -ne 1 || "$web_checksum_entries" -ne 1 ]]; then
910+ echo "::error::${web_archive}.sha256 must contain exactly one checksum entry"
911+ exit 1
912+ fi
913+ expected_web_digest="$(awk -v asset="$web_archive" \
914+ '($2 == asset || $2 == "*" asset) \
915+ && length($1) == 64 && $1 !~ /[^0-9a-f]/ \
916+ { digest = $1; count += 1 } \
917+ END { if (count == 1) print digest }' "$web_checksum")"
918+ actual_web_digest="$(sha256sum "release-assets/${web_archive}" | awk '{ print $1 }')"
919+ if [[ -z "$expected_web_digest" || "$actual_web_digest" != "$expected_web_digest" ]]; then
920+ echo "::error::SHA-256 mismatch for ${web_archive}"
921+ exit 1
922+ fi
923+ if ! tar -tzf "release-assets/${web_archive}" | grep -Fx 'web/index.html' >/dev/null; then
924+ echo "::error::${web_archive} does not contain web/index.html"
925+ exit 1
926+ fi
927+
900928 git fetch --force origin "refs/tags/${tag}:refs/tags/${tag}"
901929 current_tag_sha="$(git rev-list -n 1 "refs/tags/${tag}")"
902930 if [[ -z "$RELEASE_SHA" || "$current_tag_sha" != "$RELEASE_SHA" ]]; then
0 commit comments