chahinebrini 63fae25531 fix(android-protection): explicit specialUse FGS type — Samsung/Android 16 crash loop
RebreakVpnService.onStartCommand crashed with SecurityException because Android 16's validateForegroundServiceType rejects the implicit 2-arg startForeground(). Now passes FOREGROUND_SERVICE_TYPE_SPECIAL_USE explicitly (Google's documented best practice) and guards the call so a failed foreground promotion stops the service cleanly instead of crashing the app. Verified vs reported Galaxy A54 / Android 16 signature (97% of crash events, 1-user crash loop).

Bundles pending working-tree work across native/marketing/locales/mac + graphify-out rebuild. gitignore: google-services.json + /screenshots/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:33:28 +02:00

136 lines
6.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="min-h-screen bg-gray-950 text-white flex flex-col items-center justify-center px-4 py-16">
<div class="w-full max-w-md">
<!-- Logo / Brand -->
<div class="flex items-center gap-3 mb-10">
<div class="w-12 h-12 rounded-2xl bg-indigo-500 flex items-center justify-center">
<span class="text-2xl font-bold">R</span>
</div>
<div>
<h1 class="text-2xl font-bold tracking-tight">ReBreak für Windows</h1>
<p class="text-sm text-gray-400">Glücksspiel-Schutz für deinen PC</p>
</div>
</div>
<!-- Header -->
<h2 class="text-3xl font-extrabold mb-2">Schutz für deinen Windows-PC</h2>
<p class="text-gray-400 mb-1 text-sm">
Version {{ version }} &nbsp;·&nbsp; {{ buildDate }}
</p>
<span
class="inline-block bg-amber-500/15 text-amber-400 text-xs font-semibold px-2.5 py-1 rounded-full mb-6"
>
Beta, für Pro &amp; Legend
</span>
<!-- Was es macht -->
<div class="bg-indigo-950/30 border border-indigo-800/30 rounded-2xl p-5 mb-6">
<p class="text-sm text-indigo-200 leading-relaxed">
<strong>Systemweiter Schutz.</strong> ReBreak für Windows blockt Glücksspielseiten
auf <strong>DNS-Ebene</strong>, in jedem Browser und jeder App. Auch Chrome, Edge und
Brave, die normalerweise das System-DNS umgehen, werden zuverlässig gefiltert.
Ein Hintergrunddienst schützt die Einstellung vor dem Abschalten.
</p>
</div>
<!-- Download Button -->
<a
:href="exeUrl"
class="block w-full bg-indigo-600 hover:bg-indigo-500 active:bg-indigo-700 transition-colors text-white text-center font-bold text-lg py-4 rounded-2xl mb-4 shadow-lg shadow-indigo-900/40"
download
>
Installer herunterladen ({{ exeSize }})
</a>
<!-- SHA256 -->
<p class="text-xs text-gray-500 text-center break-all mb-10">
SHA256: <span class="font-mono">{{ sha256 }}</span>
</p>
<!-- Install Instructions -->
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
<h3 class="font-bold text-base mb-4 text-white">Setup in 3 Schritten</h3>
<ol class="space-y-4">
<li class="flex gap-3">
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">1</span>
<div>
<p class="font-medium text-sm text-white">Installer laden &amp; ausführen</p>
<p class="text-xs text-gray-400 mt-0.5">Doppelklick auf die .exe. Windows-SmartScreen ggf. Weitere Informationen Trotzdem ausführen" (App ist noch nicht signiert).</p>
</div>
</li>
<li class="flex gap-3">
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">2</span>
<div>
<p class="font-medium text-sm text-white">Mit ReBreak verbinden</p>
<p class="text-xs text-gray-400 mt-0.5">In der ReBreak-App auf dem Handy einen 6-stelligen Code erzeugen (Geräte → Gerät hinzufügen → Windows) und in der PC-App eingeben.</p>
</div>
</li>
<li class="flex gap-3">
<span class="w-7 h-7 shrink-0 rounded-full bg-indigo-600 flex items-center justify-center text-sm font-bold">3</span>
<div>
<p class="font-medium text-sm text-white">Fertig</p>
<p class="text-xs text-gray-400 mt-0.5">Der Schutz läuft ab sofort im Hintergrund, auch nach einem Neustart.</p>
</div>
</li>
</ol>
</div>
<!-- Voraussetzungen -->
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
<h3 class="font-bold text-base mb-3 text-white">Voraussetzungen</h3>
<ul class="space-y-2 text-xs text-gray-400">
<li>• Windows 10 ({{ minWindows }}) oder Windows 11, 64-Bit</li>
<li>• Administrator-Rechte für die Installation</li>
<li>• Ein ReBreak-Account mit Pro oder Legend</li>
<li>• Die ReBreak-App auf deinem Handy (für die Kopplung)</li>
</ul>
</div>
<!-- Deaktivieren -->
<div class="bg-gray-900 rounded-2xl p-6 mb-8">
<h3 class="font-bold text-base mb-3 text-white">Wie wird der Schutz wieder gelöst?</h3>
<p class="text-xs text-gray-400 leading-relaxed">
Bewusst nicht per Klick: Der Schutz lässt sich nur mit Wartezeit (Cooldown) wieder
pausieren. Das schützt dich vor dem Impuls, der ihn im Drang-Moment loswerden will.
Bei Abo-Ende oder Account-Löschung wird der Schutz ordnungsgemäß freigegeben.
</p>
</div>
<!-- Beta Notice -->
<div class="bg-amber-950/40 border border-amber-800/30 rounded-xl p-4 mb-8">
<p class="text-amber-300 text-xs leading-relaxed">
<strong>Beta-Hinweis:</strong> ReBreak für Windows ist in geschlossener Beta. Bei Problemen oder
Feedback bitte E-Mail an
<a href="mailto:support@rebreak.org" class="underline">support@rebreak.org</a>.
</p>
</div>
<!-- Footer -->
<p class="text-center text-xs text-gray-600">
&copy; {{ new Date().getFullYear() }} Rebreak &nbsp;·&nbsp;
<NuxtLink to="/datenschutz" class="hover:text-gray-400">Datenschutz</NuxtLink>
</p>
</div>
</div>
</template>
<script setup lang="ts">
// Werte bei jedem Windows-Release aktualisieren (oder per Script aus dem Build).
const version = "0.1.0";
const buildDate = "Juni 2026";
const exeSize = "3,7 MB";
const minWindows = "21H2";
const sha256 = "f1d073b28cc3cf31f3b9da826eff71cd73e1169a1c6ae1ff64a056ee4cf0dd87";
const exeUrl = "/downloads/RebreakMagic-Setup.exe";
useSeoMeta({
title: "ReBreak für Windows Glücksspiel-Schutz für deinen PC",
description:
"Blockt Glücksspielseiten systemweit auf deinem Windows-PC, in jedem Browser, auch Chrome und Edge. Per DNS-over-HTTPS, mit Tamper-Schutz im Hintergrund.",
});
definePageMeta({
layout: false,
});
</script>