- Add branding management feature: API routes, payload handling, and OpenAPI schema updates.
- Implement department branding logic: CRUD operations, validation, and permissions.
- Add order deletion confirmation support with conflict handling and OpenAPI schema updates.
- Enhance tests and API methods for improved order handling and branding workflows.
- Add `DepartmentLaneDynamicImageRouteTest` to verify dynamic image preview handling for studio lanes.
- Introduce `selfserve_machine_signal` class to standardize signal normalization, recording, and gateway signal management workflows.
- Add `selfserve_virtual_hardware` class to handle virtual hardware configurations, including gateway and binding management.
- Enhance structure with auxiliary methods for payload normalization, workspace merging, and validation warnings.
- Update `drawCropOutLine` to accept a `crop` parameter for conditional cropping alongside outline rendering.
- Adjust crop outline coordinates for improved alignment.
- Introduce logic to calculate and apply crop dimensions when `crop` is enabled.
- Introduce `drawLine` method in `dynamicimages_image_t` for drawing lines with customizable styles (color, thickness, dash patterns).
- Update `drawCropOutLine` in `machine_1` to use a dynamic configuration for rendering top, left, right, and bottom crop outlines.
- Refactor crop outline logic for better readability and maintainability.
- Implement `drawCropOutLine` method for rendering horizontal crop outlines in machine images.
- Refactor `drawStepCounterOnButton` with dynamic font sizing and fallback handling for better text alignment.
- Add step counter rendering in top-right position for enhanced button visuals.
- Update `exampleRoute` debugging logic to integrate new `machine_1` functionality.
- Replace old debug assets with new button highlight state assets.
- Introduce `only_generate_current_step` property to conditionally skip non-relevant button highlights during rendering.
- Update button rendering methods to respect the `only_generate_current_step` flag for improved efficiency.
- Adjust logic in `drawHighlightedButtons` and related functions to check current step before drawing assets.
- Introduce `drawHighlightedStartButton` method for dynamic rendering of the start button with step indicators.
- Add new constants for `IMAGE_BUTTON_HIGHLIGHTED_GREEN`, `IMAGE_BUTTON_HIGHLIGHTED_GREY`, and `IMAGE_BUTTON_HIGHLIGHTED_COMPLETED`.
- Refactor `getHighlightedAssetName` to provide conditional asset selection based on step completion.
- Implement `drawStepThumb` for rendering step indicators on the washing thumb.
- Adjust highlighted button logic to dynamically incorporate step counts and completion states.
- Add new assets for highlighted button states (`completed`, `green`, `grey`).
- Adjust badge center calculations for improved alignment based on asset layout.
- Temporarily disable optical nudge calibration for badge centering.
- Add debug crosshair overlays to validate badge and text anchor points during rendering.
- Redesign badge positioning with dynamic calculations for better alignment.
- Implement optical centering and text-size adjustments based on badge dimensions.
- Improve font size optimization with iterative refinement and fallback handling.
- Add `normalizeColor` method in `dynamicimages_asset_t` for consistent color input handling across strings, arrays, and defaults.
- Update text overlay to use the new `normalizeColor` method, improving flexibility and robustness.
- Refactor `machine_1` button step counter to calculate font size dynamically and use RGBA colors.
- Adjust `drawStepCounterOnButton` to improve text alignment and styling.
- Introduce `addTextOverlay` method in `dynamicimages_asset_t` for adding customizable text overlays with alignment and styling options.
- Add `getFontPath` method in `dynamicimages_image_t` for resolving font paths under the shared assets directory.
- Refactor `machine_1` to use `drawStepCounterOnButton` for adding dynamic step counters to buttons.
- Rename and relocate `AlfaSlabOne-Regular.ttf` under `assets/fonts`.
- Introduce `drawHighlightedResetButton` method for dynamically rendering the reset button with text overlay.
- Add `IMAGE_BUTTON_HIGHLIGHTED_BLUE` constant and update asset usage for reset button rendering.
- Refine highlighted button positioning with per-row spacing adjustments and configurable highlight states.
- Add `getNextButtonStepCount` method for tracking button steps during rendering.
- Introduce `drawHighlightedButtons` method for drawing button grids based on configurable rows, columns, and spacing.
- Add new constants for button size, spacing, and grid dimensions.
- Update asset usage to include `machine_1_button_highlighted_transparent`.
- Replace `IMAGE_WASH_PROGRAMS` with `IMAGE_PROGRAMS_WHEEL` and add `IMAGE_BUTTON_HIGHLIGHTED`.
- Introduce `drawProgramWheel` and `drawThumb` methods for improved modularity.
- Adjust thumb properties (`$thumb_position`, `$thumb_size`) and refine positioning logic.
- Update asset loading to include the new `machine_1_button_highlighted_transparent` asset.
- Introduce `drawAssetCentered` method in `dynamicimages_image_t` for drawing assets visually centered on specified coordinates.
- Reset virtual canvas/page after image rotation in both `dynamicimages_asset_t` and `dynamicimages_image_t` to ensure consistent positioning.
- Update `machine_1` logic to use `drawAssetCentered` for improved thumb drawing and dynamic pivot alignment.
- Adjust thumb rotation calculations and positioning logic for better visual rendering.
- Introduce `resize` method in `dynamicimages_asset_t` for resizing assets in memory with or without aspect ratio preservation.
- Refine `machine_1` rendering logic to dynamically calculate and apply thumb width based on height.
- Add in-memory asset handling to `dynamicimages_asset_t` with methods for loading, rotating, cloning, and clearing `Imagick` instances.
- Update `dynamicimages_image_t` to use in-memory images when available for dynamic asset composition.
- Replace thumb reference in `machine_1` with new `machine_1_wash_programs_thumb_standalone_transparent` asset.
- Enhance `machine_1` to resize rotated thumb dynamically while drawing.
- Introduce `servePicture` method to `dynamicimages_image_t` and its interface.
- Add `$thumb_position` property and `getRotationThumbPosition` method to `machine_1`.
- Update `drawAsset` logic in `machine_1` to apply rotated thumb for dynamic rendering.
- Update `dynamicimages_asset` constructor to prepend working directory to paths.
- Add helper methods (`getPath`, `getWidth`, `getHeight`) to `dynamicimages_asset`.
- Extend `dynamicimages_image_t` trait with debugging and path configuration utilities.
- Refactor asset path handling in `machine_1` with constants for image files.
- Load `dynamicimages` interfaces, traits, classes, helpers, and configurations in `index.php`.
- Add core `dynamicimages_c` class for module configuration and management.
- Implement asset management with `dynamicimages_asset` class and related interface/traits.
- Add support for image operations via `dynamicimages_tool` enum.
- Include `dynamicimages_image` class for handling grouped assets with path configuration.
- Introduce `machine_1` image example with associated assets under `dynamicimages`.