diff --git a/README.md b/README.md
index 12ca078..67f2b07 100644
--- a/README.md
+++ b/README.md
@@ -9,9 +9,16 @@ The name honors the old Japanese mutual-aid traditions around rice — *yui* (sh
- Web: https://tane.comunes.org
- Package id: `org.comunes.tane`
+## Install
+
+Android, same signature in both stores — you can switch between them without reinstalling:
+
+- **F-Droid**: https://f-droid.org/packages/org.comunes.tane/ (reproducible, developer-signed build)
+- **Google Play**: https://play.google.com/store/apps/details?id=org.comunes.tane
+
## Status
-Early design. See [`PLAN.md`](PLAN.md) for the full analysis and roadmap (in Spanish). The valuable prior work lives in [`docs/mockups/`](docs/mockups/).
+Block 1 (inventory) is shipped and in beta; Block 2 (the social layer) is under way. See [`PLAN.md`](PLAN.md) for the full analysis and roadmap (in Spanish) and [`docs/design/open-decisions.md`](docs/design/open-decisions.md) for the live decision log. The valuable prior work lives in [`docs/mockups/`](docs/mockups/).
## Principles
diff --git a/docs/design/open-decisions.md b/docs/design/open-decisions.md
index 161b9b2..5e8e32e 100644
--- a/docs/design/open-decisions.md
+++ b/docs/design/open-decisions.md
@@ -34,6 +34,8 @@ Estas fijan `schemaVersion = 1` y el arranque técnico:
- **Paquete legal + moderación mínima — DECIDIDO/IMPLEMENTADO (2026-07-13).** Se escribe la capa legal completa en [`docs/legal/`](../legal/README.md): política de privacidad, condiciones de uso, normas de la comunidad y aviso sobre legalidad de semillas (masters en inglés + espejo es), más docs internos de cumplimiento (Play Data Safety/UGC, notas Apple, memoria jurídica con calendario de revisión — el PRM europeo sigue en trílogos). Decisiones que fija: **(a)** consentimiento único **al entrar al mercado por primera vez** (hoja modal con las normas; el inventario local no pide nada — progressive disclosure), con la misma bandera guardando también publicar-oferta y primer DM; **(b)** **bloqueo local** de claves (keystore, sin migración de esquema): filtra ofertas, chats y DMs entrantes; **(c)** **denuncias estándar NIP-56** (kind 1984) publicadas a los relays + ocultación local; en `relay.comunes.org` (nuestro) se actúa sobre ellas — esa es la historia de "moderación con respuesta" para la revisión de Play; **(d)** se reafirma **cero comisiones** sobre semillas y **Ğ1 solo como etiqueta de precio** (sin flujos de pago in-app, precedente Damus/Apple); **(e)** borrado honesto: NIP-09 es best-effort y así se cuenta al usuario. Metadata de tienda en `fastlane/metadata/android/` (la reutiliza F-Droid).
+- **Distribución en F-Droid — HECHO (2026-07-28).** Tane está publicada en el repo oficial de F-Droid (, v0.1.16) **sin antifeatures**: la MR de inclusión ([43144](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/43144)) se aceptó el 2026-07-25. Lo que lo desbloqueó: **(a)** build **reproducible y firmada por nosotros** (`AllowedAPKSigningKeys` + `binary:` por ABI ⇒ misma firma que Play, se puede cambiar de tienda sin reinstalar); **(b)** APK libre de Google (sin GMS) con splits por ABI; **(c)** **red opt-in** desde v0.1.16 — la app no abre ningún socket hasta que la persona activa compartir, lo que sostuvo el rechazo de `NonFreeNet`/`TetheredNet` (protocolo abierto, relays configurables). Consecuencia operativa: cada versión nueva solo requiere subir los `versionCode` por ABI en la receta de `fdroiddata`. → [release.md](../release.md)
+
## C) Puede esperar (no bloquea nada ahora)
- Negación plausible / bóveda señuelo; modo discreto. → security-privacy
diff --git a/docs/release.md b/docs/release.md
index 3e70f01..04512ab 100644
--- a/docs/release.md
+++ b/docs/release.md
@@ -147,11 +147,22 @@ page but does not by itself make the app available in a new country.
## Publish to F-Droid (official repo)
+**Tane is live in F-Droid** since 2026-07-28 (v0.1.16, no antifeatures):
+. The inclusion MR
+([43144](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/43144)) was merged
+on 2026-07-25; from now on each release only needs the recipe in `fdroiddata`
+master bumped, not a new inclusion request. Note that publication lags the green
+build by a day or two — check `repo/status/build.json` before assuming breakage.
+
F-Droid builds from source after a merge request to `fdroiddata`. The build recipe
is kept in-repo at [`fdroid/org.comunes.tane.yml`](fdroid/org.comunes.tane.yml).
Copy it to `metadata/org.comunes.tane.yml` in a fork of fdroiddata, validate with
-`fdroid lint` / `fdroid build -l org.comunes.tane`, then open the MR
-([43144](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/43144)).
+`fdroid lint` / `fdroid build -l org.comunes.tane`, then open the MR.
+
+Every version bump **must** advance the recipe's per-ABI `versionCode`s
+(`build × 10 + ABI offset`) together with the `pubspec.yaml` bump — otherwise the
+`fdroid_reference` job fails, and a bad tag cannot be fixed by re-tagging (Play
+rejects a reused versionCode): cut the next version instead.
**Reproducible, developer-signed.** The recipe pins `AllowedAPKSigningKeys` (the
SHA-256 of the tane-upload certificate) and a `binary:` URL per ABI. F-Droid
diff --git a/site/assets/css/main.css b/site/assets/css/main.css
index 55e230f..96f2f89 100644
--- a/site/assets/css/main.css
+++ b/site/assets/css/main.css
@@ -219,7 +219,14 @@ h2 { font-size: clamp(1.4rem, 3vw, 1.9rem); color: var(--green-dark); }
.values li { margin: .45rem 0; }
.get-it { text-align: center; }
-.store-badges { margin-top: 1.2rem; }
+.store-badges {
+ margin-top: 1.2rem;
+ display: flex;
+ flex-wrap: wrap;
+ gap: .6rem;
+ justify-content: inherit;
+}
+.get-it .store-badges { justify-content: center; }
.coming-soon { color: var(--muted); font-style: italic; }
.badge {
display: inline-block;
@@ -231,6 +238,14 @@ h2 { font-size: clamp(1.4rem, 3vw, 1.9rem); color: var(--green-dark); }
margin: .3rem;
font-weight: 600;
}
+/* Store links: same pill, one-colour icon so Play and F-Droid read apart. */
+.badge-store {
+ display: inline-flex;
+ align-items: center;
+ gap: .55rem;
+ margin: 0;
+}
+.badge-store .store-icon { flex: none; }
/* Legal docs */
.doc { padding: 2rem 0 3rem; max-width: 760px; }
diff --git a/site/config.toml b/site/config.toml
index fa03ad0..f53f839 100644
--- a/site/config.toml
+++ b/site/config.toml
@@ -16,7 +16,7 @@ enableGitInfo = false
license = "AGPL-3.0"
# Links rendered only when set, so nothing broken shows before they exist:
playStoreURL = "https://play.google.com/store/apps/details?id=org.comunes.tane" # Google Play
- fdroidURL = "" # F-Droid, once published
+ fdroidURL = "https://f-droid.org/packages/org.comunes.tane/" # F-Droid, published 2026-07-28
sourceURL = "https://git.comunes.org/comunes/tane" # public source repository (AGPL)
weblateURL = "https://translate.comunes.org/projects/tane/" # translation platform
diff --git a/site/layouts/partials/store-badges.html b/site/layouts/partials/store-badges.html
index ec6d5c7..a5b15e2 100644
--- a/site/layouts/partials/store-badges.html
+++ b/site/layouts/partials/store-badges.html
@@ -1,10 +1,26 @@
-{{- /* Renders store links only when configured, so nothing broken shows pre-launch. */ -}}
+{{- /* Renders store links only when configured, so nothing broken shows pre-launch.
+ Icons are single-colour (currentColor) so the two stores are told apart by
+ shape, not by brand colour: a play triangle vs. the free-software robot. */ -}}