← Back to App

🎵 Release Notes

Version history and updates for ModusPractica

Version 3.0.1 — The “Intelligent Assistant” Update 🤖 Latest Major Release
Released: March 2026 • Build 20260314
🤖 Version 3.0.1 is a major architectural shift — ModusPractica evolves from a passive timer into an intelligent, data-driven practice assistant that senses your practice phase, adapts to your effort, and protects you from unproductive repetition.

🚀 Major Feature: Autonomous Phase Detection

  • Manual Toggle Removal: The “Technique / Free Practice” checkbox is gone. The system now automatically senses your current practice phase — no manual input required.
  • Silent Observer: Tracks two key biometrics in real time:
    • Entry Cost — time elapsed to the first successful repetition, indicating how much effort it takes to “get into” a chunk.
    • Stability Index — ratio of effort (resets) to completions, measuring how reliably a chunk can be executed.
    Together these metrics automatically distinguish between the Acquisition phase (still learning) and the Consolidation phase (reinforcing mastery).

🧠 Effort-Based SRS Integration

  • Biometric Scheduling: The spaced-repetition algorithm now incorporates physical and cognitive effort data, not just success/failure outcomes, for more accurate memory modelling.
  • Dynamic Difficulty: High resistance (many resets in a session) automatically increases chunk difficulty, triggering more frequent reviews to prevent illusory fluency.
  • Mastery Acceleration: Effortless sessions (Stability Index = 1.0 — zero resets, maximum flow) trigger faster interval growth, rewarding genuine mastery with longer rest periods.

🛡️ Practice Health & Guardrails

  • Anti-Blocked Practice: A 12-minute cap on single-chunk focus prevents “mindless repetition” and neuro-overload. When the cap is reached, the system prompts you to pause, reflect, or move on.
  • Frustration Guard: If the system detects a downward spiral (> 8 minutes elapsed and a high reset count), it proactively offers to lower the target repetitions — keeping practice productive and psychologically safe.

✅ Smart Intensity: The 3-Rep Rule

  • Retention Checks: Chunks that achieved “Mastery” status in their previous session now default to a 3-repetition Retention Check instead of a full practice block. This respects the 24-hour Ebbinghaus consolidation window without demanding unnecessary effort.
  • Efficiency: Minimises session fatigue while maintaining the safety net of the daily Ebbinghaus review cycle — you confirm retention in under a minute and move on.

🛠️ Technical Refactor

  • Refactored MemoryStabilityManager.js to expose Entry Cost and Stability Index as first-class signals consumed by the SRS scheduler.
  • Refactored IntensityModule.js to integrate effort metrics into intensity calculations and guardrail triggers.
  • Advanced duration prediction formula: Entry Cost + (Target × Time/CR × Stability Index) — produces per-chunk time estimates that account for both historical performance and current session effort.

💡 UI Enhancements: Smart Suggestions

  • Smart Merge Suggestion: The app now proactively analyses your active chunks in the background. When two overlapping or adjacent chunks have both reached high stability (Acquisition Phase successfully completed), a subtle blue banner appears proposing to merge them.
    • Accepting the suggestion creates a new, larger chunk with an automatically assigned safe (pessimistic) starting value to protect cognitive load.
    • Suggestions can be permanently dismissed, keeping the musician in full control of their practice structure.
  • Smart Split Suggestion: The app now identifies “bottleneck” chunks that generate excessive cognitive load. When a chunk stagnates (persistently low stability after multiple sessions, or a high error rate), an amber warning banner appears.
    • The system proposes splitting the chunk mathematically in half, with a smart asymmetric split applied when the measure count is odd.
    • The user retains full control — the suggestion can be accepted or dismissed at any time without affecting the existing review schedule.
Version 3.0.0 — The Interleaved Lab Update 🧠 Major Release
Released: March 12, 2026 • Build 20260312
🚀 Version 3.0.0 is a landmark release introducing the Interleaved Lab — a dedicated practice environment built on memory science to help you consolidate your entire repertoire faster, smarter, and with less cognitive fatigue.

