ANIME TRACKER

ANİME TRACKER => Duyurular ve Sürümler => Topic started by: hitsumo on Sep 30, 2026, 10:00 AM

Title: 1.1.40
Post by: hitsumo on Sep 30, 2026, 10:00 AM
# Anime Tracker 1.1.40

**Yayın tarihi:** 2026-09-12

Şemalı sürüm; merkez katalogda elle işlem yok. Tek iş: izleme sırası artık bir
**ilişki türü**. "Sıradaki Anime" kutusu ve arkasındaki `next_in_series` kolonu
emekli oldu; sıra, 1.1.38'de gelen ilişkiler tablosunda **Devamı / Öncesi**
olarak tutuluyor. 1.1.36'da kararlaştırılan üç adımlık yolun üçüncü ve son
adımı: zincir adı (1.1.36) → tipli ilişkiler (1.1.38) → sıra tabloya (1.1.40).

## 1. "Devamı" / "Öncesi" — sıra da bir ilişki

1.1.38'den beri iki kaydın bağı iki ayrı yerde duruyordu: alternatif versiyon,
yan hikâye gibi sırasız türler **İlişkiler** panelinde, izleme sırası ise ana
formdaki **Sıradaki Anime** kutusunda. `sequel` o sürümde bilerek ilişki
türlerine konmamıştı — iki kaynak aynı çift hakkında çelişmesin diye. Ama
ikilik kendi bedelini taşıyordu:

- **Sıra yedeğe girmiyordu.** `next_in_series` yerel bir kayıt numarasıydı ve
  her kurulum kayıtlarını farklı numaralandırır; JSON yedeğini geri yüklediğinizde
  zincir bağları sessizce kayboluyordu. İlişkiler ise 1.1.38'den beri kimlik
  dörtlüsüyle (MAL / AniDB / katalog kimliği / başlık) taşınıyor.
- **Aynı soru iki ekrandan soruluyordu.** "Bu ikisinin bağı ne?" sorusunun
  cevabı, hangi kutuya baktığınıza göre değişiyordu.
- **Kolon tekildi.** Bir kaydın tek devamı olabiliyordu; öncülü ise zaten
  birden çok olabiliyordu.

Artık tek yer var. İlişkiler panelinde iki yeni seçenek:

| Seçenek | Anlamı |
| --- | --- |
| **Devamı** (bundan sonra izlenir) | Eski "Sıradaki Anime" kutusuyla birebir aynı şey |
| **Öncesi** (bundan önce izlenir) | Aynı bağ, karşı uçtan girilmiş |

Bir uçtan "Devamı" dediğiniz kayıt, öteki uçta kendiliğinden "Öncesi" olarak
görünür — tıpkı yan hikâye / ana hikâye çiftinde olduğu gibi.

**"Sıra tek yerde" kuralı korundu, yeri değişti.** 1.1.38'in çelişki gerekçesi
bugün de geçerli ve başka bir mekanizmayla sağlanıyor: **bir çift en çok bir
ilişki taşır.** "A, B'nin devamıdır" ile "A, B'nin alternatif versiyonudur"
aynı anda yazılamaz. 1.1.38'in "Sıradaki Anime ile bağlı çifte ilişki
kurulamaz" hatası bu yüzden kalktı — koruduğu durum artık oluşamıyor.

### Mevcut bağlarınız kendiliğinden taşınır

Migration, katalogtaki her "Sıradaki Anime" bağını tek seferde bir **Devamı**
ilişkisine çevirir. Elle yapılacak bir şey yok. İki istisna:

- Bir kaydın kendisini işaret eden bağ (uygulama zaten engelliyordu) atlanır.
- Aynı çift için zaten bir ilişki tanımlıysa bağ atlanır, ilişki kalır. Bu
  yalnızca **uyuyan** bir bağ için mümkündü: zincir adları farklı olduğu için
  zaten izlenmeyen bir bağın üstüne 1.1.38 ilişki girilmesine izin veriyordu.
  Elle yazdığınız tür kazanır.

**Uyuyan bağlar da çevrilir.** Zincir adları farklı olduğu için izlenmeyen bir
bağ silinmez, "Devamı" ilişkisine dönüşür. Seri kronolojisi ve spoiler
koruması onu eskisi gibi **yine izlemez** (zincir adı kuralı aynen geçerli),
ama detay sayfasındaki **İlişkili Animeler** bölümü onu "Devamı" / "Öncesi"
başlığı altında **gösterir** — o bölüm kayıtlı her bağın ham listesidir.
Migration'ın sizin girdiğiniz bir veriyi kendi başına silmesi doğru olmazdı;
istemiyorsanız düzenleme ekranındaki panelden tek tıkla silersiniz.

