Releases: Matheu46/moodle-local_quicknote
Releases · Matheu46/moodle-local_quicknote
Release list
v0.12.0
v0.12.0 (2026-09-28)
- Bulk Actions in Notes Center:
- Added multi-select capabilities with individual card checkboxes and "Select all" / "Deselect all" controls.
- Implemented an atomic bulk deletion external API (
delete_notes) with a confirmation modal and automatic screenshot cleanup. - Added support for bulk exporting selected notes to PDF and Markdown.
- Maintained selection state across AJAX pagination and searches using a JavaScript
Set. - Added a responsive bulk actions toolbar with selected items count and mobile-optimized layout.
- General Notes (Dashboard & Front Page):
- Added support for creating and viewing general notes on the Dashboard (
/my/) and Front Page (courseid = 0). - Added an administrative setting (
enable_dashboardandenable_frontpage) to control QuickNote availability on the Dashboard and Front page. - Refactored note access validation (
util::validate_note_access) to handle system context and courses consistently. - Added "General notes" option in Notes Center filters and export routines.
- Added support for creating and viewing general notes on the Dashboard (
- UI/UX & Theming:
- Dynamically adjusted the floating toggle button's vertical position when Moodle's sticky footer is active (
.hasstickyfooter), preventing it from overlapping bottom action bars. - Modernized sidebar and note component styles with standard Bootstrap 5 CSS variables (
--bs-body-bg,--bs-border-color,--bs-tertiary-bg, etc.) for consistent theming and dark mode support.
- Dynamically adjusted the floating toggle button's vertical position when Moodle's sticky footer is active (
- Performance & Lazy Loading:
- Implemented lazy loading for the sidebar: user notes are now fetched via AJAX only when the drawer is first opened, speeding up initial page loads.
- Added loading indicator state with draft preservation and auto-focus restoration upon fetch completion.
- Text Highlighting in Same-Origin Iframes (H5P):
- Added support for detecting text selections and triggering highlight notes inside same-origin iframes, particularly for
mod_hvp(H5P) activities. - Implemented a
MutationObserverto watch and attach listeners dynamically to newly injected iframes. - Added smart button offset positioning relative to the iframe window and viewport.
- Added support for detecting text selections and triggering highlight notes inside same-origin iframes, particularly for
- Security & URL Validation:
- Introduced
util::clean_url()to strictly sanitize and validate note URLs, blocking dangerous URI schemes (e.g.javascript:,data:). - Improved handling for complex URLs with multiple hash fragments (common in interactive modules and SPAs).
- Applied URL sanitization across note saving (
save_note), PDF/Markdown exports (exporter), and Notes Center rendering.
- Introduced
- Moodle 5.x Modernization & Code Cleanup:
- Removed legacy callback
local_quicknote_before_standard_top_of_body_htmlin favor of the Moodle 4.4+ / 5.x Hooks API (before_standard_top_of_body_html_generation). - Removed deprecated
\core\event\course_updatedobserver and simplified form hooks to use direct$hook->mformproperty access. - Replaced legacy Bootstrap 4 accessibility class
sr-onlywith Bootstrap 5visually-hidden. - Updated theme styles to use native
--bs-primaryCSS variables, removing obsolete Bootstrap 4 fallbacks.
- Removed legacy callback
0.11.0
m45-0.11.0
0.10.0
0.10.0 (2026-08-30)
Major contributions and features in this release were ported from a downstream fork by Andreas Giesen (@108design).
- Permissions & Security:
- Implemented the
local/quicknote:usesystem capability for granular access control, replacing hardcoded enrollment checks.
- Implemented the
- UI/UX & Accessibility:
- Implemented SPA-like asynchronous live search with debounce in the Notes Center for a faster, smoother experience.
- Added auto-growing textareas in the sidebar that dynamically adjust their height based on content.
- Redesigned Notes Center cards by replacing title badges with Bootstrap card headers and footers for clearer visual separation.
- Enabled direct note deletion from within the Notes Center.
- Significantly improved screen reader accessibility (A11y) with reliable
aria-liveannouncements for live search results and native CSS visibility handling for the sidebar drawer.
- Core & Architecture:
- Extracted AJAX operations into a dedicated
repository.jspattern for improved JS maintainability. - Refactored PDF and Markdown export functionality into a dedicated
exporterclass with improved memory efficiency usingget_recordset_sql. - Added comprehensive unit tests for the new exporter class.
- Extracted AJAX operations into a dedicated