202308102350
Rename clipString() to snip()

202308261308
Rename getTimestampOfMidnight() to getMidnightTimestamp()

202312012136
Rename divideChars() to str2chars()

202401112100
Rename sortObject() to sortObjectList()

202401252020
Rename arr2set () to list2set()

202402240030
Rename msToReadableString() to ms2time()

20240713
Rename list2set () to toUnique()

20260908
- Standardized numeric timezone offsets to hour-based values.
- Removed the minute-based DateTime.tzOffsetMin property and related timezone helper functions.
- Fixed DateTime handling for Date objects to preserve the original timestamp.
- Fixed numeric timezone offsets when parsing date-time strings.
- Fixed 12-hour time formatting for midnight and noon.
- Fixed getMidnightTimestamp timezone-boundary handling and added Date object support.
- Fixed clock2hours handling for signed time values.
- Fixed ms2sec conversion for negative millisecond values.
- Fixed Clock numeric option handling.
- Added util.trunc() with decimal-scale support.

- Fixed deep copying of nested arrays in copyObject().
- Fixed copyDefaultProps() to deep-copy nested defaults without sharing object or array references.
- Limited copyDefaultProps() to own properties and preserved target values with incompatible types.
- Fixed lpad() and rpad() truncation when adj is enabled.
- Fixed toBin() argument forwarding and removed the unused uppercase argument.
- Optimized formatNumber() by removing unnecessary RegExp creation.
- Removed unnecessary string-to-array conversions from randomString(), strp(), strpIndex(), strpTotal(), and Mod10/11/43 calculations.
- Removed a redundant initialization in timecounter.stop().

- Extended JSON response parsing from HTTP 200 only to all 2xx responses.
- Fixed $el() handling for empty NodeList results.
- Extended callFn4El() to forward a third argument.
- Fixed setStyle() handling for selector-based targets.
- Fixed HSV saturation calculation for black.

- Fixed stale text-sequence timers and callbacks when sequences are replaced or restarted.
- Added identity checks to prevent obsolete text-sequence contexts from continuing.
- Fixed infotip visibility detection.
- Fixed stale fade callbacks during rapid fade-in/fade-out reversals.
- Fixed loading-screen modal context cleanup.

- Fixed initial Window sizing to apply size constraints consistently.
- Fixed Window.move() to allow zero coordinates.
- Fixed Window move completion to call onstopmove instead of onstartmove.
- Fixed Window maximum-width validation using height instead of width.
- Prevented non-modal Window instances from closing unrelated modal overlays.

- Fixed modal close-anywhere cleanup to remove the correct modal context.
- Fixed dialog close-anywhere cleanup and instance tracking.
- Fixed dialog button handling so callbacks returning false keep the dialog open.
- Fixed dialog closing to remove the exact dialog instance instead of blindly popping the latest instance.
- Fixed dialog.info() callback data propagation.
- Fixed negative/No callback return propagation in confirm dialogs.

- Fixed Meter.setOptimum() to update the configured optimum value.
- Fixed LED label element property naming.
- Fixed RingBuffer.get() negative indexing and out-of-range handling.
- Fixed Console element width and height style assignment.

- Updated Counter values to use truncation instead of flooring.
- Simplified and fixed Counter increment/decrement handling for decimal and negative values.
- Fixed Counter number-formatting threshold for negative values.

- Renamed IntervalProc's async option/property to manualNext to reflect its actual scheduling behavior.
- Added explicit IntervalProc active-state tracking.
- Fixed IntervalProc so stopping a process from inside its callback does not automatically restart it.
- Prevented manual next() calls from scheduling inactive processes.
- Prevented replaced or removed IntervalProc instances from being rescheduled by stale callbacks.

- Optimized event dispatch by reusing the queued event object instead of creating a duplicate.
- Fixed drag-and-drop handler lookup when no matching handler is found.