chore(release): URLFilter-Extension raus + Android versionCode 11
This commit is contained in:
parent
9a22bcd114
commit
b6b1f68940
@ -10,9 +10,14 @@ Versioning: `version` follows SemVer, `versionCode` is monotonically increasing.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## [0.3.5] — buildNumber 14 — 2026-05-22
|
## [0.3.5] — buildNumber 14 / versionCode 11 — 2026-05-22
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
- **Android VPN-Blocklist-Self-Heal** (`9a22bcd`) — Nach der ersten Schutz-Aktivierung
|
||||||
|
lud `RebreakVpnService` die Blocklist nicht, wenn sie zur Startzeit noch nicht bereit
|
||||||
|
war (0 Domains aktiv). Neuer Self-Heal-Mechanismus: der Service prüft nach Tunnel-Start,
|
||||||
|
ob die Blocklist leer ist, und lädt sie mit exponentiellem Backoff nach
|
||||||
|
(1 s → 2 s → 4 s, max 3 Versuche). Kein Geräte-Neustart mehr nötig.
|
||||||
- **iOS Layer-1 VPN: File-Protection-Fix** — `blocklist.bin` wird jetzt mit
|
- **iOS Layer-1 VPN: File-Protection-Fix** — `blocklist.bin` wird jetzt mit
|
||||||
`FileProtectionType.completeUntilFirstUserAuthentication` geschrieben statt dem
|
`FileProtectionType.completeUntilFirstUserAuthentication` geschrieben statt dem
|
||||||
strengeren `.complete`. Damit ist die Datei nach dem ersten Entsperren seit Boot
|
strengeren `.complete`. Damit ist die Datei nach dem ersten Entsperren seit Boot
|
||||||
|
|||||||
@ -43,7 +43,7 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
|
|||||||
|
|
||||||
android: {
|
android: {
|
||||||
package: "org.rebreak.app",
|
package: "org.rebreak.app",
|
||||||
versionCode: 10,
|
versionCode: 11,
|
||||||
adaptiveIcon: {
|
adaptiveIcon: {
|
||||||
// Foreground muss in der ~66%-Safe-Zone bleiben (Launcher-Mask clippt den
|
// Foreground muss in der ~66%-Safe-Zone bleiben (Launcher-Mask clippt den
|
||||||
// Außenring) → adaptive-foreground.png ist das Logo auf transparentem
|
// Außenring) → adaptive-foreground.png ist das Logo auf transparentem
|
||||||
@ -132,20 +132,6 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
// Layer 1-alt — NEURLFilter (iOS 26). INAKTIV, behalten als
|
|
||||||
// optionaler Upgrade-Pfad. EAS muss das Target trotzdem kennen.
|
|
||||||
targetName: "RebreakURLFilterExtension",
|
|
||||||
bundleIdentifier: "org.rebreak.app.URLFilterExtension",
|
|
||||||
entitlements: {
|
|
||||||
"com.apple.developer.networking.networkextension": [
|
|
||||||
"url-filter-provider",
|
|
||||||
],
|
|
||||||
"com.apple.security.application-groups": [
|
|
||||||
"group.org.rebreak.app",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -77,15 +77,12 @@ const PT_SWIFT_SOURCES = [
|
|||||||
|
|
||||||
function withMainAppEntitlements(config) {
|
function withMainAppEntitlements(config) {
|
||||||
return withEntitlementsPlist(config, (cfg) => {
|
return withEntitlementsPlist(config, (cfg) => {
|
||||||
// NetworkExtension-Entitlement. Das Array darf mehrere Provider-Typen
|
// NetworkExtension-Entitlement. Nur `packet-tunnel-provider` — der aktive
|
||||||
// halten — beide gleichzeitig ist technisch erlaubt:
|
// Layer-1-Filter (DNS-Sinkhole, MDM-frei). Der NEURLFilter-Pfad
|
||||||
// - `packet-tunnel-provider`: der NEU aktive Layer-1-Filter (DNS-Sinkhole,
|
// (`url-filter-provider`) wurde entfernt; `url-filter-provider` ist zudem
|
||||||
// MDM-frei, kein Apple-Capability-Request nötig — direkt in Xcode/Portal).
|
// kein von EAS/Apple anerkannter Entitlement-Wert (Capability-Sync-Fehler).
|
||||||
// - `url-filter-provider`: NEURLFilter, behalten als iOS-26-Upgrade-Pfad
|
|
||||||
// (inaktiv; User-Entscheidung NICHT zu löschen).
|
|
||||||
cfg.modResults['com.apple.developer.networking.networkextension'] = [
|
cfg.modResults['com.apple.developer.networking.networkextension'] = [
|
||||||
'packet-tunnel-provider',
|
'packet-tunnel-provider',
|
||||||
'url-filter-provider',
|
|
||||||
];
|
];
|
||||||
// Family Controls = Kern-Funktion, Apple-Distribution-Entitlement freigegeben
|
// Family Controls = Kern-Funktion, Apple-Distribution-Entitlement freigegeben
|
||||||
// (v0.3.4) → DEFAULT AN. Nur ein explizites REBREAK_ENABLE_FAMILY_CONTROLS=0
|
// (v0.3.4) → DEFAULT AN. Nur ein explizites REBREAK_ENABLE_FAMILY_CONTROLS=0
|
||||||
@ -108,9 +105,8 @@ function withCopyExtensionSources(config) {
|
|||||||
return withDangerousMod(config, [
|
return withDangerousMod(config, [
|
||||||
'ios',
|
'ios',
|
||||||
async (cfg) => {
|
async (cfg) => {
|
||||||
// Beide Extension-Verzeichnisse nach ios/ kopieren.
|
// Extension-Verzeichnis(se) nach ios/ kopieren.
|
||||||
for (const [target, srcDir] of [
|
for (const [target, srcDir] of [
|
||||||
[TARGET_NAME, MODULE_DIR],
|
|
||||||
[PT_TARGET_NAME, PT_MODULE_DIR],
|
[PT_TARGET_NAME, PT_MODULE_DIR],
|
||||||
]) {
|
]) {
|
||||||
const dest = path.join(cfg.modRequest.platformProjectRoot, target);
|
const dest = path.join(cfg.modRequest.platformProjectRoot, target);
|
||||||
@ -439,7 +435,8 @@ function withPacketTunnelTarget(config) {
|
|||||||
module.exports = function withRebreakProtectionIos(config) {
|
module.exports = function withRebreakProtectionIos(config) {
|
||||||
config = withMainAppEntitlements(config);
|
config = withMainAppEntitlements(config);
|
||||||
config = withCopyExtensionSources(config);
|
config = withCopyExtensionSources(config);
|
||||||
config = withExtensionTarget(config);
|
// withExtensionTarget (NEURLFilter) entfernt — URLFilter wird nicht mehr
|
||||||
|
// gebraucht; `url-filter-provider` ist auch kein gültiger EAS-Entitlement-Wert.
|
||||||
config = withPacketTunnelTarget(config);
|
config = withPacketTunnelTarget(config);
|
||||||
return config;
|
return config;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user