diff --git a/src/lib/components/ProfileSwitcher.svelte b/src/lib/components/ProfileSwitcher.svelte
index acce166..a0013c5 100644
--- a/src/lib/components/ProfileSwitcher.svelte
+++ b/src/lib/components/ProfileSwitcher.svelte
@@ -24,11 +24,10 @@
@@ -105,9 +104,6 @@
.chip:hover {
background: #f4f8f5;
}
- .emoji {
- font-size: 1.1rem;
- }
.icon {
display: inline-flex;
align-items: center;
diff --git a/src/routes/preview/+page.svelte b/src/routes/preview/+page.svelte
index 47a155a..865504a 100644
--- a/src/routes/preview/+page.svelte
+++ b/src/routes/preview/+page.svelte
@@ -90,7 +90,7 @@
Speichern…
{:else}
- In meine Sammlung speichern
+ Rezept in Kochwas speichern
{/if}
diff --git a/src/routes/recipes/[id]/+page.svelte b/src/routes/recipes/[id]/+page.svelte
index 83e2334..9391c55 100644
--- a/src/routes/recipes/[id]/+page.svelte
+++ b/src/routes/recipes/[id]/+page.svelte
@@ -9,7 +9,9 @@
Trash2,
ChefHat,
Check,
- X
+ X,
+ Lightbulb,
+ LightbulbOff
} from 'lucide-svelte';
import RecipeView from '$lib/components/RecipeView.svelte';
import StarRating from '$lib/components/StarRating.svelte';
@@ -225,29 +227,62 @@
void wishlistStore.refresh();
}
- // Wake-Lock
+ // Wake-Lock — Bildschirm beim Kochen nicht dimmen lassen.
+ // Browser-API navigator.wakeLock.request('screen') verhindert auto-lock
+ // und -dimmen, solange der Tab sichtbar ist. Sobald der Tab in den
+ // Hintergrund geht, verliert der Sentinel seine Wirkung von selbst; wir
+ // re-requesten bei visibilitychange.
+ let wakeLockEnabled = $state(true);
let wakeLock: WakeLockSentinel | null = null;
- async function requestWakeLock() {
+
+ async function acquireWakeLock() {
+ if (wakeLock || !wakeLockEnabled) return;
try {
if ('wakeLock' in navigator) {
wakeLock = await navigator.wakeLock.request('screen');
+ wakeLock.addEventListener('release', () => {
+ wakeLock = null;
+ });
}
} catch {
- // silently ignore
+ // User hat es gecancelt oder Browser unterstützt es nicht — ignorieren
}
}
+ async function releaseWakeLock() {
+ if (!wakeLock) return;
+ try {
+ await wakeLock.release();
+ } catch {
+ // ignore
+ }
+ wakeLock = null;
+ }
+
+ function toggleWakeLock() {
+ wakeLockEnabled = !wakeLockEnabled;
+ if (typeof window !== 'undefined') {
+ localStorage.setItem('kochwas.wakeLock', wakeLockEnabled ? '1' : '0');
+ }
+ if (wakeLockEnabled) void acquireWakeLock();
+ else void releaseWakeLock();
+ }
+
onMount(() => {
- void requestWakeLock();
+ const stored = localStorage.getItem('kochwas.wakeLock');
+ if (stored !== null) wakeLockEnabled = stored === '1';
+ if (wakeLockEnabled) void acquireWakeLock();
const onVisibility = () => {
- if (document.visibilityState === 'visible' && !wakeLock) void requestWakeLock();
+ if (document.visibilityState === 'visible' && wakeLockEnabled && !wakeLock) {
+ void acquireWakeLock();
+ }
};
document.addEventListener('visibilitychange', onVisibility);
return () => document.removeEventListener('visibilitychange', onVisibility);
});
onDestroy(() => {
- if (wakeLock) void wakeLock.release();
+ void releaseWakeLock();
});
@@ -314,6 +349,22 @@
({cookingLog.length})
{/if}
+