Compare commits

..

6 Commits

Author SHA1 Message Date
Kantine Wrapper
7ce82ce82e chore: update build artifacts for v1.4.24 2026-02-26 08:58:38 +01:00
Kantine Wrapper
ce12684193 fix: push main branch to GitHub in release script 2026-02-26 08:58:25 +01:00
Kantine Wrapper
6cee38e99f chore: update build artifacts for v1.4.24 2026-02-26 08:35:15 +01:00
Kantine Wrapper
88758427fd fix: favicon base64 encoding for Chrome/Windows compatibility (v1.4.24) 2026-02-26 08:35:09 +01:00
Kantine Wrapper
23ed867ac4 chore: update build artifacts for v1.4.23 2026-02-26 08:25:14 +01:00
Kantine Wrapper
f8b1334a9a fix: inject favicon into page when bookmarklet runs (v1.4.23) 2026-02-26 08:25:07 +01:00
8 changed files with 51 additions and 14 deletions

View File

@@ -1,3 +1,9 @@
## v1.4.24
- 🐛 **Bugfix**: Favicon-Encoding korrigiert `encodeURIComponent` verursachte doppeltes Encoding der Farbcodes (`%23``%2523`). Auf Base64 umgestellt, funktioniert nun auch unter Chrome/Windows.
## v1.4.23
- 🐛 **Bugfix**: Favicon wird jetzt beim Ausführen des Bookmarklets in die Seite injiziert (ersetzt das Bessa-Favicon im Tab). Chrome cached das Icon und übernimmt es anschließend auch in die Lesezeichenleiste.
## v1.4.22
- 📝 **Docs**: Vollständiger Dokumentations-Audit: README.md um fehlende Dateien (favicon.svg, release.sh, Tests) und Features (Bestellhistorie, Version-Menü, Cache leeren, Favicon) ergänzt. REQUIREMENTS.md: Doppelte IDs (FR-090/091) behoben, FR-092 an dynamische Glow-Logik angepasst, FR-116 (Cache leeren) und FR-117 (Favicon) hinzugefügt, NFR-008 um DOM-Tests erweitert.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

20
dist/install.html vendored

File diff suppressed because one or more lines are too long

View File

