Expose F-Droid artwork and developer metadata for store entries

Resolve localized v1/v2 artwork, retain six ordered screenshots, clean summaries and refresh older source caches. Add offline metadata and cache regression coverage.

Co-Authored-By: GPT-6 Astra <noreply@openai.com>
This commit is contained in:
saphidandGPT-6 Astra committed 2026-09-28 21:25:24 +10:00
1 parent 784a48f218
commit 08037ab3f5
6 files changed
+367 -8

No files matched your search

+7
View File
@@ -12,3 +12,10 @@ fingerprint matches the operator's published fingerprint:
3BF0D6ABFEAE2F401707B6D966BE743BF0EEE49C2561B9BA39073711F628937A.
It exercises an independent production JAR/CMS encoder without network access.
The index it references is not needed by this signature-only fixture test.
`artwork-v1.json` and `artwork-v2.json` are unsigned metadata/reducer fixtures
based on the synthetic indexes above. They exercise en-US preference, per-field
locale fallback, v1 artwork paths, phone/tablet ordering, the six-image cap,
author names and HTML/multiline summaries. The signed integrity fixtures remain
unchanged; artwork tests feed these JSON files directly through the reducer and
then round-trip the resulting entries through the source cache.
+54
View File
@@ -0,0 +1,54 @@
{
"apps": [
{
"packageName": "org.example.app",
"name": "Example",
"license": "MIT",
"authorName": "Example Developer",
"summary": "Fallback summary",
"localized": {
"de": {
"name": "Beispiel",
"summary": "Deutsch",
"icon": "german.png",
"phoneScreenshots": [
"german.png"
]
},
"en-US": {
"name": "Example",
"summary": "Offline <b>fixture</b> &amp; music.\n One\t line.",
"icon": "icon.png",
"phoneScreenshots": [
"1.png",
"2.png",
"3.png",
"4.png"
]
},
"fr": {
"featureGraphic": "featureGraphic.png",
"sevenInchScreenshots": [
"1.png",
"2.png",
"3.png",
"4.png"
]
}
}
}
],
"packages": {
"org.example.app": [
{
"versionName": "1",
"versionCode": 1,
"apkName": "example1.apk",
"hash": "3e1e2658aef79aaf21aeb8d6705dbc5b251e51627bfdfc53650da50ed2c38c79",
"hashType": "sha256",
"size": 51,
"minSdkVersion": 21
}
]
}
}
+143
View File
@@ -0,0 +1,143 @@
{
"repo": {
"name": {
"en-US": "Fixture"
}
},
"packages": {
"org.example.app": {
"metadata": {
"name": {
"en-US": "Example"
},
"summary": {
"en-US": "<p>Offline <b>fixture</b> &amp; music.</p>\n<p>One\t line.</p><script>hidden()</script>"
},
"license": "MIT",
"authorName": "Example Developer",
"icon": {
"de": {
"name": "/org.example.app/de/icon.png"
},
"en-US": {
"name": "/org.example.app/en-US/icon.png"
}
},
"featureGraphic": {
"fr": {
"name": "/org.example.app/fr/featureGraphic.png"
}
},
"screenshots": {
"phone": {
"de": [
{
"name": "/org.example.app/de/phoneScreenshots/1.png"
}
],
"en-US": [
{
"name": "/org.example.app/en-US/phoneScreenshots/1.png"
},
{
"name": "/org.example.app/en-US/phoneScreenshots/2.png"
},
{
"name": "/org.example.app/en-US/phoneScreenshots/3.png"
},
{
"name": "/org.example.app/en-US/phoneScreenshots/4.png"
}
]
},
"sevenInch": {
"fr": [
{
"name": "/org.example.app/fr/sevenInchScreenshots/1.png"
},
{
"name": "/org.example.app/fr/sevenInchScreenshots/2.png"
},
{
"name": "/org.example.app/fr/sevenInchScreenshots/3.png"
},
{
"name": "/org.example.app/fr/sevenInchScreenshots/4.png"
}
]
}
}
},
"versions": {
"1": {
"manifest": {
"versionName": "1",
"versionCode": 1,
"usesSdk": {
"minSdkVersion": 21
},
"nativecode": []
},
"file": {
"name": "/example1.apk",
"sha256": "3e1e2658aef79aaf21aeb8d6705dbc5b251e51627bfdfc53650da50ed2c38c79",
"size": 51
},
"added": 1700000000000
},
"2": {
"manifest": {
"versionName": "2",
"versionCode": 2,
"usesSdk": {
"minSdkVersion": 30
},
"nativecode": [
"arm64-v8a"
]
},
"file": {
"name": "/example2.apk",
"sha256": "3e1e2658aef79aaf21aeb8d6705dbc5b251e51627bfdfc53650da50ed2c38c79",
"size": 51
},
"added": 1700000000000
},
"3": {
"manifest": {
"versionName": "3",
"versionCode": 3,
"usesSdk": {
"minSdkVersion": 31
},
"nativecode": []
},
"file": {
"name": "/example3.apk",
"sha256": "3e1e2658aef79aaf21aeb8d6705dbc5b251e51627bfdfc53650da50ed2c38c79",
"size": 51
},
"added": 1700000000000
},
"4": {
"manifest": {
"versionName": "4",
"versionCode": 4,
"usesSdk": {
"minSdkVersion": 21
},
"nativecode": [
"x86_64"
]
},
"file": {
"name": "/example4.apk",
"sha256": "3e1e2658aef79aaf21aeb8d6705dbc5b251e51627bfdfc53650da50ed2c38c79",
"size": 51
},
"added": 1700000000000
}
}
}
}
}