Skip to content

0.1.3

Choose a tag to compare

@o1xhack o1xhack released this 10 May 05:31
· 100 commits to main since this release

User-reported bug fixes (0.1.2 → 0.1.3)

🌐 Most titles came back as English even with Metadata language = zh-CN

Root cause (took some research to nail): TMDB moderators sometimes lock the title field on a zh-CN translation row to blank — especially for movies without an official mainland release. The API does not auto-fall-back to other Chinese variants when this happens; it returns the English original. The TMDB website does fall back, which is why https://www.themoviedb.org/movie/772?language=zh-CN shows "小鬼当家2" but the API call returned "Home Alone 2".

Fix: switched the TMDB request to ?language=X&append_to_response=translations and added a client-side picker that walks the translations array. For zh-CN we now try CN → TW → HK → SG → any other zh entry until a non-empty title is found. Same pattern Jellyfin / Radarr / tinyMediaManager all use.

After upgrading: re-sync to pull the corrected titles.

🖼️ Posters mostly missing after enabling Metadata language

Same root cause as above — TMDB returns poster_path: null for movies without a poster tagged in the requested language. Fix: when a localized request returns null, the plugin now retries the same call without the language parameter to get the default poster. One extra call only for items missing a localized poster; most items don't pay this cost.

⏳ Sync felt frozen on large libraries

Replaced the Promise.all burst (1000+ simultaneous TMDB requests) with a bounded-concurrency pool (5 in flight). What changed:

  • Live progress in the status bar — ⟳ Loading metadata: 200/1231 updates as items complete
  • Massively less rate-limit risk — previously the burst could saturate TMDB's 50 req/s bucket and silently drop posters / translations to swallowed 429s. This is likely a contributing factor to the missing-poster reports
  • Same treatment applied to the Trakt /translations fallback path

📊 Obsidian Bases support — already works, just needed docs

Your trakt_poster_url field is out-of-the-box compatible with Obsidian Bases (1.9.3+). No code change needed — added a "View in Bases" section to all 9 README languages explaining:

  • Card view: set Image property to trakt_poster_url
  • Table view (1.9.4+): formula column image(note.trakt_poster_url)

📝 Title / Tagline template confusion

Clarified in the MANUAL (4 languages) that:

  • There's no separate "Title" field — title is the filename (controlled by Filename template) and {{title}} variable for the body. Add # {{title}} to your template to show it as a heading
  • Tagline format is fully editable in the Movie template directly (> {{tagline}} is just one option)

Tests

132/132 smoke tests passing — 15 new cases covering pickBestTranslation (blank-title fallback, main-response trust, no-translation null, TV name vs title) and processWithConcurrency (bounded in-flight count, progress callback per completion).

Coexistence note

If you're upgrading from 0.1.2 with existing notes, just re-sync — the plugin will pick up corrected Chinese titles and update each note's frontmatter in place. Your hand-written body content is not touched.