Skip to content

v26.8.13

Latest

Choose a tag to compare

@dannyvfilms dannyvfilms released this 14 Aug 02:25
· 56 commits to latest since this release
bc11aab
ChatGPT Image Aug 13, 2026 at 09_19_17 PM

Changes since last release:

  • The first-run experience is now an actual onboarding flow - New installations can move through media-type selection, service setup, scrobbling, and import configuration in a full-screen wizard instead of being dropped into a settings maze with a small flashlight. Services can be connected inline, the steps are ordered more clearly, TV Seasons are kept out of the media-type grid, and the first-run username and migration paths received several defensive fixes.
  • Import Data is cleaner and much safer to operate - Import activity now has clearer task-state visibility, provenance is recorded for more backfills, and long-running imports can be cancelled. Insert-only imports can be rolled back, music history backfills can be reverted from their history diff, media can be bulk-deleted by import source, and CSV backup/restore preserves tags and large episode libraries more reliably. Trakt private notes and Yamtrack episode-history dates are also carried through the relevant import paths.
  • Preferences and settings were reorganized - The Preferences layout and copy were redesigned, metadata language is user-configurable, cache-specific clear controls were added to Advanced settings, and several light-theme and mobile-layout problems were corrected. The grid/table controls now live in a clearer settings menu with Share View available where appropriate.
  • A large collection of user-reported bugs was removed - This includes broken episode actions, stale list grids, list-removal crashes, duplicate TV and season records across providers, incorrect Plex webhook matches, stale history after deletion, incorrect progress for out-of-order episodes, broken season and anime tracking routes, bad episode release dates, empty Trakt Discover results, and several provider-specific import failures. The application is now less likely to make one small metadata disagreement into a family event.
  • Performance work moved from aspiration to infrastructure - First-run context work is deferred, Home avoids repeated collection scans, the history API has a faster cache path, Audiobookshelf recurring sync is faster, TVDB/TMDB lookups reuse cached data, season pages batch translations and episode creation, and repeated N+1 requests were removed from several metadata paths. These changes are intended to produce measurable improvements, although the exact result will still depend on library size, provider latency, and deployment resources.
  • Deployment and data-recovery foundations are stronger - SQLite paths and Redis service URLs are configurable, startup repair and integrity checks are bounded and more atomic, orphaned relationship data can be recovered without blocking migrations, Docker publishing is serialized and smoke-tested, dependencies now have a locked uv path, and CI is better separated between ordinary, provider-dependent, and documentation-only checks.
  • The project has a community home beyond the issue tracker - Floppy now has a Discord. I’ll try to stay active there, but GitHub currently has most of my attention, so help from contributors with answering questions and welcoming users will be genuinely useful. The project has acquired a support surface; it has not yet acquired a second maintainer by administrative decree.

