Sheets via neuer KeyboardAwareSheet-Composable (in Modal pattern, auto-grow mit Tastatur, paddingBottom-Lift): EditMail, AddDomain, CreateRoom, ConnectMail. GameOverScreen behält Spring-Slide-In, nutzt RN Keyboard.addListener für Lift. - KeyboardAwareSheet.tsx — universal modal with sheet-grow + keyboard-padding - react-native-keyboard-controller installiert + KeyboardProvider in Root - Snake: time + ScoreProgressBar + useSnakeSounds (haptic, audio TODO) - Tetris: title weg, Buttons zentriert, kein Pressable mit style-fn - DPad-Buttons 60→48, more bg, no scale - useMe: pub-sub listener pattern für app-weite avatar/nickname-Updates - dm.tsx: resolveAvatar wrap (iron.png-Warning) - Mail-error-humanizer + locales Recovery-Doc-Update in docs/internal/RECOVERY_LOG_2026-05-10.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
105 lines
4.3 KiB
Vue
105 lines
4.3 KiB
Vue
<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</h1>
|
||
<p class="text-sm text-gray-400">Gambling Recovery</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Header -->
|
||
<h2 class="text-3xl font-extrabold mb-2">Rebreak für Android</h2>
|
||
<p class="text-gray-400 mb-1 text-sm">
|
||
Version {{ version }} · Build {{ 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-8"
|
||
>
|
||
Beta — iOS ist die Hauptplattform
|
||
</span>
|
||
|
||
<!-- Download Button -->
|
||
<a
|
||
:href="apkUrl"
|
||
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
|
||
>
|
||
APK herunterladen ({{ apkSizeMb }} MB)
|
||
</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">Installation 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">APK laden</p>
|
||
<p class="text-xs text-gray-400 mt-0.5">Oben auf "APK herunterladen" tippen und die Datei speichern.</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">Unbekannte Quellen erlauben</p>
|
||
<p class="text-xs text-gray-400 mt-0.5">
|
||
Einstellungen → Apps → Spezieller App-Zugriff → Unbekannte Apps installieren → deinen Browser auswählen → erlauben.
|
||
</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">APK öffnen & installieren</p>
|
||
<p class="text-xs text-gray-400 mt-0.5">Heruntergeladene Datei im Dateimanager öffnen und "Installieren" bestätigen.</p>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</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> Diese APK ist eine Vorschau-Version. Nicht alle Features
|
||
sind fertig. Fehler bitte per E-Mail melden:
|
||
<a href="mailto:support@rebreak.org" class="underline">support@rebreak.org</a>
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Footer -->
|
||
<p class="text-center text-xs text-gray-600">
|
||
© {{ new Date().getFullYear() }} Rebreak ·
|
||
<NuxtLink to="/datenschutz" class="hover:text-gray-400">Datenschutz</NuxtLink>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
// Diese Werte werden bei jedem Release-Build manuell oder per Script aktualisiert.
|
||
const version = "0.1.0";
|
||
const buildDate = "2026-04-28";
|
||
const apkSizeMb = "—"; // Wird nach Build eingetragen
|
||
const sha256 = "— wird nach Build eingetragen —";
|
||
const apkUrl = "/downloads/rebreak-android-latest.apk";
|
||
|
||
useSeoMeta({
|
||
title: "Rebreak für Android – APK Download",
|
||
description: "Lade die Rebreak Gambling-Recovery App als APK für Android herunter. Beta-Version – iOS ist die Hauptplattform.",
|
||
});
|
||
|
||
definePageMeta({
|
||
layout: false,
|
||
});
|
||
</script>
|