From 1f3c7975eb94ff74e71b3deeffd2c0a89c626647 Mon Sep 17 00:00:00 2001 From: vjrj Date: Tue, 28 Jul 2026 11:55:54 +0200 Subject: [PATCH] =?UTF-8?q?feat(site,docs):=20Tane=20is=20in=20F-Droid=20?= =?UTF-8?q?=E2=80=94=20link=20it=20next=20to=20Play?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The inclusion MR was merged on 2026-07-25 and the app page went live on 2026-07-28 (v0.1.16, no antifeatures), so the landing page can finally offer both stores. - site: publish the F-Droid link and give each store link a single-colour icon, so the two are told apart by shape (play triangle vs. the free-software robot) rather than by brand colour. The badge row is a flex row now: left-aligned in the hero, centred under "Get Tane". - README: an Install section with both stores, and a Status that matches reality (Block 1 shipped, Block 2 under way) instead of "early design". - release.md: record that the app is published, that further releases only need a versionCode bump in the fdroiddata recipe, and that publication lags the green build by a day or two. - open-decisions.md: log what unblocked inclusion — reproducible developer-signed builds, a Google-free APK, and opt-in networking. --- README.md | 9 ++++++++- docs/design/open-decisions.md | 2 ++ docs/release.md | 15 +++++++++++++-- site/assets/css/main.css | 17 ++++++++++++++++- site/config.toml | 2 +- site/layouts/partials/store-badges.html | 22 +++++++++++++++++++--- 6 files changed, 59 insertions(+), 8 deletions(-) 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. */ -}}
{{- with .Site.Params.playStoreURL -}} - Google Play + + + Google Play + {{- end -}} {{- with .Site.Params.fdroidURL -}} - F-Droid + + + F-Droid + {{- end -}} {{- if and (not .Site.Params.playStoreURL) (not .Site.Params.fdroidURL) -}}

{{ T "getItComingSoon" }}