Release Preview 20 shared desktop, Android and Sargo updates

Restore Gaia settings and media workflows, extend native network adapters, and align the APK payload. Generate French/English changelogs and website entries from the simplified JSON source.

Validation: shared JS and Tundra unit tests; desktop workflows and persistence; signed APK payload parity; Sargo RAM and installed startup with boot readback. Android runtime qualification is recorded separately.
This commit is contained in:
OverSu 2026-10-13 00:19:45 +02:00
commit 1311bed5e9
170 changed files with 19698 additions and 2495 deletions

View file

@ -651,25 +651,30 @@ var metadataParser = (function() {
function videoMetadataParser(file, metadataCallback, errorCallback) {
var metadata = {};
var videofilename = file.name.replace('.jpg', '.3gp');
metadata.video = videofilename;
var getreq = videostorage.get(videofilename);
getreq.onerror = function() {
errorCallback('cannot get video file: ' + videofilename);
};
getreq.onsuccess = function() {
var videofile = getreq.result;
getVideoRotation(videofile, function(rotation) {
if (typeof rotation === 'number') {
metadata.rotation = rotation;
var extensions = ['webm', '3gp', 'mp4'];
function findVideo() {
var videofilename = file.name.replace(/\.jpg$/, '.' + extensions.shift());
var getreq = videostorage.get(videofilename);
getreq.onerror = function() {
if (extensions.length) findVideo();
else errorCallback('cannot get video file: ' + videofilename);
};
getreq.onsuccess = function() {
metadata.video = videofilename;
if (/\.webm$/.test(videofilename)) {
metadata.rotation = 0;
getVideoThumbnailAndSize();
return;
}
else if (typeof rotation === 'string') {
errorCallback('Video rotation:', rotation);
}
});
};
getVideoRotation(getreq.result, function(rotation) {
if (typeof rotation === 'number') {
metadata.rotation = rotation;
getVideoThumbnailAndSize();
} else errorCallback('Video rotation: ' + rotation);
});
};
}
findVideo();
function getVideoThumbnailAndSize() {
var url = URL.createObjectURL(file);