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

@ -49,3 +49,40 @@ for (const params of [{action:'focus',area:{left:-100,top:-100,right:100,bottom:
for (const params of [{action:'zoom',zoom:NaN},{action:'focus',area:{left:2,right:1,top:0,bottom:1}},
{action:'picture',size:{width:-1,height:100}},{action:'execute'}])
assert.throws(()=>authorizePlatform(camera,'cameraPreview',params),/INVALID_VALUE/);
for (const action of ['sim','smsc','calls','messages','deliveryReports']) {
const params={action,...(action==='deliveryReports'?{enabled:true}:{})};
authorizePlatform(settings,'mobileSettings',params);
for (const id of ['system','communications','sms','camera','marketplace'])
rejects(app(id),'mobileSettings',params);
}
for (const params of [{action:'enterPin',pin:'1234'},{action:'deliveryReports',enabled:'true'}])
assert.throws(()=>authorizePlatform(settings,'mobileSettings',params),/INVALID_VALUE/);
console.log('PASS: mobile Settings queries are restricted to Settings; unsafe actions rejected.');
for(const action of ['network','dataEnabled','roaming']) {
const params={action,...(action==='network'?{}:{enabled:false})};
authorizePlatform(settings,'mobileSettings',params);
rejects(app('system'),'mobileSettings',params);
}
for(const action of ['clock','setTimezone','setTime']) {
authorizePlatform(settings,'deviceSettings',{action});
for(const id of ['system','communications','marketplace'])rejects(app(id),'deviceSettings',{action});
}
assert.throws(()=>authorizePlatform(settings,'deviceSettings',{action:'execute'}),/INVALID_VALUE/);
assert.throws(()=>authorizePlatform(settings,'mobileSettings',{action:'roaming',enabled:1}),/INVALID_VALUE/);
for(const action of ['radioMode','setRadioMode','apns','editApn']) {
authorizePlatform(settings,'mobileSettings',{action});
for(const id of ['system','communications','marketplace'])rejects(app(id),'mobileSettings',{action});
}
for(const params of [{action:'calls'},{action:'forwarding'},{action:'setCallerId',mode:'default'},{action:'setCallWaiting',enabled:true},{action:'setForwarding',reason:'busy',enabled:false,number:''}]) {
authorizePlatform(settings,'mobileSettings',params);
for(const id of ['system','communications','marketplace'])rejects(app(id),'mobileSettings',params);
}
for(const operation of ['hotspotStatus','hotspotSave','hotspotPower']) {
authorizePlatform(settings,'wifi',{operation});
for(const id of ['system','communications','marketplace'])rejects(app(id),'wifi',{operation});
}