### Ne değişmedi

- **Zincir adı kuralı (1.1.36) aynen duruyor.** Bir bağ yalnızca iki ucun
  zincir adı aynıysa izlenir. Seri kronolojisinin zincir sekmesi, "Diğer
  Zincir" sekmeleri ve konu spoiler koruması adsız veride 1.1.39 ile **birebir
  aynı** sonucu verir — bu iddia değil ölçüm (aşağıda).
- **Detay sayfasındaki "Sıradaki" kutusu** yerinde. Artık ilişkiler tablosundan
  okunuyor ve zincir adı kuralına uyuyor: başka bir hattaki "devam" bu kutuda
  görünmez, yalnız İlişkili Animeler bölümünde görünür.
- **Merkez kataloga hiçbir şey gitmiyor.** `next_in_series` gitmiyordu,
  ilişkiler de gitmiyor.

### Dallanma

Kolon gidince bir kaydın birden çok devamı olabilir. Yeni bir kural yazılmadı:
öncüller için 1.1.25'ten beri geçerli olan "aynı adlı ilk komşu" kuralı ileri
yöne de uygulandı. Hangi dalın çizileceğine program değil **kurator** karar
verir — zincir adıyla. İzlenmeyen dal, adı varsa yine listeye girer (adlı
zincirde üyelik addan gelir, 1.1.36).

### Yan kazanç: zincir bağları artık yedekte

JSON yedeği "Devamı" ilişkilerini de taşıyor; geri yüklemede karşı uç kimlik
dörtlüsüyle bulunuyor. Aynı yedeği ikinci kez yüklemek yeni satır üretmiyor.
1.1.38 sürümüne ait bir kurulum, 1.1.40'tan gelen bir yedekteki "Devamı"
satırlarını tanımaz ve **atlar** — "diğer" diye yanlış kaydetmez (1.1.38 bunu
baştan böyle yazmıştı).

## 2. Düzenleme ekranı

- "Seri ve İlişkiler" sekmesinden **Sıradaki Anime kutusu kalktı**; sekmede
  seri adı, zincir adı ve İlişkiler paneli duruyor.
- İlişkiler panelindeki hedef listesi artık **sunucuda basılıyor**. 1.1.38'de
  bu liste boş geliyor ve tarayıcı onu Sıradaki Anime kutusundan kopyalıyordu
  (aynı listeyi iki kez basmak sayfayı ikiye katlardı). Kutu gidince sayfadaki
  tek liste bu oldu; kopyalayan JavaScript de kaldırıldı.
- Panel ipucu ve form ipucu yeni duruma göre yazıldı; yardımdaki "Sonraki Seri"
  maddesi "İzleme Sırası (Devamı / Öncesi)" oldu ve nasıl kurulduğunu söylüyor.

## Doğrulama

- Migration, yerel veritabanının bir **kopyasında** (8.113 anime, 14 bağ)
  gerçek MigrationManager mantığıyla koşuldu: 1.1.26 → 1.1.40, 14 migration.
  12 bağ çevrildi; kendini işaret eden 1 bağ ve ilişkisi zaten olan 1 uyuyan
  bağ atlandı — tam beklendiği gibi. Sürüm damgası 1.1.39'a geri alınıp
  **ikinci kez** koşuldu: yeni satır yok, tablo dökümü aynı; üçüncü koşu 0
  migration.
- **Birebir karşılaştırma:** 1.1.36'nın (son değişen) `series_helpers.php`'si
  1.1.39 durumundaki kopya üzerinde, yenisi 1.1.40 durumundaki aynı kopya
  üzerinde koşturuldu — 24 seri için zincir keşfi, çizelge satırları, zincir
  başı ve spoiler öncül listeleri JSON'a döküldü ve `diff` **boş**.
- Yardımcı düzeyinde 31 kontrol: tür sırası, etiketler iki yönden, seçenek
  ayrıştırma, uç yönü (Devamı → from=seçilen, Öncesi → from=düzenlenen), eski
  `chain` hata kodunun genel cümleye düşmesi, "Sıradaki" kartı, uyuyan bağın
  çevrilip izlenmemesi, ilişkisi olan çiftin atlanması, kendini işaret eden
  bağın düşmesi, **dallanma** (iki adsız devam → küçük kimlik; adlı dal atlanır),
  **geçişli döngü** (A→B→...→A) altında yürüyüşlerin sonlanması, spoiler kapısı.
