Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,14 @@ This app is distributed via F-Droid, which builds it reproducibly from source. T
- `android { dependenciesInfo { includeInApk = false; includeInBundle = false } }` in `app/build.gradle.kts` — omits the AGP dependency-metadata blob (IzzyOnDroid/F-Droid flag this).
- `distributionSha256Sum` in `gradle/wrapper/gradle-wrapper.properties` — pins the Gradle distribution by checksum; update it alongside the `distributionUrl` whenever the Gradle version changes.

The F-Droid build recipe lives at `fdroid/dev.debene.gopher.yml` (copied into `fdroiddata` for submission). Its `Builds` entry pins `versionName`/`versionCode`/`commit` (a `v<versionName>` tag) — keep those in sync with `defaultConfig` in `app/build.gradle.kts` and tag releases as `v<versionName>` (e.g. `v2.0.2`). `UpdateCheckMode: Tags` + `AutoUpdateMode: Version v%v` means F-Droid auto-detects new `v*` tags.
The F-Droid build recipe lives at `fdroid/dev.debene.gopher.yml` (copied into `fdroiddata` for submission — keep this copy in sync with the metadata actually submitted there). Conventions the F-Droid CI enforces, learned the hard way during inclusion (MR [fdroiddata!41663](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/41663)):

- **No `Summary`/`Description` in the recipe** — they're pulled from the upstream Fastlane metadata (`fastlane/metadata/android/en-US/short_description.txt` / `full_description.txt`), which must exist on the release tag.
- **`Builds[].commit` must be a full 40-char commit SHA**, not a `v*` tag or branch (reviewer requirement).
- **`AutoName` must stay in the recipe** — `fdroid checkupdates` regenerates it from the manifest and that CI job fails on any resulting diff. (Only `Summary`/`Description` move to Fastlane; `AutoName` does not.)
- **`AllowedAPKSigningKeys`** is the signing cert's SHA-256 (`apksigner verify --print-certs <signed.apk>`, colons stripped, lowercased) — it opts into Reproducible Builds so F-Droid verifies its build against our key instead of re-signing. One-way door; keep it.
- Keep `versionName`/`versionCode` in sync with `defaultConfig` in `app/build.gradle.kts` and tag releases as `v<versionName>` (e.g. `v2.0.3`). `UpdateCheckMode: Tags` + `AutoUpdateMode: Version` auto-detects new `v*` tags.
- Validate locally before pushing: `fdroid rewritemeta <pkg>` (must produce no diff — canonical form), `fdroid lint <pkg>`, and `check-jsonschema --schemafile <fdroiddata>/schemas/metadata.json <recipe>`. Pin `ruamel.yaml<0.17.22` in the fdroidserver venv or `rewritemeta` reformats long values (e.g. wraps `AllowedAPKSigningKeys`) differently than CI.

## Architecture

Expand Down
20 changes: 3 additions & 17 deletions fdroid/dev.debene.gopher.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,20 @@ SourceCode: https://github.com/felipedbene/deburrow
IssueTracker: https://github.com/felipedbene/deburrow/issues

AutoName: DeBurrow
Description: |-
A modern, native Android client for the Gopher protocol, built with Kotlin and
Jetpack Compose.

Features:

* Browse Gopher menus, read text files, and view images
* ANSI-color and word-wrapping text viewer (colored .ansi art renders in color)
* Veronica / type-7 search with a query prompt and tappable results
* Address-bar navigation, bookmarks, history, and search history
* Downloads for binary items, response caching, and TLS (gophers://)
* Opens gopher:// and gophers:// links from other apps
* Material 3 theming and an adaptive launcher icon

No accounts, no trackers, no ads. A modern evolution of the 2010 J2ME client
"Pocket Gopher" by Felix Pleșoianu.

RepoType: git
Repo: https://github.com/felipedbene/deburrow.git

Builds:
- versionName: 2.0.3
versionCode: 3
commit: v2.0.3
commit: 946f6718c6a52d5c4fd3511a851a7a224f49d78d
subdir: app
gradle:
- yes

AllowedAPKSigningKeys: 10bfdeb0c04cc2cefff9e6c011205901d236bd1b8dd334fa908a21e89343262f

AutoUpdateMode: Version
UpdateCheckMode: Tags
CurrentVersion: 2.0.3
Expand Down
Loading