Skip to content

(feat/fix) Server side retro artwork enhancements - #251

Draft
WizardOfYendor1 wants to merge 14 commits into
Moonfin-Client:masterfrom
WizardOfYendor1:feature/arcade-emulator-prototype
Draft

(feat/fix) Server side retro artwork enhancements#251
WizardOfYendor1 wants to merge 14 commits into
Moonfin-Client:masterfrom
WizardOfYendor1:feature/arcade-emulator-prototype

Conversation

@WizardOfYendor1

@WizardOfYendor1 WizardOfYendor1 commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Pull Request

Summary

This is a "follow on" PR for retro artwork changes (been waiting for the mega one to merge before adding more :-) ). This improves the server-side artwork handling for retro games, especially when ROMs are added or scanned after Jellyfin is already running.

  • Watches configured game folders for ROM changes, so artwork reconciliation runs after a per-library Jellyfin scan instead of needing a plugin/server restart.
  • Adds a five-second quiet period after filesystem activity, so copying a batch of ROMs does not kick off a full reconciliation over and over.
  • Keeps reconciliation in one coalesced background worker instead of spawning a new task for every trigger.
  • Reopens older "false" missing artwork entries one time, allowing corrected RDB/thumbnails matching to retry them.
  • Adds a bounded ~ → - title fallback for artwork names, fixing cases like Atari 2600 Maze Craze. (very targeted to a specific condition I encountered)

on side note, there are oddball conditions like games that are the same but different titles that won't get fuzzy matched. Like 2600: Boom Bang/Crackpots etc... needs more work there also

Related Issues

None

Type of Change

  • Bug fix
  • New feature
  • Refactor
  • Performance improvement
  • API / endpoint change
  • Settings schema change
  • Documentation update
  • Build/CI change
  • Other (describe):

Area

  • Settings sync / profiles
  • Admin defaults / config page
  • Ratings (MDBList / TMDB)
  • Notifications / Push (FCM / relay)
  • Seerr integration
  • Games / Emulators
  • Custom home rows
  • Web Client (Go to Moonfin-Core repo)
  • Other / shared

Client Impact

Does this need matching changes in a client repo (Core, Smart-TV, Roku)? No

  • No client changes needed
  • Companion client PR(s) required, linked here:
  • New setting keys added. List each key and confirm it matches the client key exactly, including casing:

Compatibility

  • Change to the settings profile is additive only, no renamed or removed properties
  • New properties use the same type the client sends (a client bool maps to bool?, an int to int?)
  • Migration added for any renamed or removed settings
  • Older clients still work, unknown fields are ignored and no keys were removed

Testing

Describe how this change was tested.

  • Built the plugin and deployed to a Jellyfin server
  • Verified against a live client (which one:) Shield/Firestick
  • Manual testing completed
  • Not tested (explain why):

Test Steps

Screenshots (if applicable)

Include config page screenshots or request/response samples where relevant.

Checklist

  • Code builds successfully
  • Code follows project style and conventions
  • No unnecessary commented-out code
  • No new warnings introduced
  • Any new setting keys match the client-side keys exactly

WizardOfYendor1 and others added 12 commits August 6, 2026 23:42
Cold RDB downloads caused valid artwork to be permanently marked missing; we now retry when metadata arrives and reopen prior false misses.
Also tweaks the retry scheduling. If it becomes available during, it will wake immediately. Otherwise, the fallback It'll wait for 5 minutes for the RDB then every 3 hours for 24H then stop...but not be permanently flagged as missing (perhaps overkill).
Once everything HAS been tried it is marked as missing - which given the very,very infrequent artwork updates/changes/additions should be fine.
…me titles.

  Bump the artwork provider to v3 so prior false Missing records can reopen.
  Watch configured ROM roots recursively for file changes and watcher overflow.
  Wait five seconds after the last filesystem event before reconciling.
@github-actions

github-actions Bot commented Aug 22, 2026

Copy link
Copy Markdown

Build Successful

The plugin compiled successfully against .NET 8 / Jellyfin 10.10.0.

Property Value
Commit 6b3d0b3
Workflow Build #341

@WizardOfYendor1 WizardOfYendor1 changed the title Feature/arcade emulator prototype (feat/fix) Server side retro artwork enhancements Aug 23, 2026
@RadicalMuffinMan
RadicalMuffinMan force-pushed the master branch 2 times, most recently from e76ed28 to f6bb661 Compare August 24, 2026 17:10
… should be revisited entirely at some point. Fixed another issue uncovered by "accident". Stop a shutdown race where a pending debouce timer could make StopAsync throw an exception. Also remove the ~ handling; left over from previous troubleshooting and no longer needed. The lookup behavior remains the same.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants