I believe you have to add it into your plugin data array, see below:
$packages['plugin-slug'] = [
'versions' => [
'1.0.0' => [
'name' => 'WP Awesome Plugin',
'version' => '1.0.0',
'new_version' => '1.0.0',
'date' => '2023-02-10 14:17:00',
'tested' => '6.1.1',
'package' => 'https://127.0.0.1/plugin-slug-1.0.0.zip',
//
'author' => '<a href="https://127.0.0.1/">Author</a>',
'author_profile' => 'https://127.0.0.1/',
'homepage' => 'https://127.0.0.1/wordpress-plugins/plugin-slug/',
'requires' => '5.8',
'requires_php' => '7.0',
'description' => 'This is an awesome plugin!',
'short_description' => 'This is an awesome plugin!',
'changelog' => 'Put your changelog here.'
],
],
'info' => [
'url' => '',
],
];
Then, when you’re running through the output for your plugin updater:
if ( $action === 'plugin_information' ) {
$data = new stdClass;
$data->slug = $args->slug;
$data->name = $latest_package['name'];
$data->version = $latest_package['version'];
$data->new_version = $latest_package['new_version'];
$data->last_updated = $latest_package['date'];
$data->download_link = $latest_package['package'];
$data->tested = $latest_package['tested'];
//
$data->author = $latest_package['author'];
$data->author_profile = $latest_package['author_profile'];
$data->homepage = $latest_package['homepage'];
$data->requires = $latest_package['requires'];
$data->requires_php = $latest_package['requires_php'];
//
$data->description = $latest_package['description'];
$data->short_description = $latest_package['short_description'];
$data->sections = [
'description' => $latest_package['description'],
'changelog' => $latest_package['changelog'],
];
print serialize( $data );
}
I think the changelog is supposed to be in the sections
portion.