Commit graph

15 commits

Author SHA1 Message Date
1b439e9499 chore(release): prep v0.1.10 — harden play vs jcenter/OOM, point recipe at v0.1.10
Some checks failed
ci / test-commons-core (push) Successful in 56s
ci / analyze (push) Successful in 1m47s
site / deploy (push) Successful in 34s
ci / test-app-seeds (push) Has been cancelled
- play job: apply the same two fixes the fdroid recipe uses (strip
  flutter_tesseract_ocr's dead-jcenter buildscript; cap Gradle heap to
  -Xmx4g + no daemon) so a cold-cache production AAB build can't hit
  either blocker. play builds the AAB directly, not via the recipe, so
  it was still exposed.
- pubspec: 0.1.9+11 -> 0.1.10+12.
- fdroid recipe: versionName 0.1.10, versionCodes 121/122/123,
  commit v0.1.10, CurrentVersion(Code) 0.1.10/123. binary: uses %v so
  it resolves to the v0.1.10 release assets the tag build will upload.

The v0.1.10 tag is intentionally NOT cut here: cutting it deploys to
Google Play PRODUCTION (100%) and uploads the 3 signed reference APKs.
2026-07-21 19:12:11 +02:00
e4c62f2b56 fix(fdroid): cap Gradle heap + drop daemons so the build survives host RAM pressure
All checks were successful
ci / test-commons-core (push) Successful in 54s
ci / analyze (push) Successful in 1m51s
site / deploy (push) Successful in 40s
ci / test-app-seeds (push) Successful in 9m28s
The reproducible build OOM-killed the Gradle daemon ('daemon disappeared
unexpectedly') mid flutter-build-apk on the shared runner. The app's
gradle.properties reserves -Xmx8G+4G metaspace (~12G), and the fdroid
build also compiles tesseract4android from source first (its daemon
lingers), so combined peak RAM trips the OS OOM-killer under contention
(the same build succeeded on a quieter host earlier). Scope the fix to
the fdroid build (don't touch the committed 8G the play/local builds
rely on): run tesseract's gradle with --no-daemon so it frees memory
before the app build, and append a lower -Xmx4g + org.gradle.daemon=false
override to gradle.properties in prebuild (last-key-wins; F-Droid runs
the same steps and memory settings don't change output bytes, so it stays
reproducible).
2026-07-21 17:43:37 +02:00
08459ad29d fix(fdroid): strip flutter_tesseract_ocr's stale jcenter buildscript
All checks were successful
ci / test-commons-core (push) Successful in 45s
ci / analyze (push) Successful in 1m30s
site / deploy (push) Successful in 34s
ci / test-app-seeds (push) Successful in 8m8s
The plugin's android/build.gradle pins its own AGP 7.1.2 and resolves it
via jcenter() (dead since 2021). On a cold Gradle cache the AGP-7.1.2
transitives (apkzlib -> fastutil/json-simple/javawriter) only resolve
from jcenter and fail hard, breaking the reproducible fdroid build.
Warm-cache runs masked it (the one green armeabi-v7a run never hit
jcenter). Strip that buildscript block in prebuild so the plugin
inherits the app's AGP 8.11.1 (settings.gradle.kts) and never touches
jcenter or old AGP at all.
2026-07-21 16:50:11 +02:00
06e2ad29c9 chore(release): v0.1.9 (+11) — single-run reproducible developer-signed (SOURCE_DATE_EPOCH comes from the app commit, not fdroiddata)
Some checks failed
ci / test-commons-core (push) Successful in 43s
ci / analyze (push) Successful in 1m24s
site / deploy (push) Successful in 28s
ci / test-app-seeds (push) Successful in 9m35s
release / fdroid_reference (push) Failing after 21s
release / play (push) Successful in 18m50s
2026-07-20 17:24:28 +02:00
bec3493e37 Revert "ci(release): revert to F-Droid-signed recipe; drop pre-merge reference build"
This reverts commit 4d99e1a840.
2026-07-20 17:13:46 +02:00
4d99e1a840 ci(release): revert to F-Droid-signed recipe; drop pre-merge reference build
All checks were successful
ci / test-commons-core (push) Successful in 44s
ci / analyze (push) Successful in 1m26s
site / deploy (push) Successful in 30s
ci / test-app-seeds (push) Successful in 6m8s
2026-07-19 11:19:46 +02:00
50edb5ff75 ci(release): vendor fdroid config+srclibs in-repo (no gitlab clone); v0.1.8 (+10)
Some checks failed
ci / test-commons-core (push) Successful in 59s
ci / analyze (push) Successful in 1m53s
site / deploy (push) Successful in 33s
ci / test-app-seeds (push) Successful in 9m52s
release / fdroid_reference (push) Failing after 13s
release / play (push) Successful in 19m22s
2026-07-19 09:54:31 +02:00
9b0ef1fc40 chore(release): v0.1.7 (+9) — reference APKs via fdroid buildserver
Some checks failed
ci / test-commons-core (push) Successful in 44s
ci / analyze (push) Successful in 1m27s
site / deploy (push) Successful in 29s
ci / test-app-seeds (push) Successful in 8m51s
release / fdroid_reference (push) Failing after 1m32s
release / play (push) Successful in 17m48s
2026-07-19 09:32:39 +02:00
b906161d70 ci(release): produce F-Droid reference APKs via fdroid build in buildserver image, then sign 2026-07-19 08:56:54 +02:00
b76083be57 chore(release): v0.1.3 (+5) — reproducible developer-signed F-Droid
All checks were successful
ci / test-commons-core (push) Successful in 1m0s
ci / analyze (push) Successful in 1m55s
site / deploy (push) Successful in 34s
ci / test-app-seeds (push) Successful in 11m39s
release / android (push) Successful in 24m33s
2026-07-19 00:03:53 +02:00
f1aa8f8e66 feat(app): scan a printed seed label back into its record
Closes the physical↔digital loop the labels opened: the QR on a printed
envelope (tane://seed, already encoded by seed_label_codec) can now be
scanned from the inventory bar. A known label opens its variety; an
unknown one asks before adding anything, then creates the variety (species
linked by exact scientific name when bundled) with a lot carrying the
label's year and origin. Scanner is pure ZXing (zxing_barcode_scanner,
MIT) — no ML Kit, no Play Services, F-Droid-safe, the stack Ğ1nkgo ships.
Mobile-only; other platforms don't show the button (OCR precedent).
The post-scan flow is a plain function (handleScannedPayload) so it's
widget-tested without a camera.
2026-07-18 12:26:27 +02:00
d27dc1c553 chore(release): v0.1.1 (+3) — GMS-free build
Some checks failed
ci / test-commons-core (push) Successful in 43s
ci / analyze (push) Successful in 1m23s
site / deploy (push) Successful in 25s
ci / test-app-seeds (push) Has been cancelled
release / android (push) Failing after 10m57s
Bumps to 0.1.1+3 (versionCode 3). Adds CHANGELOG [0.1.1], fastlane
changelogs (en-US, es-ES) for versionCode 3, and a 0.1.1 build entry in
the F-Droid recipe (commit v0.1.1, CurrentVersion/Code 3).
2026-07-17 09:19:16 +02:00
7f1118a243 docs(fdroid): fix recipe for F-Droid CI (build chown, checkupdates, schema)
All checks were successful
ci / test-commons-core (push) Successful in 43s
ci / analyze (push) Successful in 1m24s
site / deploy (push) Successful in 25s
ci / test-app-seeds (push) Successful in 5m43s
- chown /opt/flutter to vagrant (build runs as non-root; fixes cache write)
- AutoUpdateMode: Version (drop invalid 'v%v' per schema)
- UpdateCheckMode: Tags v[\d.]+ + UpdateCheckData reading version from
  apps/app_seeds/pubspec.yaml (Flutter versionCode isn't a literal in gradle)
Validated locally: schema, lint, checkupdates (exit 0), and flutter build as vagrant.
2026-07-17 08:26:27 +02:00
ab66f2fdf1 docs(fdroid): fit categories (Inventory/Market) + versionCode 2
All checks were successful
ci / test-commons-core (push) Successful in 45s
ci / analyze (push) Successful in 1m28s
site / deploy (push) Successful in 29s
ci / test-app-seeds (push) Successful in 5m51s
Categories now Inventory + Market & Price + Science & Education (F-Droid has no
'Tools'; these match the app). Build entry and CurrentVersionCode bumped to 2 to
match the shipped 0.1.0 release. Description/screenshots come from the fastlane
metadata tree, not this recipe.
2026-07-17 07:31:47 +02:00
fd6b9d5f0d feat(release): automate store publishing (fastlane supply + GitLab CI) and F-Droid recipe
- fastlane: Appfile/Fastfile/Gemfile with deploy_play lane (AAB -> Play internal track)
- CI: tag-gated build:android (signed AAB/APK from CI secrets) + deploy:play jobs
- F-Droid: fdroiddata build recipe at docs/fdroid/org.comunes.tane.yml
- Play compliance: Data Safety / content-rating answer sheet (docs/legal/internal)
- docs/release.md: automated tag-triggered flow, dedicated tane-upload keystore
- pubspec: description now mentions the market, not just the inventory
2026-07-16 02:42:47 +02:00