Automations module (WIP)#88
Draft
paulocastellano wants to merge 7 commits into
Draft
Conversation
- Added new automation-related routes and controllers for managing automations. - Introduced automation nodes in the UI with distinct styles and interactions. - Updated sidebar to include navigation for automations. - Enhanced post creation logic to support automation metadata. - Refactored content type and platform enums into types for better type safety. - Added localization for automation-related terms in English, Spanish, and Portuguese. - Improved error handling in various components to accommodate new features.
Conflict resolutions + integration fixes: - CreatePost: kept the branch's merge-into-existing meta persistence (equivalent to main's #86 replace on create, and what the automations flow was built on). - FacebookSettings.vue: kept both new defaults (previewOnly + meta). - RunGenerateNode + GenerateNodeConfig.vue: ContentType::InstagramCarousel was removed on main (#80); an IG carousel is now a multi-image instagram_feed, so the carousel-capable list uses InstagramFeed. - GenerateNodeTest: fixtures use the ContentType enum and the new instagram_feed carousel signal.
… provider Move PostObserver, AutomationRunObserver, and AutomationNodeRunObserver onto their models with the #[ObservedBy] attribute (the Laravel-preferred way) and drop AppServiceProvider::configureObservers() plus its now-unused imports.
…r UX
Generation
- Generate node now produces the full post (text + AI image + carousel)
via a shared PostImagePipeline extracted from StreamPostCreation
- Generate config UI mirrors the /posts/create wizard (carousel slide
count, include-image toggle); drop the decorative format/unsplash keys
Flow correctness
- RSS/HTTP nodes expose named has-items (default) and no-items output
handles, labeled and colored like the Condition node
- AdvanceAutomationRun records a no_matching_edge terminal instead of
completing silently; "0 new items" feedback in the test panel
- Manual/test runs no longer persist the production dedup watermark
Run reliability
- Pause truly halts in-flight runs (production only; manual test runs
always run regardless of automation status)
- ProcessAutomationNode::failed() marks the run failed
- automation:recover-stuck-runs and automation:prune-dry-runs commands
Webhook / HTTP
- Branded User-Agent (config-driven) on outbound webhook + http_request
- Webhook fails on invalid JSON instead of silently sending {}
- HTTP custom headers editor; CodeMirror-based CodeEditor for JSON
Editor UX
- Header Test button only opens the panel; the panel has a Run button
(saves first) and owns the with-real-data toggle
- Clicking a node closes the test panel and opens its config
- Node cards: max-width + truncate so long URLs don't grow the node
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds an Automations module — visual, node-based automations that generate and publish posts on triggers.
Includes (so far):
Status
Branch is up to date with
main(merged). Resolutions/integration notes are in the merge commit — notably theContentType::InstagramCarouselremoval frommain(#80): an Instagram carousel is now a multi-imageinstagram_feed, so the carousel-capable detection usesInstagramFeed.Full test suite green (1796 passed); automations suite green (82).
Not done yet
Still WIP — feedback on the node model / UX welcome before final polish.