# Changelog All notable changes to this project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [2.0.1] - 2026-03-29 ### Changed - Replaced bundled AI-assisted overlay assets with human-authored licensed overlays suitable for publication review. - Removed the bundled `film-strip.svg` and `neon-corners.svg` overlays from the published asset set. - Added `ornamental-oval-frame.svg` as a bundled human-authored overlay. - Updated asset provenance and license notices to reflect the published human-authored overlay set. ### Fixed - Release metadata updated for stable distribution: - module version: `2.0.1` - download URL points to tag archive `v2.0.1` ## [2.0.0] - 2026-03-29 ### Added - New manual action to import legacy global layouts into the current scene when migrating older worlds. ### Changed - Camera configuration is now strictly scene-scoped. New scenes start empty and no longer inherit saved global layouts automatically. - Camera configuration UI now requires an active scene before editing layouts, effects, overlays, name styles, or scene presets. - Legacy `playerLayouts` remain available for manual migration, but they are no longer applied automatically at runtime. - Release metadata updated for stable distribution: - module version: `2.0.0` - download URL points to tag archive `v2.0.0` ### Fixed - Scene lifecycle cleanup now prunes orphaned scene profile data and clears deleted-scene drafts. - The public configuration contract no longer exposes unused geometry skew fields. ## [1.7.0] - 2026-03-29 ### Added - New name plate style controls in `Name Config` for font size, line height, edge offset, padding, custom background, and custom border styling. ### Fixed - Transparent custom name plate backgrounds no longer leave a residual default edge line behind. - Saving `Overlay Config` no longer wipes camera geometry in `module` mode, preventing cameras from jumping back to `0,0`. ### Changed - Release metadata updated for stable distribution: - module version: `1.7.0` - download URL points to tag archive `v1.7.0` ## [1.6.0] - 2026-03-29 ### Added - New `Transparent Native Frame` option in `Effects Config` for cameras controlled in `module` mode. ### Fixed - Saving `Effects Config` no longer wipes existing camera geometry when the transparent-frame option is toggled. - Transparent-frame mode now clears residual native camera chrome layers instead of leaving the Foundry shell visible behind custom overlays. - Transparent-frame mode now mirrors `clip-path` onto the visual camera layers so non-rectangular camera shapes do not keep a rectangular background box. ### Changed - Release metadata updated for stable distribution: - module version: `1.6.0` - download URL points to tag archive `v1.6.0` ## [1.5.10] - 2026-03-29 ### Fixed - Shared camera layout updates now reapply across connected clients when the GM changes world-scoped scene profiles or player layouts. - Responsive scene preset geometry now preserves explicit `vw` and `vh` values instead of collapsing affected cameras back to `0,0`. - Camera layouts now reapply immediately after Foundry rerenders camera views, reducing visible flicker after WebRTC rerenders and popout transitions. ### Changed - Release metadata updated for stable distribution: - module version: `1.5.10` - download URL points to tag archive `v1.5.10` ## [1.5.9] - 2026-03-28 ### Fixed - Saving from `Layout`, `Effects`, `Overlay`, `Name`, and `Scene Presets` subwindows no longer reopens `Camera Layout Config` when the hub was already closed. - Those subwindows now close cleanly after a successful save while still refreshing the main hub when it is already open. ### Changed - Release metadata updated for stable distribution: - module version: `1.5.9` - download URL points to tag archive `v1.5.9` ## [1.5.8] - 2026-03-28 ### Fixed - Resetting the current player now preserves the active scene camera control mode instead of accidentally dropping back to a fresh native/no-profile state. - Camera geometry fallback now uses Foundry's default `320x240` camera size instead of allowing oversized reset states. - Switching a camera back from module-owned geometry to native geometry now restores the previous Foundry-managed size and position more reliably. ### Changed - Release metadata updated for stable distribution: - module version: `1.5.8` - download URL points to tag archive `v1.5.8` ## [1.5.7] - 2026-03-28 ### Added - Scene presets now expose an explicit aspect-ratio selector with `4:3`, `16:9`, `1:1`, and `Match Feed` options. ### Fixed - Scene preset fallback sizing without live video now defaults to a `4:3` camera box instead of a square box. ### Changed - `4:3` is now the default aspect ratio for scene presets so generated camera grids better match Foundry's default camera proportions. - Release metadata updated for stable distribution: - module version: `1.5.7` - download URL points to tag archive `v1.5.7` ## [1.5.6] - 2026-03-28 ### Added - New in-app support report window in `Camera Layout Config` with buttons to refresh the report, copy it to the clipboard, and open the GitHub issue tracker. ### Changed - Support documentation and the GitHub bug template now point users to the in-app support report flow instead of relying on a hidden macro as the primary path. - Release metadata updated for stable distribution: - module version: `1.5.6` - download URL points to tag archive `v1.5.6` ## [1.5.5] - 2026-03-28 ### Added - Scene presets now support disconnected users in the participant list, keeping active users preselected by default while allowing layouts to be prepared before a session starts. - New support diagnostics API and helper macro: - `dumpModuleDebugReport(userId)` - `docs/macros/dump_module_debug_report.js` - New GitHub bug-report template that asks for Foundry version, browser/OS, console output, and a Charlemos debug report. ### Changed - Preset UI copy now reflects that all users can be selected, not only active ones. - Debug logs for macro export, scene-profile application, overlay validation, overlay save, and effects save now include more actionable context for support. - Release metadata updated for stable distribution: - module version: `1.5.5` - download URL points to tag archive `v1.5.5` ## [1.5.4] - 2026-03-28 ### Fixed - Configuration cards, form rows, and action buttons now stack vertically instead of compressing text and controls into side-by-side layouts that remained hard to read even with scroll. ### Changed - Release metadata updated for stable distribution: - module version: `1.5.4` - download URL points to tag archive `v1.5.4` ## [1.5.3] - 2026-03-27 ### Fixed - Configuration windows now open at larger default sizes and can be resized instead of forcing all long localized labels into a cramped scrolling layout. - Narrower window widths now collapse form rows and action cards more cleanly, improving Spanish and Galician text flow. ### Changed - Release metadata updated for stable distribution: - module version: `1.5.3` - download URL points to tag archive `v1.5.3` ## [1.5.2] - 2026-03-27 ### Fixed - Overlay videos no longer restart prematurely when camera layouts are reapplied, so playback now reaches the real clip duration before looping. ### Changed - Release metadata updated for stable distribution: - module version: `1.5.2` - download URL points to tag archive `v1.5.2` ## [1.5.1] - 2026-03-27 ### Added - Overlay media support for video files alongside existing static-image overlays. ### Fixed - Border radius values entered as plain numbers now normalize to valid CSS lengths instead of being ignored by the browser. - Overlay validation now accepts supported video files instead of only static images. ### Changed - Overlay rendering now uses real image/video media elements while preserving fit, anchor, transform, opacity, and tint behavior. - Release metadata updated for stable distribution: - module version: `1.5.1` - download URL points to tag archive `v1.5.1` ## [1.5.0] - 2026-03-27 ### Added - Explicit `layoutMode` contract (`absolute` vs `relative`) for camera geometry in module-owned scenes. - Scene-wide relative layout validation with user-facing errors and warnings for missing targets, self-targets, cycles, offline targets, and non-visible targets. - Reusable scene macros that apply the exported profile to whichever scene is active when the macro is executed. - Dedicated unit coverage for window instance scoping and relative-layout validation rules. ### Changed - Relative camera chains now resolve at scene level before render, allowing stable `A -> B -> C` dependency resolution. - Scene camera profiles can be reused across scenes without being tied to the source scene id. - All dedicated config windows now use per-instance scoped DOM ids, avoiding cross-window interference when multiple editors are open. - Release metadata restored to stable production identity in manifest: - module id: `charlemos-camera-layout` - manifest URL on `main` - download URL on tag archive `v1.5.0` ### Fixed - Restored scene macro export from the config hub after the scene-control refactor. - Prevented docked cameras from keeping module-owned geometry while inside the Foundry dock. - Removed orphaned preset/snap/resize flows and stale i18n keys left over from earlier layout tooling. ### Quality - Simplified config/runtime code by removing dead preset tooling and stale release-branch identifiers. - Validated release branch with `npm test` and JSON parsing for all locale files. ## [1.4.0] - 2026-03-27 ### Added - Scene-level camera control mode with explicit `native` vs `module` ownership for camera geometry. - Dedicated layout geometry controls for module-owned scenes, including persisted `position`, `top`, `left`, `width`, and `height`. - Relative camera positioning with edge/center alignment options (`above`, `below`, `left`, `right` variants). - Scene layout generator with dynamic grid sizing, narrative presets, responsive/fixed units, and selectable user order. - Offline-user editing support so camera layouts can be prepared before a player reconnects. ### Changed - Native mode now preserves Foundry camera movement and resize behavior without module interference. - Module mode now blocks native drag/resize affordances and reapplies geometry immediately when scene control mode changes. - Scene layout presets now size cells from live video feed dimensions when available, with safe fallback sizing when no feed exists. - Release metadata restored to stable production identity in manifest: - module id: `charlemos-camera-layout` - manifest URL on `main` - download URL on tag archive `v1.4.0` ### Fixed - Resize handle visibility now follows ownership rules correctly: hover-only in native mode, always hidden in module mode. - Scene profile macros now apply immediately instead of only loading draft data into the editor. - Locale JSON files restored to valid structure after phase-8 testing changes. ### Quality - Added unit coverage for scene control mode, relative positioning, scene layout generation, and offline-user selection. ## [1.3.0] - 2026-03-26 ### Added - Dedicated configuration hub with separate windows for Layout, Effects, Overlay, and Name Style. - Shared config helpers to keep per-player editing consistent across all dedicated windows. - Player-reset action with confirmation to clear both global and current-scene camera overrides for the selected user. ### Changed - Main camera config window now focuses on player selection, section summaries, and entry points to dedicated editors. - Name Style configuration now follows the same selected-player workflow as the other dedicated windows. - Scene macro export is labeled explicitly as a scene-level action. - Release metadata restored to stable production identity in manifest: - module id: `charlemos-camera-layout` - manifest URL on `main` - download URL on tag archive `v1.3.0` ### Fixed - Removed misleading scene-wide reset action from the player-focused config hub. - Prevented branch-testing module identifiers from leaking into the stable release build. ### Quality - Updated localization strings (`en`, `es`, `gl`) for the new config hub workflow. - Added unit coverage for removing a single player layout without affecting other players. ## [1.2.0] - 2026-03-26 ### Added - New overlay frame fitting controls in camera config: - **Overlay Fit Mode**: `auto`, `cover`, `contain`, `fill` - **Overlay Anchor**: center, edges and corners - Updated localization strings (`en`, `es`, `gl`) for the new overlay controls. - New and expanded unit tests for overlay fit/anchor normalization and renderer behavior. ### Changed - Overlay rendering now applies explicit `background-size` and `background-position` from configuration. - Legacy frame fallback behavior is preserved in `auto` mode for backward compatibility. - Release metadata restored to stable production identity in manifest: - module `id`: `charlemos-camera-layout` - manifest URL on `main` - download URL on tag archive `v1.2.0` ### Fixed - Avoided unexpected cropping with non-4:3 frame overlays by allowing `contain` fit mode. - Prevented frame fallback logic from overriding explicit fit/anchor choices. ### Quality - `npm test` passing with updated coverage for: - `tests/unit/camera-config-model.test.js` - `tests/unit/camera-layout-style.test.js` - `tests/unit/live-camera-renderer.test.js` ## [1.1.0] - 2026-03-26 ### Added - Dedicated **Name Style Configuration** window, accessible from the camera layout config, to reduce form overload. - Nameplate style controls for: - text alignment (`left`, `center`, `right`, `justify`) - constrained font weight presets (`400`, `500`, `600`, `700`) - font style (`normal`, `italic`) - Dynamic font-family options sourced from Foundry server-available fonts, with fallback behavior. - New rendering logic for nameplate placement and style normalization in the live camera renderer. - Unit tests covering new name style normalization and config model behavior. ### Changed - Nameplate visual style updated to better match native Foundry framing (blur/plate feel and camera-edge fit for top/bottom placement). - Camera config model and app were refactored to support dedicated name config flow and stricter value normalization. - Runtime metadata restored from branch-testing identity to stable production identity (`charlemos-camera-layout`). - Release metadata updated for stable distribution: - module version: `1.1.0` - download URL points to tag archive `v1.1.0` ### Fixed - Reduced overlap issues between custom nameplate rendering and native camera controls. - Improved behavior when native and custom naming modes coexist, including native-name fallback support. ### Quality - Updated translations (`en`, `es`, `gl`) for new name configuration capabilities. - Added/updated tests in: - `tests/unit/camera-config-model.test.js` - `tests/unit/camera-layout-style.test.js` ## [1.0.0] - 2026-03-20 ### Added - Initial stable release of Charlemos Camera Layout. - Per-player camera styling, scene profile support, overlay controls, and export/import tooling.