v1.0.9-beta.023 - feat: add series.json export and unsaved changes tracking for scheduled jobs
This commit introduces optional metadata exporting for third-party readers and improves the UX of the Scheduled Jobs page to prevent accidental data loss.
Metadata Export (series.json):
- Added writeSeriesJson to metadata-writer.ts to format Omnibus database records into the standard Komga/Kavita JSON structure.
- Hooked the new JSON writer into the existing EMBED_METADATA background job in queue.ts, ensuring it runs automatically alongside XML embedding without blocking the UI.
- Added a configuration toggle (export_series_json) to the Admin Settings -> Metadata tab.
Scheduled Jobs UI Improvements:
- Implemented state hashing (initialStateHash vs currentStateString) in jobs/page.tsx to track unsaved modifications.
- The Save Schedule button now dynamically highlights in amber and reads Save Unsaved Changes when the state is dirty.
- Added a ConfirmationDialog interceptor to warn users and block accidental navigation if they attempt to leave the page with unsaved edits.
Resolves #94