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
- **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
`FileProtectionType.completeUntilFirstUserAuthentication` geschrieben statt dem
strengeren `.complete`. Damit ist die Datei nach dem ersten Entsperren seit Boot

View File

@ -43,7 +43,7 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
android: {
package: "org.rebreak.app",
versionCode: 10,
versionCode: 11,
adaptiveIcon: {
// Foreground muss in der ~66%-Safe-Zone bleiben (Launcher-Mask clippt den
// 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) {
return withEntitlementsPlist(config, (cfg) => {
// NetworkExtension-Entitlement. Das Array darf mehrere Provider-Typen
// halten — beide gleichzeitig ist technisch erlaubt:
// - `packet-tunnel-provider`: der NEU aktive Layer-1-Filter (DNS-Sinkhole,
// MDM-frei, kein Apple-Capability-Request nötig — direkt in Xcode/Portal).
// - `url-filter-provider`: NEURLFilter, behalten als iOS-26-Upgrade-Pfad
// (inaktiv; User-Entscheidung NICHT zu löschen).
// NetworkExtension-Entitlement. Nur `packet-tunnel-provider` — der aktive
// Layer-1-Filter (DNS-Sinkhole, MDM-frei). Der NEURLFilter-Pfad
// (`url-filter-provider`) wurde entfernt; `url-filter-provider` ist zudem
// kein von EAS/Apple anerkannter Entitlement-Wert (Capability-Sync-Fehler).
cfg.modResults['com.apple.developer.networking.networkextension'] = [
'packet-tunnel-provider',
'url-filter-provider',
];
// Family Controls = Kern-Funktion, Apple-Distribution-Entitlement freigegeben
// (v0.3.4) → DEFAULT AN. Nur ein explizites REBREAK_ENABLE_FAMILY_CONTROLS=0
@ -108,9 +105,8 @@ function withCopyExtensionSources(config) {
return withDangerousMod(config, [
'ios',
async (cfg) => {
// Beide Extension-Verzeichnisse nach ios/ kopieren.
// Extension-Verzeichnis(se) nach ios/ kopieren.
for (const [target, srcDir] of [
[TARGET_NAME, MODULE_DIR],
[PT_TARGET_NAME, PT_MODULE_DIR],
]) {
const dest = path.join(cfg.modRequest.platformProjectRoot, target);
@ -439,7 +435,8 @@ function withPacketTunnelTarget(config) {
module.exports = function withRebreakProtectionIos(config) {
config = withMainAppEntitlements(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);
return config;
};