diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ea06ac..005dcd3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,13 @@
All notable changes to Tane are recorded here. Human-readable, newest
first. Dates are ISO (YYYY-MM-DD).
+## [0.1.2] — 2026-07-17
+
+### Changed
+- Release builds now produce one split APK per CPU architecture (smaller
+ downloads) instead of a single universal APK, in addition to the App
+ Bundle Google Play already used. No user-visible change.
+
## [0.1.1] — 2026-07-17
### Changed
diff --git a/apps/app_seeds/android/app/build.gradle.kts b/apps/app_seeds/android/app/build.gradle.kts
index abe879a..b0e4713 100644
--- a/apps/app_seeds/android/app/build.gradle.kts
+++ b/apps/app_seeds/android/app/build.gradle.kts
@@ -85,3 +85,21 @@ dependencies {
// Backport of Java 8+ APIs, required by flutter_local_notifications.
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
}
+
+// F-Droid builds one split APK per ABI (smaller downloads than a universal
+// APK) and needs each split to carry a distinct versionCode so its repo can
+// tell them apart; `flutter build apk --split-per-abi` alone gives every
+// split the same versionCode. This override only touches the APK
+// (applicationVariants) output, not the App Bundle Google Play consumes, so
+// Play's per-device delivery is unaffected.
+val abiVersionCodes = mapOf("armeabi-v7a" to 1, "arm64-v8a" to 2, "x86_64" to 3)
+android.applicationVariants.all {
+ val variant = this
+ variant.outputs.all {
+ val output = this as com.android.build.gradle.internal.api.ApkVariantOutputImpl
+ val abi = output.getFilter(com.android.build.OutputFile.ABI)
+ abiVersionCodes[abi]?.let { abiCode ->
+ output.versionCodeOverride = variant.versionCode * 10 + abiCode
+ }
+ }
+}
diff --git a/apps/app_seeds/fastlane/metadata/android/en-US/changelogs/4.txt b/apps/app_seeds/fastlane/metadata/android/en-US/changelogs/4.txt
new file mode 100644
index 0000000..39770e7
--- /dev/null
+++ b/apps/app_seeds/fastlane/metadata/android/en-US/changelogs/4.txt
@@ -0,0 +1 @@
+Smaller downloads: release builds now ship one APK per phone architecture instead of one universal file. No other change.
diff --git a/apps/app_seeds/fastlane/metadata/android/es-ES/changelogs/4.txt b/apps/app_seeds/fastlane/metadata/android/es-ES/changelogs/4.txt
new file mode 100644
index 0000000..28e65a9
--- /dev/null
+++ b/apps/app_seeds/fastlane/metadata/android/es-ES/changelogs/4.txt
@@ -0,0 +1 @@
+Descargas más pequeñas: las versiones ahora reparten un APK por arquitectura de teléfono en vez de uno universal. Sin ningún otro cambio.
diff --git a/apps/app_seeds/pubspec.yaml b/apps/app_seeds/pubspec.yaml
index d88e309..c3195df 100644
--- a/apps/app_seeds/pubspec.yaml
+++ b/apps/app_seeds/pubspec.yaml
@@ -1,7 +1,7 @@
name: tane
description: "Tane — local-first, encrypted, decentralized traditional-seed inventory and market."
publish_to: 'none'
-version: 0.1.1+3
+version: 0.1.2+4
environment:
sdk: ^3.11.5
diff --git a/site/assets/css/main.css b/site/assets/css/main.css
index 9564b1e..68effd2 100644
--- a/site/assets/css/main.css
+++ b/site/assets/css/main.css
@@ -277,7 +277,7 @@ h2 { font-size: clamp(1.4rem, 3vw, 1.9rem); color: var(--green-dark); }
main > section[id],
.doc :is(h2, h3)[id] { scroll-margin-top: 5.5rem; }
-/* Discreet, hover-revealed heading permalinks (About + Legal) */
+/* Discreet, hover-revealed heading permalinks (landing sections + About/Legal) */
.heading-anchor {
margin-inline-start: .35em;
color: var(--green);
@@ -286,5 +286,5 @@ main > section[id],
opacity: 0;
transition: opacity .15s;
}
-.doc :is(h2, h3):hover .heading-anchor,
+:is(h2, h3):hover .heading-anchor,
.heading-anchor:focus { opacity: .6; }
diff --git a/site/layouts/index.html b/site/layouts/index.html
index 74ae580..a7e1d66 100644
--- a/site/layouts/index.html
+++ b/site/layouts/index.html
@@ -22,7 +22,7 @@
{{ T "statusBadge" }}