Reported issues for Engine DJ Library Assistant (unofficial)
Pod holds 11 of 11 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.
Back to Engine DJ Library Assistant (unofficial).
Most discussed
Duplicate library UUID bypasses ambiguous_library and may write to the wrong disk
Summary
An Engine DJ library and its cloned USB copy can legitimately share the same Information.uuid. When library is explicitly set to that shared UUID, findLibrary() uses Array.find() and silently returns the first matching path.
selectForWrite() only performs the multi-library refusal when library is omitted. Supplying the shared UUID therefore bypasses ambiguous_library, and a write may land on whichever physical disk happened to be discovered first.
This is the same…
Read the thread · 2026-09-15 · closed · outside contributor · 1 comment
Proposal: update_track_metadata — write genre, comment, label, rating to Track
Proposal: a write tool for tag hygiene on Track itself — genre, comment, label, rating, maybe year — built on the existing write path (withWriteTransaction, per-session snapshot, ambiguous_library refusal, undo with an expect guard like expect_track_ids).
Scope decision pending. This would be the first write to track rows rather than to playlists — a different risk than anything shipped so far.
Facts, checked 2026-09-11
- Engine's own…
Read the thread · 2026-09-11 · closed · outside contributor · 1 comment
A clone with an unsupported schema makes a named-uuid write refuse, while an omitted library ignores it
Found while reviewing #14; deliberately left as-is there because it errs on the safe side.
What happens
writeNeedsLibrary counts only supported libraries, so an old 2.x library on the machine never makes a write refuse. findLibraries/namedWriteLibrary (added in 9e4bb58) do not filter on supported, so a uuid shared by a supported library and an unsupported copy refuses.
Scenario
Libraries a (3.0.2) and b (3.1.0, unsupported) share a uuid:
- A write with no
library: goes to…
Read the thread · 2026-09-16 · open · outside contributor · 0 comments
A path is not a stable library identity: two drives with the same volume label swap mount points
Found while reviewing #14. Pre-existing.
What happens
Since #14 a write must name a library by path when a uuid is shared by copies, and every undo step already carries the library as a path (src/store/write.ts). A path identifies a mount point, not a drive. macOS mounts two sticks carrying the same volume label — a default Untitled or NO NAME, or a disk-level clone — as /Volumes/Untitled and /Volumes/Untitled 1, in plug order.
Scenario
- Two such sticks are connected; the…
Read the thread · 2026-09-16 · open · outside contributor · 0 comments
Write result and backup name can report the uuid of a library no longer at that path
Found while reviewing #14. Pre-existing; not introduced by that fix.
What happens
states is keyed by the path of m.db (src/server.ts), deliberately: a clone on another drive shares its uuid, so the path is the stable key. stateFor(lib) returns the cached LibraryState for that path and ignores the freshly discovered LibraryInfo, so state.lib.uuid and the IndexManager's own copy can describe a library that is no longer there.
Scenario
- A write goes to…
Read the thread · 2026-09-16 · open · outside contributor · 0 comments
Check on a player whether Engine OS opens a file whose name is in another Unicode form
path_form_mismatch (added for #11) marks tracks whose file is on disk under a name in a different Unicode normalization form from the path Engine stored. Its description says these "may fail to load on hardware". That rests on one measurement and one assumption:
- Measured, 2026-09-11, Linux 6.17 in-kernel exFAT driver: an NFC path does not find an NFD-named file. A path differing only in case does.
- Assumed: Engine OS opens files through a Linux exFAT driver that behaves the same,…
Read the thread · 2026-09-11 · open · outside contributor · 0 comments
missing_files: a file under another Unicode normalization form reads as missing on byte-exact filesystems
missing_files checks each track with existsSync(absTrackPath(mdbPath, path)), using Track.path exactly as stored.
Engine stores paths in NFC: all 27 non-ASCII rows in both real libraries, measured 2026-09-11. macOS often writes file names in NFD, and on the maintainer's USB drive (exFAT) 6 files are on disk in a different normalization form from the path Engine stored for them.
On macOS this does no harm. Name lookup is normalization-insensitive on APFS and on exFAT through FSKit…
Read the thread · 2026-09-11 · closed · outside contributor · 0 comments
Expose Track.streamingSource, uri and streamingFlags as optional fields
Track carries streamingSource (TEXT), uri (TEXT) and streamingFlags (INTEGER). Nothing in src/ references them, so no tool can show them.
Reported externally, not reproducible here (no Dropbox library, no Prime hardware): these columns decide whether Engine OS streams a track from Dropbox, and a local library that kept stale Dropbox values after a migration showed every track red on the hardware while audit_library reported it healthy. If that is right, a user cannot even see why…
Read the thread · 2026-09-11 · closed · outside contributor · 0 comments
Most recent
Default library choice is ambiguous when two libraries tie on track count
With no library argument, the server picks "the supported library with the most
tracks". When two libraries hold the same number of tracks, that rule names no
winner and the outcome falls out of row order.
Observed 2026-09-01
/Users/venut/Music/Engine Library 257 tracks uuid 7e6b0bf5-…
/Volumes/VENUTDISK/Engine Library 257 tracks uuid c24e09d2-…
A tie, and not an exotic one: the USB library and its copy on the computer are the normal setup for anyone who gigs off a…
Read the thread · 2026-09-01 · closed · outside contributor · 0 comments
undo is scoped to one library; Engine can copy the edit to another
undo reverses the edit in the library it was made in. It cannot reverse what
Engine DJ then copies to another connected library, and today nothing says so.
Observed 2026-09-01, on the real libraries
| time | action | Mac library | USB library |
|---|---|---|---|
| 00:15 | add_tracks_to_playlist on the Mac library, playlist 27 |
6 | 5 |
| 03:33 | user launched Engine DJ with the USB drive connected | 6 | 6 |
| 13:20 | ran the returned undo (Mac library) |
5 | 6 |
The USB…
Read the thread · 2026-09-01 · closed · outside contributor · 0 comments
Play history: expose what was actually played, from hm.db
Engine keeps a play history in Database2/hm.db, alongside the m.db this
server already reads. Nothing exposes it. It is the last piece of Engine's
own data the server does not surface — an inventory of Track's 43 columns
and the sibling databases found everything else either already exposed or
empty (itm.db, rbm.db, sm.db, stm.db, trm.db each hold a single
Information row on the library measured).
The library tells you what you have. History tells you what you did, and no…
Read the thread · 2026-08-24 · open · outside contributor · 0 comments
The remaining reports are on the project's issue tracker.