@@ -2000,6 +2000,17 @@ body {
// Replace entire page content
document.title = 'Kantine Weekly Menu';
// Inject custom favicon (triangle + fork & knife)
if (document.querySelectorAll) {
document.querySelectorAll('link[rel*="icon"]').forEach(el => el.remove());
}
const favicon = document.createElement('link');
favicon.rel = 'icon';
favicon.type = 'image/svg+xml';
// Pre-encoded Base64 of the SVG favicon (triangle + fork & knife)
favicon.href = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiwxMCkiPjxyZWN0IHg9IjEiIHk9IjAiIHdpZHRoPSIxLjgiIGhlaWdodD0iMTYiIHJ4PSIuOSIgZmlsbD0iIzMzMyIvPjxyZWN0IHg9IjQuNiIgeT0iMCIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIxNiIgcng9Ii45IiBmaWxsPSIjMzMzIi8+PHJlY3QgeD0iOC4yIiB5PSIwIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjE2IiByeD0iLjkiIGZpbGw9IiMzMzMiLz48cmVjdCB4PSIxIiB5PSIxNCIgd2lkdGg9IjkiIGhlaWdodD0iMy41IiByeD0iMS41IiBmaWxsPSIjMzMzIi8+PHJlY3QgeD0iMy41IiB5PSIxNi41IiB3aWR0aD0iNCIgaGVpZ2h0PSIyNCIgcng9IjIiIGZpbGw9IiMzMzMiLz48L2c+PHBvbHlnb24gcG9pbnRzPSIzMiw4IDQ3LDQ4IDE3LDQ4IiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwLDEwKSI+PHBhdGggZD0iTTMsMEMzLDAsMywwLDMsMEwzLDE3TDEwLDE0QzEwLDYsNywwLDMsMFoiIGZpbGw9IiMzMzMiLz48cmVjdCB4PSIxLjUiIHk9IjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjE4IiByeD0iMSIgZmlsbD0iIzMzMyIvPjxyZWN0IHg9IjEuNSIgeT0iMTYuNSIgd2lkdGg9IjguNSIgaGVpZ2h0PSIzLjUiIHJ4PSIxLjIiIGZpbGw9IiMzMzMiLz48cmVjdCB4PSIzLjUiIHk9IjE5IiB3aWR0aD0iNCIgaGVpZ2h0PSIyMiIgcng9IjIiIGZpbGw9IiMzMzMiLz48L2c+PC9zdmc+';
document.head.appendChild(favicon);
// Inject Google Fonts if not already present
if (!document.querySelector('link[href*="fonts.googleapis.com/css2?family=Inter"]')) {
const fontLink = document.createElement('link');
@@ -2021,7 +2032,7 @@ body {
<div class="brand">
<span class="material-icons-round logo-icon">restaurant_menu</span>
<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.22</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.24</small></h1>
<div id="last-updated-subtitle" class="subtitle"></div>
</div>
<div class="nav-group" style="margin-left: 1rem;">
@@ -2163,7 +2174,7 @@ body {
</div>
<div class="modal-body">
<div style="margin-bottom: 1rem;">
<strong>Aktuell:</strong> <span id="version-current">v1.4.22</span>
<strong>Aktuell:</strong> <span id="version-current">v1.4.24</span>
</div>
<div class="dev-toggle">
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;">
@@ -4016,7 +4027,7 @@ body {
// Periodic update check (runs on init + every hour)
async function checkForUpdates() {
const currentVersion = 'v1.4.22';
const currentVersion = 'v1.4.24';
const devMode = localStorage.getItem('kantine_dev_mode') === 'true';
try {
@@ -4057,7 +4068,7 @@ body {
const modal = document.getElementById('version-modal');
const container = document.getElementById('version-list-container');
const devToggle = document.getElementById('dev-mode-toggle');
const currentVersion = 'v1.4.22';
const currentVersion = 'v1.4.24';
if (!modal) return;
modal.classList.remove('hidden');

View File

@@ -50,6 +50,17 @@
// Replace entire page content
document.title = 'Kantine Weekly Menu';
// Inject custom favicon (triangle + fork & knife)
if (document.querySelectorAll) {
document.querySelectorAll('link[rel*="icon"]').forEach(el => el.remove());
}
const favicon = document.createElement('link');
favicon.rel = 'icon';
favicon.type = 'image/svg+xml';
// Pre-encoded Base64 of the SVG favicon (triangle + fork & knife)
favicon.href = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiwxMCkiPjxyZWN0IHg9IjEiIHk9IjAiIHdpZHRoPSIxLjgiIGhlaWdodD0iMTYiIHJ4PSIuOSIgZmlsbD0iIzMzMyIvPjxyZWN0IHg9IjQuNiIgeT0iMCIgd2lkdGg9IjEuOCIgaGVpZ2h0PSIxNiIgcng9Ii45IiBmaWxsPSIjMzMzIi8+PHJlY3QgeD0iOC4yIiB5PSIwIiB3aWR0aD0iMS44IiBoZWlnaHQ9IjE2IiByeD0iLjkiIGZpbGw9IiMzMzMiLz48cmVjdCB4PSIxIiB5PSIxNCIgd2lkdGg9IjkiIGhlaWdodD0iMy41IiByeD0iMS41IiBmaWxsPSIjMzMzIi8+PHJlY3QgeD0iMy41IiB5PSIxNi41IiB3aWR0aD0iNCIgaGVpZ2h0PSIyNCIgcng9IjIiIGZpbGw9IiMzMzMiLz48L2c+PHBvbHlnb24gcG9pbnRzPSIzMiw4IDQ3LDQ4IDE3LDQ4IiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwLDEwKSI+PHBhdGggZD0iTTMsMEMzLDAsMywwLDMsMEwzLDE3TDEwLDE0QzEwLDYsNywwLDMsMFoiIGZpbGw9IiMzMzMiLz48cmVjdCB4PSIxLjUiIHk9IjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjE4IiByeD0iMSIgZmlsbD0iIzMzMyIvPjxyZWN0IHg9IjEuNSIgeT0iMTYuNSIgd2lkdGg9IjguNSIgaGVpZ2h0PSIzLjUiIHJ4PSIxLjIiIGZpbGw9IiMzMzMiLz48cmVjdCB4PSIzLjUiIHk9IjE5IiB3aWR0aD0iNCIgaGVpZ2h0PSIyMiIgcng9IjIiIGZpbGw9IiMzMzMiLz48L2c+PC9zdmc+';
document.head.appendChild(favicon);
// Inject Google Fonts if not already present
if (!document.querySelector('link[href*="fonts.googleapis.com/css2?family=Inter"]')) {
const fontLink = document.createElement('link');

View File

@@ -49,8 +49,9 @@ echo "=== Pushing to remotes ==="
git push origin HEAD
git push origin --force tag "$VERSION"
# If a remote named 'github' exists, push tags there too
# If a remote named 'github' exists, push branch and tags there too
if git remote | grep -q "^github$"; then
git push github HEAD
git push github --force tag "$VERSION"
fi

View File

@@ -1 +1 @@
v1.4.22
v1.4.24