🧪 New: The Interleaved Lab

  • Smart Practice Circuits: A dedicated workspace that generates optimised practice circuits based on your memory performance and Ebbinghaus retention science. Work through your entire repertoire in one structured, science-backed session.
  • Priority-Driven Selection: Chunks are automatically categorised into 'Focus' (critically overdue), 'Refresh' (upcoming reviews), and 'Sprint' (recently practiced) groups — ensuring the right material gets your attention at the right time, based on Ebbinghaus retention data and your personal performance history.
  • Dynamic Time Budgeting: The Lab calculates the optimal time allocation per chunk using your historical practice data and your selected intensity level (Light, Balanced, or Intensive). Sessions always fit your schedule and energy.
  • The 'Adempauze' (Smart Break): A non-pressured transition screen between chunks, featuring a live stopwatch. Take the time you need to breathe, reset your focus, and prepare for the next passage — preventing cognitive burnout during longer sessions.
  • Repertoire Filtering: A new UI panel lets you selectively include or exclude specific pieces from your circuits, giving you full control over session content without permanently affecting your review schedule.

🐛 Bug Fixes

  • Timer Synchronisation: Resolved an intermittent issue where the practice session timer could fall out of sync with actual elapsed time during pause/resume cycles.
  • Improved Data Logging: Fixed edge cases in session data logging that could produce inaccurate statistics for short or interrupted practice sessions, leading to more reliable charts and review scheduling.

🔧 Technical Details

  • New InterleavedSessionManager.js module manages circuit state, chunk sequencing, and time-budget calculations.
  • New AdaptiveTauManager.js provides real-time memory stability estimates used by the Lab's priority algorithm.
  • Repertoire filter selection state is persisted in localStorage under the key mp_labRepertoireFilter.
Version 2.3.5
Released: March 11, 2026 • Build 20260311

🐛 Bug Fixes

  • 🎯 Fix: targetReps overwrite during practice session: Custom target repetitions (e.g. 10) were silently reset to 6 as soon as the user logged the first correct repetition.
    • Root cause: the Dr. Gebrian formulas used a hardcoded 6 as their base/minimum. With zero pre-success errors, 6 + (0 × 3) = 6 and MAX(6, 0) = 6 silently overwrote any custom value.
    • Fix: computeGebrianTarget() now accepts an optional baseTarget parameter (default 6). All call-sites pass currentSection.targetRepetitions as the base, so the user's custom goal is always the floor of any Gebrian-adjusted target.
    • Affects: Strict Gebrian mode, Standard Gebrian mode (50% and 100% intensity), Overlearning Intensity switch, Strict Mode toggle, and the failed-attempts / target reset buttons.
  • 🔄 Fix: session initialization always preserved custom targetReps: Removed the redundant localStorage re-read block that could silently fall back to 6 when the section object was already correctly populated. The session now reads strictly from currentSection.targetRepetitions.

✨ Improvements

  • 🔢 Target Repetitions input redesigned (chunk creation & editing): All four Target Repetitions fields in the Add Chunk, Edit Chunk, Split, and Merge modals have been changed from a limited dropdown (1–18) to a free <input type="number">.
    • Field starts empty — no default value pre-filled.
    • Placeholder text: "For best practice minimal 5 repetitions".
    • Minimum value enforced: min="1". Saving without a valid value shows an alert and focuses the field instead of silently substituting 6.
    • Users are no longer constrained to a fixed list — any positive integer can be entered.

🔧 Technical Details

  • All targetRepetitions || 6 fallbacks removed from moduspractica-practice-session.js; the value is now always taken strictly from the stored section data.
  • confirmSplit() and confirmMerge() now validate the target repetitions input upfront and return early with a user-facing alert instead of silently substituting 6.
  • Draft restoration logic updated: draft target is compared against currentSection.targetRepetitions (not || 6) to correctly detect manual adjustments.
