The release page now leads with the two supported installation paths —
release package (Linux tar.gz / Windows zip, setup/start, SHA256SUMS) and
source checkout for development — before GitHub's generated changelog.
The block is written by the workflow (`--notes-file` + `--generate-notes`),
so every future v* release carries it. The v1.9.7 release body is updated
manually to the same text; no code or version change.
- tools/build_release.sh: builds the Linux tar.gz and Windows zip from a
git ref (default HEAD) using an explicit `git archive` pathspec
allowlist: decoder (__init__.py, pd.py, gsmtap_stream.py), setup/start
scripts, tools/vs_reader.py, READMEs, LICENSE and the README-referenced
resources/ images. v* tags must match pd.py VERSION. Both archives
are listed and extracted and checked for VERSION, py_compile, bash -n,
.bat CRLF / .sh LF and tar exec bits; SHA256SUMS uses sha256sum or
shasum. Builds into a staging dir and only then replaces dist/.
- .github/workflows/release.yml: on a v* tag push run the unit tests,
verify tag == pd.py VERSION, build, then upload into an existing
release or create a draft and publish it; release-<tag> concurrency.
- README/RUS: Installation documents both ways (release download
recommended; source checkout for development), SHA256SUMS verification,
and the Windows prerequisites verified against sigrok.org (0.7.2
release installer as the tested version, nightly caveat, VC++ 2010
redist, bundled fx2lafw firmware and Zadig, per-port driver binding).
- start.bat: accept --opt=value alongside the original --opt value form
(the usage text advertised the = form while the parser required a
space); usage corrected and notes the core subset.
- .gitignore: dist/.
- AGENTS: release packaging, build verification and release process
(commit docs/workflow first, then tag and push, auto-generated notes).
No decoder behavior change; VERSION stays 1.9.7.