ANIME TRACKER

ANIME TRACKER => Announcements & Releases => Topic started by: hitsumo on Jul 16, 2026, 05:45 PM

Title: v1.1.13
Post by: hitsumo on Jul 16, 2026, 05:45 PM
# Anime Tracker 1.1.13

**Release date:** 2026-07-16

## New: Personal list tab

- **The main list page now has "General List" / "Personal List" tabs.** A
  slim tab bar sits between the pagination bar and the list table.
  - **General List** - the whole catalog (the previous default behaviour;
    nothing changed).
  - **Personal List** - only the anime you have set a watch status on. That
    is, every status EXCEPT "Not Selected": Watched, Watching, Plan to Watch,
    On Hold, Dropped.
- **An anime enters your personal list the moment you pick a status.**
  Setting an anime's status to anything other than "Not Selected" (via the
  in-list +/- controls or the details page) makes it appear on the Personal
  List tab. Setting it back to "Not Selected" removes it.
- **The tab keeps your current search, filters and sort.** While on the
  Personal List tab, the genre / status / letter / emotion filters and search
  all work as usual, scoped to anime with a selected status. Switching tabs
  returns you to the first page.
- **The tabs only show for users who have a personal list.** They are always
  visible on your own install (self-host). In multi-user mode a logged-out
  visitor has no personal list, so the tab bar is not shown to them.

## New: Default list preference

- **The List Settings page gains a "Default List" selector.** It chooses which
  tab is selected when the anime list page opens: **General List** (the previous
  behaviour) or **Personal List**. It is a dropdown, like the interface-language
  selector, and saves as soon as you pick a value.
- **It is per-user.** The preference affects only you (stored in the `user_pref`
  table) and never touches other users.
- **Clicking a tab overrides the preference.** Even if your default is Personal
  List, clicking the "General List" tab switches you for that visit; the next
  time you open the page your default is applied again.

## New: List Settings tabs

- **The List Settings page is now split into tabs.** There are three:
  - **Import/Export** - Export List, Import List, Import MyAnimeList List,
    Import AniList List.
  - **General Settings** - Interface Language, Title Language, Default List,
    Adult Content.
  - **Management Settings** - Genres, Tags, Catalog Sync, Episode Count Sync,
    Update. This tab (both its button and panel) is shown only to
    **moderators/admins** and the **self-host owner**; a regular online member
    never sees it (every section inside was already behind a capability gate;
    now the tab itself is hidden too).
  - **Cleanup** - Clear List. Moved to its own tab because it is a destructive
    action, and shown only to **admins** and the **self-host owner** (button and
    panel gated by `canAdmin`; a regular online member and moderators do not see
    it).
- **Switching tabs is instant, with no page reload.** The open tab is
  remembered in the browser; after an import or a sync reloads the page, the
  same tab stays open.
- **Nothing is lost with JavaScript off.** The tab bar is hidden and all
  sections stack as before (progressive enhancement) - no section was moved,
  only grouped.

## How it works (technical)

- The tab is selected with the `?view=personal` URL parameter and is a pure
  query-scope view: it adds `AND ua.watch_status IS NOT NULL` to the main
  list's existing `user_anime` LEFT JOIN. No new table, column or setting is
  needed.
- An invalid or unauthorized `view` value silently falls back to "General
  List" (including for anonymous online visitors), so it cannot be forced via
  the parameter.
- The default-list preference is stored in the per-user `user_pref` key
  `list_view_default` ('all' / 'personal') and written by a new CSRF-protected
  POST endpoint `set_list_view_pref.php`. An explicit `?view=` in the URL (a tab
  click) always overrides the preference, so the tabs always send an explicit
  view and the preserved sort/filter/search links carry the view only when it
  differs from the preference.

## Schema / migration

- `migration/1.1.13/upgrade.sql` only advances the version to 1.1.13; there is
  **no schema change** (no SQL statement to run). The central catalog is not
  affected and requires no manual step.

## Changed / new files

- index.php (General/Personal tab bar, view scope, default-preference cascade,
  tab preserved across filter/search/sort/pagination links, tab CSS)
- list_settings.php (Default List selector section + Import/Export & General
  tabs: tab bar, panel wrappers, tab CSS and JS switching)
- set_list_view_pref.php (new - CSRF-protected preference endpoint)
- lang/tr.php, lang/en.php (index.tab.* + list_settings.section.list_view.* +
  list_settings.tab.*)
- migration/1.1.13/upgrade.sql (new)
- version.txt