Bump version to 0.2.1
This commit is contained in:
+14
-177
@@ -1,185 +1,22 @@
|
||||
# ---> Python
|
||||
# ---> Go
|
||||
bin/
|
||||
# Build outputs
|
||||
dist/
|
||||
|
||||
# Generated Windows resource compiled from packaging/windows/pysentry.rc.
|
||||
cmd/pysentry/*.syso
|
||||
|
||||
# Local binaries that may be produced by ad-hoc go build commands.
|
||||
*.exe
|
||||
*.test
|
||||
|
||||
# Runtime files created next to the executable during local runs.
|
||||
pysentry.yaml
|
||||
jobs.yaml
|
||||
logs/
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# UV
|
||||
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
#uv.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||
.pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# Ruff stuff:
|
||||
.ruff_cache/
|
||||
|
||||
# PyPI configuration file
|
||||
.pypirc
|
||||
# Go workspace/cache files that should stay local if a developer creates them.
|
||||
go.work
|
||||
go.work.sum
|
||||
|
||||
# GoodSync metadata. This is intentionally kept because the directory is local
|
||||
# to the user's file synchronization setup.
|
||||
_gsdata_/
|
||||
|
||||
@@ -2,6 +2,16 @@
|
||||
|
||||
All notable PySentry changes are recorded in this file.
|
||||
|
||||
## 0.2.1 - 2026-06-15
|
||||
|
||||
- Fixed Docker release scripts so container builds keep Go in `PATH`.
|
||||
- Disabled Go VCS stamping for Docker release builds to avoid failures when `.git` metadata is unavailable inside the container.
|
||||
- Made Docker release builds write `dist/` artifacts with the current user's UID/GID instead of root ownership.
|
||||
- Added `ROADMAP.md` with planned delivery formats and packaging priorities.
|
||||
- Cleaned `.gitignore` for the current Go/Fyne project and kept the local `_gsdata_/` rule.
|
||||
- Added README links to official Go/Fyne sites and source repositories useful for dependency mirroring.
|
||||
- Documented Windows dependency installation steps for Go and MSYS2 UCRT64 GCC.
|
||||
|
||||
## 0.2.0 - 2026-06-15
|
||||
|
||||
- Added working autostart support with status diagnostics in Settings.
|
||||
|
||||
@@ -80,7 +80,7 @@ The binary is written to:
|
||||
|
||||
```text
|
||||
# GUI executable produced by scripts\build-windows.bat.
|
||||
dist\windows\pysentry-0.2.0-windows-amd64.exe
|
||||
dist\windows\pysentry-0.2.1-windows-amd64.exe
|
||||
```
|
||||
|
||||
Linux:
|
||||
@@ -95,7 +95,7 @@ The binary is written to:
|
||||
|
||||
```text
|
||||
# Linux executable produced by scripts/build-linux.sh.
|
||||
dist/linux/pysentry-0.2.0-linux-amd64
|
||||
dist/linux/pysentry-0.2.1-linux-amd64
|
||||
```
|
||||
|
||||
Linux using Docker:
|
||||
@@ -112,7 +112,7 @@ The binary is copied to:
|
||||
|
||||
```text
|
||||
# Linux executable copied out of the Docker build image.
|
||||
dist\linux\pysentry-0.2.0-linux-amd64
|
||||
dist\linux\pysentry-0.2.1-linux-amd64
|
||||
```
|
||||
|
||||
Release build from Linux:
|
||||
@@ -120,7 +120,8 @@ Release build from Linux:
|
||||
```bash
|
||||
# Interactively choose Linux amd64, Linux arm64, Windows amd64, or all artifacts
|
||||
# from one Linux/Docker workflow. The Dockerfile contains the builder
|
||||
# environment; the build commands live in this script.
|
||||
# environment; the build commands live in this script. Docker runs the build
|
||||
# with the current user's UID/GID so dist/ files are not owned by root.
|
||||
chmod +x ./scripts/build-release-linux.sh
|
||||
./scripts/build-release-linux.sh
|
||||
```
|
||||
@@ -136,13 +137,13 @@ The binaries are copied to:
|
||||
|
||||
```text
|
||||
# Linux artifact.
|
||||
dist/linux/pysentry-0.2.0-linux-amd64
|
||||
dist/linux/pysentry-0.2.1-linux-amd64
|
||||
|
||||
# Linux arm64 artifact.
|
||||
dist/linux/pysentry-0.2.0-linux-arm64
|
||||
dist/linux/pysentry-0.2.1-linux-arm64
|
||||
|
||||
# Windows artifact cross-compiled from Linux.
|
||||
dist/windows/pysentry-0.2.0-windows-amd64.exe
|
||||
dist/windows/pysentry-0.2.1-windows-amd64.exe
|
||||
```
|
||||
|
||||
## Run From Source
|
||||
@@ -285,7 +286,7 @@ Linux:
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=PySentry
|
||||
Exec=/opt/pysentry/pysentry-0.2.0-linux-amd64
|
||||
Exec=/opt/pysentry/pysentry-0.2.1-linux-amd64
|
||||
Terminal=false
|
||||
```
|
||||
|
||||
@@ -320,3 +321,16 @@ PySentry keeps the direct dependency list intentionally small:
|
||||
- `gopkg.in/yaml.v3` for YAML settings and jobs.
|
||||
|
||||
The remaining entries in `go.mod` are indirect dependencies pulled by Fyne and the Go module resolver.
|
||||
|
||||
Source repositories for mirroring:
|
||||
|
||||
- Go toolchain: https://go.googlesource.com/go
|
||||
- Fyne: https://github.com/fyne-io/fyne
|
||||
- robfig/cron: https://github.com/robfig/cron
|
||||
- go-yaml/yaml: https://github.com/go-yaml/yaml
|
||||
|
||||
To list every direct and indirect Go module used by the current checkout:
|
||||
|
||||
```bash
|
||||
go list -m all
|
||||
```
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
# Roadmap
|
||||
|
||||
This file tracks planned PySentry work that is larger than a single bug fix.
|
||||
|
||||
## Delivery And Packaging
|
||||
|
||||
Keep a single portable binary as the baseline delivery format. It is simple to
|
||||
test, easy to copy between machines, and matches the current storage model where
|
||||
runtime YAML files live next to the executable by default.
|
||||
|
||||
Planned delivery variants:
|
||||
|
||||
- Windows portable `.zip` with `pysentry.exe`, `README.md`, and `CHANGELOG.md`.
|
||||
- Linux portable `.tar.gz` archives for `linux-amd64` and `linux-arm64`.
|
||||
- Debian/Ubuntu `.deb` package once the Linux runtime paths are settled.
|
||||
- Windows installer later, likely Inno Setup first and MSI/WiX only if needed.
|
||||
- AppImage as a possible Linux GUI-friendly format after the core workflow is stable.
|
||||
- Flatpak only after the desktop integration story is clearer.
|
||||
- winget manifest after stable public Windows releases exist.
|
||||
|
||||
Packaging design note:
|
||||
|
||||
- Portable builds can keep settings and jobs next to the executable.
|
||||
- Installer/package builds should move runtime data to per-user locations:
|
||||
`%APPDATA%\PySentry` on Windows, and XDG directories such as
|
||||
`~/.config/pysentry` and `~/.local/share/pysentry` on Linux.
|
||||
|
||||
Initial priority:
|
||||
|
||||
1. Windows portable `.zip`.
|
||||
2. Linux portable `.tar.gz` for amd64 and arm64.
|
||||
3. Debian/Ubuntu `.deb`.
|
||||
4. Windows installer.
|
||||
@@ -7,6 +7,10 @@ set -euo pipefail
|
||||
version="$(sed -n 's/^var Version = "\(.*\)"/\1/p' src/core/version.go)"
|
||||
version="${version:-0.0.0-dev}"
|
||||
output="${1:-dist/linux/pysentry-${version}-linux-amd64}"
|
||||
docker_user_args=()
|
||||
if command -v id >/dev/null 2>&1; then
|
||||
docker_user_args=(--user "$(id -u):$(id -g)")
|
||||
fi
|
||||
|
||||
# Dockerfile contains the native packages required by Fyne. Keeping that
|
||||
# environment in Docker makes Linux builds repeatable from Windows hosts and CI.
|
||||
@@ -14,12 +18,14 @@ docker build -f Dockerfile -t gitea.mixdep.ru/mix/pysentry-builder .
|
||||
|
||||
mkdir -p "$(dirname "$output")"
|
||||
docker run --rm \
|
||||
"${docker_user_args[@]}" \
|
||||
-e "VERSION=${version}" \
|
||||
-e "OUTPUT=${output}" \
|
||||
-e "GOCACHE=/tmp/go-build-cache" \
|
||||
-v "$(pwd):/src" \
|
||||
-w /src \
|
||||
gitea.mixdep.ru/mix/pysentry-builder \
|
||||
bash -lc 'CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "${OUTPUT}" ./cmd/pysentry'
|
||||
bash -c 'CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -buildvcs=false -trimpath -ldflags "-s -w -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "${OUTPUT}" ./cmd/pysentry'
|
||||
|
||||
# Icons are embedded in the Go binary, so there is no assets directory to copy
|
||||
# after extracting the Linux executable.
|
||||
|
||||
@@ -15,6 +15,11 @@ cd "$repo_root"
|
||||
version="$(sed -n 's/^var Version = "\(.*\)"/\1/p' src/core/version.go)"
|
||||
version="${version:-0.0.0-dev}"
|
||||
|
||||
docker_user_args=()
|
||||
if command -v id >/dev/null 2>&1; then
|
||||
docker_user_args=(--user "$(id -u):$(id -g)")
|
||||
fi
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $0 [target...]
|
||||
@@ -86,23 +91,25 @@ normalize_targets() {
|
||||
|
||||
run_in_builder() {
|
||||
docker run --rm \
|
||||
"${docker_user_args[@]}" \
|
||||
-e "VERSION=${version}" \
|
||||
-e "GOCACHE=/tmp/go-build-cache" \
|
||||
-v "${repo_root}:/src" \
|
||||
-w /src \
|
||||
"$tag" \
|
||||
bash -lc "$1"
|
||||
bash -c "$1"
|
||||
}
|
||||
|
||||
build_linux_amd64() {
|
||||
run_in_builder 'mkdir -p dist/linux && CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "dist/linux/pysentry-${VERSION}-linux-amd64" ./cmd/pysentry'
|
||||
run_in_builder 'mkdir -p dist/linux && CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -buildvcs=false -trimpath -ldflags "-s -w -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "dist/linux/pysentry-${VERSION}-linux-amd64" ./cmd/pysentry'
|
||||
}
|
||||
|
||||
build_linux_arm64() {
|
||||
run_in_builder 'mkdir -p dist/linux && CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CGO_CFLAGS="--sysroot=/ -I/usr/include/aarch64-linux-gnu" CGO_LDFLAGS="--sysroot=/ -L/usr/lib/aarch64-linux-gnu" PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig go build -trimpath -ldflags "-s -w -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "dist/linux/pysentry-${VERSION}-linux-arm64" ./cmd/pysentry'
|
||||
run_in_builder 'mkdir -p dist/linux && CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CGO_CFLAGS="--sysroot=/ -I/usr/include/aarch64-linux-gnu" CGO_LDFLAGS="--sysroot=/ -L/usr/lib/aarch64-linux-gnu" PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig go build -buildvcs=false -trimpath -ldflags "-s -w -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "dist/linux/pysentry-${VERSION}-linux-arm64" ./cmd/pysentry'
|
||||
}
|
||||
|
||||
build_windows_amd64() {
|
||||
run_in_builder 'mkdir -p dist/windows && x86_64-w64-mingw32-windres -O coff -o cmd/pysentry/rsrc_windows_amd64.syso packaging/windows/pysentry.rc && CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags "-s -w -H=windowsgui -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "dist/windows/pysentry-${VERSION}-windows-amd64.exe" ./cmd/pysentry'
|
||||
run_in_builder 'mkdir -p dist/windows && x86_64-w64-mingw32-windres -O coff -o cmd/pysentry/rsrc_windows_amd64.syso packaging/windows/pysentry.rc && CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -buildvcs=false -trimpath -ldflags "-s -w -H=windowsgui -X github.com/pysentry/pysentry/src/core.Version=${VERSION}" -o "dist/windows/pysentry-${VERSION}-windows-amd64.exe" ./cmd/pysentry'
|
||||
}
|
||||
|
||||
mapfile -t targets < <(choose_targets "$@" | normalize_targets | awk '!seen[$0]++')
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@ package core
|
||||
// Version is the application version shown in the GUI and used by build
|
||||
// scripts in artifact names. It is a var rather than a const so release builds
|
||||
// can override it with Go ldflags when CI tags a build.
|
||||
var Version = "0.2.0"
|
||||
var Version = "0.2.1"
|
||||
|
||||
Reference in New Issue
Block a user