Version 2.3.5
Released: March 10, 2026 • Build 20260310

✨ New Features

  • 🧠 Advanced Practice Prioritization (Dashboard): A new weighted sorting system for the "Daily Agenda" that automatically ranks pieces and chunks based on urgency and memory science.
    • 📊 Piece Urgency Score: Pieces are ranked by a combination of overdue count, total delay time, and average retention probability—ensuring neglected repertoire rises to the top.
    • 🎯 Chunk Attention Score: Within each piece, individual chunks are sorted by their current stability. Fragments at high risk of being forgotten (lowest retrievability) are presented first.
    • 🆕 New Chunk Priority: Recently created or split chunks receive an automatic priority boost to ensure fresh neural pathways are stabilized immediately.
    • ⚙️ Intelligent Grouping: Maintained logical grouping by piece to minimize context switching while still enforcing a strict "most-critical-first" workflow.
    💡 Why this matters: Effective practice isn't just about what you play, but when you play it. This update uses your personal memory data to decide the optimal practice order, maximizing retention and ensuring no part of your repertoire is left behind.

🔧 Technical Details

  • Implemented _getChunkAttentionScore and _buildSortedAgendaGroups helper methods in the dashboard logic to calculate real-time priority without affecting UI performance.
Version 2.3.5
Released: March 10, 2026 • Build 20260310

✨ New Features

  • ⊕ Merge Chunks: Combine two or more active chunks into a single larger chunk — supporting the natural progression from micro-practice to macro-practice, consistent with motor learning research on part-to-whole practice strategies.
    • 🔀 Activation: Click ⊕ Merge Mode in the piece detail view to enter selection mode. Checkboxes appear next to each active chunk.
    • 📋 Modal workflow: Select 2 or more chunks and click Merge Selected. A modal asks for the new chunk range, an optional description, and target repetitions.
    • 📅 Pessimistic scheduling: The merged chunk's nextReviewDate is set to the earliest due date among the parent chunks (never in the past), ensuring no practice opportunity is missed.
    • 🗂️ Non-destructive: Parent chunks are archived rather than deleted, preserving their full practice history for statistics and allowing reactivation if needed.
    • 🔗 Provenance tracking: The merged chunk stores mergedFromIds referencing all parent chunk IDs for full traceability.
    💡 Why this matters: As mastery grows over individual micro-chunks, merging them into larger musical units helps practice transitions and musical flow. Merging is the natural endpoint of successful micro-practice.
  • ✂ Split Chunk: Divide a difficult chunk into two smaller child chunks for more targeted practice — grounded in cognitive load research (Sweller, 1988) and deliberate practice theory (Ericsson).
    • Activation: Click ✂ Split on any active chunk in the piece detail view.
    • 📋 Modal workflow: A modal shows the original chunk range (read-only) and prompts for two child chunk ranges and target repetitions.
    • 🔄 Fresh start for children: Both child chunks start with interval reset to day 1, status New, and difficulty Difficult.
    • 🗂️ Non-destructive: The parent chunk is archived rather than deleted, preserving its full practice history.
    • 🔗 Provenance tracking: Each child chunk stores splitFromId referencing the parent chunk ID.
    • 🧠 Memory stability: Stability records for the child chunks are created via MemoryStabilityManager.createSplitChildrenStability().
    💡 Why this matters: When errors persist in a chunk, Cognitive Load Theory and Ericsson's deliberate practice research both recommend reducing unit size. The Split function lets you act on this insight immediately, without losing any practice history.

🔧 Technical Details

  • Both operations are fully non-destructive: parent chunks are archived (lifecycleState = 2), never deleted. All practice history and statistics are retained.
  • Available in the dashboard's embedded piece detail view — no need to open a separate page.
  • Provenance fields: mergedFromIds[] on merged chunks; splitFromId on split children — enabling future analytics on chunk evolution.
Version 2.3.5
Released: March 8, 2026 • Build 20260308

