AIOS Timer System Changelog
===========================
Version: 1.0.0 (Restored & Fixed)
Date: 2026-05-12
Author: Poorkingz

FILES CHANGED
-------------
Core/Timers/Init.lua
Core/Timers/Schedule.lua
Core/Timers/Cancel.lua
Core/Timers/Object.lua
Core/Timers/Queue.lua
Core/Timers/Groups.lua
Core/Timers/Profiler.lua
Core/Timers/Debug.lua

FIXES APPLIED
-------------
1. ActiveTimers Naming Consistency
   - All timer submodules now reference "ActiveTimers" uniformly.
   - Cancel.lua was referencing "self.Active" which did not exist.
   - Result: Cancel, CancelAll, CancelPattern, and CancelGroup now work.

2. Repeating Timer Loop
   - Frame-loop scheduler now resets .remaining = delay for repeating timers.
   - Previously repeating timers were deleted after first fire.
   - Result: Every() and ScheduleRepeating() now tick indefinitely until Cancel.

3. Profiler.lua Syntax Error
   - File had duplicated/corrupted content at the bottom causing unfinished string error.
   - Cleaned and deduplicated the entire file.
   - Result: /aiostimersprof slash command works. Profiler hooks frame loop correctly.

4. Named Schedule Path
   - Schedule(name, delay, callback) uses C_Timer.After directly.
   - Frame loop handles After/Every entries with .remaining.
   - Both paths register into ActiveTimers for introspection and cancellation.

5. Service Registry Registration
   - Added pcall + _registry fallback for ServiceRegistry:Define compatibility.
   - Works with both old and new ServiceRegistry signatures.

6. Test Suite
   - Created AIOS_TimerTest addon for validation.
   - 11/11 tests passing.
   - Tests cover: After, Every, Named Schedule, Cancel, CancelAll, Throttle, Debounce.

TEST RESULTS
------------
[TimerTest] ALL PASSED
[TimerTest] 11 passed / 0 failed

COMPATIBILITY
-------------
Retail (11.x+)
Classic Era
MoP Classic
Cata Classic
Midnight (12.0)

NOTES
-----
- Architecture restored to original frame-loop design.
- No C_Timer.NewTicker dependency (uses recursive C_Timer.After for named schedules).
- Frame loop handles all anonymous After/Every timers.
