merge(v14): integrate v14 branch into main #143

Merged
Athemis merged 48 commits from v14 into main 2026-04-03 20:29:43 +00:00
Owner

Closes #142

Summary

This pull request merges the current v14 branch into main and brings the accumulated Foundry v14 migration work onto the default branch. The branch is focused on removing remaining compatibility shims, moving DS4 behavior onto native v14 APIs, and hardening migration and pack data handling around active effect timing and chat message modes.

What Is Included

  • migrate consume-related active effects to native v14 timing and expiry handling
  • remove remaining legacy hook wiring, actor-side mirrors, and unreleased compatibility paths
  • normalize active effect duration/start metadata in runtime code, migrations, and pack content
  • switch roll and chat message handling to v14-native message mode APIs
  • add and fix regression coverage for effect timing, migration behavior, pack contracts, and dice/spec typing

Main Change Areas

Active effect timing and expiry

A large part of the branch replaces DS4-specific legacy consume and expiry behavior with native v14 active effect timing. This includes effect creation timing, duration rendering, expiry event handling, suppression/deletion of expired effects, and cleanup of stale shims that were still carrying forward pre-v14 assumptions.

Migration and data normalization

The branch updates migrations so persisted effect data is read and normalized correctly in v14. It also removes legacy duration keys, merges older start metadata into the native structure, and normalizes remaining pack data so world data and compendium content align with the v14 timing contract.

Roll and chat message mode updates

The roll pipeline is updated to use core v14 message modes end-to-end. This removes the remaining legacy rollMode plumbing while preserving the expected dialog fallback semantics during message creation.

Test coverage

The branch adds and repairs regression coverage around consume expiry behavior, native timing contracts, legacy combat duration handling, and type-safe spec behavior. This should reduce risk when merging the v14 migration work back into main.

Review Guidance

Review is easiest if split into these passes:

  1. migration and pack normalization changes for active effect duration/start fields
  2. runtime active effect timing/expiry changes
  3. roll and chat message mode migration
  4. regression tests covering the new v14 behavior

Branch Status

At PR creation time, v14 was 35 commits ahead of main and 0 commits behind.

Notes

  • this PR is intended as a branch integration PR, not a single feature change
  • the merge brings together refactors, fixes, migration updates, and test adjustments that were developed together on v14
  • PR created and updated via fj from the local repository checkout
Closes #142 ## Summary This pull request merges the current `v14` branch into `main` and brings the accumulated Foundry v14 migration work onto the default branch. The branch is focused on removing remaining compatibility shims, moving DS4 behavior onto native v14 APIs, and hardening migration and pack data handling around active effect timing and chat message modes. ## What Is Included - migrate consume-related active effects to native v14 timing and expiry handling - remove remaining legacy hook wiring, actor-side mirrors, and unreleased compatibility paths - normalize active effect duration/start metadata in runtime code, migrations, and pack content - switch roll and chat message handling to v14-native message mode APIs - add and fix regression coverage for effect timing, migration behavior, pack contracts, and dice/spec typing ## Main Change Areas ### Active effect timing and expiry A large part of the branch replaces DS4-specific legacy consume and expiry behavior with native v14 active effect timing. This includes effect creation timing, duration rendering, expiry event handling, suppression/deletion of expired effects, and cleanup of stale shims that were still carrying forward pre-v14 assumptions. ### Migration and data normalization The branch updates migrations so persisted effect data is read and normalized correctly in v14. It also removes legacy duration keys, merges older start metadata into the native structure, and normalizes remaining pack data so world data and compendium content align with the v14 timing contract. ### Roll and chat message mode updates The roll pipeline is updated to use core v14 message modes end-to-end. This removes the remaining legacy `rollMode` plumbing while preserving the expected dialog fallback semantics during message creation. ### Test coverage The branch adds and repairs regression coverage around consume expiry behavior, native timing contracts, legacy combat duration handling, and type-safe spec behavior. This should reduce risk when merging the v14 migration work back into `main`. ## Review Guidance Review is easiest if split into these passes: 1. migration and pack normalization changes for active effect duration/start fields 2. runtime active effect timing/expiry changes 3. roll and chat message mode migration 4. regression tests covering the new v14 behavior ## Branch Status At PR creation time, `v14` was 35 commits ahead of `main` and 0 commits behind. ## Notes - this PR is intended as a branch integration PR, not a single feature change - the merge brings together refactors, fixes, migration updates, and test adjustments that were developed together on `v14` - PR created and updated via `fj` from the local repository checkout
refactor(migration): drop unreleased consume legacy paths
All checks were successful
renovate/stability-days Not a Renovate PR - check skipped
ci/woodpecker/pr/auto-approve-renovate-checks Pipeline was successful
ci/woodpecker/pr/checks Pipeline was successful
3823f2bd97
Athemis self-assigned this 2026-04-03 20:21:23 +00:00
Athemis added this to the 3.3.0 milestone 2026-04-03 20:21:27 +00:00
Merge remote-tracking branch 'origin/main' into v14
All checks were successful
renovate/stability-days Not a Renovate PR - check skipped
ci/woodpecker/pr/auto-approve-renovate-checks Pipeline was successful
ci/woodpecker/pr/checks Pipeline was successful
877fd785e1
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Athemis/ds4!143
No description provided.