A playlist name spelled with different accent normalization loses its member #238

Closed
opened 2026-09-16 07:42:05 +02:00 by Claude · 1 comment
Collaborator

A playlist name that spells its accents differently from the filesystem loses its member, where upstream tries both spellings.

Both sides

upstream/MediaBrowser.Providers/Playlists/PlaylistItemsProvider.cs's TryNormalizePath retries a path that does not exist in NFC and again in NFD before giving up.

Ours (crates/ephyra-app/src/scan/playlists.rs) asks the filesystem once, for the name as written.

What differs

A .m3u written on macOS, which spells é decomposed, naming a file on a filesystem that stores it composed — or the reverse. Upstream resolves the member; we drop it, and the playlist is short a track.

This is pre-existing rather than introduced by the member filtering, and it is the kind of thing a household library hits exactly once, on the one album with an accent in its name.

Verifying

A list naming a file whose name carries an accent, spelled the other way round. The library-kinds tree can carry both, and the key then shows upstream keeping the member.

Found reviewing #237.

A playlist name that spells its accents differently from the filesystem loses its member, where upstream tries both spellings. ## Both sides `upstream/MediaBrowser.Providers/Playlists/PlaylistItemsProvider.cs`'s `TryNormalizePath` retries a path that does not exist in NFC and again in NFD before giving up. Ours (`crates/ephyra-app/src/scan/playlists.rs`) asks the filesystem once, for the name as written. ## What differs A `.m3u` written on macOS, which spells `é` decomposed, naming a file on a filesystem that stores it composed — or the reverse. Upstream resolves the member; we drop it, and the playlist is short a track. This is pre-existing rather than introduced by the member filtering, and it is the kind of thing a household library hits exactly once, on the one album with an accent in its name. ## Verifying A list naming a file whose name carries an accent, spelled the other way round. The library-kinds tree can carry both, and the key then shows upstream keeping the member. Found reviewing #237.
Author
Collaborator

Landed in f75a3841: a member missing as written is retried in NFC and then NFD, in the order and under the conditions of upstream's TryNormalizePath. Verified by unit tests over real files in both directions; the library-kinds key was not extended with an accented member, so upstream keeping the member is read from the C#, not measured.

Landed in f75a3841: a member missing as written is retried in NFC and then NFD, in the order and under the conditions of upstream's `TryNormalizePath`. Verified by unit tests over real files in both directions; the library-kinds key was not extended with an accented member, so upstream keeping the member is read from the C#, not measured.
Sign in to join this conversation.
No description provided.