What's Changed

  • Fix FK IntegrityError when re-importing Trakt seasons in overwrite mode by @dannyvfilms in #538
  • Fix light/dark toggle overlapping media type filter on mobile by @dannyvfilms in #540
  • Replace grid/table toggle with a settings gear menu, add Share View by @dannyvfilms in #542
  • Fix Sonarr import crash from Item rows split across library buckets by @nakenyon in #543
  • Fix manual Plex resync skipping watched-status updates for existing episodes by @dannyvfilms in #545
  • Fix container serving 502s: logs directory is root-owned so gunicorn can't start by @nakenyon in #525
  • Fix inverted Celery priorities and cut redundant calendar work by @nakenyon in #526
  • Fix conflicting migration leaf nodes (0147 vs 0148) by @dannyvfilms in #549
  • Fix live playback card linking to episode-level TMDB ID (#547) by @dannyvfilms in #550
  • Preserve watch history when merging duplicate Item rows (fixes data loss in 0148) by @nakenyon in #546
  • Serialize Docker image publishes by @dannyvfilms in #563
  • Fix Home row sort control: full page reload and stuck descending arrow by @daften in #583
  • Add per-cache clear buttons to Settings > Advanced by @daften in #589
  • Add user-configurable metadata language preference by @dannyvfilms in #500
  • Fix App Tests CI failures from missing TVDB test settings by @dannyvfilms in #626
  • Require specific model name, not just tool name, in AI disclosure by @dannyvfilms in #627
  • Fix CSV export dropping episodes on large libraries by @dannyvfilms in #629
  • Fix anime season pages not finding TV-identity-linked tracking (#623) by @dannyvfilms in #630
  • Share one CollectionEntry scan per Home page build (#621) by @dannyvfilms in #631
  • Merge duplicate TV/season Items across TMDB/TVDB providers by @dannyvfilms in #632
  • Fix CI-only test failures caused by TVDB_API_KEY not being set by @dannyvfilms in #633
  • [BUG] Allow the service worker to load before login by @ryan-winkler in #612
  • docs: add SECURITY.md policy by @ryan-winkler in #644
  • Stabilize Playwright integration tests (browser context + TMDB mocking) by @dannyvfilms in #628
  • docs: establish semantic upstream resolution baseline by @ryan-winkler in #651
  • ci: skip app tests for documentation-only PRs by @ryan-winkler in #654
  • perf: defer first-run context query by @ryan-winkler in #653
  • Dedupe cross-provider episode duplicates on the Calendar (#639) by @dannyvfilms in #677
  • test(providers): update Hardcover call expectation by @ryan-winkler in #667
  • ci: smoke test built Docker image before publishing by @ryan-winkler in #656
  • Fix query-budget and lists Playwright flakes by @dannyvfilms in #682
  • fix(import): preserve Yamtrack episode history date by @ryan-winkler in #673
  • fix(deps): update aiohttp security patch by @ryan-winkler in #671
  • build: add uv dependency lock foundation by @ryan-winkler in #663
  • ci: run checks from locked uv environment by @ryan-winkler in #665
  • build: cut over locked uv consumers by @ryan-winkler in #672
  • fix: restrict modal season paths to season media by @ryan-winkler in #616
  • Persist episode release_datetime when viewing a season page by @daften in #686
  • Add TVDB to metadata backfill source allow-lists by @daften in #684
  • Fix episode card action buttons: dead watch toggle, missing Lists button, comment leak, icon consistency by @daften in #611
  • Fix list add/remove: crash, silent grid staleness, and no error feedback by @daften in #610
  • Fall back to TMDB for empty Trakt discover rows by @Amoenus in #710
  • Import played games and hours from Xbox via OpenXB by @tim-bellette in #625
  • Reuse _get_series_extended's cache in series_tmdb_id by @daften in #719
  • Stop resending TMDB base show fields on every season batch by @daften in #720
  • Batch TVDB episode translations to fix a per-episode N+1 by @daften in #721
  • Batch season-page episode creation and fix air-date timezone anchoring by @daften in #722
  • Show navigation progress, and stop reading season runtimes one at a time by @ryan-winkler in #729
  • Make progress unit/scope explicit in API, add game platform search by @dannyvfilms in #730
  • fix(sqlite): repair migration-blocking orphaned credits by @ryan-winkler in #737
  • feat(config): make SQLite data paths configurable by @ryan-winkler in #734
  • feat(config): support separate Redis service URLs by @ryan-winkler in #735
  • test: isolate provider and wall-clock fixtures by @ryan-winkler in #685
  • fix(tv): persist trustworthy episode release dates by @ryan-winkler in #738
  • fix(lists): preserve membership and position integrity by @ryan-winkler in #739
  • Make episode history immediate and replay-safe by @ryan-winkler in #740

New Contributors

Known Issues:

  • Floppy still requires more performance enhancements to fit in lower RAM environments, but work has been done this week to help the container scale based on setup.
  • There are still many open issues we are continuing to catch up on. Please keep letting us know what is broken or can be improved.

A Note About Floppy

I'm still not a professional developer; I'm an enthusiastic maintainer using AI coding tools to build the media tracker I want to use. Floppy is a standalone project based on the incredible work of FuzzyGrim/Yamtrack, independently maintained and supported by @dannyvfilms. Yamtrack import and documented compatibility paths remain supported, but users install Floppy directly rather than treating an upstream container replacement as a migration plan.

Docker Updates: You can pull the canonical Floppy image at any time:

ghcr.io/dannyvfilms/floppy:latest

The legacy ghcr.io/dannyvfilms/yamtrack:latest image path remains available during the transition for existing Floppy installations. Please use the supported import path when moving data from upstream Yamtrack, preserve the original database, and test on a copy first. A container image swap is a one-way migration, so if you are coming from upstream Yamtrack test in parallel and import your data. Changing your container image runs migrations you cannot roll back.

Contributing: Floppy-specific bug reports, feature requests, integration ideas, and pull requests are welcome in this repository. Thanks to @daften, @nakenyon, @ryan-winkler, @Amoenus, and @tim-bellette for the work included here, and to everyone who reported problems or suggested improvements during another unusually intense week.

If you have time to help answer questions in the new Discord, that would be appreciated. I’ll try to be active there, but GitHub is still keeping most of my attention, so additional support from contributors will help.

Thanks for understanding, and happy tracking!

Full Changelog: v26.8.6...v26.8.13