github dannyvfilms/Floppy v26.10.29

3 hours ago
Cozy Pixel Dev Release Notes

Changes since last release:

This is one of Floppy's largest performance updates yet. After hearing feedback about slow pages and resource usage, I spent the past week investigating more than 60 areas across the application, from database queries and page rendering to background jobs, caching, memory, and startup.

The result is a substantially faster, lighter Floppy, with smoother interactions throughout the application and repeatable benchmarks to measure the improvements and catch future regressions. 🧈

Performance Improvements — With Receipts

Faster pages, lists, and search

  • TV Shows: 8.75s → 3.35s; Seasons: 9.16s → 3.57s.
  • Library lists: 7.67s → 0.51s; TV tracking popup: 3.50s → 0.29s.
  • Smart Lists: 2.17s → 0.48s; an 11,000-item list dropped from 29.3s → 1.2s.
  • Large TV/anime search: 327s → 1.7s, after eliminating thousands of individual lookups.
  • Movie search suggestions: 1,145ms → 371ms; first TV list load: 1,683ms → 554ms.

History and database efficiency

  • Monthly History: 3.12s → 0.59s, with page size shrinking from 6.4 MB → 1.1 MB.
  • All-media History: 1.25s → 0.29s; anniversary History: 1.98s → 0.27s in a separate benchmark.
  • History date-range queries: 443 → 43; repeat-visit CPU time fell from 11.2s → 0.14s.
  • History rendering memory: 149 MB → 2.8 MB; music/podcast day lookups dropped from 88ms → 0.1ms.
  • Collection filtering: 4.34s → 0.41s CPU time, using 2.3 MB instead of 82.9 MB.

Faster everyday interactions

  • Rate a title: 3.2s → 0.12s; delete: 3.7s → 0.15s; mark complete: 1.5s → 0.18s.
  • Add a title: 9.0s → 2.1s for the initial request.
  • Podcast page: 328ms → 14ms; podcast search queries dropped from 52 → 5.
  • Home music shelves: 774 → 6 database lookups in a 10,000-entry library.
  • Discover recommendations: TV rebuild queries dropped from 4,328 → 108, with individual candidate lookups up to 20× faster.

Background jobs, caching, and responsiveness

  • Pages waiting on Statistics: 4.508s → 0.003s in a contention test, with duplicate jobs reduced from 165/hour → 55/hour.
  • Clearing 5,000 cached lists: 5,002 → 2 Redis calls, taking 6ms instead of 251ms.
  • Last.fm polling: Worker occupancy dropped from 8.6s → 0.012s.
  • Unnecessary polling: Artist page requests dropped from 24 → 6; idle import requests from 25 → 1; hidden season-page polling eliminated.
  • Podcast imports: 452 → 30 queries; duplicate-anime checks dropped from 61 → 1.

Memory, startup, and upgrades

  • Background worker private memory: 59 MB → 22 MB per Linux worker.
  • Cached History data: 3.1 MB → 1.3 MB.
  • Database migration benchmark: 1,048s → 4s after eliminating unnecessary full-database checks.
  • Live database upgrades: A previously stalled index migration ran for nearly two hours; after the migration changes, a subsequent index migration completed in 23 seconds.
  • Repeated startup file processing: 3.25s → 0.21s.

These are measured before-and-after results, not estimates. Some reflect live-server page loads, while others measure individual operations under controlled conditions.

There's still work to do. TV and Season pages remain slower than I'd like, Calendar performance hasn't improved, and SQLite contention during heavy background activity remains an active investigation. But this update removes a substantial amount of unnecessary work across Floppy, helping pages load faster, interactions feel smoother, and background activity stay out of the way. The new benchmarking tools provide a foundation for keeping things running that way.

New Features & Improvements

  • Import YouTube watch history — Bring your existing YouTube activity into Floppy using Google Takeout, browse videos by channel, and manage video playback history through the API.
  • See what's Up Next — New customizable Up Next Home shelves and an All Episodes view make it easier to continue watching.
  • Customize media covers — Upload artwork, provide an image URL, or search for an alternative cover directly within Floppy.
  • Improve collection management — Preserve formats and resolution metadata, correct episode counts, support anime-library episodes, and display Sonarr series in Collection.
  • More accurate watched status — Repair stale watched states after imports, recognize flat MyAnimeList anime episodes, and improve season completion and Caught Up indicators.
  • Better media metadata — Edit comic issue details, save collection-only metadata, preserve Trakt collection dates, and respect metadata-language preferences.
  • Clearer navigation and account controls — Connected Applications now has a top-level Settings entry, users can delete their own accounts, and Upcoming releases links directly to Watch History.
  • Expanded integrations and localization — Russian translation, Jellyfin item-removal support, and expanded OAuth device-flow list permissions.
  • Reliability and security fixes — Verified database snapshot restoration, more dependable imports, corrected dialogs and sorting, and updated security dependencies and Alpine base image.

Thank you to everyone who's been honest about where Floppy needs improvement. The feedback directly motivated this performance effort, and I'm committed to continuing it. The goal is a media tracker that's not just feature-rich, but fast, reliable, and practical to self-host. Hopefully, things are feeling a little more buttery smooth now. 🧈

