chore(release): URLFilter-Extension raus + Android versionCode 11

This commit is contained in:
chahinebrini 2026-05-22 22:19:52 +02:00
parent 9a22bcd114
commit b6b1f68940
3 changed files with 14 additions and 26 deletions

View File

@ -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

View File

@ -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",
],
},
},
], ],
}, },
}, },

View File

@ -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;
}; };