How to Display Changelogs in F-Droid Client from My Custom Repo?

Hello,

I would like to list changes to the application in the MyApp configuration for my own F-Droid application repository.
I have the following directory structure, where the changelogs directory contains a default.txt file:

./metadata
├── com.company.myapp
│   └── fastlane
│       └── metadata
│           └── android
│               ├── en-US
│               │   ├── changelogs
│               │   │   └── default.txt
│               │   ├── full_description.txt
│               │   ├── images
│               │   │   ├── featureGraphic.png
│               │   │   ├── icon.png
│               │   │   └── phoneScreenshots
│               │   │       ├── 1.jpg
│               │   │       ├── 2.jpg
│               │   │       ├── 3.jpg
│               │   │       └── 4.jpg
│               │   ├── short_description.txt
│               │   └── title.txt
│               └── de-DE
│                   ├── full_description.txt
│                   ├── short_description.txt
│                   └── title.txt
└── com.company.myapp.yml

The problem is that changelogs is supported in newer versions of fdroidserver (I am currently using ver. 2.3.3-1).
If I generate the repository with the commands:

fdroid update -c --pretty
fdroid rewritemeta
fdroid update --pretty

so, as a result I have, among other files, the following files:

entry.jar
entry.json
index-v1.jar
index-v1.json
index-v2.json

There is a section in the entry.json file that indicates that index-v2.json will be used:

"index": {
  "name": "/index-v2.json",
  "sha256": "f9b108bb50dcb27879cda145d110afed4ccca6be9b38f8d58d8bfed6f416732e",
  "size": 8237,
  "numPackages": 2
},

However, the index-v2.json file does not contain changelogs information.
The index-v1.json file contains a localized section in which information from the changelogs is listed in the whatsNew section:

"localized": {
  "en-US": {
    "description": "en-US (full description) new\n",
    "featureGraphic": "featureGraphic_tQ3ySLQigcuc8gHI49OxV5mHU99LUOENE-1yv0jUcbQ=.png",
    "icon": "icon_rDzDM2RcuKAzC67LfCP7TOshAKHFm75A0K_R4Ue9f4Y=.png",
    "name": "MyApp",
    "phoneScreenshots": [
      "1.jpg",
      "2.jpg",
      "3.jpg",
      "4.jpg"
    ],
    "summary": "en-US (short description) new",
    "whatsNew": "- change 1\n- change 2\n"
  },
  "de-DE": {
    "description": "de-De\n",
    "name": "MyApp-DE",
    "summary": "de-DE"
  }
}

In the F-Droid client application, I want to display what is listed in the changelogs.
What am I doing wrong, or what should I do to make the MyApp application details in the F-Droid client display what is listed in the changelogs?

Thank you very much for your answer.

Dunno if this is something that has changed between versions of fdroidserver, as I never hosted my own repo, but currently, F-Droid docs say that files in the changelogs/ directory should have names corresponding to app version codes.

Yes, I read it in the documentation before I posted on the forum and my changelogs directory contains the files:

  • 0.011.01.txt => 0.011.01 is versionName
  • 11.txt => 11 - is versionCode
  • default.txt

but only the contents of the default.txt file were used, and that was only the index-v1.json file, which is not used anyway, because the entry.json file is set to use index-v2.json, which does not contain any information from the changelogs.

It looks like fdroidserver has a bug where it does not save changelog information to index-v2.json.

Perhaps a solution in this situation would be for fdroidserver to set entry.json to use index-v1.json. Is that possible?

Thank you very much for your answer.

Maybe the bug is that it does not use default.txt

As 11.txt from versionCode works fine, for all the apps that use that

I have all 3 files in the changelogs directory, so fdroidserver could have taken the one that suited it, but it didn’t.

What should be the next step?
Or any ideas on how to handle the situation?

If there is no error in fdroidserver, then there is something wrong in my procedure.

Can anyone advise me how to solve the problem?

Thank you very much for answer.