Release 1.1.0 (#51)
Renovate / renovate (push) Successful in 54s
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 21m44s
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 1m32s
Renovate / renovate (push) Successful in 54s
Release — F-Droid repo + Gitea/Codeberg release + Play / detect (push) Successful in 6s
Release — F-Droid repo + Gitea/Codeberg release + Play / release (push) Successful in 21m44s
Release — F-Droid repo + Gitea/Codeberg release + Play / play (push) Successful in 1m32s
Agendula 1.1.0. Merging this triggers the release pipeline (F-Droid, Codeberg, Play) and mints the v1.1.0 tag. - Tags, synced as CATEGORIES (#35) - Saved filters, also usable in the Tasks widget (#47) - Offline flavor without sync or network, published to Codeberg only (#39) - New Today, Up next, Lists and Week widgets; widgets can show several lists - Synced lists can be renamed and deleted - All-day tasks no longer land a day off west of UTC in smart lists and filters versionName 1.1.0 / versionCode 1010099. CHANGELOG has the 1.1.0 section, and What's New is written for en-US, en-GB, de-DE, pt-BR, plus new fr-FR and ar. After the tag lands, fdroiddata!49998 needs a 1.1.0 build entry with gradle: full. Closes #35, closes #39, closes #47 Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de> Reviewed-on: https://codeberg.org/jlmakiola/agendula/pulls/51
This commit is contained in:
@@ -115,8 +115,8 @@ def seed(db: sqlite3.Connection) -> None:
|
||||
# data0 minutes before, data1 reference (1 = DUE), data3 alarm type.
|
||||
(1, 1, ALARM_MIMETYPE, "30", "1", None, "1"),
|
||||
(2, 9, ALARM_MIMETYPE, "1440", "1", "Ship it", "1"),
|
||||
# A non-alarm property the import must skip.
|
||||
(3, 1, "vnd.android.cursor.item/category", "Errands", None, None, None),
|
||||
# A category: data0 the provider's category id, data1 the name. A tag, not an alarm.
|
||||
(3, 1, "vnd.android.cursor.item/category", "1", "Errands", None, None),
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# a pre-release, where Codeberg is the only channel.
|
||||
#
|
||||
# Env: TOKEN, API (.../api/v1/repos/<owner>/<repo>), TAG, SHA, PRERELEASE,
|
||||
# NOTES_FILE, APK
|
||||
# NOTES_FILE, APK, optional APK_OFFLINE (the offline flavor, #39)
|
||||
set -euo pipefail
|
||||
if [ -z "${TOKEN:-}" ]; then
|
||||
if [ "${PRERELEASE:-}" = true ]; then
|
||||
@@ -20,10 +20,19 @@ if [ ! -f "$APK" ]; then echo "No release APK at $APK." >&2; exit 1; fi
|
||||
WORK=$(mktemp -d)
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
|
||||
# The full APK keeps its historical name: Obtainium filters point at it.
|
||||
ASSET_APK="agendula_${TAG}.apk"
|
||||
ASSET_SUM="${ASSET_APK}.sha256"
|
||||
cp "$APK" "$WORK/$ASSET_APK"
|
||||
( cd "$WORK" && sha256sum "$ASSET_APK" > "$ASSET_SUM" )
|
||||
ASSETS=("$ASSET_APK" "$ASSET_SUM")
|
||||
if [ -n "${APK_OFFLINE:-}" ]; then
|
||||
if [ ! -f "$APK_OFFLINE" ]; then echo "No offline APK at $APK_OFFLINE." >&2; exit 1; fi
|
||||
ASSET_OFFLINE="agendula-offline_${TAG}.apk"
|
||||
cp "$APK_OFFLINE" "$WORK/$ASSET_OFFLINE"
|
||||
( cd "$WORK" && sha256sum "$ASSET_OFFLINE" > "$ASSET_OFFLINE.sha256" )
|
||||
ASSETS+=("$ASSET_OFFLINE" "$ASSET_OFFLINE.sha256")
|
||||
fi
|
||||
|
||||
# Push the tag first and create the release without target_commitish: a POST
|
||||
# naming a commit Codeberg hasn't received yet 500s.
|
||||
@@ -66,7 +75,8 @@ for attempt in 1 2 3 4 5 6; do
|
||||
done
|
||||
if [ -z "$ID" ]; then echo "Could not create or update the Codeberg release." >&2; exit 1; fi
|
||||
|
||||
for A in "$ASSET_APK" "$ASSET_SUM"; do
|
||||
# Attach APKs + checksums, replacing any prior asset of the same name.
|
||||
for A in "${ASSETS[@]}"; do
|
||||
OLD=$(curl -s -H "Authorization: token $TOKEN" "$API/releases/$ID/assets" \
|
||||
| jq -r --arg n "$A" '.[]? | select(.name==$n) | .id' 2>/dev/null || true)
|
||||
for O in $OLD; do
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
# TAG, SHA vX.Y.Z[-beta.N] and the commit it marks
|
||||
# PRERELEASE true | false
|
||||
# NOTES_FILE release notes (scripts/release_notes.sh)
|
||||
# MAPPING optional path to R8's mapping.txt
|
||||
# MAPPING optional path to R8's mapping.txt (full flavor)
|
||||
# MAPPING_OFFLINE optional path to the offline flavor's mapping.txt
|
||||
set -euo pipefail
|
||||
: "${TOKEN:?}" "${API:?}" "${TAG:?}" "${SHA:?}" "${PRERELEASE:?}" "${NOTES_FILE:?}"
|
||||
|
||||
@@ -57,8 +58,8 @@ echo "Created/updated Gitea release $TAG at $SHA"
|
||||
# so it fits the no-binaries rule for this release. Best-effort: never fail a
|
||||
# release over it.
|
||||
attach_mapping() {
|
||||
local asset="mapping-${TAG#v}.txt.gz" old
|
||||
gzip -c "$MAPPING" > "$WORK/$asset"
|
||||
local mapping=$1 asset=$2 old
|
||||
gzip -c "$mapping" > "$WORK/$asset"
|
||||
# Replace any prior asset of the same name (re-run safe).
|
||||
old=$(curl -s -H "Authorization: token $TOKEN" "$API/releases/$ID/assets" \
|
||||
| jq -r --arg n "$asset" '.[] | select(.name==$n) | .id')
|
||||
@@ -72,5 +73,10 @@ attach_mapping() {
|
||||
if [ -z "${MAPPING:-}" ] || [ ! -f "$MAPPING" ]; then
|
||||
echo "No mapping.txt (R8 off?) — skipping."
|
||||
else
|
||||
attach_mapping || echo "warning: could not attach the R8 mapping to $TAG" >&2
|
||||
attach_mapping "$MAPPING" "mapping-${TAG#v}.txt.gz" \
|
||||
|| echo "warning: could not attach the R8 mapping to $TAG" >&2
|
||||
fi
|
||||
if [ -n "${MAPPING_OFFLINE:-}" ] && [ -f "$MAPPING_OFFLINE" ]; then
|
||||
attach_mapping "$MAPPING_OFFLINE" "mapping-offline-${TAG#v}.txt.gz" \
|
||||
|| echo "warning: could not attach the offline R8 mapping to $TAG" >&2
|
||||
fi
|
||||
|
||||
@@ -11,16 +11,22 @@
|
||||
# unminified debug build — or a device that already holds the permission —
|
||||
# silently hides.
|
||||
#
|
||||
# Usage: scripts/verify-release.sh
|
||||
# Usage: scripts/verify-release.sh [full|offline] (default: full)
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
PKG="de.jeanlucmakiola.agendula.releasetest"
|
||||
APK="app/build/outputs/apk/releaseTest/app-releaseTest.apk"
|
||||
FLAVOR="${1:-full}"
|
||||
case "$FLAVOR" in
|
||||
full) PKG="de.jeanlucmakiola.agendula.releasetest" ;;
|
||||
offline) PKG="de.jeanlucmakiola.agendula.offline.releasetest" ;;
|
||||
*) echo "Unknown flavor '$FLAVOR' (full|offline)." >&2; exit 2 ;;
|
||||
esac
|
||||
TASK="assemble${FLAVOR^}ReleaseTest"
|
||||
APK="app/build/outputs/apk/$FLAVOR/releaseTest/app-$FLAVOR-releaseTest.apk"
|
||||
|
||||
echo "==> Building release-candidate APK (releaseTest, R8 minified)…"
|
||||
./gradlew :app:assembleReleaseTest
|
||||
echo "==> Building release-candidate APK ($FLAVOR releaseTest, R8 minified)…"
|
||||
./gradlew ":app:$TASK"
|
||||
|
||||
echo "==> Installing $PKG …"
|
||||
adb install -r "$APK"
|
||||
|
||||
Reference in New Issue
Block a user