Skip to content

huge update #264

Closed
saimdeniz wants to merge 61 commits into
mProjectsCode:masterfrom
saimdeniz:master
Closed

huge update #264
saimdeniz wants to merge 61 commits into
mProjectsCode:masterfrom
saimdeniz:master

Conversation

@saimdeniz
Copy link
Copy Markdown

Note

Developer's Note: This PR builds upon the foundation of version/PR #260 My initial goal was strictly to improve IGDB games and TMDB series metadata, but it naturally evolved into adding these larger quality-of-life and automation features.

Full transparency: The code in this PR was heavily co-authored with AI assistance. While I have extensively tested these features in my own vaults and encountered zero bugs (everything works perfectly on my end), I acknowledge that this is a massive commit. I understand it will likely require manual code review, refactoring, or architectural adjustments by the maintainers to perfectly align with the plugin's core standards. My ultimate hope is that you find these features as useful as I do, and that this PR can serve as a strong foundation for eventually bringing them into the main release!

🚀 Summary

This PR introduces a massive set of features, UI refinements, and core improvements to the Media DB plugin, dramatically enhancing automation, API fetching, and property customization workflows for users managing large media vaults.

Key highlights include comprehensive Bulk Operations, an Auto-Tracker engine for airing/release statuses, deeper TMDB/IGDB integration, rich image previews in search, and a completely revamped Drag & Drop Property Mapping UI featuring granular controls for auto-tagging, wiki-links, and property pinning.

✨ Auto-Tracker & Automation

  • Customizable Auto-Tracker: Built an automated tracking system that checks for airing and released state changes. The status keywords are fully customizable in the Settings panel, allowing users to map their own localized or personal status names.

🗂️ Powerful Bulk Operations

Added robust bulk actions accessible at the folder level or globally via the left-side Ribbon:

  • Bulk Download Images: Download and store remote images locally for an entire folder.
  • Bulk Start Auto-Tracker: Launch the tracking engine efficiently for specific directories or globally.
  • Bulk Update Metadata: Update property data for multiple notes at once.
  • Bulk Recreate Metadata (Safe & Reset Modes):
    • Reset Mode: Completely reconstructs the frontmatter from scratch.
    • Safe Mode: Safely applies your updated Property Mapping order to existing notes while preserving any custom data inside the note itself.

🛠️ UI & Property Mapping Revamp

The Property Mapping modal has been widened, redesigned, and supercharged to handle granular property-level tuning:

  • Search Image Previews: Thumbnails (posters/covers) now render directly alongside results when searching for media, providing instant visual context for faster identification. Add support for images in media search #254
  • Drag & Drop Ordering: Seamlessly drag and drop properties to dictate their exact frontmatter output order.
  • Pin to Bottom (PIN): Pin any property to the absolute bottom of the frontmatter. Crucially, if multiple properties are pinned, they strictly respect your custom Drag & Drop order!
  • Granular Wikilink Toggle: Convert any specific mapped property's output into a [[Wiki-link]]. (Note: The legacy global wiki-link setting was also kept intact specifically for users relying heavily on manual templates).
  • Per-Property Auto-Tagging: Automatically generate Obsidian tags from specific property values. Includes a dynamically appearing input field to define a custom nested tag prefix per property (e.g., configuring genres to generate #genre/action).

⚙️ Core Enhancements & QoL

  • Clutter-Free Context Menu: Grouped all right-click actions into a consolidated, clean "Media DB" hover sub-menu.
  • TMDB Region Setting: Added a new Region selection setting to accurately fetch localized TMDB data, specifically fixing empty streamingServices fields.
  • Expanded Scrapers: Updated and extracted additional properties systematically for IGDB and TMDB engines.

dsynkd and others added 30 commits March 29, 2026 00:49
…r to keep square brackets, fix bug where songs were not being fetched due to 401 error from Genius
This project uses Bun and has a bun.lockb, so no need for package-lock.json
saimdeniz added 14 commits April 1, 2026 22:34
Added markdown report generation for BulkUpdateHelper, AutoTrackerHelper, and main.ts (Download Images).
Failed files are now logged directly to <vault_root>/MDB - <action> error report <date>.md instead of just logging to the console.
Filename formatting standardized to match the existing Bulk Import feature layout.
Modified downloadImagesInFile to return rich {success, error, skipped} objects for exact failure tracking.
Fixed attachTemplate merge strategy: template properties no longer override or reorder API fields. Template-only keys are now appended after all API data.

Added explicit tags-to-bottom logic so tags always appears as the last frontmatter property regardless of merge order.
@mProjectsCode
Copy link
Copy Markdown
Owner

As I hinted at in the other PR, a 6k+ changed lines PR is impressive (though with AI, less so). But it is not fun to review. I would appreciate it if you could, instead of making one big PR with lots of features, make multiple smaller PRs, one for each feature/change.

Copy link
Copy Markdown
Owner

@mProjectsCode mProjectsCode left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, I did a rough pass over the code. And to be honest, it is not great.

  1. How can you, in some places, use the styles.css file and create new classes, but in others, you use JS to set styles directly?
  2. This PR is way too big. There are features that I like (e.g. more robust and consistent time parsing, the migration to the secrets API) but there are also features that I don't like (e.g. the auto updater). If you had made smaller, separate PRs, I could easily merge the ones I like now, and we could discuss the others separately. But with one big PR that is not possible.

Comment thread src/api/APIManager.ts Outdated
Comment thread src/api/APIModel.ts Outdated
Comment thread src/api/GeniusClient.ts Outdated
Comment thread src/api/geniusLyricsExtract.ts
Comment thread src/modals/CompletionModal.ts Outdated
Comment thread src/settings/PropertyMapper.ts
Comment thread src/settings/PropertyMapper.ts Outdated
Comment thread src/settings/Settings.ts
Comment thread src/utils/AutoTrackerHelper.ts Outdated
Comment thread package.json Outdated
@saimdeniz
Copy link
Copy Markdown
Author

It seems this happens when someone have zero actual coding experience, so this entire PR was essentially just me 'vibe coding' to get some features working for my own vault. I was secretly hoping some of the cool concepts could be refactored and merged properly, but it seems scope of changes is way too massive and chaotic for a manual review. I really appreciate you taking the time to look over it!

@saimdeniz
Copy link
Copy Markdown
Author

Also, I actually thought the 'auto-updater' was a really cool feature. It basically auto-checks if your 'unreleased' or 'airing' media has finally been released. It was a massive quality-of-life improvement for my vault

- Updated BulkUpdateConfirmModal to accept custom titles and descriptions
- Added context-specific warning text for AutoTracker syncs to avoid confusing generic bulk update warnings
- Corrected the parameter order in updateNote() for bulk helpers.
- Fixed silent toggle (overwrite) in the 5th parameter position.
- Disabled opening new tabs (openNoteFinal) during bulk runs.
- Updated BulkUpdate, BulkRecreate, and AutoTracker helpers.
@saimdeniz saimdeniz closed this Apr 21, 2026
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.

3 participants