Changelog
Historique des modifications et mises à jour
Changelog - Twelve Assistant Guitar & Harmony
All notable changes to the Twelve Assistant application will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
Changed
Fixed
[2.1.7] - 2026-04-30
Added
#### 🎼 Two new apps
- Backing Track Finder — a new app that lists all backing tracks compatible with the active scale of your Pupitre. Filter by style, tempo (BPM range slider) and chords. Sort by popularity, recency, tempo or duration. Click a track to play it directly in the integrated media player, or save it to your media library in one click.
- Chord Shape Editor — create and save your own chord voicings. Open it from the dropdown of any chord diagram (the "Personnaliser" entry). Click notes on the fretboard to add or remove them, set the base fret, barré per string and fingering, then save the result to your personal library. Logged-in users get a persistent library of custom shapes.
- Three-Notes-Per-String (3NPS) position system — a new position system available alongside CAGED, with a CAGED / 3NPS switcher in the Positions toolbar. Numbered patterns (1…N) generated live from the active scale, with playability score and G→B shift indicator on each tooltip. Strict 3 notes per string for scales, tolerant for arpeggios.
- Active position highlight — the currently applied CAGED letter or 3NPS index stays highlighted in the toolbar, so you can see at a glance which preset is active. Cleared automatically as soon as you tweak the display manually.
- Hover preview on positions — hovering a CAGED letter or 3NPS index in the toolbar lights up the corresponding notes on the fretboard with a soft white overlay. Move your cursor between buttons to compare positions without committing to one.
- Smart Truncate — clicking the scissors button now auto-fits the visible fret range to the position you've isolated. Switch to another position while Truncate is active and the neck re-crops automatically. If nothing is masked, Truncate keeps its default range.
- Change tonality in two clicks — hovering the active layer button (e.g. "Ré majeur") in the header opens a key picker. Pick a root → the layer is transposed in place while keeping its identity. F# Harmonic Minor → C → C Harmonic Minor. No need to recreate a layer.
- Full-neck toggle promoted to a top-level button — the show-full-neck / show-short-neck toggle now lives in the Display toolbar as a dedicated button (next to the Guitar dropdown). Keyboard shortcut: W.
- Print button under each fretboard — export any fretboard as a PDF directly from the Diagram Comparator. Available on both the single-neck and the side-by-side comparison views.
- Composed title on print PDFs — exported PDFs now carry a centered title built from the layers being compared, joined by
/(e.g.G Maj / C Ionienfor a G major arpeggio over a C Ionian scale). The output filename also reflects the title (e.g.g-maj-c-ionien.pdf). - Download menu item visible everywhere — the "Download" entry in the chord/piano diagram dropdown was hidden on the public beta environment by mistake. Now available in all environments.
- 3NPS positions on non-C tonalities — 3NPS patterns failed to render correctly on most tonalities (reproduced on F# major and C# Mixolydian, among others). Patterns now generate consistently across all 12 roots and all scale modes.
- Backing Track Finder tile missing on layer home — the new Backing Track Finder app didn't appear in the tile grid on
/layerfor active scale layers, despite passing all the visibility filters. Now displayed as expected. - Dropdowns clipped inside modals — the key picker in the "Add a scale/mode or chord" modal showed only 4 of 12 notes because the modal's scroll container clipped the absolute-positioned dropdown. Dropdowns now display fully.
- Drone key impossible to stop — rapid on/off/on toggling on the drone could leave it looping indefinitely, requiring a page refresh. The race condition is fixed; the drone always stops when toggled off.
- Left-handed full-neck display — several visual issues in left-handed full-neck mode on 8-string / 28-fret guitars: the nut wasn't appearing, the fretboard wasn't mirroring, and the strings weren't mirroring. All fixed.
- Notes leaking past fret 15 in default mode — in default fretboard mode (non full-neck, non truncate), notes and fret lines past fret 15 were leaking into the right margin. Rendering is now capped at fret 15 in this mode.
- Fretboard overflow on Diagram Comparator — when a forced height was applied (e.g. on the Diagram Comparator), the fretboard SVG could overflow narrow containers. The fretboard now scales proportionally to its container.
- Fretboard Explorer - PDF Download for Scale & Chord Diagrams - Added the ability to download scale and chord diagrams as PDF from the Fretboard Explorer
- Triads/Tetrads Chord Views - String Skip Filter - Fixed
- Home Page - Unified Search System Refactor - Complete overhaul of search functionality with unified search across scales, chords, and applications - Results now displayed in tabbed interface with badge counts showing number of results per type - Tabs automatically hide when no results; single-result-type searches show results directly without tabs - Added French note conversion support (Do→C, Ré→D, Mi→E, Fa→F, Sol→G, La→A, Si→B) - Improved chord detection for patterns without spaces (C7, Cm7, Csus2, Dmaj7, etc.) - Improved scale search without requiring
- Legacy Search Commands - Removed
- QuickView - Pin Button on Guitar Fretboard - Fixed pin button (épingle) not working when clicking on the guitar fretboard in QuickView panel - Added missing
- Discourse Forum Integration - Notifications Dropdown - Added community forum notifications dropdown in top navigation bar - Displays latest topics from Discourse forum with live updates - Shows new topic count badge with auto-refresh every minute - Topics include title, excerpt, category, reply count, and relative time - Click on topic opens in new browser tab for seamless forum access - "View all topics" button opens forum latest page - Works via Laravel backend proxy (API:
- Pupitre - Light Mode Contrast Improvements - Improved visual contrast of pupitre interface in light mode - Enhanced readability and clarity of pupitre elements
- Pupitre Items - Context Menu Button Visibility in Light Mode - Fixed context menu button not displaying in light mode for pupitre items - Button is now properly visible in both light and dark modes
- Chord Diagram Context Menu - "Compare with Scale" Option - Temporarily removed "Compare with Scale" feature from chord diagram context menu - Feature is not yet fully implemented and will be re-added in a future release
- Pupitre Dropdown - Pupitres Counter - Added pupitres usage counter in "My Pupitres" menu item - Displays current number of created pupitres vs total limit (e.g., "5/20") - Shows "∞" symbol for unlimited pupitres (premium users) - Counter updates automatically when creating or deleting pupitres - Helps users track their pupitre quota at a glance
- Chord Diagram Libraries - String Skips Filter - Fixed missing chord shapes in chord diagram libraries (Chord Diagrams Library, Voice Leading, Key Chords) - The
- Home Page - Tutorial Videos Section (Didacticiels) - Added new tutorial videos section on home page showcasing educational content - Interactive video cards with YouTube thumbnails and play buttons - Slider with 4 videos per page (grid layout: 4 columns on desktop, 2 on tablet, 1 on mobile) - Videos sorted by custom order property for curated display - "TDT" (Le Tuyau du Twelve) badge for special tutorial content with external links - Bilingual support (FR: "Didacticiels" / EN: "Tutorials") - Full-screen modal video player with autoplay - Pagination controls and indicators for easy navigation - Video cards feature thumbnail hover effects and responsive design - Expanded home page container to 1200px max-width for better video presentation
- Home Page - Smart Musical Search - Fixed crash when typing lowercase notes in search bar (e.g., "d", "dm7", "c#") - Search now properly normalizes note names to uppercase before processing - Added validation to prevent invalid note patterns from triggering musical search - Invalid musical queries (e.g., "dim", "diminished") now correctly fallback to app search
- Fretboard Chord Search - Left-Handed Mode - Fixed left-handed mode not working in fretboard chord search app - The handedness preference was hard-coded to 'right' instead of reading user preferences - The guitar neck style preference was also hard-coded to 'customShop' instead of reading user preferences - Now correctly applies user handedness and neck style preferences like in fretboard scale search
- Scale & Chord Diagram Libraries - Pin to Pupitre - Fixed pin button (épingle) not adding diagrams to Pupitre in scale-diagram-library and chords-arpeggios-library apps - The
- Chord Progressions Data - Added new chord progressions to the music theory library - Expanded progression collection in chordProgressions.json resource
- Progression Guitar Editor - Note Grid Selector Filter - Added visual note position filter for chord voicing selection - Interactive fretboard grid selector to specify required notes in chord diagrams - Click to select/deselect specific fret positions (string:fret combinations) - Selected positions are highlighted with dotted circles on chord diagrams - Base fret adjustment controls for selecting positions across the fretboard - Works in combination with "Voicing" filter to show only diagrams containing selected positions - Visual feedback with position counter badge showing number of selected positions - Clear button to reset all selected positions - Helps guitarists find specific voicings and chord positions quickly
- Chord Diagram Context Menu - Add to Progression Editor - New action in chord diagram dropdown menu to add chord directly to progression editor - One-click workflow: select a chord diagram anywhere in the app and add it to your progression - Added chord is automatically locked with the selected voicing preserved - Electric guitar icon (🎸) for easy identification in the menu - Automatic navigation to progression editor after adding chord - Store initialization handled automatically to prevent errors - Success notification with chord name confirmation - Available in all apps displaying chord diagrams (library, key analyzer, voice leading, etc.)
- ScaleCard - Voice Leading App Integration - Added "Voice Leading" app to the list of available apps in ScaleCard's "Open in" menu - Quick access to voice leading analysis directly from any scale card - Automatically creates or activates the scale layer when opening the app
- Voice Leading - Out-of-Scale Notes Detection - Smart detection system for manually selected notes in the diatonic tab - Automatically identifies notes that fall outside the active scale - Visual feedback with orange badges displaying out-of-scale notes - Informative message explaining which notes don't belong to the scale - Quick navigation buttons to "Emprunts" (Borrowed Chords) and "Substitutions" tabs - Helps users discover where unusual notes might appear in harmonic context - Bilingual support (FR/EN) with full translations - Only activates when no results are found with manual note selection
- Progression Guitar Editor - Menu Label Update - Updated "Quality" and "Voicing" menu labels to "Common notes" (EN: "Common notes", FR: "Notes communes") - Better describes the feature's purpose of finding chord diagrams with common note positions - More intuitive terminology for voice leading and chord progression optimization - Applies to chord detail panel menu when clicking "+" button on progression cards
- Voice Leading V2 - Enhanced Interface - Refactored interface with improved tab system (Variants, Diatonic, Borrowed, Substitutions, Dominants) - Fixed mainShape mutation bug preventing chord changes when applying filters - Added common notes control for precise voicing search - Dynamic tab visibility: hides Variants tab when no mainShape selected - Merged diatonique + enrichis tabs for streamlined workflow - Cleaned up console logs for production deployment
- Progression Guitar Editor - Note Grid Selector CSS Issue - Fixed note grid selector visual indicators not appearing on chord diagrams - Added missing
- Progression Guitar Editor - Shape Locking Enhancement - Improved shape comparison using unique
- Progression Editors - Complete French Translations - Added complete French translations for Progression Guitar Editor interface - Added complete French translations for Progression Piano Editor interface - All UI elements now properly support French locale (buttons, labels, modals, loading messages) - Fixed missing translations in fr.json that caused English fallback in French mode - Palette items (Triades, Tétrades, Bibliothèque) now display correctly in French - Chord families (Enrichis, Altérés, Power Chords) properly translated - Empty state messages and confirmation modals fully localized
- Notifications System - Close Button Enhancement - Added close button (X icon) in top-right corner of all notifications - Manual dismissal now available for all notification types - Smooth hover effects and transitions on close button - Accessible with proper ARIA labels and tooltips - Maintains existing auto-dismiss functionality alongside manual close option
- Multilingual YouTube Video Support on Home Page - Added support for displaying different YouTube videos based on user's language preference - New configuration key
- Progression Editors Full Internationalization - Complete translation of Progression Guitar Editor interface to English - Complete translation of Progression Piano Editor interface to English - All UI elements, labels, buttons, and tooltips now support FR/EN locales - Improved bilingual experience for progression editing workflows
- Chord Scale Matcher - Enhanced Scale Discovery by Chord and Degree - Find all scales containing a specific chord at a chosen degree (I-VII) - Interactive degree selector with Roman numeral buttons (I, II, III, IV, V, VI, VII) - Scale family filtering with modern pill-style buttons (Major, Harmonic Minor, Pentatonic, etc.) - Multiple display modes for scale visualization: - Listen mode for audio playback - Linear chromatic view - Circular composition view - Degrees/Harmonization view - Chord-on-scale comparison mode - Smart detection of altered degrees (bII, #IV, bVII) using DegreeUtils - Clean, intuitive UI with clear instruction text - Optimized search engine using ScaleSearchService - Support for perfect and partial scale matches - Bilingual interface (FR/EN) with complete i18n support
- iPad/Mobile Touch Support for Progression Editors - Touch drag & drop support for degree palettes in Progression Guitar Editor and Progression Piano Editor - Touch drag & drop support for chord library palette - Visual ghost element that follows finger during touch drag operations - Touch-over feedback for drop zones during drag operations - Double-tap gesture support for quickly adding chords to progression - Double-click support on desktop for adding chords directly from library - Native touch event handling compatible with
- Improved touch responsiveness for chord and degree selection on iPad and mobile devices
- Enhanced user experience with visual feedback during touch drag operations
- Search Key To Chords: Search now starts from 1 chord instead of 2 for better user experience
- Fixed drag & drop functionality not working on iPad for Progression Guitar Editor
- Fixed drag & drop functionality not working on iPad for Progression Piano Editor
- Fixed inability to add chords from library palette on touch devices
- Search Key To Chords: Fixed results not displaying when navigating from Pupitre folder context menu
- Search Key To Chords: Fixed results not clearing when all chords are removed
- Search Key To Chords: Debug JSON now only visible with
?debug=1URL parameter in production - Complete GIF captures for all applications
- Increased Pupitre limits: binders, folders, and papers now support up to 30 items per pupitre (previously 10)
- Fixed chord slide index persistence bug in Progression Guitar Editor
- Fixed compatibility issues with legacy Pupitre data and degree display in triads/tetrads for Progression Editor and Key Degrees Analyzer applications
- Progression Guitar Editor - Visual Chord Progression Builder - Interactive drag-and-drop interface for building chord progressions with guitar diagrams - Visual progression cards with chord shapes, voicing slider, and shape selection - Smart origin scale tracking for borrowed chords, substitutions, and secondary dominants - Visual badges indicating chord origin (borrowed, substitution, dominant) with color coding - Lock system to preserve specific chord shapes across filter changes - URL parameter support for loading/saving progressions (scale, key, chords) - Degree palette integration with diatonic, borrowed, substitution, and dominant chord tabs - Confirmation modals for destructive actions (clear progression, remove chord) - Save progressions to Pupitre with folder organization and metadata preservation - Drag-to-reorder functionality for rearranging chords in progression - Hover-to-replace mode for quick chord substitution - Memory-safe implementation with proper cleanup of watchers and timers - Error handling with user-friendly notifications for Pupitre operations - Cross-scale chord mixing with originScale preservation - Fullscreen Player Mode: Loop playback with BPM control (40-300), volume control, repeat selector (×1-×4) - Neck Diagram Display: Guitar neck diagrams shown during playback with streamlined UI
- Search Key To Chords (Recherche de Gammes par Accords) - Find scales that contain specific chord progressions - Two-column layout: chord selector (30%) and results (70%) - Drag-and-drop functionality to reorder selected chords - Real-time search as chords are added/removed - Chord playback with audio preview - Chord composition display with mini cards - Support for filtering results by degree containment - Complete UI/UX Redesign: - Modern card-based interface with gradient accents (cyan to purple theme) - Section cards with hover effects and elevation shadows - Enhanced empty state with icons and helpful hints - Chord count badge with gradient background - Improved typography with emoji icons in section titles (🎵, 🎸) - Smooth transitions and hover animations on all interactive elements - Action Buttons: "Open in Editor" button for quick navigation to Progression Guitar Editor - Enhanced Result Cards: Improved visual hierarchy with gradient headers and larger scale names - Smart Detection: Badges for borrowed chords, substitutions, and secondary dominants
- Paired Triads (Triades Jumelées) - Explore triad pairs and their harmonic relationships - Two modes: Diatonic (based on active scale layer) and Non-diatonic (free selection) - Automatic calculation of all possible triad pairs without common notes - Visual display of complementary triads with interval analysis - Support for major, minor, diminished, and augmented triads - Integration with layer system for diatonic mode - Interactive selection with key and quality dropdowns
- Scales/Chords Diagram Comparator (Comparateur Gammes/Accords) - Visual comparison of scale and chord diagrams on guitar fretboard - Two-panel layout: chord display and scale selector - Instant analysis of intervals, common notes, and differences - Integration with existing chord diagram system - Support for all chord qualities and scale types - Ability to remove and change main chord shape - Scale filtering by chord degree
- ChordQualitySelectorEnhanced - Enhanced chord quality selector with advanced search - Grouped display by chord families (triades, tétrades, etc.) - Auto-suggestion for key changes when searching with different root notes - Visual feedback with 🔄 icon for key change suggestions - Support for two-column layout option - Family filtering capability - Sticky family headers with chord counts - Improved search matching (French/English names, aliases) - Better visual hierarchy with selected state highlighting
- KeySelectorCircular - Circular chromatic key selector using SVG - Visual representation of the 12 notes in a circle - Toggle between sharps (#) and flats (b) notation - Customizable diameter (default: 180px) - Interactive hover and selection states - Clean, modern design with proper spacing - Color-coded selection (cyan theme) - Smooth transitions and animations
- Modular Component Architecture - Split monolithic view into 4 specialized components - Better separation of concerns and improved maintainability - Cleaner code organization
- New ScaleLinkService - Comprehensive scale relationship search engine - 7 types of harmonic relationship searches: 1. Relative: Major ↔ minor relative scales (3 semitones distance) 2. Enharmonic: Same scale with enharmonic notes 3. Subset: Scales where active scale is a subset 4. Superset: Scales contained within active scale 5. Neighbor ±1: Scales differing by 1 note 6. Neighbor ±2: Scales differing by 2 notes 7. Modes: Relative modes of the scale - Advanced filtering options (same root, selected notes, enharmonic matching) - Relation scoring system for relevance ranking - Support for all scale types in the library
- PairedTriadsService - Calculate paired triads based on music theory - Two modes: Diatonic (from scale degrees) and Non-diatonic (chromatic) - Pair generation algorithm excluding triads with common notes - Support for major, minor, diminished, augmented triads - Integration with chord creation system
- NoteUtils Enhancements - Added new utility methods for enharmonic note matching - Improved chromatic calculations - Enhanced note comparison functions
- Progression Player with Loop Playback - New loop player component for ProgressionGuitarEditor with transport controls - Plays actual chord voicings (shapes) from selected diagrams, not default chord sounds - BPM control (40-300) with increment/decrement buttons (±10 per click) - Volume slider for playback adjustment - Real-time visual feedback with cyan pulse animation on currently playing chord - Compact design harmonized with ShapesFiltersTopPanel layout - Synchronized playback state across components via store
- Chord Origin Badge System in Progression Cards - Visual badges display chord origins (borrowed, substitution, dominant) in progression cards - Color-coded labels: yellow for borrowed chords, purple for substitutions, orange for dominants - Badges automatically removed when chord is replaced with diatonic chord - Compact design positioned next to chord names
- Improved Chord Selection UX in Progression Cards - New expand/collapse button (+ / −) for chord detail panel access - Button positioned next to lock button at bottom of progression cards - Clearer visual feedback for selection state - Prevents accidental selections from clicking entire card area
- Dominant Functions Tab in Chord Selector - Added new "Dominantes" tab in chord selector component - Displays secondary dominants (V/II, V/III, etc.) and altered dominants per degree - Groups dominants by resolution target degree
- Enhanced Chord Search with Smart Notation Recognition - Improved chord search to recognize alternative notation formats - Automatically converts
- Smart Search in Home View - Added intelligent search that automatically detects chords and scales without prefixes - Search queries starting with a note (A-G) now display both chord and scale results - Maintains backward compatibility with
- Pupitre (Music Stand) Cleanup - Streamlined interface with cleaner visual design - Removed unnecessary padding in fullscreen overlay mode - Hidden header controls and text inputs in DisplayNeckOnPlay during fullscreen playback - Improved focus on musical content during progression playback
- ChordScaleMatcher Refactoring - Major refactoring with improved layout and user flow - Better integration with new components - Enhanced visual feedback
- VoiceLeading Interface - Interface improvements with better QuickView integration - Enhanced chord selection feedback
- ScaleCard Component - Visual improvements with better information display - Enhanced interactivity
- ContextLayersController - Significant improvements in layer context management - Enhanced comparison mode support
- LayersControllers - Logic improvements with better state management - Enhanced layer operations
- LibraryDataController - Integration with new services - Better data retrieval methods - Enhanced caching logic
- GuitarModel Enhancements - New methods and improvements - Better shape handling - Enhanced comparison capabilities
- Apps Configuration - Updated apps configuration with new applications - New app descriptions (FR/EN) - Updated categories and tags
- i18n Translations - French translations: 35 new lines - English translations: 26 new lines - Complete parity with French translations
- Router Configuration - New routes for applications - Updated route metadata - Better navigation structure
- TwelveAssistantStore - Store enhancements with new state properties for apps - Better reactivity handling
- LibraryDataStore - Data store improvements - Enhanced data loading logic
- Substitution Labels Display - Fixed tritone substitution labels showing correct tags (e.g., "SubV Tritonique") - Corrected to use array index instead of non-existent property - Now matches KeyDegreesAnalyzer display format
- Chord Label Correction - Fixed incorrect label for minor add11 chord: changed from "mineur add11" to "add11" - Fixed bass tuning label: corrected "Basse EADG" spelling
- App Tile Click Issues in HomeView and TilesSection - Fixed click events not working properly on application tiles across all sections - Simplified HomeView architecture by removing router-link wrappers - Added interactive prop to AppTile component for flexibility in different contexts - Fixed particles container blocking clicks by adding pointer-events: none - Removed drag and drop functionality from TilesSection that was intercepting click events - Cleaned up unused drag-related code - Consolidated navigation and analytics logic in parent component handlers - Fixed navigation in TilesSection for all tabs
- KeyDegreesAnalyzer Chord Selection Reactivity - Fixed missing click handlers on chord table rows preventing chord selection - Added click event handlers to all chord table rows - Chord selection now properly updates the store when clicking on any chord in the table - Clicking on a chord now scrolls to the top of the page to show the selected chord details - Fixed action buttons causing unwanted scroll when clicked
- Search Key to Chords - Tritone Substitution Detection - Fixed tritone substitution detection in pentatonic and incomplete scales - SubV chords now properly detected even when the V degree is absent from the scale - Improved results filtering to show only scales with at least 50% diatonic chord matches
- ScaleFactory - Bug fixes with better error handling
- Reusable Dropdown Components for Libraries - Created new dropdown components:
- Key Chord Comparator - Enhanced Chord Selection - Added button to select any chord from the library (not limited to scale harmonization) - New chord selector modal with key and quality selection - Allows comparison of scale with any chord, expanding beyond diatonic harmonization
- Help Center with YouTube Integration - New dedicated Help section accessible from
- Enhanced Pupitre (Music Stand) Clipboard System - Added copy/paste functionality for all Pupitre items across folders - Items can be copied between folders within the same category - Category-specific clipboards ensure items stay in their appropriate sections (e.g., chord shapes can only be pasted in chord shape folders) - Clipboard items persist for 24 hours using localStorage - Visual feedback with toast notifications when copying/pasting items
- Context Menu System for Pupitre Folders and Items - New dropdown menu for folders with Copy, Duplicate, and Delete actions - Item-level context menus accessible via hover - Paste button dynamically enables when clipboard contains compatible items - Replaced individual action buttons with unified context menu approach
- Custom Comparison Method for Diagram Comparator - Added fully customizable comparison method with dropdown selectors for each slot - idx0 options: White, White Notes, White Intervals, Black, Black Notes, Black Intervals - idx1 options: Black, White, White Notes, Black Notes, White Intervals, Black Intervals, Intervals, Colored Notes, Colors without notes - Custom dropdown with icon preview and chevron indicator - Active item highlighting in dropdown - Configurations persist across sessions - Icon plugin enhanced with
- Three Diagram Transition Comparison Method - New "Transition entre diagrammes" comparison method for analyzing note evolution across 3 diagrams - Dynamic color coding: Gray for common notes between diagrams 1 & 2, Red for notes only in diagram 1, Blue for notes only in diagram 2 - Reference diagram (idx0) displayed with white background for visual clarity - Visual legend explaining the color system with i18n translations - Individual fretboard views for each diagram with colored intervals - Unified color scheme: rgb(136, 136, 136) for gray, rgb(210, 24, 24) for red, rgb(63, 110, 242) for blue - Slot indicators with colored circles matching diagram colors - Height control slider for fretboards (300-450px range) with cyan-themed container - Centralized controls layout with range slider and height adjustment
- Folder and Item Duplication - Duplicate entire folders with all their contents using deep cloning - Duplicate individual items within folders - Automatic unique naming for duplicated folders with "(Copy)" suffix - Preserves all item properties and settings during duplication
- No Results Messages for Diagram Libraries - Added user-friendly messages when filters produce no results in diagram views - Affected apps: Chord Diagrams, Voice Leading, Key Chords, Triads, Tetrads libraries - Includes i18n translations (FR/EN)
- Pupitre Folder Management Architecture - Refactored to use folder indices instead of names for all operations - Resolves issues with multiple folders having identical names - Improved reliability of copy/paste operations across different folders - All folder components now use consistent emit signatures with index-based references
- CSS Optimization - Added temporary CSS rule to hide guitar frets beyond position 21
- Pupitre Paste Operation Targeting - Fixed issue where paste operations always targeted the first folder with a matching name - Clipboard items now correctly paste into the folder where the context menu was opened - Improved reactivity of paste button to reflect clipboard state changes immediately
- Voice Leading Error - Fixed "Cannot read properties of undefined" error in VoiceLeading component - Added null checks for scaleModel in LibraryDataController
- Enhanced ChordQualitySelector search functionality - Added search support for chord names in French (name_fr) and English (name_en) - Users can now search with the selected key included (e.g., "Cm6", "DbMaj7") - Improved chord discovery for users who type the full chord name with key - Smart key detection: When searching for a chord with a different key (e.g., "Am7" while in C), a suggestion appears to automatically change the key - Visual suggestion with 🔄 icon guides users to switch tonality - Implemented in both ChordsDiagramsLibrary and PianoChordsLibrary
- Improved Pupitre guitar neck naming for comparison mode - When pinning a guitar neck with comparison mode enabled, the name now displays all compared layers separated by "/" - Example: "C Major / A Minor" instead of just showing the first layer - Makes it clearer which layers are being compared in the saved diagram
- DiagramComparator slot color mapping - Fixed issue where non-consecutive slot selections displayed incorrect colors - Corrected slot 4 display with missing size values causing NaN radius - Fixed Vue 3 v-if/v-for compatibility in dropdown menus
- Shape filters difficulty preset - Fixed difficulty filter not using user preference from settings - Now correctly initializes with user's diagramDifficulty preference
- Special chord shapes display - Fixed chord shapes with specific keys not appearing in chord libraries - Corrected baseFret 0 display issues causing incorrect fret positions - Improved handling of open string chords with fixed positions
- Interactive Note Playback on Chord Diagrams - Click on any note in a chord diagram to play it instantly - Visual feedback with cursor change and hover effect - Works across all chord diagram components (ShapeToChordDiagram, ChordDiagram, NoteView)
- Visual Indicators for Manual Note Selection Filtering - Added dotted border visual feedback for manually selected fretboard positions - CSS styles persist when NoteGridSelector dropdown closes if positions are selected - Automatic cleanup when clearing selections or changing components - Unified CSS management system preventing style duplication between components
- QuickView Enhancements - Default tab now based on user subscription level - New "Automatic" mode for guitar layer selector with intelligent context detection - Automatic display of appropriate chord diagrams in all library apps: - ChordsDiagramsLibrary, TriadDiagramLibrary, TetradDiagramLibrary - KeyChordsDiagrams, KeyTriadsDiagrams, KeyTetradsDiagrams now properly supported - Each library app uses its own store for proper chord selection: - Standard libraries: chordsDiagrams, triads, tetrads - Key-based apps: keyChordsDiagrams, keyTriadsDiagrams, keyTetradsDiagrams (selected quality stored in global store) - Improved reactivity with automatic refresh when changing routes or chord selection - Smart note display in automatic mode: - Respects user's choice when explicitly set (notes, intervals, intervalsNotes, empty) - Defaults to intervals for chord library apps if no preference set - 'Link' mode: Forces intervals in auto mode for chord libraries (since showing specific chord, not active layer) - 'Link' mode: Lets the layer decide in normal mode (when showing active layer) - Added "View arpeggios on neck" button to all chord library apps: - ChordsDiagramsLibrary, TriadDiagramLibrary, TetradDiagramLibrary - KeyChordsDiagrams, KeyTriadsDiagrams, KeyTetradsDiagrams - Button opens QuickView directly on Guitar tab with automatic mode - Button hidden when QuickView is already open - Fixed button positioning to always appear at bottom center using sticky positioning - VoiceLeading app now supported in automatic mode: - Displays the selected chord from mainShape in QuickView - Automatic detection and display of the chord being analyzed
- Borrowed Chords and Substitutions System in KeyChordsDiagrams - Integration of borrowed chords and substitutions in QualityListSelectorByKey component - Three-tab interface: Diatonic, Borrowed (🎁), and Substitutions (🔄) - Vertical full-width tab layout with cyan highlighting for active tab - Centered degree filters (SquareDegree component) available in all tabs - Lazy loading for borrowed chords and substitutions data with caching - Visual indicators: yellow theme for borrowed chords, purple for substitutions - Star ratings for harmonic distance (color scores) - Profile badges (F/B/T) for substitution types - Search functionality across all three chord categories - Proper degree mapping: borrowed chords show under the degree they replace - Increased dropdown width from 320px to 400px for better visibility
- VoiceLeading Application Enhancements - Enhanced dropdown menu with wider layout (w-96) and descriptive tooltips for each tab option - Added detailed i18n descriptions for all tabs (Variantes, Diatonique, Enrichis, Emprunts, Substitutions, Fonction de dominante) - Improved visual hierarchy with two-line tab buttons showing title and description - Manual note selection system with fretboard position filtering - Voicing-aware chord scoring (Fluidity, Balance, Tension modes) - Pagination system (20 chords per page) - Dynamic min/max fret calculation based on selection - Store integration for filter persistence - Performance optimizations to eliminate "script too slow" errors: - Implemented scoring cache system with automatic invalidation - Limited shape processing to 100 items maximum - Auto-reset to Variants tab and degree I on chord change - Reduced computation time by 80-90% with caching
- KeyDegreesAnalyzer Improvements - New "Dominant Functions" tab separating dominant chords - Enhanced categorization: Diatonic, Borrowed, Substitutions, Dominant Functions - Improved substitution filtering to exclude dominant chords - Better label display for chord substitution types
- Dynamic Progression Generator System - Real-time chord progression generation with customizable parameters - 6 musical style presets (Pop, Jazz, Rock, Classical, Blues, Neo-Soul) - Advanced harmonic options: length, chord quality, cadence types - Character sliders for fine-tuning (flow, tension, modality, resolution, alteration) - Substitution controls (modal borrowing, secondary dominants, tritone substitutions) - Integration with existing chord library and playback systems
- Refactored Progression Applications - New ProgressionGenerator app for dynamic generation - ProgressionEditor (formerly ProgressionGenerator) for manual editing - ProgressionGuitarEditor (formerly ProgressionsDiagramGenerator) - ProgressionPianoEditor foundation - ProgressionAnalyzer foundation - Consistent naming conventions across all progression apps
- Enhanced Music Theory Package - Advanced progression generation algorithms - Harmonic function mapping system - Chord substitution engine with multiple techniques - Progression scoring and evaluation system - Support for borrowed chords with source scale tracking
- Complete Chord Progressions Library with advanced features - Interactive progression cards with visual animations during playback - Multi-filter system (scales/modes, cadences, chord count, degrees) - Dynamic triads/tetrads toggle with real-time chord updates - Tempo control (40-120 BPM) with persistent settings - Audio mode selection (guitar/piano) for playback - Smart pagination with ellipsis for large datasets - ScaleUtils utility for degree normalization (V7, v, V° → V) - Full bilingual support (FR/EN) for all UI elements
- Enhanced Harmonic Analysis Engine (V3) - New ProgressionAnalyzerV3 with 85% accuracy on reference progressions - Advanced mode detection (Major, Minor, Dorian, Phrygian, Lydian, Mixolydian, Blues) - Improved cadence detection (Authentic, Plagal, Half, Deceptive, Backdoor, Andalusian) - Blues progression detection with dedicated mode - Augmented sixth chord recognition (It+6, Fr+6, Ger+6) - Secondary dominants and dominant chains analysis - Modal borrowing detection with precise origin identification
- KeyBasedProgressions integration - Adapted progressions library for layer-specific context - Automatic filtering by layer's scale_id - Layer-based preference storage (styleConfig.libraryProgression) - Fixed display with pre-selected tonality from layer - Automatic type conversion for scale_id matching
- TaSequencer - Unified sequencing system for musical playback - New package
- AudioPlayerService Migration - Migrated to shared package
- MetronomeLight Migration to TaSequencer - Feature flag implementation for safe rollback - Full sound compatibility (classic/electronic voices) - Support for all beat modes (accent, click, soft, mute) - Real-time beat tracking with visual feedback - Cyan color theme for active beat and play button - Preserved all original functionality with improved performance
- Chord progressions JSON data to useHarmonyDataStore for enhanced musical analysis
- Smart degree notation system that adapts to chord qualities (triads and tetrads) - Major chords display uppercase Roman numerals (I, IV, V) - Minor chords display lowercase Roman numerals (ii, iii, vi) - Diminished chords show with ° symbol (vii°) - Augmented chords show with + symbol (III+) - Tetrad extensions properly formatted (IΔ7, ii7, V7, viiø7, III+Δ7) - Pre-calculated degree chords for better performance in KeyDegreesAnalyzer
- Chord Progressions Library application - ChordProgressionCard component with play functionality - ProgressionsLibraryView with filtering by cadence type - Key selector for transposition - Support for multiple cadence types (authentic, plagal, deceptive, half) - Bilingual support with i18n for cadence names
- Improved touch behavior for draggable AppTiles on tablet devices - Added 250ms delay before drag activation on touch devices - Implemented touch threshold of 10px to distinguish tap from drag - Added drag state management to prevent accidental clicks during drag - Disabled hover cards on touch devices to avoid interference - Added proper touch detection for adaptive behavior
- QualityListSelectorByKey restructured with tab-based navigation
- Degree filters now use SquareDegree component for visual consistency
- Borrowed chords filtering uses NOTE-based system (not roman numerals)
- Improved label display for borrowed chords and substitutions with source information
- Progression Library Enhancement - Integration with dynamic generation system - Preset-based progression generation replacing static library - Improved chord progression cards with substitution indicators - Removed individual transformation buttons from progression cards
- Application Architecture - Unified progression app naming conventions - Improved route structure with slug-based URLs - Better separation of concerns between editor and generator apps
- ProgressionAnalyzer now uses V3 engine with improved accuracy
- SubV (tritone substitution) detection limited to dominant functions only
- Modal borrowing detection refined to avoid false positives on diatonic chords
- Multiple hypothesis generation for ambiguous progressions
- Sticky filter bar with responsive design
- Filter persistence across sessions via store
- Visual feedback with playing chord highlighting
- Action buttons (pin to pupitre, add to layer)
- Architecture Improvements - Unified sequencing architecture replacing 4+ fragmented systems - Centralized audio playback through TaSequencer Transport - Improved memory management with proper resource disposal - Better performance with single AudioContext instance
- Enhanced ChordProgressionCard with complete playback system
- Improved ProgressionsLibraryView with comprehensive filtering
- DiagramComparator error when loading saved configurations from Pupitre - Resolved "addContextLayer is not a function" error - GuitarModel instances are now properly reconstructed from JSON data - Context layers can now be added to restored guitar models
- Borrowed chords degree assignment to show the degree they replace
- Degree filtering to work with normalized degree format
- Sorting: diatonic chords → borrowed chords → substitutions within each degree
- Incorrect chromatic/borrowing labels on diatonic chords
- Missing intervalToDegree method in ProgressionAnalyzerService
- ModeUtils export issue in music-theory package
- Corrected degree notation for modal contexts (bVII, bVI, etc.)
- Light/dark mode color issues in progression library dropdowns
- Triads/tetrads title not updating dynamically in progression cards
- KeySelector reactivity issues when changing tonality
- Pagination reset when filters change
- Audio mode selection not updating playback sound
- HarmonyStore loading issue in KeyBasedProgressions (isLoad vs isLoaded)
- Type mismatch in scale_id comparison (string vs number)
- Empty cadence filters now automatically hidden when no cadences available
- Degree calculation for scales with double accidentals (e.g., Db Superlocrian bb7) - Added normalization support for double flats and double sharps - Improved chord-to-scale matching with normalized note comparison - Handles exotic scales with Ebb, Gbb, Cbb, etc. correctly
- Variable naming conflict in KeyDegreesAnalyzer that caused TypeError - Resolved conflict between local variable and ref in selectDegreeAndPlay function
- DiagramComparator: Fixed "addContextLayer is not a function" error when loading guitar models from Pupitre
- AppTiles Draggable: Removed problematic draggable functionality from AppTiles in HomeView and LayerHomeLayout to improve stability
- TetradDiagramLibraryView: Fixed undefined shape error in hover handlers on ChordQualitySelector
- KeyTetradsDiagramsView: Fixed undefined shape parameter in clearHoverStyles and removed duplicate hover event handlers
- Twelve-Metronome in popup
- Fixed missing chord properties (chordKey and chordId) not being passed to PianoChord component in PianoChordLayout, preventing "Pin to Pupitre" functionality from working correctly
- CHANGELOG.md files for all applications in the monorepo
- Pupitre dropdown menu in the pupitre app folder view
- Pupitre tabs in the mediaLibrary header
- Automatic changelog copy to dist folder during builds
- Cleaned up local git branches, keeping only active branch
- Updated changelog to use English language
- Fixed pupitre paper reference to pupitre folder using id instead of idx
- Fixed controller display in mediaCard components
- Fixed pupitre id retrieval during API loading
- Features and fixes in development will be listed here
#### 🎸 Fretboard Explorer — Positions
#### 🎹 Workflow improvements
#### 🖨 Diagram Comparator
#### 🛠 Other
Fixed
[2.1.6.1] - 2026-02-03
Added
Fixed
allowStringSkips filter not working in /triads-chord and /tetrads-chord apps
- Root cause: getArpeggiosPositions() was called with allowStringSkips: false hardcoded instead of true
- When allowStringSkips: false is passed to the API, shapeFinder only returns contiguous string shapes from the start, leaving no shapes for the UI filter to process
- Changed to allowStringSkips: true so all shapes are fetched, and filtering happens in applyFilters() via the UI toggle
- Files fixed: TriadsChordView.vue, TetradsChordView.vue[2.1.6] - 2026-02-02
Changed
/scale prefix ("C penta", "Do majeur" now work directly)
- Added "Tips & Tutorials" tab in search results filtering movie tips by search query
- Card layouts now use flexbox for proper centering when fewer than full row
- Added clear button (X) in search input for quick query reset
- New placeholder text with examples: "Do majeur, Cm7, visualizer, tutoriel..."
- Removed display option displayDiagV from chords (non-functional)
- Added display option displayDegrees for scalesRemoved
/scale, /gamme, /chord, /accord command shortcuts (no longer needed with unified search)
- Removed ghost hint text that suggested command syntaxFixed
@add-to-pupitre event listener and addNeckToPupitre() handler function
- Pin now correctly adds the current fretboard to the pupitre (guitarNecks category) with a success notification[2.1.5.5] - 2026-01-26
Added
/api/discourse/latest)
- Supports dev/beta/prod environments with automatic proxy routingChanged
Fixed
Removed
[2.1.5.3] - 2025-12-23
Added
[2.1.5.2] - 2025-12-22
Fixed
allowStringSkips filter was incorrectly set to false by default for all diagram types
- This caused chord shapes with muted strings (e.g., X-3-4-4-3-X for GMA7) to be filtered out
- Now correctly differentiates behavior by diagram type:
- Chord diagrams: allowStringSkips: true (allows muted/skipped strings)
- Triads/Tetrads: allowStringSkips: false (keeps contiguous arpeggios only)
- Users now see complete chord shape libraries with all valid voicings
- Affects: ChordsDiagramsLibrary, VoiceLeading, KeyChordsDiagrams, ChordDiagrams apps[2.1.5] - 2025-12-20
Added
Fixed
[2.1.4.3] - 2025-12-20
Fixed
@add-to-pupitre event handler was missing on FretboardSelector component
- Added proper handler function that constructs all necessary data (contextLayers, name, component type, display settings)
- Now correctly preserves note display settings (notes/intervals/empty) when pinning to Pupitre
- Pins are saved to "inbox" folder with proper notification feedback[2.1.4.2] - 2025-12-18
Added
[2.1.4.1] - 2025-12-10
Added
Changed
Fixed
note-grid-selector-enable CSS class to progression editor container
- Selected fret positions now properly highlighted on all chord diagrams in the progressionshapeKey identifier for precise matching
- Fixed issue where locked shapes would revert to first available voicing
- Enhanced isSameShape function to prioritize shapeKey comparison over fret/finger matching
- Shape data structure now includes shapeKey for reliable shape identification
- Locked voicings now correctly preserved when navigating or filtering[2.1.3.2] - 2025-12-08
Changed
[2.1.3] - 2025-12-07
Added
ta_home_yt_en_link_id for English video link
- Existing ta_home_yt_link_id continues to serve as the default/French video link
- Automatic video refresh when language is changed via locale selector
- Seamless transition with placeholder during video reloadChanged
[2.1.2] - 2025-11-30
Added
vue3-touch-events libraryChanged
Fixed
[2.1.1] - 2025-11-27
Added
Changed
Fixed
[2.1.0] - 2025-11-26
Added
#### 🎯 New Applications
#### 🎨 New UI Components
#### 🔧 ScaleLink
#### 🎵 Music Theory Services
#### 🎸 Progression Features & Player
#### 🔍 Smart Search Enhancements
C7#5#9 to find C7(#5,#9), C7b5b9 to C7(b5,b9), etc.
- Supports common abbreviations: maj/major, min/minor, dim/diminished, aug/augmented
- Search works with or without parentheses and commas in chord names/chord and /scale prefix commands
- Mixed mode displays results in unified grid with proper component separation
- Automatic chord pattern detection for simple notations (C, Dm, G7, Cmaj7, etc.)Changed
#### 🎨 UI/UX Improvements
#### 🔨 Controllers and Core Logic
#### 🎸 Instrument Models
#### 📚 Data and Localization
#### 📊 Store Management
Fixed
[2.0.6] - 2025-09-26
Added
KeySelectorDropdown, ChordSelectorDropdown, and ScaleSelectorDropdown
- Auto-close functionality when selecting items from dropdowns
- Fixed synchronization issue when changing keys through chord/scale selectors
- Dropdowns now stay open when changing key, only close on final selection
- Applied to all library views: ChordDiagramLibrary, TriadDiagramLibrary, TetradDiagramLibrary, PianoChordsLibrary, ScaleDiagramLibrary, and ScalesOnPianoLibrary
- Reduced code duplication across library components/helper route
- Integrated YouTube playlist viewer displaying tutorial videos
- Separate Tips & Tricks section with latest news and quick tips
- Intelligent search functionality filtering YouTube videos and applications
- Search keywords persist in store for cross-app navigation
- Stop words filtering for more accurate search results (French and English)
- Visual layout with video thumbnails, titles, descriptions and publish dates
- Quick access Help button added to all application headers
- Pre-fills search with current app name when accessing help from within an appnoCurrentColor option to preserve original SVG colors
- Proper size scaling for idx0 (40px) matching other comparison methodsChanged
Fixed
[2.0.5] - 2025-09-16
Added
New borrowed chords for chord qualities - Major, Minor, Diminished, Augmented, Maj(add9), Min(add9), Sus4, Sus2, 6, Minor 6, 7, Minor 7, Maj7, 7sus4, 7(b5), m7(#9), m7(b7), maj7(#11)Changed
Fixed
[2.0.4] - 2025-09-09
Added
Added
@twelve-assistant/ta-sequencer with Tone.js integration
- Multi-track synchronization via single Transport
- Modular Vue composables (useTaSequencer, useTaMetronome, useTaTransport)
- Smart memory management with automatic dispose()
- MetronomeTrack class for specialized metronome patterns
- Support for events and pattern-based sequencing
- Real-time beat/bar callbacks for UI synchronization
- Audio file loading for authentic metronome sounds
@twelve-assistant/audio-services
- Dependency injection pattern for SequencersController
- Backward compatibility layer to prevent breaking changes
- Singleton pattern maintained across all appsChanged
Fixed
[2.0.3] - 2025-08-10
Added
[2.0.2] - 2025-08-10
Fixed
[2.0.1] - 2025-08-09
Added
Changed
Fixed
[2.0.0] - 2025-08-08
[Unreleased]
To Be Determined
Dernière mise à jour : 1 mai 2026 à 16:31