Installing & Updating

The canonical Docker image for Floppy is:

ghcr.io/dannyvfilms/floppy:latest

Existing Floppy installations using the legacy ghcr.io/dannyvfilms/yamtrack:latest image can move to the new image path, which continues to receive updates during the transition.

Coming from upstream Yamtrack? Please use the supported CSV import process rather than replacing your Yamtrack container image directly. Database migrations may not be reversible, so preserve your original database and test Floppy separately before migrating.

For installation methods, configuration, and troubleshooting, see the README and deployment documentation.

About Floppy

Floppy is a free, open-source media tracker that started as something I wanted to use myself. It's grown into something much bigger thanks to the people using it, sharing ideas, reporting bugs, and contributing improvements.

My goal is to build something genuinely useful for everyone while keeping the entire application free, without paid features, premium editions, or surprise subscriptions.

Floppy is independently maintained, uses AI-assisted development tools, and builds on the original work of Yamtrack and its contributors.

Community & Contributors

Thanks to @MangaValk, @Yanoky1, @brightsider, @pkrstic, @rysson, @johan456789, and @zotabee for their work in this release, alongside everyone who tested, reported issues, and helped improve Floppy. Special thanks to first-time merged contributors @pkrstic, @Yanoky1, @rysson, and @brightsider.

Floppy keeps getting better because of the people using it. Whether you're contributing code, improving documentation, reporting a bug, or suggesting something that would make your experience better, it all helps shape where the project goes next.

Have an idea or found a problem? GitHub Issues is the best place to report it. You can also join the Discord community to discuss features, share your setup, and help other users.

Support Floppy

If Floppy has become part of your routine, consider sponsoring its development on GitHub.

Sponsorships help me invest in the development tools and resources needed to keep improving Floppy, responding to community feedback, and building new features.

Everyone gets the same application, whether they sponsor or not. That's something I want to preserve as the project grows.

Thanks to everyone who's already supported Floppy, financially or otherwise. I really appreciate it!

Happy tracking!

What's Changed

  • Bump the pinned Python Alpine base image to Alpine 3.24.3 by @johan456789 in #1710
  • Bump filelock to 4.2.4 for three CVEs by @MangaValk in #1724
  • Repair stale watched state after imports by @MangaValk in #1723
  • Give the dropped-sync reconciler test room to finish by @MangaValk in #1722
  • Show flat MAL anime episodes as watched on details and History by @MangaValk in #1721
  • Let the collection PUT leave copies of another format alone by @zotabee in #1729
  • Keep the stored resolution when a collection source reports no quality by @zotabee in #1730
  • Handle the unofficial Jellyfin plugin's ItemRemoved event by @zotabee in #1731
  • Count each episode once in season collection stats by @zotabee in #1733
  • Find anime-library episodes in the collection PUT and DELETE by @zotabee in #1734
  • Fix episode watched dialog opening inside the episode row by @pkrstic in #1737
  • Find API-created episodes when library_media_type misses by @zotabee in #1738
  • Add Russian localization by @Yanoky1 in #1605
  • Fix missing game-group tasks and ambiguous season collection lookups by @pkrstic in #1736
  • Restore a verified snapshot from the damaged-database page by @dannyvfilms in #1746
  • Fix Last Watched sort ranking undated completions first by @dannyvfilms in #1750
  • Use metadata language in list search and add flows by @dannyvfilms in #1752
  • List Sonarr series under Collection TV Shows by @dannyvfilms in #1751
  • Allow list scopes in the OAuth device flow by @rysson in #1756
  • Keep Trakt collection dates on show and season entries by @dannyvfilms in #1759
  • Keep import history failed items open while the panel refreshes by @dannyvfilms in #1760
  • Say Kapowarr, Mylar3, Radarr and Sonarr syncs add to Collection by @dannyvfilms in #1758
  • Let people change an item's cover: upload, link, or find one by @dannyvfilms in #1690
  • Import YouTube watch history from Google Takeout by @dannyvfilms in #1763
  • Add video plays list and delete endpoints by @dannyvfilms in #1764
  • Count a season's episodes instead of using its last episode number by @dannyvfilms in #1762
  • Show the status badge right after tracking an untracked season by @dannyvfilms in #1767
  • Show Caught Up on the progress card, and let ended shows finish past a future season by @dannyvfilms in #1766
  • Make Connected Applications a top-level settings item and share the media type filter by @dannyvfilms in #1771
  • List TMDB under Anime & Manga in the Metadata filter by @dannyvfilms in #1772
  • Comic issue metadata editor and collected-only metadata saves by @dannyvfilms in #1768
  • Add an Up Next Home row preset by @dannyvfilms in #1769
  • Add Up Next Home rows and All Episodes view by @brightsider in #1643
  • Filter, sort and list YouTube videos by channel by @dannyvfilms in #1765
  • Let users delete their own account from Settings by @dannyvfilms in #1773
  • Fix account deletion for users with tracked media by @dannyvfilms in #1775
  • Add a Watch history calendar link next to Upcoming releases by @dannyvfilms in #1774

New Contributors

Full Changelog: v26.10.22...v26.10.29

Don't miss a new Floppy release

NewReleases is sending notifications on new releases.