✨ New Features

  • 📚 Tabbed Pieces View — Active vs. Archive & Paused: The dashboard now separates active repertoire from paused and archived pieces via two clearly labeled tab buttons (Active Pieces and Archive & Paused). This keeps the main view clean and focused.
    • 🔄 Auto-Resume: Paused pieces whose resume date has passed are automatically set back to Active every time data is loaded — no manual action needed.
    • 🗂️ Archive tab: Shows all pieces with lifecycleState = 2 (Archived) or currently paused pieces with a future resume date.
    • 🔍 Filters preserved per tab: Search, color, title and sort filters all apply within whichever tab is active.
  • 🧠 Strict Gebrian Mode: Revolutionary new practice mode designed for micro-chunks and difficult transitions based on Dr. Molly Gebrian's neuroscience research on motor learning and error correction.
    • 🎯 Linear +3 Penalty: Every single mistake adds exactly 3 repetitions to your target (Formula: 6 + failures × 3)
    • 🟢 Visual Toggle Switch: Easy-to-use green toggle switch in the practice session interface
    • ⚠️ Brain Saturation Warning: Automatic warning when target reaches 25-30 repetitions—helping you recognize when your brain is too fatigued for effective practice
    • 📈 Real-time Target Adjustment: Target updates immediately for all failure types: pre-success failures, active streak failures, and memory resets
    💡 Why this matters: Dr. Gebrian's research shows that every mistake creates an error pathway in your brain. To overwrite this pathway, you need a significant surplus of correct repetitions. Strict Gebrian Mode enforces this principle mathematically, ensuring your correct neural pathways dominate error pathways. Use exclusively for micro-chunks (2-4 measures) or difficult transitions.
  • 💡 Enhanced Tooltips: Comprehensive info icons (?) throughout the practice session with detailed explanations of Gebrian methodology, optimal use cases, and cognitive science principles.

