Version: Smart Feature Phone 3.0
3.0 Overview
New Gecko
- Using Gecko version 84.0(Dec. 10, 2020)
 - Gecko changes since version 48
 - Enhanced Service Worker
 - Modern JS (ECMAScript 2021)
 - PWA (Progress Web App) support
 - WebRender
 - WebAssembly
 - WebRTC and WebAudio improve
 - WebGL 2 interface to OpenGL ES 3.0
 - Quantum CSS (parallel CSS engine)
 - TLS 1.0, 1.1 dropped (1.2,1.3 remain)
 - Web Annimation API
 - WebP support
 - Media capabilities API
 - Speech Sysnthesis API
 - Web Authentication API
 - Encryped Media Extension API (EME)
 - Accepts some Webkit prefixed properties and attributes
 
New Gonk layer
- Adapt to BSP HIDL interface
- Unify the hardware abstraction interfaces defined by Google
 - May ease the porting efforts if new BSP version or new chipset coming
 
 
Web API changes
- API domain name change
 - New API
 - Deprecated Web APIs
 
NewKai-RIL design
There are two RIL services design for KaiOS 2.5
- Kai-RIL: used for non-QCT platforms, implemented and maintained by KaiOS.
 - QC-RIL(b2g-RIL): For QCT platform only, implemented, maintained and released by QCT.
 
Since QCT is giving up QC-RIL, we decided to adapt Kai-RL to all chip platflorms in 3.0 via HIDL interfaces.
V2.5 RIL

V3.0 RIL

Service Worker change
- No permission needed
 - Clients.openApp is not supported, using Clients.openWindow by following W3C standards
 - SystemMessage API supported and onsystemmessage event is introduced
 - Can inspect service workers script by Remote Debugging
 
Geolocation change
- Geolocation API is following W3C standards
 - QCT provides iZat (Qualcomm Location) service in both 2.5 and 3.0
 - In 2.5, iZat is tightened up on QC-RIL. It provides GPS, AGPS, Wifi positioning, Cell info location.
 - In 3.0, Kai-RIL connect iZat through HIDL interface. QCT didn’t maintain Wifi positioning and use Skyhook in place.
 - Using iZat service needs agreement from QCT in both 2.5 and 3.0.
 
New Apps manager
In KaiOS 3.0, mozApps API is removed and new apps manager is implemented.
- webapps-manager permission
 - App is launched with open api with url, Apps manager supports:
- App download/downloaded resume
 - Install/sideload package apps
 - Install PWA apps
 - Update/Uninstall apps
 - App signature check
 - Get apps list
 
 
App types in KaiOS 3.0
- Signed App (priviliged app in 2.5)
- 3rd party packaged app preinstalled in /system, but copied to read-write /data or download from store and store in /data, both can be upgraded without FOTA
 
 - PWA App (hosted app in 2.5)
- hosted 3rd apps from store or pwa webside
 
 
App origin changed in KaiOS 3.0
- “app://” are removed, all app origins are “http://”. For example, 
http://launcher.localhostfor launcher app andhttps://example.comfor PWA - App manager uses app origin and manifest to tell app types
- Signed app: 
http://app_name.localhost - PWA: 
https://example.com 
 - Signed app: 
 
App manifest
- PWA manifest w3c spec: firefox 82
 - Non-normative(B2G): b2g_features
 - File extension
- The latest w3c spec[1] says .webmanifest is the official file extension for web apps, but we do have .webapp and .json before the spec defined it.
 
 
App manifest required
- name or short_name: string
 - description: string
 - lang: string
 - id: string
 - theme_color: string
 - background_color: string
 - orientation: string
 - start_url: string
 - icons: Array of object
 
App manifest optinal
- dir: string
 - scope: string
 - display: string
 - orientation: string
 - related_applications: Array of object
 
Permission Management
- The permission managment mechanism is the same between 2.5 and 3.0.
 - The default permission table is changed in 3.0