diff --git a/VERSION b/VERSION index e55dbc5..15ffde3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1190 \ No newline at end of file +1191 \ No newline at end of file diff --git a/backend/static/index.html b/backend/static/index.html index 4b74ae0..ea6a30e 100644 --- a/backend/static/index.html +++ b/backend/static/index.html @@ -86,14 +86,14 @@ Ban Yaro - + - - - - - + + + + + @@ -617,11 +617,11 @@ - - - - - + + + + + @@ -631,7 +631,7 @@ - + diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 4734d37..855d905 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '1190'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '1191'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const APP_VERSION = '1.6.0'; // ← semantische Version, wird bei make release gesetzt window.APP_VER = APP_VER; // global verfügbar für andere Module (z.B. offline-indicator) window.APP_VERSION = APP_VERSION; diff --git a/backend/static/js/map-gl-markers.js b/backend/static/js/map-gl-markers.js index 64972a2..38b9a81 100644 --- a/backend/static/js/map-gl-markers.js +++ b/backend/static/js/map-gl-markers.js @@ -117,7 +117,7 @@ _map.addLayer({ id: 'clsym-' + key, type: 'symbol', source: src, filter: ['has', 'point_count'], layout: { 'text-field': ['get', 'point_count_abbreviated'], - 'text-font': ['Open Sans Regular'], + 'text-font': ['Open Sans Semibold'], 'text-size': ['step', ['get', 'point_count'], 12, 100, 14, 1000, 16], 'text-allow-overlap': true, 'text-ignore-placement': true, }, diff --git a/backend/static/js/map-gl-style.js b/backend/static/js/map-gl-style.js index 67ad3e5..226bfce 100644 --- a/backend/static/js/map-gl-style.js +++ b/backend/static/js/map-gl-style.js @@ -10,20 +10,21 @@ var THEMES = { light: { - bg: '#f4f1ec', land: '#dce8c8', park: '#c8e6b0', water: '#a0c8f0', - road: '#ffffff', roadCasing: '#d9cfc2', building: '#e6ddcf', - buildingLine: '#d4cabb', boundary: '#b08ac0', path: '#c19a86', - label: '#33312e', roadLabel: '#6b6357', waterLabel: '#4a78a8', poiLabel: '#5c5346', labelHalo: 'rgba(255,255,255,0.9)', + bg: '#f2efe8', land: '#cbe3a8', park: '#aedd88', water: '#7fbbe8', + road: '#ffffff', roadCasing: '#cdbfa9', building: '#e6d8bf', + buildingLine: '#cdbb9c', boundary: '#a06ec0', path: '#b08160', rail: '#9a9aa2', + label: '#2a2823', roadLabel: '#574f43', waterLabel: '#2f6aa0', poiLabel: '#4a4236', labelHalo: 'rgba(255,255,255,0.95)', }, dark: { - bg: '#1a1d21', land: '#222820', park: '#27331f', water: '#16242e', - road: '#3a4046', roadCasing: '#23282d', building: '#262b30', - buildingLine: '#31373d', boundary: '#7d5a8c', path: '#5a4f47', - label: '#d6d9dd', roadLabel: '#9aa0a6', waterLabel: '#6fa0cc', poiLabel: '#b7ad9e', labelHalo: 'rgba(0,0,0,0.8)', + bg: '#1a1d21', land: '#252e1d', park: '#2c3c1f', water: '#163242', + road: '#444a52', roadCasing: '#23282d', building: '#2a2f35', + buildingLine: '#373d44', boundary: '#8a63a0', path: '#6b5d52', rail: '#5e5e68', + label: '#e2e5e9', roadLabel: '#a6acb3', waterLabel: '#7db0dd', poiLabel: '#c3b9a8', labelHalo: 'rgba(0,0,0,0.85)', }, }; var FONT = ['Open Sans Regular']; + var FONT_BOLD = ['Open Sans Semibold']; // Liefert ein MapLibre-Style-JSON (Version 8) ohne glyphs/sprite. function build(opts) { @@ -38,9 +39,9 @@ layers: [ { id: 'bg', type: 'background', paint: { 'background-color': t.bg } }, { id: 'landcover', type: 'fill', source: 'by', 'source-layer': 'landcover', - paint: { 'fill-color': t.land, 'fill-opacity': 0.55 } }, + paint: { 'fill-color': t.land, 'fill-opacity': 0.8 } }, { id: 'park', type: 'fill', source: 'by', 'source-layer': 'park', - paint: { 'fill-color': t.park, 'fill-opacity': 0.5 } }, + paint: { 'fill-color': t.park, 'fill-opacity': 0.75 } }, { id: 'water', type: 'fill', source: 'by', 'source-layer': 'water', paint: { 'fill-color': t.water } }, { id: 'waterway', type: 'line', source: 'by', 'source-layer': 'waterway', @@ -65,6 +66,14 @@ 6, ['match', ['get', 'class'], ['motorway', 'trunk'], 1.4, 0.4], 12, ['match', ['get', 'class'], ['motorway', 'trunk', 'primary'], 2.4, 1.1], 16, ['match', ['get', 'class'], ['motorway', 'trunk'], 6, ['primary', 'secondary'], 4.5, 3]] } }, + // Bahntrassen: Basis-Linie + Schwellen (dicke gestrichelte Überlagerung). + { id: 'railway', type: 'line', source: 'by', 'source-layer': 'transportation', minzoom: 11, + filter: ['in', ['get', 'class'], ['literal', ['rail', 'transit']]], + paint: { 'line-color': t.rail, 'line-width': ['interpolate', ['linear'], ['zoom'], 11, 0.8, 16, 2] } }, + { id: 'railway-ties', type: 'line', source: 'by', 'source-layer': 'transportation', minzoom: 13, + filter: ['in', ['get', 'class'], ['literal', ['rail', 'transit']]], + paint: { 'line-color': t.rail, 'line-dasharray': [0.35, 3], + 'line-width': ['interpolate', ['linear'], ['zoom'], 13, 3, 16, 6] } }, { id: 'buildings', type: 'fill', source: 'by', 'source-layer': 'building', minzoom: 13, paint: { 'fill-color': t.building, 'fill-outline-color': t.buildingLine } }, @@ -77,31 +86,31 @@ filter: ['in', ['get', 'class'], ['literal', ['city', 'town', 'village', 'suburb', 'hamlet', 'neighbourhood']]], layout: { 'text-field': ['coalesce', ['get', 'name:de'], ['get', 'name']], - 'text-font': FONT, 'text-max-width': 8, 'text-anchor': 'center', + 'text-font': FONT_BOLD, 'text-max-width': 8, 'text-anchor': 'center', 'text-size': ['interpolate', ['linear'], ['zoom'], 4, 10, 8, 12, 12, 14, 16, 17], }, paint: { 'text-color': t.label, 'text-halo-color': t.labelHalo, 'text-halo-width': 1.6 } }, { id: 'water-labels', type: 'symbol', source: 'by', 'source-layer': 'water_name', - layout: { 'text-field': ['coalesce', ['get', 'name:de'], ['get', 'name']], 'text-font': FONT, 'text-size': 12, 'text-max-width': 6 }, + layout: { 'text-field': ['coalesce', ['get', 'name:de'], ['get', 'name']], 'text-font': FONT_BOLD, 'text-size': 12, 'text-max-width': 6 }, paint: { 'text-color': t.waterLabel, 'text-halo-color': t.labelHalo, 'text-halo-width': 1.2 } }, { id: 'street-labels', type: 'symbol', source: 'by', 'source-layer': 'transportation_name', minzoom: 14, - layout: { 'text-field': ['coalesce', ['get', 'name:de'], ['get', 'name']], 'text-font': FONT, 'symbol-placement': 'line', 'text-size': 11 }, + layout: { 'text-field': ['coalesce', ['get', 'name:de'], ['get', 'name']], 'text-font': FONT_BOLD, 'symbol-placement': 'line', 'text-size': 11 }, paint: { 'text-color': t.roadLabel, 'text-halo-color': t.labelHalo, 'text-halo-width': 1.2 } }, // POI-Namen (Kinderspielplatz, Schule, …) ab Z15 — Kollisionserkennung verhindert Überladung. { id: 'poi-labels', type: 'symbol', source: 'by', 'source-layer': 'poi', minzoom: 15, layout: { 'text-field': ['coalesce', ['get', 'name:de'], ['get', 'name']], - 'text-font': FONT, 'text-size': 11, 'text-max-width': 8, + 'text-font': FONT_BOLD, 'text-size': 11, 'text-max-width': 8, 'text-anchor': 'top', 'text-offset': [0, 0.4], 'symbol-sort-key': ['get', 'rank'], }, paint: { 'text-color': t.poiLabel, 'text-halo-color': t.labelHalo, 'text-halo-width': 1.2 } }, // Hausnummern ab Z17 (niedrigste Priorität). { id: 'housenumbers', type: 'symbol', source: 'by', 'source-layer': 'housenumber', minzoom: 17, - layout: { 'text-field': ['get', 'housenumber'], 'text-font': FONT, 'text-size': 9.5 }, + layout: { 'text-field': ['get', 'housenumber'], 'text-font': FONT_BOLD, 'text-size': 9.5 }, paint: { 'text-color': t.roadLabel, 'text-halo-color': t.labelHalo, 'text-halo-width': 1 } }, ], }; diff --git a/backend/static/landing.html b/backend/static/landing.html index a60ffcd..998e18a 100644 --- a/backend/static/landing.html +++ b/backend/static/landing.html @@ -4,7 +4,7 @@ - + Ban Yaro — Die Hunde-App für Deutschland, Österreich & Schweiz diff --git a/backend/static/sw.js b/backend/static/sw.js index 8704b70..07d7cdf 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -4,7 +4,7 @@ ============================================================ */ // ← EINZIGE Stelle für die Version — STATIC_ASSETS und CACHE_VERSION leiten sich ab -const VER = '1190'; +const VER = '1191'; const CACHE_VERSION = `by-v${VER}`; const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten