Skip to content

Various improvements#260

Open
dsynkd wants to merge 48 commits into
mProjectsCode:masterfrom
dsynkd:master
Open

Various improvements#260
dsynkd wants to merge 48 commits into
mProjectsCode:masterfrom
dsynkd:master

Conversation

@dsynkd
Copy link
Copy Markdown

@dsynkd dsynkd commented Mar 31, 2026

Summary

This branch modernizes settings and property mapping, adds Band, Album, and Song flows (including MusicBrainz band support and optional file tree for songs), moves API secrets to Obsidian’s keychain, and fixes several music/metadata and UX bugs.

Settings & property mapping

  • Tabbed settings with property mappings co-located on the right tab/section instead of a single wall of options.
  • Property mapping opens in a modal; the mapper auto-saves as you edit.
  • Merged overlapping tabs (movies; comics + books) so related options stay together.
  • type, id, and dataSource are remappable; dataSource can be omitted for music where it does not apply.
  • Type frontmatter is user-configurable via mapping.
  • Optional normalized title as aliases (with extended title normalization and tests in normalizeTitleForAlias).

New / expanded media types

  • Band and Album types with MusicBrainz band integration and related models.
  • Song metadata path with Genius and Spotify clients, lyrics extraction (geniusLyricsExtract), and tests.
  • Spotify URL on song metadata; ISNI on band metadata; bootleg releases filtered out when pulling albums.

Security & API behavior

  • API keys refactored to use Obsidian’s keychain / secret storage (with a fix for secret storage behavior).
  • Genius 401 handling so song fetch does not fail silently in common misconfiguration cases.

Bugs & polish

  • Wikilinks for Artist and Album corrected.
  • Filename sanitizer no longer strips square brackets where they should be preserved.
  • Lyrics extractor and related paths tightened up.
  • Album property mappings visible again after the comic/book merge.
  • Movie model: duration as integer; budget and revenue fields added.
  • Year handled as a number where appropriate.
  • Obsidian API module bumped; build fixes; Vite config renamed to vite.config.mts; package-lock.json added/updated.

Testing

  • Adds or extends tests for Genius lyrics behavior and title normalization for aliases.

@dsynkd dsynkd marked this pull request as ready for review March 31, 2026 06:26
@mProjectsCode
Copy link
Copy Markdown
Owner

Such a large PR is quite difficult to review. Could you please split this into multiple smaller PRs? Also some things that I already noticed:

  1. This project uses Bun and has a bun.lockb, so please don't include a package-lock.json
  2. API specific logic shouldn't bleed into general methods/helpers like the property mapper. Instead, it should, if possible, be hidden inside the API class. You can add new methods to the APIModel class if needed.

@saimdeniz saimdeniz mentioned this pull request Apr 3, 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.

2 participants