Compare commits

...

2 Commits

Author SHA1 Message Date
Kantine Wrapper
5caaf7dcad chore: update build artifacts for v1.4.21 2026-02-25 15:00:04 +01:00
Kantine Wrapper
122c1078cf feat: dynamic glow on next-week button until first order (v1.4.21) 2026-02-25 14:59:59 +01:00
7 changed files with 40 additions and 23 deletions

View File

@@ -1,3 +1,6 @@
## v1.4.21
-**UX**: Der Glow-Effekt des „Nächste Woche"-Buttons bleibt nun aktiv, solange Menüdaten vorhanden aber noch keine Bestellungen getätigt wurden. Verschwindet automatisch nach der ersten Bestellung.
## v1.4.20 ## v1.4.20
- 🐛 **Bugfix**: Der Badge-Counter im „Nächste Woche"-Tab wird jetzt sofort nach einer Bestellung oder Stornierung aktualisiert. - 🐛 **Bugfix**: Der Badge-Counter im „Nächste Woche"-Tab wird jetzt sofort nach einer Bestellung oder Stornierung aktualisiert.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

14
dist/install.html vendored

File diff suppressed because one or more lines are too long

View File

@@ -2021,7 +2021,7 @@ body {
<div class="brand"> <div class="brand">
<span class="material-icons-round logo-icon">restaurant_menu</span> <span class="material-icons-round logo-icon">restaurant_menu</span>
<div class="header-left"> <div class="header-left">
<h1>Kantinen Übersicht <small class="version-tag" style="font-size: 0.6em; opacity: 0.7; font-weight: 400; cursor: pointer;" title="Klick für Versionsmenü">v1.4.20</small></h1> <h1>Kantinen Übersicht <small class="version-tag" style="font-size: 0.6em; opacity: 0.7; font-weight: 400; cursor: pointer;" title="Klick für Versionsmenü">v1.4.21</small></h1>
<div id="last-updated-subtitle" class="subtitle"></div> <div id="last-updated-subtitle" class="subtitle"></div>
</div> </div>
<div class="nav-group" style="margin-left: 1rem;"> <div class="nav-group" style="margin-left: 1rem;">
@@ -2163,7 +2163,7 @@ body {
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div style="margin-bottom: 1rem;"> <div style="margin-bottom: 1rem;">
<strong>Aktuell:</strong> <span id="version-current">v1.4.20</span> <strong>Aktuell:</strong> <span id="version-current">v1.4.21</span>
</div> </div>
<div class="dev-toggle"> <div class="dev-toggle">
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;"> <label style="display:flex;align-items:center;gap:8px;cursor:pointer;">
@@ -3597,13 +3597,18 @@ body {
badge.classList.add('has-highlights'); badge.classList.add('has-highlights');
} }
// FR-092: Highlight Next Week Button when new data arrives // FR-092: Glow Next Week button while data exists but no orders placed
if (daysWithOrders === 0) {
btnNextWeek.classList.add('new-week-available');
// One-time toast notification when new data first arrives
const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`; const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`;
if (!localStorage.getItem(storageKey)) { if (!localStorage.getItem(storageKey)) {
localStorage.setItem(storageKey, 'true'); localStorage.setItem(storageKey, 'true');
btnNextWeek.classList.add('new-week-available');
showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info'); showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info');
} }
} else {
btnNextWeek.classList.remove('new-week-available');
}
} else if (badge) { } else if (badge) {
badge.remove(); badge.remove();
@@ -4011,7 +4016,7 @@ body {
// Periodic update check (runs on init + every hour) // Periodic update check (runs on init + every hour)
async function checkForUpdates() { async function checkForUpdates() {
const currentVersion = 'v1.4.20'; const currentVersion = 'v1.4.21';
const devMode = localStorage.getItem('kantine_dev_mode') === 'true'; const devMode = localStorage.getItem('kantine_dev_mode') === 'true';
try { try {
@@ -4052,7 +4057,7 @@ body {
const modal = document.getElementById('version-modal'); const modal = document.getElementById('version-modal');
const container = document.getElementById('version-list-container'); const container = document.getElementById('version-list-container');
const devToggle = document.getElementById('dev-mode-toggle'); const devToggle = document.getElementById('dev-mode-toggle');
const currentVersion = 'v1.4.20'; const currentVersion = 'v1.4.21';
if (!modal) return; if (!modal) return;
modal.classList.remove('hidden'); modal.classList.remove('hidden');

View File

@@ -1647,13 +1647,18 @@
badge.classList.add('has-highlights'); badge.classList.add('has-highlights');
} }
// FR-092: Highlight Next Week Button when new data arrives // FR-092: Glow Next Week button while data exists but no orders placed
if (daysWithOrders === 0) {
btnNextWeek.classList.add('new-week-available');
// One-time toast notification when new data first arrives
const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`; const storageKey = `kantine_notified_nextweek_${nextYear}_${nextWeek}`;
if (!localStorage.getItem(storageKey)) { if (!localStorage.getItem(storageKey)) {
localStorage.setItem(storageKey, 'true'); localStorage.setItem(storageKey, 'true');
btnNextWeek.classList.add('new-week-available');
showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info'); showToast('Neue Menüdaten für nächste Woche verfügbar!', 'info');
} }
} else {
btnNextWeek.classList.remove('new-week-available');
}
} else if (badge) { } else if (badge) {
badge.remove(); badge.remove();

View File

@@ -1 +1 @@
v1.4.20 v1.4.21