Releases: paulcheeba/about-time-next
v13.6.0.0
About Time Next v13.6.0.0 (2026-01-18)
This release introduces Mini Calendar integration and resolves a critical Simple Calendar Reborn event duration bug.
Added:
- Mini Calendar (wgtgm-mini-calendar) full integration with Time Authority Model A (ATN-managed time)
- MCAdapter class implementing calendar configuration via Foundry's core calendar API
- Intercalary day support with special handling for dayOfWeek: -1 and transparent 0-based to 1-based indexing conversion
- Time runner awareness monitoring Mini Calendar's optional time runner and logging conflict warnings when both ATN and MC runners are active
- Detection and settings integration with dynamic dropdown filtering and availability status display
- Comprehensive debug logging throughout MCAdapter for initialization, formatting, interval calculations, and conflict detection
Fixed:
- SCR event duration calculation bug where
timestampPlusInterval(0, { seconds: N })could return 0, causing events to trigger immediately with 00:00:00:00 remaining time. Adapter now handles both singular and plural interval key formats with fallback to conservative math.
Breaking Changes:
- None
Manifest URL:
Patreon:
- OverEngineeredVTT - https://www.patreon.com/cw/u45257624
Discord:
- OverEngineeredVTT - About Time Next - https://discord.com/channels/1038881475732451368/1454747384692215840
Pinned URLs
Manifest: https://github.com/paulcheeba/about-time-next/releases/download/v13.6.0.0/module.json
Download: https://github.com/paulcheeba/about-time-next/releases/download/v13.6.0.0/about-time-next.zip
v13.5.0.0
About Time Next v13.5.0.0 (2026-01-10)
Major update bringing full Simple Calendar Reborn integration and neutral calendar selection system.
Added:
- Simple Calendar Reborn (SCR) full integration with Time Authority Model B - SCR controls worldTime, ATN enhances with event scheduling
- SCRAdapter class implementing proper time routing through
SimpleCalendar.api.changeDate() - Calendar selection dialog appears when multiple calendars detected (compact 300px layout)
- Time authority tooltips in settings showing which system manages time (ATN vs SCR)
- Smart checkbox disabling - ATN pause/combat settings disabled when SCR manages them, showing SCR's values
- Calendar selection template extracted to Handlebars file for better maintainability
- Logic bypass for SCR - ATN skips pause/combat hooks when SCR is active to prevent conflicts
- Comprehensive documentation including SCR API reference and integration guide
Fixed:
- Timestamp-based events confirmed calendar-agnostic (switching calendars preserves all events)
- Time routing architecture ensures proper delegation to calendar systems
Breaking Changes:
- None - all existing functionality preserved, new features are additive
Migration Notes:
- Simple Calendar (legacy) users should migrate to Simple Calendar Reborn v2.4.0+
- Existing events continue to work unchanged
- First-time users with multiple calendars see selection dialog
- Existing calendar selections preserved unless additional calendar modules enabled
Manifest URL:
Patreon:
- OverEngineeredVTT - https://www.patreon.com/cw/u45257624
Discord:
- OverEngineeredVTT - About Time Next - https://discord.com/channels/1038881475732451368/1454747384692215840
v13.4.1.0
About Time Next v13.4.1.0 (2026-01-04)
This release adds a new required dependency (OEV Suite Monitor) and updates documentation links.
Added:
- Module now requires the OverEngineeredVTT Suite Monitor (
oev-suite-monitor) hub module.
Fixed:
- Fixed issue with oev-suite-monitor failing to install by adding it's manifest to the relationships.
Breaking Changes:
- OEV Suite Monitor is now required (install it alongside About Time Next).
Manifest URL:
Patreon:
- OverEngineeredVTT - https://www.patreon.com/cw/u45257624
Discord:
- OverEngineeredVTT - About Time Next - https://discord.com/channels/1038881475732451368/1454747384692215840
v13.4.0.1
About Time Next — Release Notes v13.4.0.1
Release Date: December 21, 2025
From: v13.2.1.0
To: v13.4.0.1
Foundry VTT Compatibility: v13
Overview
This release focuses on quality-of-life improvements for calendar/time display, event management, and delegated “timekeeper” permissions, plus several stability fixes around world refresh and calendar module interactions.
Highlights (QoL)
Better calendar support & clearer time display
- Native D&D 5e calendar support (v5.2+) via a dedicated adapter that reads from Foundry’s
game.time.calendar. - Unified date/time formatting across all adapters (D&D5e / Seasons & Stars / Simple Calendar / core time fallback).
- New Time Format setting (12-hour or 24-hour) for consistent display across the module.
- Dynamic Calendar System dropdown that only shows available options; adapter refresh happens automatically when changed.
- Calendar recommendation prompt for GMs when Auto-detect is selected or a selected calendar is unavailable, with a “suppress until selection changes” option.
Easier, safer queue management
- Timekeeper role threshold: a world setting that allows delegating queue management to non-GM users (GM always overrides).
- Confirm/Cancel chat cards for destructive actions:
/at clearand/at stopnow post a confirm card and update the same message in-place after confirm/cancel.
- Pause/Resume support:
- Added pause/resume controls in the Event Manager and corresponding
/at pause//at resumechat commands.
- Added pause/resume controls in the Event Manager and corresponding
More reliable Event Manager updates
- Event Status Board now prefers the persisted store as authoritative for display, reducing “stale queue” views after refresh.
- Improved timestamp display & tooltips (e.g., stable “Started On” context where available).
Updates
Calendar & settings
- Introduced the CalendarAdapter system and migrated time formatting and interval operations to use it (non-breaking refactor).
- Added/updated calendar detection to support:
- D&D 5e calendar (v5.2+)
- Seasons & Stars
- Simple Calendar (kept as a legacy/reference integration pending FVTT v13 readiness)
- Foundry core time fallback
- Added calendar settings migration from legacy Simple Calendar toggle to the new
calendar-systemsetting.
Mini Panel
- Layout refresh for readability.
- Uses adapter formatting consistently and provides clearer tooltips indicating which calendar system is in use.
Event notifications / chat cards
- Event notification cards continue to use standardized formatting.
- Added user-facing context fields:
- “Started On” (when available)
- “Next Occurrence” for repeating events
Permissions
- Added a minimum role required to be a timekeeper world setting.
- Updated UI entry points (chat commands, Event Manager, toolbar button) to use timekeeper checks rather than GM-only gating.
Fixes & Stability
- World refresh reliability: fixed an intermittent window during master timekeeper election where
addEventmessages could be lost. Events are now queued until a master is acquired, then drained and persisted. - Notification sound trigger refinement: notification sounds now play only for scheduled event notification cards (standardized event cards), not for other About Time Next chat/status/confirmation cards.
- Realtime clock safety: if advancing world time throws an error, realtime stops and warns once (prevents repeated tick errors).
- Reduced console noise: most adapter and notification logs are now debug-gated (while keeping minimal always-on status info for troubleshooting).
Compatibility Notes
- Simple Calendar: retained as a legacy/reference integration; full support depends on Simple Calendar being FVTT v13-ready.
- Calendar auto-detect and recommendations are designed to avoid silent switches while still helping GMs converge on a “best available” calendar setup.
Migration Notes (Users)
- No manual migration steps required for most users.
- If you use delegated timekeeping, set Configure Settings → About Time Next → Minimum role required to be a timekeeper.
Full Changelog
See changelog.md for the complete version history.
What's Changed
- V13.2.1.0 by @paulcheeba in #34
v13.2.1.0
About Time Next v13.2.1.0 Release Notes
Overview
Version 13.2.1.0 introduces standardized event notification cards with consistent formatting and fixes a critical bug where event metadata was lost after Foundry reloads.
Features
Standardized Event Chat Cards
All events created through the Event Manager now display detailed, consistently formatted notification cards:
Card Format:
[about-time-next]
Event Name: <name or NA>
Message: <message or NA>
Duration: DD:HH:MM:SS (or NA)
Repeating: Yes/No
Macro: <macro name or NA>
Event UID: <unique identifier>
Visual Design:
- Green left border for quick identification
- Monospace font for consistent alignment
- Clear section labels with bold headings
- Duration displayed in DD:HH:MM:SS format
Benefits:
- Clarity: All event details visible at a glance
- Persistence: Format maintained through Foundry reloads
- Consistency: Same format for all events (with/without macros)
- Notification Support:
[about-time-next]prefix ensures sounds trigger correctly
Bug Fixes
Event Metadata Persistence (Critical)
Issue: After Foundry reload, event notification chat cards appeared empty or malformed due to metadata loss during serialization.
Root Cause: Direct assignment of _args array in FastPriorityQueue.exportToJson() didn't properly clone nested metadata objects. When Foundry's settings system serialized the queue using JSON.stringify(), object references were lost.
Solution: Implemented deep cloning using foundry.utils.deepClone() with fallback to JSON.parse(JSON.stringify()). Added defensive checks in createFromJSON() to ensure args is always an array.
Files Modified:
module/FastPriorityQueue.js- Added deep clone logic in exportToJson() and defensive checks in createFromJSON()
[about-time-next] Prefix Consistency
Issue: Event cards lost the [about-time-next] prefix after reload, preventing notification sounds from triggering (ATNotificationSound.js pattern matching failed).
Solution: Integrated prefix into formatEventChatCard() helper function used by both fresh handlers (ATEventManagerAppV2) and reconstructed handlers (FastPriorityQueue). Prefix now persists through reload cycle.
UID Display Issue
Issue: Event UID displayed as "null" in fresh event cards because handler was called before UID was available from doIn/doEvery return value.
Solution: Store UID in metadata (__uid) after doIn/doEvery returns, then handler accesses it via metaArg.__uid. Ensures UID displays correctly in both fresh and reloaded events.
Macro Integration
Events with macros now display notification card before macro execution:
- Show standardized event card (with all details)
- Execute linked macro (if configured)
This provides clear context about what triggered the macro.
Technical Implementation
New Helper Function
formatEventChatCard(meta, uid, recurring, increment)Centralized formatter ensures consistent HTML generation across:
- Fresh event handlers (ATEventManagerAppV2.js)
- Reconstructed handlers after reload (FastPriorityQueue.js)
Parameters:
meta: Metadata object with__atName,__atMsg,__macroName,__macroUuid,__duration,__uiduid: Event unique identifier (frommetaArg.__uidordata.uid)recurring: Boolean indicating if event repeatsincrement: Seconds between repeats (for duration display)
Returns: HTML string with standardized card format
Duration Calculation
Duration now stored in metadata (__duration) and formatted as DD:HH:MM:SS:
const d = Math.floor(seconds / 86400);
const h = Math.floor((seconds % 86400) / 3600);
const m = Math.floor((seconds % 3600) / 60);
const s = Math.floor(seconds % 60);Files Modified
Core Changes
-
module/FastPriorityQueue.js
- Added
formatEventChatCard()helper function (exported) - Updated
exportToJson()with deep clone logic - Updated
createFromJSON()reconstructed handler to use formatter - Added defensive array check for args
- Added
-
module/ATEventManagerAppV2.js
- Added
__durationto metadata object - Added
__uidto metadata after event creation for display in fresh cards - Imported
formatEventChatCardfrom FastPriorityQueue - Updated handler to always show event card (even with macros)
- Handler now calls formatter with
metaArg.__uidbefore macro execution
- Added
Documentation
- changelog.md - Added v13.2.1.0 section with 5 bullet points including UID fix
- module.json - Updated version to 13.2.1.0
- README.md - Added Event Notification Cards section with example format
- dev-docs/releaseNote-v13.2.1.0.md - Created comprehensive release notes
- dev-docs/todo.md - Marked standardization task complete (updated in previous session)
Known Limitations
Out of Scope (Deferred to Future Releases)
/atChat Commands:/at remind,/at every, etc. still use legacy format. Standardization planned for future release./atChat Commands:/at remind,/at every, etc. will NOT trigger notifaction sounds until post-standardization.- ElapsedTime.message(): Direct API calls don't use new format yet. Functionality unchanged, standardization planned for future release.
Compatibility Notes
- Requires Foundry VTT v13+
- Event cards use inline CSS (no external stylesheet changes)
- Deep clone fallback ensures compatibility with environments lacking
foundry.utils.deepClone()
Migration Notes
For Users
- No Action Required: Existing events will automatically use new format after reload
- Settings Preserved: Notification sound settings from v13.2.0.0 remain unchanged
- Event Queue Safe: Existing scheduled events maintain their trigger times and functionality
For Developers
- Formatter Available:
formatEventChatCard()exported fromFastPriorityQueue.jsfor custom event integrations - Metadata Structure: Handlers expect
__atName,__atMsg,__duration,__macroName,__macroUuidin args - Handler Marking: Use
handler._atHandlerType = "gmWhisper"to ensure proper serialization
Credits
- Deep clone fix pattern adapted from Foundry core utils
- Duration formatting inspired by standard time display conventions
- Card styling uses Dracula theme accent color (#50fa7b) for consistency
v13.1.3.2
About Time Next — Changelog
Version: v13.1.2.1 → v13.1.3.2
(Foundry VTT v13 compatible)
Note
Sorry for the double releases today. I released a version that was slightly premature and it shipped with a small bug. I squashed it and tackled a bit of CSS and layout improvements at the same time adding light/dark theme support.
I also most importantly set up a pre-release workflow action to allow me faster test cycles that aren't public and won't mess with the current stable release. So... less double release days in the future.
🔧 General
- Version bump and internal prep for Event Manager V2 improvements.
- Minor code cleanup and internal consistency updates to support single-instance lifecycle, UI theme compliance, and usability improvements.
🧭 Toolbar Toggle
Summary
- The Event Manager Toolbar button now properly opens and closes the Event Manager window (single-instance behavior).
- Mirrors the Time Manager experience — toggling reuses a single application instance rather than spawning new windows.
🎨 Light / Dark Theme Compliance (AppV2)
Summary
- Full Auto light/dark theme support for Foundry’s AppV2 theme system.
- Dark mode: unchanged — retains current Dracula-inspired palette.
- Light mode: new palette and readability improvements.
Event Manager changes
UI Reorder (Improved Layout)
New button order (top action bar):
Stop all Events | Stop all +1h reminder | stopKey input | Stop by Name | Stop by UID | Send Queue to Chat | Create
Improves flow from destructive → targeted → neutral → constructive actions.
⚙️ Macro Picker: Type-or-Pick with <datalist> + Refresh
Summary
- Macro Name field upgraded to a hybrid text input + datalist control:
- Type freely to match or choose from suggestions.
- Suggestions list all macros the user can access.
- Added a refresh icon (⟳) to rebuild the macro list dynamically.
Features
- Permission-aware:
- GMs see all macros.
- Non-GMs see macros they have Observer access or higher.
- Tooltips: each suggestion shows
"Folder • Type • ID". - Sorting: case-insensitive by name, then by folder.
- Non-destructive: manual macro name entry still works exactly as before.
- Per-instance safety: datalist uses unique ID binding to the app instance.
- Refresh button: instantly updates the list after macro creation/deletion.
📁 Affected Files
module/ATToolbar.js
module/ATEventManagerAppV2.js
templates/ATEventManagerAppV2.hbs
v13.0.9.0
Changelog — About Time v13
v13.0.9.0 (Milestone Release)
✨ Major Changes
-
Event Manager V2 (ApplicationV2)
- Toolbar button now opens the new EM V2 instead of EM V1.
- V2 auto-refreshes rows when events fire or reschedule, fixing “remaining=0” on repeats.
- Clean layout with countdowns, intervals, and stop controls per event.
-
Mini Time Manager Panel
- Stable GM controls: Play/Pause, realtime toggles.
- Player view: read-only current time (SC-aware if SC is present).
- Settings for Link Pause and Auto-Pause on Combat confirmed working.
-
Realtime Runner Improvements
- Stable single-owner GM clock (handoff via sockets).
- Safe ranges for tick Hz and rate.
- Works with/without Simple Calendar.
📖 Documentation Updates
- README overhauled
- Full list of supported /at chat commands with examples.
- Updated descriptions for Event Manager V2 and Mini Panel.
- Macros section: how to open EM V2 directly via macro.
- Added usage scenarios (spell durations, rests, watch rotations, etc.).
- New screenshots/images (thanks to user).
🛠 Internal Fixes
- Added queue signature tracking in EM V2 to auto-refresh view after events fire.
- Preserved backward compatibility with legacy globals (
game.Gametime,DMf,DTM, etc.). - All GM-facing notifications standardized to GM-whispers where appropriate.
v13.0.8.x (Development Iterations)
- v13.0.8.1.2 — Added EM V2 auto-refresh, fixed repeating event countdowns.
- v13.0.8.1.1 — LKW baseline before EM V2 fixes.
- v13.0.8.0 — Early 8.x branch with toolbar/event manager refinements.
v13.0.7.x and earlier
See archived changelog entries.
What's Changed
- V13.0.9.0 by @paulcheeba in #24
Full Changelog: v13.0.8.1.1...v13.0.9.0
v13.0.8.1.1
What's Changed
New Baseline
Fixed the Play/Pause button resizing with a fixed width.
- V13.0.8.1.0 by @paulcheeba in #23
Full Changelog: v13.0.8.0...v13.0.8.1.1
v13.0.8.1.0
Changelog
[13.0.8.1.0] - 2025-08-28
Added
- Event Status Board header and subtle board border.
Changed
- Starts column fallback now shows
in DD:HH:MM:SS(matches Remaining).
Removed
- Copy UID action/button (text is selectable; use Ctrl/Cmd-C).
[13.0.8.0.7] - 2025-08-28
Fixed
- Prevented content clipping by setting window width = 920px (removed content-level min-width).
Stability
- Kept function-based
actions; live Remaining ticker continues to start/stop with render/close.
[13.0.8.0.6] - 2025-08-28
Fixed
- Resolved
handler?.call is not a function&_on* is not a functionby switchingDEFAULT_OPTIONS.actionsto function handlers:onList,onFlush,onStopByName,onStopByUID,onRowStop,onCopyUID.
- Implemented 1s ticker to refresh the Remaining column.
UI
- Dracula styling scoped to EMV2 (contained within the app).
[13.0.8.0.2] - 2025-08-27
Added
- Introduced ATEventManagerAppV2 (ApplicationV2 + HBS) initial build:
- Queue table (Name, Starts, Remaining, Repeat, Message, UID, Actions).
- Create / Stop / List / Flush controls.
- GM-gated actions; players read-only.
[13.0.8.0.1] - 2025-08-27
Fixed
- Restored normal chat behavior by removing duplicate
/at listalias that interfered with generic chat submits.
[13.0.7.7] - (baseline prior to 2025-08-26)
Notes
- Stable TM, toolbars, and
/atcommands; legacy Dialog-based EM.
New Baseline
I love it. its working great. Added a header and border to the event status board. Removed some redundant buttons. Next.... Theming, mostly because I want the EM window to match the TM window.
What's Changed
- V13.0.7.7 by @paulcheeba in #19
Full Changelog: v13.0.7.7...v13.0.8.1.0