ANIME TRACKER

ANIME TRACKER => Announcements & Releases => Topic started by: hitsumo on Oct 05, 2026, 12:37 PM

Title: 1.1.49
Post by: hitsumo on Oct 05, 2026, 12:37 PM
# Anime Tracker 1.1.49

**Release date:** 2026-09-24

One job: **a backup for the import blacklist.** The blacklist page gained
"Export" and "Import" buttons; the list can now be backed up as a
separate file and restored. No schema change (empty migration); nothing
to do on the central catalog. Affects multi-user (online) mode only.

## 1. Why

The import blacklist (1.1.35) holds the ids of anime deleted from the
catalog; MAL and AniList imports do not reopen them as catalog
suggestions. But the list lived **only in the application database**:

- it is not sent to the central catalog (by design),
- it is not part of the JSON backup in List Settings,
- the blacklist page had no export or import either.

Result: returning to a clean install from a JSON backup started the list
empty, and the first import re-suggested every anime that had been
deleted on purpose — exactly the problem 1.1.35 closed. Only a database
backup saved the list.

## 2. "Backup" box on the blacklist page

Admin dashboard → **Import Blacklist** (moderators and above), at the
bottom of the page:

- **Export** — downloads the whole list as
  `import_blacklist_YYYY-MM-DD.json`. Each entry: MAL and AniDB id,
  title, entry type (Deleted / Manual), note and the **original date**
  (the list is also the deletion ledger; "when did I delete this" is
  kept). The user who added it is not carried — a user id is
  install-specific; on restored entries the adder is the moderator who
  loaded the file.
- **Import** — only **adds**. Entries already on the list are skipped,
  nothing is removed or changed; loading the same file twice is
  harmless. The result line says "N entries added, M were already on the
  list", and reports unreadable rows separately. Entries are written in
  one go: if something fails, none are written, so no half-restored list
  is left behind.

**Protection against the wrong file:** the backup carries a marker
naming its own kind. The list JSON backup (List Settings) or any other
file is refused on this page — a member's anime list cannot be turned
into blacklist entries by accident.

**How duplicates are told apart:** entries with ids match on MAL /
AniDB id. A file entry that shares only **one** of its ids with an
existing entry counts as "already on the list"; the existing entry keeps
blocking that id. Id-less deletion records (they block nothing, they are
only the ledger) match on title + date, so re-importing does not double
the ledger.

## 3. Why not inside the list JSON backup

Two routes were considered; a separate file was chosen:

- The list JSON backup is **a bare array of anime**. Putting the
  blacklist in it meant changing the file's shape, and 1.1.48 and older
  would reject new backups as "invalid format".
- The list backup is **a member's personal file**; the blacklist is
  catalog policy and concerns moderators only. It must not enter
  members' backups, nor change when a member loads one.

## 4. Help

The blacklist section of the import help was updated: the old "not part
of the JSON backup, lives only in the database backup" sentence now
explains how to take and load the backup, and that **when returning to a
clean install this file must be loaded before the first import**.

## Files

**New:**

```
files/migration/1.1.49/upgrade.sql        empty (version stamp)
```

**Changed:**

```
files/functions/blacklist_helpers.php     blacklist_export_rows(), blacklist_import_rows(), BLACKLIST_BACKUP_FORMAT
files/admin/admin_blacklist.php           export / import actions, "Backup" box
files/lang/admin_tr.php                   +10 keys (admin_blacklist.backup.*, btn.export/import, error/result texts)
files/lang/admin_en.php                   same
files/lang/tr.php                         help.blacklist.where text
files/lang/en.php                         same
files/version.txt
```

Language file parity: user 1149 = 1149, admin 321 = 321.

## Deployment note

- **Nothing to do on the central catalog.** The table exists since
  1.1.35; no column was added.
- The migration is empty; it moves the version stamp on the first page
  load.
- On a single-user install the blacklist is not active anyway; the
  backup box does not appear there.
- **On the distribution server** the usual two steps: the published
  `version.txt` goes to 1.1.49 and the
  `updates/1.1.49/anime-tracker-1.1.49.zip` package is published.