fix: resolve event-listener leaks and CSS gaps found in code quality audit
- notes.js (Critical): move grid click listener from renderGrid() to render() — was re-registered on every save/pin/delete, causing multiple API calls per user action after several interactions - dashboard.js (Major): introduce AbortController (_fabController) so the anonymous document click listener from initFab() is cancelled on each new render() cycle; also remove the redundant initFab() call on the skeleton render - layout.css (Major): extend .label selector to include .form-label, covering usage in notes.js and settings.js without a mass-rename - test-modal-utils.js (Major): 12 unit tests for wireBlurValidation, btnSuccess, btnError; registered as test:modal-utils in package.json - notes.js (Minor): add btnError() shake feedback to save error handler - calendar.js (Minor): add popup.isConnected guard to closePopup so the listener self-removes correctly after navigation without a click Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
- Accumulating click listeners on `#notes-grid` (Critical): listener is now registered once in `render()` via event delegation instead of re-registered in every `renderGrid()` call
|
||||
- Accumulating anonymous `document` click listener in dashboard FAB: `initFab()` now accepts an AbortSignal; `render()` aborts the previous signal before creating a new one, eliminating listener leaks across navigation cycles
|
||||
- Add `btnError()` shake feedback to notes.js save error handler for consistency with other modules
|
||||
- Calendar event popup `closePopup` listener now checks `popup.isConnected` to self-remove correctly after navigation without a click
|
||||
|
||||
### Added
|
||||
- CSS alias `.form-label` alongside `.label` to cover usage in `notes.js` and `settings.js` without requiring a mass-rename
|
||||
- Tests for `wireBlurValidation`, `btnSuccess`, and `btnError` (12 cases) in `test-modal-utils.js`
|
||||
|
||||
## [0.2.0] - 2026-03-30
|
||||
|
||||
### Changed
|
||||
|
||||
Reference in New Issue
Block a user