# YachtMemory Release 1.3.4 – Live Track Custom Range Fix

Finaler Fix für die Kalenderjahresauswahl.

## Ursache

`anchorages_track.php` akzeptierte nur:

- `24h`
- `1m`
- `1y`

Jeder unbekannte Wert fiel auf `24h` zurück. Deshalb wurde bei

```text
range=custom&from=2025-01-01&to=2025-12-31
```

der aktuelle 24h-Track in Licata angezeigt.

## Lösung

Die API unterstützt jetzt zusätzlich:

```text
range=custom
from=YYYY-MM-DD
to=YYYY-MM-DD
```

Der Zeitraum wird serverseitig validiert.

`to=2025-12-31` umfasst den kompletten 31.12.2025, weil intern mit einer
exklusiven Obergrenze `2026-01-01 00:00:00` gearbeitet wird.

Für Track und Ankerplätze wird exakt derselbe Custom-Zeitraum verwendet.

Die bisherigen Bereiche `24h`, `1m` und `1y` bleiben unverändert.

Die Kalenderjahresauswahl aus Release 1.3.3 bleibt vollständig enthalten.

## Installation

```bash
cd /var/www/app.yachtmemory.net

mkdir -p backup/release-1.3.4-track-custom-range

cp api/public/anchorages_track.php \
  backup/release-1.3.4-track-custom-range/anchorages_track.php

cp api/public/track_calendar_years.php \
  backup/release-1.3.4-track-custom-range/track_calendar_years.php 2>/dev/null || true

cp -a public_widgets/anchorages-track \
  backup/release-1.3.4-track-custom-range/

unzip -o yachtmemory_release_1_3_4_track_custom_range_fix.zip

sudo cp \
  yachtmemory_release_1_3_4_track_custom_range_fix/api/public/anchorages_track.php \
  api/public/anchorages_track.php

sudo cp \
  yachtmemory_release_1_3_4_track_custom_range_fix/api/public/track_calendar_years.php \
  api/public/track_calendar_years.php

sudo cp -a \
  yachtmemory_release_1_3_4_track_custom_range_fix/public_widgets/anchorages-track/. \
  public_widgets/anchorages-track/
```

## Syntaxprüfung

```bash
php -l api/public/anchorages_track.php
php -l api/public/track_calendar_years.php
php -l public_widgets/anchorages-track/index.php
node --check public_widgets/anchorages-track/widget.js
```

## Entscheidend: API-Test 2025

```bash
curl -sS \
'https://app.yachtmemory.net/api/public/anchorages_track.php?vessel=silent_sea&lang=de&range=custom&from=2025-01-01&to=2025-12-31' \
| jq '{
    success,
    range,
    from,
    to,
    step,
    track_count: (.track | length),
    anchorages_count,
    first: (.track[0] // null),
    last: (.track[-1] // null)
}'
```

Erwartet:

```text
range: "custom"
from: "2025-01-01"
to: "2025-12-31"
```

`first.time` und `last.time` müssen innerhalb 2025 liegen.

## Referenztest 1 Jahr

```bash
curl -sS \
'https://app.yachtmemory.net/api/public/anchorages_track.php?vessel=silent_sea&lang=de&range=1y' \
| jq '{
    success,
    range,
    track_count: (.track | length),
    first: (.track[0] // null),
    last: (.track[-1] // null)
}'
```

Danach Hard Reload und im Live-Track das Kalenderjahr 2025 wählen.
