chahinebrini 5d6c322129 wip: KeyboardAwareSheet migrations + Snake/Tetris UI + iron.png + useMe live-update
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>
2026-05-10 23:59:25 +02:00

105 lines
4.3 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</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 }} &nbsp;·&nbsp; 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 &amp; 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">
&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">
// 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>