- Uçtan uca (yerel PHP sunucusu + curl): detay sayfasında "Sıradaki" kartı +
  Öncesi/Devamı grupları + "Seri Kronolojisi" düğmesi; spoiler kapısı ("... ve
  zincirdeki 1 kayıt daha henüz izlenmedi"); Devamı ekleme (`exists` reddi),
  Öncesi ekleme (yön doğru), silme; TR ve EN görünüm; anime ekleme ve düzenleme
  (kolon olmadan INSERT/UPDATE); seri kronolojisinde 11 halkalık zincir ve adlı
  zincire bağsız üyenin sona eklenmesi; JSON dışa aktarımda 12 `sequel` satırı
  ve `next_in_series` anahtarının olmaması; silinen bir Devamı bağının yedekten
  **geri gelmesi**, aynı yedeğin ikinci yüklemede satır üretmemesi.
- Tarayıcıda: detay sayfası düşük çözünürlükte görüldü (Sıradaki kartı, Seri
  Kronolojisi düğmesi, Öncesi/Devamı grupları alt alta, düzen bozulmamış).
  Tarayıcı paneli yine kararsızdı; yüksek çözünürlüklü görüntü alınamadı.

## Dosyalar

**Yeni:**

```
files/migration/1.1.40/upgrade.sql   enum'a sequel; bağları çevir; kolonu düşür
```

**Değişen:**

```
files/functions/relation_helpers.php  sequel türü, Öncesi etiketi, seçenekler;
                                      zincir çelişkisi kontrolü kaldırıldı
files/functions/series_helpers.php    yürüyüşler tabloyu okur
                                      (seriesChainNeighbours / seriesChainStep);
                                      validateNextInSeries kaldırıldı
files/edit_anime.php                  Sıradaki Anime kutusu kalktı; hedef listesi
                                      sunucuda; UPDATE'ten kolon çıktı
files/add_anime.php                   INSERT'ten kolon çıktı
files/anime_details.php               "Sıradaki" kartı + kronoloji düğmesi
                                      ilişkilerden
files/add_anime_relation.php          zincir çelişkisi reddi kalktı
files/catalog_import.php              INSERT'ten kolon çıktı
files/list_settings.php               yalnız yorumlar
files/series_timeline.php             yalnız yorumlar
files/set_series_timeline_mode.php    yalnız yorumlar
files/anime_link_search.php           yalnız yorumlar
files/help/help_series.php            yalnız yorumlar
files/js/anime_form.js                seçenek klonlama bloğu kaldırıldı
files/lang/tr.php, files/lang/en.php  4 yeni anahtar, 3 anahtar kaldırıldı,
                                      6 metin güncellendi (parite 1038 = 1038)
files/schema.sql                      kolon/FK/index kaldırıldı; enum
files/version.txt
```

Yeni CSS yok. JS değiştiği için 1.1.24'ün sürüm damgası devreye girer
(`version.txt` ile birlikte yüklenmeli).

## Dağıtım notu

- **Kolon düştüğü için dosyaların tamamı birlikte yüklenmelidir.** Eski bir
  dosya sunucuda kalırsa "Unknown column next_in_series" ile düşer:
  `edit_anime.php` (kayıt), `add_anime.php` (ekleme), `catalog_import.php`
  (**katalog senkronu**), `anime_details.php` (detay),
  `functions/series_helpers.php` (seri sayfası ve spoiler kapısı). Eski
  `functions/relation_helpers.php` kalırsa çökmez ama Devamı satırlarını
  "Diğer İlişki" diye gösterir.
- Migration ilk sayfa açılışında kendiliğinden koşar ve **yeniden
  çalıştırılabilir**: kolonu okumadan önce geri ekler (varsa yok sayılır),
  sonda düşürür; yarım kalan bir koşunun ardından ikinci koşu yeni satır
  üretmez.
- **Merkez katalog sunucusunda yapılacak bir şey yok.** Katalog telinde yeni
  alan yok, elle `ALTER` gerekmiyor, `catalog_server/` altındaki hiçbir dosya
  değişmedi. Merkez sunucunun kendi tablosunda `next_in_series` kolonu varsa
  orada durabilir; hiçbir istemci onu okumuyor.
- **Dağıtım sunucusunda** her zamanki iki adım: yayımlanan `version.txt`
  1.1.40'a çekilmeli ve `updates/1.1.40/anime-tracker-1.1.40.zip` paketi
  yayımlanmalı.
- Self-host kurulumlar aynı migration'ı koşar; ek adım yok.