F-Droid page: screenshots, a banner and a fuller description
Build / Desktop, server and tools (push) Successful in 1m5s
Build / Desktop, server and tools (push) Successful in 1m5s
The app's page in F-Droid had a stretched icon across the top, no pictures and two lines of text. It now shows six screenshots in English and Italian (the opening screen, what you can host, the path from the phone to the internet, one finding explained, a check under way and exactly what sharing would send), a banner, the icon at full size and a description of what the app checks and what stays on the phone. The screenshots are drawn from an invented connection, not the computer that makes them: documentation addresses, a made-up provider, nothing that belongs to anyone. One command redraws them after a change to the screens: dotnet run --project tools/Screenshots -- --store. The listing is in the layout Google Play uses, so the same files will serve there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4YtEKqxKjKyHkFzuRVMNA
This commit is contained in:
1 parent
8c079e43c9
commit
5b2210a8a7
26 files changed
+214
-18
No files matched your search
@@ -13,6 +13,7 @@ dotnet run tools/setup.cs -- --group packaging # pinned nfpm into to
|
||||
dotnet build src/MeWeb.Android/MeWeb.Android.csproj \
|
||||
-p:JavaSdkDirectory=$PWD/tools/jdk/linux-x64/jdk-21.0.12+8 -p:AndroidSdkDirectory=$HOME/Android/Sdk
|
||||
dotnet run --project tools/Screenshots -- dist/screenshots [en,it,...]
|
||||
dotnet run --project tools/Screenshots -- --store # store set: fastlane/metadata/android/{en-US,it-IT}/images/phoneScreenshots
|
||||
tools/release.sh notes # artifacts/release-notes.md alone, nothing built
|
||||
dotnet run tools/strings.cs -- check # every language against English
|
||||
dotnet run tools/strings.cs -- set Key values.json # one key, every language at once
|
||||
@@ -76,7 +77,7 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
| `src/MeWeb.Server/KnowledgeFeeder.cs` | refreshes the open network data under `/var/lib/meweb/knowledge` every six hours (iptoasn daily, DB-IP monthly, eight RouteViews RIBs weekly through `bzcat` (one or two collectors per continent, `Collectors`; each counts once per network in `UpstreamTally`, and a path's first AS, the collector's own neighbour, is never taken for an upstream), the AOSP carrier list weekly, the address registries' block files weekly (`Registries`: RIPE's and APNIC's `inetnum` and `inet6num` split files, AFRINIC's whole dump, LACNIC's `lacnic.db`)), builds `ip2asn.bin`, `networks.bin`, `carriers.json`, `registry.bin` (every block of the four, `RegistryBuilder`) and `SOURCES.txt` with `MeWeb.Core/Knowledge/Sources.cs`, and serves them at `/api/knowledge` |
|
||||
| `tools/knowledge.cs` | takes the server's knowledge files (`MEWEB_KNOWLEDGE_URL`, default the public server; the release sets `http://127.0.0.1:5480` after deploying the server first) into `artifacts/knowledge/`, checking each SHA-256, and falls back to building `ip2asn.bin` alone from iptoasn (`--local` forces that); `MeWeb.Core` embeds whatever is there; `tools/release.cs` runs it before every app build |
|
||||
| `tools/setup.cs` + `setup.json` | pinned build tools |
|
||||
| `tools/Screenshots` | headless renders of every view in every language; it runs a real check, in a throwaway app folder (`AppServices.Folder`), so the developer's own history and settings stay untouched |
|
||||
| `tools/Screenshots` | headless renders of every view in every language; it runs a real check, in a throwaway app folder (`AppServices.Folder`), so the developer's own history and settings stay untouched. `--store` runs no check: it replays the invented run in `StoreRun.cs` (a phone on home Wi-Fi behind CGNAT with its own IPv6, documentation addresses, "Example Net" on AS64500, findings computed by `Verdicts`) on a fake `android` platform and writes the six 1080×1920 store screenshots per language, laid out at 405×720 and rendered at 1080/405. Headless rounds a window's logical size up to whole units before scaling, so a store size must be a whole number of units (411.4×731.4 at 2.625 came out 1082×1922) |
|
||||
| `branding/` | the icon (SVG source, PNG, ICO) |
|
||||
|
||||
## Pitfalls
|
||||
@@ -171,8 +172,11 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
- **The rpm is signed here, before the release is published**, by `.gitea/scripts/sign-rpm.sh` with the Arasaka org
|
||||
secret `PACKAGES_SIGNING_KEY` (it refuses any key but `F92C166E…3FB2`), which then rewrites `SHA256SUMS.txt`, so
|
||||
the README's promise holds for the file on the release page too; the publisher sees the signature and keeps it.
|
||||
- **The F-Droid listing stays in `packaging/fdroid/metadata/`** (English and Italian); the publisher reads it at the
|
||||
release's tag. The repository's own settings and icon moved there.
|
||||
- **The store listing is `fastlane/metadata/android/`** (`en-US` and `it-IT`: name, short and full description,
|
||||
icon, banner, the six screenshots from `tools/Screenshots --store`), in Google Play's layout. The publisher reads
|
||||
it from `master`, not from a release tag, so F-Droid shows a change within a quarter of an hour. The banner is
|
||||
drawn by `Arasaka/app-stores`' `listing/banner.py meweb`. The F-Droid repository's own settings and icon live in
|
||||
the publisher's repository.
|
||||
- **The APK's signing key also signs the F-Droid index**, so `MEWEB_KEYSTORE_B64` exists twice: here, to sign the
|
||||
APK, and as `thepra`'s `FDROID_KEYSTORE_B64`. The publisher refuses an APK signed by anything but `5f52cff4…f846`.
|
||||
- `packaging/arasaka-repository.sh` is written into both maintainer scripts by `tools/release.cs`; it is
|
||||
|
||||
Reference in new issue
Block a user