Skip to content

Creative automation#14

Open
imagekitio wants to merge 35 commits into
mainfrom
merge-main-into-creative-automation
Open

Creative automation#14
imagekitio wants to merge 35 commits into
mainfrom
merge-main-into-creative-automation

Conversation

@imagekitio
Copy link
Copy Markdown

No description provided.

ahnv and others added 23 commits May 6, 2026 14:53
…late loading logic; enhance ListView with empty state and image preview; refactor template loading in TemplatesDropdown and TemplatesLibraryView; introduce transformation converter functions

Co-authored-by: Copilot <copilot@github.com>
…mplate handling with canvas dimensions; update UI components to support mode-specific behavior

Co-authored-by: Copilot <copilot@github.com>
…mplement setCanvas action to update canvas dimensions and background

Co-authored-by: Copilot <copilot@github.com>
… ListView to show checker backdrop for canvas mode
- Refactor TransformationConfigSidebar to manage variable bindings and state.
- Add VariableField component for rendering variable inputs with validation.
- Implement variable resolution in transformation conversion logic.
- Create utility functions for variable management, including name generation and resolution.
- Enhance transformation converter to handle variable overrides during URL building.
- Update index exports to include new variable-related components and utilities.

Co-authored-by: Copilot <copilot@github.com>
…reference

Co-authored-by: Copilot <copilot@github.com>
…dRenderer components

Co-authored-by: Copilot <copilot@github.com>
…or support in transformation schema

Co-authored-by: Copilot <copilot@github.com>
…sformation schema

Co-authored-by: Copilot <copilot@github.com>
… mapping details

Co-authored-by: Copilot <copilot@github.com>
- Introduced a new `children` property in the Transformation interface to allow nested layers for image, text, and canvas transformations.
- Implemented depth management for nested transformations in the SortableTransformationItem component, enabling drag-and-drop functionality for child layers.
- Updated the TransformationConfigSidebar to handle adding child transformations, ensuring they are appended to the correct parent layer.
- Enhanced the TransformationTypeSidebar to restrict transformation options when in child add mode, allowing only valid layer types.
- Added a canvas layer transformation type with specific properties and validation, including background color, dimensions, and positioning.
- Updated serialization logic to correctly handle nested transformations when persisting to storage.
- Implemented recursive functions to manage visibility and updates for nested transformations in the editor store.

Co-authored-by: Copilot <copilot@github.com>
…ion logic

Co-authored-by: Copilot <copilot@github.com>
…s mode

Co-authored-by: Copilot <copilot@github.com>
… listVariables and buildVariablesSchema

Co-authored-by: Copilot <copilot@github.com>
- Introduced `nonVariablizable` property to prevent certain fields from being variablized, ensuring correct behavior for fields like background type and crop mode.
- Added utility functions for nested value manipulation (`getNestedValue`, `setNestedValue`) to streamline handling of complex data structures.
- Implemented `replaceVariableRefsWithDefaults` to facilitate the use of default values in forms, improving validation and user experience.
- Enhanced the transformation config sidebar to validate default values and display errors for invalid configurations.
- Added comprehensive tests for variable handling, ensuring backward compatibility with legacy variable formats.
- Updated variable interface to include `defaultValue` and `description`, providing clearer documentation and usability.
@imagekitio imagekitio changed the title Merge main into creative automation Creative automation May 15, 2026
manu4543 added 6 commits May 16, 2026 08:48
…istortPerspectiveInput, GradientPicker, and ZoomInput components
…to ensure unique names during save operations
Collapse the two-click popover affordance into a single inline Save
button + persistent status label. The button always shows the current
state at a glance and removes the timer-driven "Saved to library"
toast: there is no transient confirmation any more, just one of
{Access required, Save failed, apply-first hint, Unsaved local changes}
shown in a fixed slot to the right of the button (mutually exclusive,
no layout shift).