🔧 Improvements

  • Gebrian Logic Refinement: The system now distinguishes between three types of failures: initial errors (before first success), execution errors (during active streak), and memory failures (streak resets)—each properly tracked and penalized in Strict Mode.
  • UI/UX Polish: Toggle switch uses CSS transitions for smooth visual feedback; green color (#10b981) provides clear active state indication.
  • Console Logging: Detailed console output for developers and power users showing target calculation logic, mode transitions, and failure type classification.
⚡ Best Practices for Strict Gebrian Mode:
  • Use only for micro-chunks (a fwen notes or 1 - 2 measures) or isolated difficult transitions
  • Stop if your target exceeds 25-30 repetitions—your brain is saturated
  • Take breaks between streak resets to maintain mental freshness
  • Combine with the existing 50%/100% Overlearning Intensity setting for flexible difficulty scaling

📝 Maintenance & repository updates

  • Version bump: Project version updated to 2.3.5 in package.json and across app display strings.
  • Documentation: Manual content translated and updated (scientific section translated to English; partial manual translation in progress).
  • Distribution metadata: dist-build/latest.yml updated to reference the 2.3.5 installer.
  • UI labels: Multiple HTML pages now display v2.3.5 in headers and badges.
  • Note: Two occurrences of 2.2.0 remain inside absolute path strings in dist-build/builder-debug.yml; these are workspace folder paths and have been left unchanged to avoid breaking build references. Tell me if you want them updated as well.
Version 2.1.2
Released: February 22, 2026 • Build 20260222

✨ New Features

  • 📊 Practice Statistics on Piece Cards: Each piece card on the dashboard now displays comprehensive practice statistics:
    • ⏱️ Total practice time (HH:MM:SS format)
    • 📅 Number of practice days (unique days you practiced)
    • 📊 Average time per day (intensity indicator)
    💡 Why this matters: A piece with 10 hours over 20 days (30 min/day) has a very different practice pattern than 10 hours over 5 days (2 hours/day). These metrics help you understand your practice intensity and consistency per piece.

🔧 Improvements & Fixes

  • � Quick Date Insert: Right-click in the session notes field to insert the current date and time via context menu—perfect for timestamping practice observations.
  • �🖥️ Maximized on Launch (Electron): The installed Electron app opens the main window maximized for a better full‑screen workflow.
  • ▶️ YouTube Link Refresh Fix: Newly added or edited YouTube links are now usable immediately without restarting the app.
  • UI Consistency: Minor adjustments to the update modal and intra‑app navigation to improve visual consistency.
Version 2.1.1
Released: February 16, 2026 • Build 20260216

🐛 Bug Fixes

  • Fixed Chunk Modal Input Accessibility: Resolved critical issue where the chunk name input field became inaccessible after validation errors, cancellations, or deletions. Users previously had to restart the app to create new chunks after an error.
  • Enhanced Modal Keyboard Navigation: Added ESC key handler for chunk modals (Add Chunk and Edit Chunk), allowing users to quickly close modals using the keyboard.
  • Improved Modal UX: Added backdrop click handlers for chunk modals, allowing users to close modals by clicking outside the modal window, consistent with other modals in the app.
  • Automatic Focus Restoration: After validation errors (empty chunk name, invalid format) or duplicate confirmations, the input field automatically receives focus again, allowing immediate correction without manual clicking.

🔧 Technical Details

  • Added event listeners for backdrop clicks on #add-section-modal and #edit-section-modal
  • Extended global ESC key handler to include chunk modals and add-piece modal
  • Implemented 50ms delayed focus restoration using setTimeout() after alert dialogs to ensure browser alert has fully dismissed
Version 2.1.0
Released: February 14, 2026 • Build 20260214

✨ New Features

  • Piece Pause/Resume System: New "Paused" lifecycle state allows you to temporarily put a piece on hold with an automatic resume date.
    💡 Why pause a piece?
    Sometimes it's beneficial to let a piece "rest" for a while. This strategic pause allows your unconscious mind to continue processing the material, often leading to improved performance when you return. Whether you need a mental break from challenging repertoire, want to focus on upcoming performances, or simply need to manage your practice workload—pausing ensures the piece stays in your system without daily practice pressure. When ready, the piece automatically resumes on your chosen date, with all your progress preserved.
  • Smart Resume Date Selection: Beautiful modal with intuitive calendar picker lets you select when to automatically reactivate a paused piece. Paused pieces are completely excluded from today's agenda and scheduling until the resume date, giving you a clear, focused practice view.
  • Persistent Target Repetitions: Target repetitions adjustments in practice sessions are now saved and persist when you reopen the session. Your custom targets stay intact across sessions—no more reverting to chunk defaults!

🎨 UI Improvements

  • Visual Status Indicators: Paused pieces display with a distinct orange/yellow color theme and show "⏸️ Resumes: [date]" in the piece list, making it immediately clear which pieces are on hold.
  • Enhanced Status Banners: Piece detail view shows contextual status banners for paused pieces with resume date information and helpful explanations.
  • Improved Modal Design: ESC key and backdrop click support for the new pause date picker modal, consistent with other modals in the app for a seamless user experience.

🔧 Technical Improvements

  • Auto-Resume Logic: Pieces are automatically reactivated when their resume date is reached during dashboard initialization—completely hands-free resumption.
  • Enhanced Data Persistence: Target repetitions are now properly saved to localStorage and restored from saved data instead of default chunk settings, ensuring your practice preferences are preserved.
  • Lifecycle State Management: Paused pieces are intelligently filtered from due/overdue calculations and scheduled sessions, keeping your practice focus sharp.
Version 2.0.5
Released: February 8, 2026 • Build 20260208

✨ New Features

  • Technique / Free Practice Mode: New checkbox in the session evaluation screen allows you to log practice time and statistics WITHOUT updating the schedule or interval. Perfect for technique drills, polishing details, or experimenting with a passage—your review schedule stays intact while still tracking your actual practice time.
  • Smart Session Logging: Sessions marked as "Log Only" are flagged in the practice history for later analysis, and adaptive learning systems correctly ignore these sessions to prevent skewing your memory calibration.

🎨 Improvements

  • Enhanced Color Palette: Replaced piece colors with more distinctive and saturated colors (Ocean Blue, Forest Green, Crimson Red, Tangerine, Royal Purple, Hot Pink, Turquoise, Golden Yellow, Chocolate, Navy Blue) for better visual differentiation.
  • Improved Visibility: Increased opacity of colored backgrounds throughout the app (from 18% to 35%, icon backgrounds from 35% to 55%) making pieces and sessions much more visible and easier to distinguish.
  • Better Color Contrast: Colors are now more evenly distributed across the spectrum, reducing confusion between similar shades.
Version 2.0.4
Released: February 7, 2026 • Build 20260207

🐛 Bug Fixes

  • Target Repetitions Display: Fixed bug where target repetitions were incorrectly displayed as 6 even when set to a different value (e.g., 3). Chunks now correctly show the actual saved target repetitions value in both the chunk list and edit dialog.
  • Modal State Management: Fixed issue where chunk input fields became uneditable after editing or deleting a chunk. The add chunk modal now properly resets its state, eliminating the need to restart the app.
  • Form State Cleanup: Improved modal handling with explicit cleanup of form states and proper focus management when opening the add chunk dialog.

🔧 Improvements

  • Workflow Enhancement: Better user experience when managing chunks with automatic focus on the first input field when adding new chunks.
Version 2.0.3
Released: January 30, 2026 • Build 20260130

🐛 Bug Fixes

  • Interval Tracking: Fixed bug where the interval field wasn't updated after practice sessions. The app correctly calculated intervals for scheduling, but the interval value in backup data remained at 1 day. The interval field now accurately reflects calculated review intervals based on performance (days to weeks for advanced stages with excellent performance).
  • Data Consistency: Statistics and backup data now properly display actual spaced repetition intervals, providing better insight into learning progress.
Version 2.0.2
Released: December 20, 2025 • Build 20251220

🔧 Improvements

  • Free Practice Dialog: Fixed dialog window in Free Practice mode - now shows complete message text with proper formatting when saving practice time
  • Charts Section Display: Bar Sections list in Charts now displays both the section range AND description for better clarity

🐛 Bug Fixes

  • Dialog Text Truncation: Resolved issue where save confirmation dialog text was cut off in Free Practice window
  • Charts Information: Section descriptions are now visible alongside section ranges in the Charts view
Version 2.0.1
Released: December 18, 2025 • Build 20251218
🌍 Global Timezone Support! ModusPractica is now fully timezone-safe and works correctly for users worldwide.

✨ New Features

  • Live Clock Display: Dashboard now shows local time, UTC offset, and IANA timezone name in the top-right corner
  • Timezone-Safe Date Storage: All dates are stored in timezone-safe format with automatic migration of legacy data
  • Global Compatibility: Ebbinghaus scheduler works identically across all timezones

🔧 Improvements

  • Timezone Utilities: New utility functions: getTodayLocal(), toDateOnly(), isSameDay(), daysBetween()
  • Data Migration: Automatic conversion of legacy dates to timezone-safe format during data import
  • Calendar Fixes: Calendar now displays correct local dates independent of timezone
  • Statistics Accuracy: Streak calculations and overdue tracking are now timezone-aware

🐛 Bug Fixes

  • Dashboard Loading: Fixed "Loading..." status caused by syntax errors in dashboard JavaScript
  • Import Issues: Data import now correctly displays all pieces after import completion
  • Syntax Errors: Corrected getAgendaBucketsForDate() function with valid parameters
Version 2.0.0
Released: December 1, 2025

🚀 Major Release

  • Ebbinghaus Memory Engine: Scientifically-based spaced repetition algorithm
  • Profile Management: Multi-user support with isolated data per profile
  • Practice Sessions: Complete practice tracking with metrics and statistics
  • Data Export/Import: Backup functionality for data portability