Skip to content

[GSoC 2025 Antonio Giordano] Multi-Genre & Autocompletion Support Newspost#403

Merged
Swiftb0y merged 14 commits intomixxxdj:websitefrom
sdv0001:gsoc2025-report-ag
Aug 13, 2025
Merged

[GSoC 2025 Antonio Giordano] Multi-Genre & Autocompletion Support Newspost#403
Swiftb0y merged 14 commits intomixxxdj:websitefrom
sdv0001:gsoc2025-report-ag

Conversation

@sdv0001
Copy link
Contributor

@sdv0001 sdv0001 commented Aug 4, 2025

Description

This pull request adds the final blog post for my Google Summer of Code 2025 project. It details the new multi-genre and autocompletion features developed for Mixxx.

Preview

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 4, 2025

Thank you for this PR, can you add the preview in your first post (when changes made in the Pr the previewlink must be adapted as it's bounded to the date)

YouTube videos can be embedded like this (see readme)

@video(https://www.youtube.com/watch?v=rt5Ed5GZ1U8)

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

You keep on writing "Mixxx only supported a single genre per track",
I keep on correcting you because it isn't true.
Users can/could define multiple genres in the genre field, with or without a separator.
As there wasn't an integrated service the parts of a genre string were not treated as different genres
eg when a user wants to define a track aaaa as being genre dance & tango, the user could enter 'dance tango' or 'dance; tango' or dance/tango' in the genre field.

Searches on genre always searched "... like' %xxx%' ... ", so a search for tango or dance would return the example track.
When the user wants to write the genres back to the metadata the field needs a '/' separator.

You didn't change this situation, tracks still can have different genres and they still can be formatted in different ways as there is no check.

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

This project introduces the ability for Mixxx to truly understand "what a genre is" - moving from a simple text field to a sophisticated, database-backed system that can:

Please elaborate:
If a users positions on a genre field of a track in the tracktable, presses F2 and enters the text "genre aaa; genre bbb",
how can Mixxx understand these are new genres?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Manage genres centrally through a dedicated database system

Can you please elaborate:, how can a user manage the "dedicated database system"

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Provide intelligent autocompletion from existing genres

Can you please elaborate:
If a users positions on a genre field of a track in the tracktable, presses F2 and starts typing ...

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Enable bulk genre operations across multiple tracks

Can you elaborate how and what happens exactly when a user wants to add/change/remove a genre to multiple tracks, can a user undo actions? What/where is data changed?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Revolutionary Single-Track Genre Management

What's the revolution?
Can you elaborate that this only works through right click on the track -> properties;

Smart Autocompletion
Will the autocompleter correct me if I made a typo and typed "dnace" and show all genres containing "dance"?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Drag & Drop: Reorder genres to match your preferred organization

Please elaborate:
On which genre in the genre field is the tacktable sorted? I assume the first, will the widget keep the order of the genres like I added them?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Game-Changing Multi-Track

Smart Intersection Display

Please elaborate: what happens if I add a genre / remove a genre/ want to change the genre for all selected tracks. Can I undo?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Smart Intersection Display

Please elaborate: will the widget recognize all text in the genre field of the selected tracks as genres? What if I want to add a custom genre definition?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Dedicated Genre Database: New normalized schema with genres and genre_tracks tables

What's the use of the genre_tracks table?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Seamless Integration: Full compatibility with existing Mixxx workflow and file metadata
what happens if I made a mistake and used a wrong separator in the genre field, eg "//" or "," ...

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

No genre understanding: Mixxx couldn't differentiate individual genres

What is the actual new genre-feature with which Mixxx now understands genres?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

No consistency: "Electronic" and "electronic" were treated differently

If a users positions on a genre field of a track in the tracktable, presses F2 and enters the text "electronic', will Mixxx correct it?

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

No bulk operations: Had to edit tracks one by one

Not correct

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Visual tag interface: See and manage each genre individually

If a track contains genres with long (multilevel) names how will they be displayed in the widget:
eg a classical track needs to be in the genres
Classica\Strumento\ArchI\Violoncello
Classica\Forma Musicale\Musica da Camera
Classica\Ensemble\Quartetto d'Archi

@Eve00000
Copy link
Contributor

Eve00000 commented Aug 6, 2025

Consistent naming: Centralized genre database prevents duplicates

when I enter Hip hop as a genre, will Mixxx correct it to the previous defined Hip-Hop genre?

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

You keep on writing "Mixxx only supported a single genre per track", I keep on correcting you because it isn't true. Users can/could define multiple genres in the genre field, with or without a separator. As there wasn't an integrated service the parts of a genre string were not treated as different genres eg when a user wants to define a track aaaa as being genre dance & tango, the user could enter 'dance tango' or 'dance; tango' or dance/tango' in the genre field.

Searches on genre always searched "... like' %xxx%' ... ", so a search for tango or dance would return the example track. When the user wants to write the genres back to the metadata the field needs a '/' separator.

You didn't change this situation, tracks still can have different genres and they still can be formatted in different ways as there is no check.

That's true! I could modify the section Before the Project with:
Mixxx allowed users to enter multiple genres in the genre field by separating them with characters like /, ; , or spaces. However, these were treated as plain text strings, with no semantic recognition of individual genres. There was no autocompletion, central management, or bulk editing.
While searches could find tracks matching parts of a genre string (e.g. searching "tango" would match "Dance/Tango"), Mixxx lacked true multi-genre awareness or editing tools.

and then the section After This Project:
Mixxx now understands genres as structured entities. The new database-backed system supports true multi-genre assignment, intelligent autocomplete, visual tag management, and powerful bulk editing — all while preserving compatibility with the text-based metadata field.

I understand that mine implementation is a "parallel system" of the original one in the database with multi-genre support through tables and DAO but the metadata field of the file remain a text field and the user can still write mutiple genres manually also without this structure.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

This project introduces the ability for Mixxx to truly understand "what a genre is" - moving from a simple text field to a sophisticated, database-backed system that can:

Please elaborate: If a users positions on a genre field of a track in the tracktable, presses F2 and enters the text "genre aaa; genre bbb", how can Mixxx understand these are new genres?

Modified in this:
While this project introduces a structured, database-backed understanding of genres, this new logic is currently integrated into the redesigned Track Info dialogs.
Other editing paths (e.g., editing the genre field directly in the track table via F2) still operate on raw text. In such cases, Mixxx does not parse or interpret multiple genres automatically.
Future work may aim to extend structured genre parsing to more parts of the interface.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Manage genres centrally through a dedicated database system

Can you please elaborate:, how can a user manage the "dedicated database system"

Actually Genre management in the new system is only indirect:

  • When a user adds a genre via the widget, the system creates it in the database;
  • When a tag is removed from a track, the association is deleted;
  • If a genre is no longer associated with any track, it remains in the database (unless manually deleted via SQL).
    But there is no centralized genre management panel (for renaming, merging, deleting, etc.) (yet).

Change with:
This project introduces the ability for Mixxx to better understand what a genre is — transitioning from a simple, unstructured text field to a structured, database-backed system that supports:

  • Associating multiple genres with each track
  • Automatically creating new genres when added via the genre editor
  • Suggesting existing genres through intelligent autocompletion
  • Performing bulk genre operations across multiple tracks
    While genres are now stored and tracked centrally in a dedicated database, direct management of that database (e.g., renaming, merging, or deleting genres) is not yet exposed through the UI.
    Users currently manage genres indirectly by adding/removing them via the new editing widgets.
    Future work may include full-featured genre management tools for advanced cleanup and control.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Provide intelligent autocompletion from existing genres

Can you please elaborate: If a users positions on a genre field of a track in the tracktable, presses F2 and starts typing ...

In the current context:

  1. Intelligent genre autocompletion has been implemented only in the new WGenreTagInput widget.
  2. This widget is used only in the editing dialogs (DlgTrackInfo, DlgTrackInfoMulti).
  3. The tracktable does not use this widget, but a simple QLineEdit → therefore:
  • No tags;
  • No suggestions;
  • No database awareness.

So: Autocompletion is currently available inside the redesigned genre editors within the Track Info dialogs (both single and multi-track). It is powered by the central genre database and suggests existing entries as you type.
Autocompletion is not yet available in other parts of the UI, like inline editing in the track table.

I can rewrite that bullet point with: "Provide context-aware autocompletion inside the genre editing dialogs, based on existing genres in the library"

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Enable bulk genre operations across multiple tracks

Can you elaborate how and what happens exactly when a user wants to add/change/remove a genre to multiple tracks, can a user undo actions? What/where is data changed?

When the user selects multiple tracks in the library and opens the Track Info dialog, the new genre editor displays only the genres common to all selected tracks (using intersection logic).

  • If the user adds a new genre, it is added to all selected tracks (in addition to their existing genres).
  • If the user removes a genre, it is removed only if it was common to all selected tracks.
  • Genres unique to each track are preserved: the system does not overwrite or remove them.
    The updated genre lists are then saved to the internal Mixxx database, via the new GenreDao, when the user clicks "OK" or "Apply".
    There is currently no undo functionality for this operation; once applied, changes are persisted in the database.

If metadata writing is enabled in Mixxx settings, changes are also written to the track files when triggered manually or via auto-save. However, the actual "genre" tag written to the file remains a single text field with genres joined by a slash (/), to preserve compatibility with file tag formats.

Example:
Track A -> House, Dance
Track B -> House, Techno
Track C -> House, Electro

After selecting all of them:
The interface only displays "House" (it's the only common one).
If the user adds "Minimal," then:
A becomes: House, Dance, Minimal
B: House, Techno, Minimal
C: House, Electro, Minimal
If the user removes "House," then:
A: Dance
B: Techno
C: Electro

So that section could became:
The Multi-Track Edit Dialog now brings professional bulk genre management to Mixxx, enabling efficient and consistent metadata operations across your entire library.
When you select multiple tracks and open the Track Info dialog, the new genre editor displays only the genres that are common to all selected tracks — using a smart intersection strategy. You can then make global changes that apply across the selection:

  • Add a Genre: New genres are added to every selected track, in addition to their existing genres.
  • Remove a Genre: Only genres that are common to all selected tracks can be removed. Unique genres per track are left untouched.
  • Preserve Existing Metadata: Each track keeps its individual genre tags unless explicitly modified. Nothing gets overwritten unintentionally.
  • Central Save Operation: When you click "Apply" or "OK", changes are written to the Mixxx internal track metadata database using the new GenreDao system.
  • Optional File Tagging: If file metadata writing is enabled in preferences, Mixxx will also save the updated genres to the audio file tags using a /-separated string (e.g., House/Minimal/Techno), to maintain compatibility with common formats.
    Note: At this stage, undo is not supported for bulk genre operations. Once changes are applied, they cannot be reverted automatically.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Revolutionary Single-Track Genre Management

What's the revolution? Can you elaborate that this only works through right click on the track -> properties;

Smart Autocompletion
Will the autocompleter correct me if I made a typo and typed "dnace" and show all genres containing "dance"?

Can understand that the term "revolutionary" is maybe too much.
I can call: New Tag-Based Genre Editing for Single Tracks or Enhanced Single-Track Genre Editing with Tags & Autocomplete...

Reformulated paragraph:
You can now enjoy a significantly improved experience when editing genres on individual tracks — thanks to a new tag-based interface available in the Track Info Dialog (accessed via Right Click → Properties).
The new WGenreTagInput widget replaces the plain text input with a rich, interactive editor that supports:

  • Visual Genre Tags: Each genre appears as a removable tag with clean, intuitive styling.
  • Smart Autocompletion: As you type, existing genres are suggested from your library.
  • One-Click Addition: Press Enter to instantly add a new genre.
  • Easy Removal: Click the × button to remove any genre.
  • Drag & Drop: Reorder genres freely based on your preferred structure.
  • Auto-Creation: Any new genre entered is automatically added to the database.
    Please note: This new editor is currently only available via the Track Info Dialog.
    Other areas of the UI (like inline editing in the tracktable via F2) still use a simple text field and do not yet support tags or autocompletion.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Drag & Drop: Reorder genres to match your preferred organization

Please elaborate: On which genre in the genre field is the tacktable sorted? I assume the first, will the widget keep the order of the genres like I added them?

Yes, the tag-based genre editor supports drag & drop to reorder genres, and this order is preserved in the track’s database record. When the genres are written to the file tag (or shown in the genre column), they appear in the same order.
However, Mixxx does not use genre order to sort tracks in the tracktable, sorting is based on the full genre string or possibly the first listed genre. The drag & drop order is mainly for personal organization and visual clarity

that line could be:
Drag & Drop: Reorder genres visually within the tag editor.
The order you set is preserved in the database and used when displaying or exporting the genre field, but it does not currently affect how tracks are sorted in the library.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Game-Changing Multi-Track

Smart Intersection Display

Please elaborate: what happens if I add a genre / remove a genre/ want to change the genre for all selected tracks. Can I undo?

How Multi-Track Genre Editing Works:
When you select multiple tracks and open the Track Info dialog:

  • The editor shows only the genres common to all selected tracks.
  • Adding a genre will apply it to every selected track, it will be added to each track’s existing genre list.
  • Removing a genre will remove it from all selected tracks where it exists, but other unique genres remain untouched.
  • There's no direct "replace" function, you can remove and add manually if needed.
  • Once you click "Apply" or "OK", the changes are saved to Mixxx's internal database.
    Note: There is currently no undo, changes are final once applied.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Smart Intersection Display

Please elaborate: will the widget recognize all text in the genre field of the selected tracks as genres? What if I want to add a custom genre definition?

  1. Primary Source – GenreDao (Database):
    When loading the selected tracks, the system first attempts to retrieve structured genre data using GenreDao.
    If the tracks have already been updated using the new system (or migrated), their genres are stored as proper entries in the genre database and are interpreted accordingly.

  2. Fallback – Raw Genre Field Parsing:
    If the database does not contain genre entries for a track, the system falls back to parsing the raw text stored in the genre field.
    This is done using a regular expression that splits the text on common separators: ,, ;, /, and (in some versions) multiple spaces.
    For example:
    "House; Techno / Minimal" → ["House", "Techno", "Minimal"]
    These parsed genres are then automatically inserted into the database via GenreDao, ensuring that even legacy tracks can participate in structured genre editing.

  3. Intersection Logic:
    The widget then computes the intersection of all genre lists across the selected tracks:
    Genres that are common to all selected tracks are displayed as removable tags.
    Genres that are not shared are not shown.
    Unique genres for each individual track are preserved in the background and remain untouched unless the user explicitly removes them.

  4. Adding New Genres:
    Users can always add custom genre names by typing directly into the widget.
    Any genre not already present is automatically created in the genre database.
    There are no enforced naming constraints, for example, a genre like "vibe_123" will be accepted without issue.

That line could be:
Smart Intersection Display: The genre editor calculates and displays only the genres that are common across all selected tracks. It uses structured data from the genre database where available, and falls back to parsing the raw genre field using common separators (;, /, ,, spaces) if needed.
You can freely add new custom genres by typing, they are automatically saved to the database.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Dedicated Genre Database: New normalized schema with genres and genre_tracks tables

What's the use of the genre_tracks table?

The genre_tracks table is part of the normalized schema and is designed to represent a many-to-many relationship between tracks and genres.
It is actively used in the following ways:

  • Reading genres for a track
    GenreDao::getGenresForTrack(track_id) performs a join between genre_tracks and genres to retrieve all genres linked to a specific track.
  • Writing genres for a track
    GenreDao::setGenresForTrack(track_id, genre_list) deletes existing rows from genre_tracks for the given track_id, inserts any new genres into genres, and then repopulates genre_tracks with the updated associations.
  • Multi-track operations
    When loading multiple tracks in the multi-track edit dialog, the system uses genre_tracks (via GenreDao) to fetch genre lists and compute the intersection.
    So while genre_tracks may not be referenced explicitly throughout the UI code, it's the core table used behind the scenes to associate genres with tracks in a structured way.

@ronso0
Copy link
Member

ronso0 commented Aug 7, 2025

Autocompletion is not yet available in other parts of the UI, like inline editing in the track table.

I noticed that manually entering genre1; genre2 into the column would not sync with GenreDAO, ie. in Track Info the genre field would be empty.

I'd recommend to not claim that it works like this or that as long as none of those changes is neither fully functional let alone merged into Mixxx. It'd be better to clarify that this and that is the goal, but currently still WIP.
(obviously depends on when this post shall be merged, just wanna avoid user looking for the multi-genre features in beta/alpha builds and be disappointed)

-- didn't read your latest replies yet, so sorry if you already changed that --

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Seamless Integration: Full compatibility with existing Mixxx workflow and file metadata
what happens if I made a mistake and used a wrong separator in the genre field, eg "//" or "," ...

That's good point on which I was reflecting in these days looking at the code:
While the system does its best to integrate with existing genre metadata, it's true that its ability to parse multiple genres from a single raw text field depends on recognizable separators.

Currently, the fallback parser splits genres using a regular expression that matches:

  • ;
  • ,
  • /
  • (sometimes) multiple spaces

If a user has entered genres using non-standard or uncommon separators; for example, "House//Techno" — then the parser will interpret this as one single genre, not two.
So "House//Techno" and "House, Techno" would be treated very differently unless cleaned manually.
This means that although integration is quite smooth in common cases, it's not entirely foolproof, and some inconsistencies from legacy data may require manual cleanup or editing using the new interface.

In future versions, we could consider:

  • Adding support for more flexible/fuzzy parsing;
  • Warning the user when unrecognized formats are detected;
  • Providing tools to normalize or clean up malformed genre strings.

That line could be change in:
Improved Integration with Existing Mixxx Metadata: The new genre system integrates well with existing libraries: it can parse legacy genre fields using common separators like /, ;, or ,.
However, genre fields using non-standard formats (e.g. "House//Techno") may require manual correction to be interpreted correctly. All changes remain compatible with Mixxx's metadata system and can be written back to files in the traditional format.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

No genre understanding: Mixxx couldn't differentiate individual genres

What is the actual new genre-feature with which Mixxx now understands genres?

Previously, Mixxx stored genres as a plain text field (e.g., "House/Techno") and treated the entire string as one value. There was no semantic parsing, indexing, or structure; genres were not stored or processed as individual entities.
The new genre feature that enables Mixxx to “understand” genres is the introduction of a normalized genre data model and supporting infrastructure:

Specifically:

  • A new database schema with two tables:
    genres(id, name): stores distinct genre names
    genre_tracks(track_id, genre_id): represents many-to-many relationships
  • A dedicated GenreDao data access layer:
    Allows querying, creating, and updating structured genre associations
    Supports autocompletion and efficient lookups
  • A new tag-based genre editor widget (WGenreTagInput):
    Treats each genre as an individual object (a tag), not just text
    Allows users to add, remove, and reorder genres visually
    Connects directly to GenreDao for live suggestions and persistence
  • A smart parser that, when needed, splits legacy text fields into structured genres using separators like /, ;, or ,
    With this system in place, Mixxx now stores and processes genres as independent, queryable entities, rather than raw strings.
    So when I say “Mixxx now understands genres” I’m referring to this transition:
    from treating genres as flat text to handling them as first-class, structured, database-backed objects.

So that sentence could be: "Mixxx now understands genres as structured, queryable entities, not just text strings. This is powered by a new normalized database model, genre-aware editing tools, and a backend designed for intelligent handling of genre data."

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

No consistency: "Electronic" and "electronic" were treated differently

If a users positions on a genre field of a track in the tracktable, presses F2 and enters the text "electronic', will Mixxx correct it?

This is a limitation that still exists today.
If a user edits the genre field directly in the track table (e.g., by pressing F2) and types "electronic" (all lowercase), Mixxx does not currently normalize or correct it. The input is treated as-is.
Even in the new genre system:

  • "Electronic" and "electronic" are stored as distinct entries in the genres table;
  • There is no automatic case folding or duplication check;
  • Users may unintentionally create near-duplicates unless they use autocompletion via the genre tag editor.
    So, although the new system lays the groundwork for centralized genre management, consistency still depends on user input.
    We hope to improve this in the future with tools for cleaning up duplicates and applying smart normalization (e.g., case-insensitive matching or merging).

So that line could became:
No structured consistency: Mixxx treated all genre text literally, so “Electronic” and “electronic” were stored and handled as separate values. With the new system, this is still technically possible, but centralized management and autocompletion reduce the chances of duplication. Future improvements will aim to add smart normalization tools.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Visual tag interface: See and manage each genre individually

If a track contains genres with long (multilevel) names how will they be displayed in the widget: eg a classical track needs to be in the genres Classica\Strumento\ArchI\Violoncello Classica\Forma Musicale\Musica da Camera Classica\Ensemble\Quartetto d'Archi

What & great question!
In the current implementation, genres like Classica\Strumento\Archi\Violoncello or Classica\Forma Musicale\Musica da Camera are treated as single genre strings; the widget does not parse or split on the \ character or any other separator.

These multi-level names are displayed as individual tags inside the WGenreTagInput widget. Visually:

  • Tags grow horizontally to accommodate long names;
  • If the tag is too long to fit on one line, it wraps to the next line automatically;
  • The full text remains visible and editable;
  • Users can drag, remove, or reorder these tags like any other genre.

So while the system doesn’t currently support true hierarchical genre structures, it does handle long or structured names visually and functionally without issue. This setup allows users to define rich genre structures today, even if the app doesn’t yet interpret the hierarchy and provides a solid foundation for supporting hierarchical genres in the future.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Consistent naming: Centralized genre database prevents duplicates

when I enter Hip hop as a genre, will Mixxx correct it to the previous defined Hip-Hop genre?

Right, the genre database does not automatically correct or normalize entries like "Hip hop" to "Hip-Hop".
Currently:

  • Genres are treated as literal strings (case-sensitive, punctuation-sensitive);
  • "Hip-Hop" and "Hip hop" are stored as separate genres;
  • There is no automatic correction or merging, even if a near-duplicate exists;
  • The autocomplete system does help avoid duplicates by suggesting existing genre names as the user types, but it’s entirely up to the user to select the correct one.
    So the phrase "prevents duplicates" in the newspost is an overstatement; a more accurate description is:
    Autocomplete helps reduce duplicates, but consistency still depends on user input.

@sdv0001
Copy link
Contributor Author

sdv0001 commented Aug 7, 2025

Autocompletion is not yet available in other parts of the UI, like inline editing in the track table.

I noticed that manually entering genre1; genre2 into the column would not sync with GenreDAO, ie. in Track Info the genre field would be empty.

I'd recommend to not claim that it works like this or that as long as none of those changes is neither fully functional let alone merged into Mixxx. It'd be better to clarify that this and that is the goal, but currently still WIP. (obviously depends on when this post shall be merged, just wanna avoid user looking for the multi-genre features in beta/alpha builds and be disappointed)

-- didn't read your latest replies yet, so sorry if you already changed that --

You're totally right, thanks for pointing this out.
I fully agree that I should avoid claiming full functionality or seamless integration at this stage.
As of now:

  • The new multi-genre system is implemented and working in the Track Info dialogs only;
  • Inline edits in the track table (e.g., entering genre1; genre2) do not yet sync with the new genre database via GenreDao;

As a result, the Track Info dialog might appear empty or desynchronized after such edits.
You're also right that the project is still a work in progress, and hasn't yet been merged into Mixxx main.
I'll make sure the newspost reflects that clearly outlining what already works, what is planned, and what users can expect (and not expect) in current development builds.
Thanks again for keeping the messaging honest and grounded; I really appreciate that.

@@ -0,0 +1,144 @@
title: GSoC 2025 - Multi-Genre & Autocompletion Support Now in Mixxx!
Copy link
Member

Choose a reason for hiding this comment

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

Not in yet. Only the PR exists (which is fine for the GSoC submission, but not for the users wanting to use this feature).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Totally right! Thanks for pointing this out

sdv0001 and others added 5 commits August 10, 2025 20:07
Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>
Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>
Co-authored-by: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>
@Swiftb0y
Copy link
Member

you still have loads of non-breaking spaces sprinkled all over the the file. Please sanitize those. They are primarily around your ** markers. Also replace the Unicode RIGHT SINGLE QUOTATION MARKs with the plain ASCII '

@Swiftb0y
Copy link
Member

You'll probably have to look at your file with a hex editor to find these issues.

@Eve00000
Copy link
Contributor

Thank you @Swiftb0y for the help.

That looks much nicer: logic, explication & description + what the genre-feature is all about, a lot of questions are solved.
Can you please add a preview link in your first comment.

@Eve00000
Copy link
Contributor

Thank you, this clearly explains all the work don, in the GSoC-Genre-Project.
Can someone else take a look please and if OK -> publish it?

Copy link
Member

@Swiftb0y Swiftb0y left a comment

Choose a reason for hiding this comment

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

LGTM. Thank you.

@Swiftb0y Swiftb0y merged commit 171b16a into mixxxdj:website Aug 13, 2025
7 checks passed
@ronso0
Copy link
Member

ronso0 commented Aug 13, 2025

Umm, this still reads as if the genre features were available, eg. in some alpha version.
But not even the db schema PR has been merged..

@Swiftb0y
Copy link
Member

Swiftb0y commented Aug 13, 2025

yeah... I kinda see that. I already complained about that previously and antonio changed it, but if you feel like it hasn't been changed enough, feel free to add a more explicit disclaimer.

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.

4 participants