- TemplateStatus.tsx: drop popover, notification timers, and the
  isInteractive lockout; render Button + status Text driven directly
  by store selectors (syncStatus, isPristine, transformationConfig
  FormDirty, hasPendingLocalWork, templateStorageWriteBlocked).
  Early-return when pristine with no pending work or error so the
  control stays hidden until the user has something to save.
- TemplateStatus.test.tsx: rewrite the UI block as one focused test
  per documented state (pristine-hidden, clean, unsaved, apply-first,
  permission-error, generic-error, saving, click-saves). Drop
  vestigial vi.advanceTimersByTime(3500) calls and "notification
  settle"/"toast fades" wording left over from the old timer model.
  Keep the store/autosave probe tests intact.
@hrhv
Copy link
Copy Markdown
Member

hrhv commented May 19, 2026

I've done a thorough testing and review of the code and the UX. Here are my findings (v1):

Loom: https://www.loom.com/share/05168259fdd64a45962b74bb65da48d6

  1. When the editor is opened from the dashboard i.e. one or more images are pre-selected, the user should be able to remove all selected images and go to a blank canvas state. Right now, the "X" (cross) button is disabled on the last image in the thumbnail strip at the bottom.
  2. In Image Layers, switch on the "Shadow" switch and note that the input boxes have no default values. Sliders are positioned at an offset > 0, but inputs are blank. Other affected items:
    2.1 Sharpen Overlay
    2.2 Quality
    2.3 Opacity
  3. For "Anchor Point", we have been using an anchor component. But the newer items have a select dropdown. Need to either make everything a select dropdown, or everything an anchor component. This needs to be consistent.
  4. Color picker is not working properly. Even on sliding and picking a color, the alpha remains 00 and this leads to the color not getting picked at all. Affected items:
    4.1 Background
    4.2 Every background item in crop modes / layers
    4.3 Color pickers in gradients
    4.4 Unaffected: Color replace (for reference and debugging)
  5. In "Canvas Layer" > "Width", an expression like iw is not working. Zod validation fails for this, when it should actually be supported.
  6. Canvas Layer creating incorrect URLs: https://stage-ik.imagekit.io/cr29v1rbc/three-dogs.jpg?updatedAt=1777572542034&tr=l-image,i-ik_canvas,bg-4f3535,w-iw_div_1,h-100,l-end:cr-000080_18_f3564b. (In this case, iw is not supported. It should have been bw, but then there should be a zod validation for this).
  7. Canvas Layer - expressions for "Position Y" like bh_sub_bh_div_5 are failing zod validation when it is actually a valid syntax. Example: https://stage-ik.imagekit.io/cr29v1rbc/three-dogs.jpg?updatedAt=1777572542034&tr=l-image,i-ik_canvas,bg-4f3535,ly-bh_sub_bh_div_5,w-bw_div_1,h-bh_div_5,l-end:cr-000080_18_f3564b
  8. When a parent layer's visibility is hidden, the UI should show all the child elements inside it as invisible too.
  9. Text Layer - Changes are applied, but the primary button still says "Apply changes" and the navbar's save button is disabled. This is an error state. Reproduction: Text Layer > text=Woof Woof, Width=500, PositionYCenter=bh_sub_200, AnchorPoint=Right, FontSize=56, Typography=Bold, Color&BgColor=Set, Padding=25. But "Apply and Close" or "Apply and Save" work.
  10. In the Font Picker, only ttf files should be shown. There is no filters either for the user to find a particular font from their ML.
  11. Transformations Sidebar has a horizontal scrollbar when there are child trees of items. This needs to be removed.
  12. There is no way for a user to use an existing template with automation. An import / export path is really needed.
  13. Select "Background" > "Color" > Click "Discard". The picker field is gone.
  14. Creative Automation > Preview step where Manual rows are selected is broken. Ideally, default values should be applied automatically and asset properly generated. But an incorrect preview is being loaded. This needs rethinking.

v2 comments:

  1. Nested layer recursion — no depth limit enforced. We support only 3 nested layers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants