Repository navigation
Releases: SyncEngine/SyncEngine
Releases · SyncEngine/SyncEngine
Release list
0.1.0-beta.7
Features
- Trace history retention: Define automatic cleanup rules for automation traces with per-status limits and date-based expiration. A new CLI command is available for manual pruning as well.
- Improved form builders: New Tabs and Wizard field types for organizing complex configuration forms. All HTML input types are now supported.
- Faster editor performance: Client-side caching for query results and lazyloaded portal containers reduce unnecessary re-renders and improve initial load times.
- Better enum translations: Enums now support automatic translation, making UI labels easier to localize.
- Blueprint data management: Blueprints can now manage data directly while preventing external modifications for better data integrity.
Internationalization
- Full translation support: Added frontend translations in all currently existing locales (DE, FR, ES, IT, PL, NL, DA, NO, SV, EL, CS, PT, UK, ZH_HANS, TR, FI, PT_BR, KO, JA).
- Symfony UX Translator migration: Replaced i18next with Symfony UX Translator for better integration and performance. Includes
useTranslatorhook and global translation function. - Locale switching: Proper locale changes in session when switching languages, with page reload for UX Turbo compatibility. Available locales are now stored locally and filtered to only show locales that actually exist.
- Translation improvements: Added missing translation strings, converted code in translation strings to params, removed tags from translation strings, fixed incorrect escaping issues.
Security
- Enhanced CSRF protection: All JSON API endpoints now require valid CSRF tokens, protecting against cross-site request forgery attacks.
- Restricted vault access: The vault is now accessible only to admin users.
- API token scope validation: Users can no longer assign token scopes beyond what their account permissions allow.
Improvements
- Cleaner date column naming: Date columns now follow the standard "At" suffix convention (e.g.,
createdAt,updatedAt). A migration command is available to update existing databases. - Better error handling: Network errors are now clearly distinguished from parsing errors, making debugging easier.
- HTML sanitization: HTML and SVG content is automatically sanitized by default to prevent XSS vulnerabilities. Trusted form sources are excluded from sanitization.
- Improved blueprint data management: Blueprints can now manage data directly while preventing external modifications for better data integrity.
- Onboarding improvements: Fixed close button behavior when onboarding fails to load and parameterized onboarding config location.
- Column validation: Added column validation before formatting to prevent malformed data output.
- Reference preservation: Improved reference handling in params to preserve object references where needed, fixing issues with data not being passed correctly.
- Model normalizer refactor: Improved structure and data validation for model normalization, with better handling of dependencies and dependents.
- ExecuteResult DTO: Introduced a new typed result class for execution outcomes, replacing ad-hoc result handling throughout the codebase. Provides clear accessors for success status, messages, data, and errors.
Frontend
- Faster editor performance: Query results are now cached temporarily, reducing unnecessary reloads and improving responsiveness.
- Better state management: Improved conflict handling when multiple components respond to viewport changes, and fixed issues with stale data in form fields.
- Faster initial load: Modal containers are now loaded on demand instead of upfront, speeding up the initial editor render.
- Clearer error messages: Network errors are now clearly distinguished from parsing errors, making debugging easier. Fixed static language fallback.
Bug Fixes
- Fixed issues with event callback cleanup that could cause stale state reads.
- Fixed a loop in the fetch state management that caused unnecessary re-subscriptions.
- Fixed vault key handling for complex key names.
- Fixed type comparison and entity selection issues in form fields.
- Fixed recursive state updates in the editor that caused duplicate callbacks.
Developer Notes
- Installed
symfony/html-sanitizerpackage (7.4.*) - Installed Symfony UX Translator packages for frontend translation support
- Updated composer.lock with new dependencies
- Updated node and composer packages
- Added missing onboarding directory structure
- Added required PHP extension dependencies in composer
Full changelog: 0.1.0-beta.6...0.1.0-beta.7
0.1.0-beta.6
New Features
Two-Factor Authentication #189
Protect your account with an extra layer of security. 2FA is fully integrated via the SchebTwoFactorBundle and supports two methods:
- TOTP (Authenticator app): Generate a QR code during setup, scan it with Google Authenticator or similar, then verify with the generated code. Each user can have one TOTP method configured.
- Email verification: A 6-digit verification code is sent to your registered email address. The code expires after 10 minutes and can be regenerated.
- Master toggle: Each account has a single master 2FA switch, enabling it activates whichever method is configured. Your preferred method (TOTP over email) is used automatically during login.
- Account management: Enable, configure, or disable both methods from Account settings. You cannot remove the last active method without first disabling 2FA entirely.
Entity Management #187
Automations and other entities now have full lifecycle control with status and visibility states:
- Enabled / Disabled: Control whether an automation can run. Disabled automations are blocked from executing or scheduling, and the API returns HTTP 423 Locked for requests to disabled endpoints.
- Visible / Hidden: Filter entities from list views without deleting them. Hidden entities remain accessible via API and can be shown again at any time.
- Trash and restore: Entities can be trashed (soft-deleted) instead of permanently removed. Trashed entities appear in a separate state with a timestamp and can be fully restored to their previous status. Permanent deletion is still available as an explicit action.
- Dependency tracking: Automations and flows automatically track which entities they reference. The system prevents deleting or trashing entities that are still used by other configurations, avoiding broken automations.
- Contextual actions: List view actions (hide/show, enable/disable, trash/restore/delete) now appear only when relevant based on the entity's current state.
- Filter dropdowns: Entity list views include filter controls for status and visibility. Filter by enabled/disabled/trashed or visible/hidden to quickly narrow down your view.
Improvements
- Faster form updates: Form modals no longer flicker or lose state when updating content. Changes are applied in-place using smart DOM diffing that preserves interactive Stimulus elements.
- Safer entity operations: Creating entities with dots (.) in their reference is now blocked early with a clear error message. Attempting to update an entity before it is saved is also caught with a helpful error.
- Better webservice error messages: FTP, SFTP, SOAP, and SQL connection forms now show clear warnings when required server extensions are missing, instead of failing silently or with cryptic errors later.
- Dynamic SQL driver selection: The SQL connection form automatically shows only available database drivers (MySQLi or PDO) based on what is installed on the server.
- Filter wildcards: Filter conditions can now use
{*key*},{*index*}, and{*current*}wildcards to reference the current row's key, 0-based index, and 1-based position during iteration. - Mapper config support: Mapper fields in blueprints now export/import their nested configuration recursively, preserving column mappings across save cycles.
- Better error display in modals: ChooseModal now captures and displays errors from async actions, showing them as alert banners so you can see what went wrong without losing your place.
- Improved admin error messages: Controller JSON responses are now wrapped in try-catch blocks. When something goes wrong, the UI receives a structured
{success: false, error: "..."}response instead of crashing or hanging. Exception details are visible when debug mode is enabled. - Proper form submission status codes: Account preferences and settings forms now return correct HTTP status codes (202 Accepted for success, 422 Unprocessable Entity for validation errors), fixing Turbo navigation issues after form submissions.
- Account form improvements: Password is no longer required when updating the account form, making it easier to update profile information without re-entering credentials.
- API shows all entities by default: The REST API now returns all entities regardless of their enabled/disabled or visible/hidden state, making it easier to work with entity data programmatically.
- Improved dark mode contrast: Darker background colors improve readability and visual depth in the admin interface.
- Better installation recovery: After a database repair, you are redirected back to the page you were on instead of landing on the admin dashboard.
Bug Fixes
- Fixed issues when importing configurations with dots in reference names.
- Fixed form modal content updates causing Turbo navigation conflicts.
- Fixed data merging behavior when object keys contain special characters.
- Fixed schema conversion settings not being applied at the correct level.
- Fixed tag parsing for strings with unclosed quotes.
- Fixed entity delete in the REST API to perform soft-trash instead of permanent deletion, preventing accidental data loss.
- Database errors like missing tables or invalid column names are now detected more reliably, triggering the repair flow automatically.
Developer Notes
- PHPDoc generics: All core task classes now have
@param ConfigData<...>generic annotations for better IDE integration. - Type field factory:
FieldTypeFactorynow returns specific typed field classes instead of genericInputFieldType. Auto-setstypeproperty from staticgetType()when not explicitly provided in config. - New exception classes:
NotAllowedExceptionandNotFoundExceptionadded tosrc/Exception/for clearer error semantics. - Entity magic methods:
EngineModeladds@methodannotations forgetStatus(),setStatus(),getVisibility(),setVisibility()for IDE completion. - API default behavior: REST API v1 list queries now show all entities by default (status
'*', visibility'*') regardless of state. Entity delete in REST API performs soft-trash instead of permanent delete. - Engine query parsing:
EngineModel::parseQuery()applies status/visibility defaults unless explicitly set. Use'*'to override and show all states. - Deprecation logging: deprecations now write to a dedicated rotating file (
deprecation.log) in production. Display is only enabled when debug is enabled.
Testing
- New test suite for entity dependency tracking, covering direct and recursive resolution scenarios.
- Comprehensive 2FA tests covering TOTP setup, email verification codes, and the full login flow.
- Vault service tests including key rotation and edge case values.
- Filter task wildcard tests and JS condition evaluation tests.
- New tests for model importer, exporter, and normalizer covering import/export edge cases and normalized dependent output.
- New tests for data formatting, serialization sanitization, and env file persistence.
Full changelog: 0.1.0-beta.5...0.1.0-beta.6
0.1.0-beta.5
Release 0.1.0-beta.5
Security & Access Control
- New Roles: Introduce Viewer and Editor roles alongside Administrator. These let you grant team members appropriate access without full admin privileges.
- Role-Based Visibility: Non-admin users no longer see system-level menu items or module endpoints. The interface adapts to your role.
- API Token Scopes: API tokens now support entity-based access control, letting you restrict tokens to specific resources and actions.
- Admin-Only Features: User management and system configuration are now clearly restricted to administrators.
User Management
- User Administration: Admins can create, edit, and delete user accounts directly from the application.
- Password Reset: Administrators can reset passwords for other users.
- Profile Editing: Password is no longer required when editing an existing user's profile.
Frontend & Editor
- Guided Onboarding: New users are walked through setup with a step-by-step tour covering account configuration, system preferences, and key features. A help button on every page triggers contextual onboarding.
- Entity Selector: Selecting entities in automations now uses a modal picker instead of a dropdown, providing better search and filtering for large lists.
- Grouped Conditions: The conditions builder supports grouping related conditions together with editable labels and descriptions, making complex automation rules easier to read and maintain. Backwards compatible with existing automations.
- Format Field: The format dropdown has been replaced with a full codec field selector with optional configuration.
- Flow Editor Performance: Significant speed improvements when editing automations with many nodes; reduced lag and duplicate parsing eliminated.
- Blueprint Icons: Blueprints now display a dedicated icon for quick visual identification, with a notice shown when no blueprints are available.
SOAP Integration
- SOAP Webservice: Connect to SOAP-based APIs with full request/response handling, configurable data transport, compression support, and connection timeouts.
- Multistep Operations: Configure complex SOAP workflows with multiple sequential API calls.
- WSDL Integration: Automatic operation discovery from WSDL definitions.
- Data Transport: Choose between full data payload or custom body parameters for SOAP requests.
Bug Fixes
- List Endpoint: Fixed a bug where list endpoints used request parameters instead of query parameters, causing incorrect filtering results.
- Data Loss: Fixed Replace task data loss and duplicate keys.
- Stale Data: Fixed
ResourceDatareturning old data after replacements. - Number Formatting: Fixed formatting for zero and negative decimals.
- Entity Comparison: Fixed comparison logic using
isEqualfor correct value evaluation instead of reference comparison. - Codec Formats: Codec models now expose available formats for better visibility.
- Loading Bar: Fixed loading bar display issues.
- Delete Modal: Fixed the delete confirmation modal in non-react templates.
- Condition Evaluation: Fixed various condition evaluation and type comparison issues.
- DateTime Input: Fixed handling of invalid date/time inputs with proper fallback.
- Database Compatibility: Fixed DB platform call compatibility with updated Doctrine.
- SQLite Safety: Lowercased SQLite platform check and wrapped in try block to prevent fatal errors on SQL issues.
- Webservice dependencies: Protect installation from type issues when PHP libraries are missing.
- Blob MimeType: Fixed file mime type detection when the standard method is not available.
- Entity Not Found: Added proper checks for missing entities instead of silent failures.
Developer Notes
- PHPStan 2.x: Upgraded PHPStan from 1.x to 2.x with extensive type annotation fixes across the codebase.
- Type Safety: Fixed numerous type annotations, generics, and return types across models, services, and structure classes.
- Better DateTime Handling: Date/time formatting is more forgiving and handles invalid inputs gracefully with automatic fallback.
- Redundant Code: Removed redundant code paths and dead branches identified by static analysis.
- ServiceLocator Generics: Fixed generic type annotations in service locators for better IDE support.
- Trace Annotations: Cleaned up duplicate and incorrect PHPDoc annotations in trace-related models.
- Format Trait: Updated
decodeFormatreturn type tomixedto correctly reflect its actual behavior. - Automation Cleanup: Fixed stale run cleanup to remove unnecessary null check on repository.
Testing
- JavaScript Test Suite: New Vitest-based test framework with tests for utility functions, hooks (
useGlobal,useSyncedState), data, conditions, tags, events, and format utilities. - SOAP Test Coverage: Comprehensive SOAP and SOAP multistep tests with mock webservices.
- Condition Tests: Added extensive condition evaluation tests.
- Replace Task Tests: Added tests for the Replace task to prevent regression.
Dev
- Updated to Symfony 7.4.14.
- Improved development configuration and security settings.
Full changelog: 0.1.0-beta.4...0.1.0-beta.5
0.1.0-beta.4
Core & Runtime
- Runtime: Introduce file transfer support via
BlobVO andBlobStore. Files can now flow through the dataflow without being serialized into memory.Blobvalue object wraps file data with metadata (filename, extension, mimeType) and supports both inline strings and file-backed streams.BlobStoremanages temporary file storage with content-hash deduplication and automatic cleanup.- Blobs normalize to marker arrays in the dataflow and rehydrate on the receiving end.
- File codec handles binary data formats with encoder support.
- HTTP and File webservices support file uploads and blob storage (including Symfony's
UploadedFile). - Blob responses can be served as binary files or streams.
- Core: Complete switch to
Fieldobjects for handling fields withFieldCollection; safe cloning, normalizing, merging, auto-created grouped fields, and nested group support. - Core: Create dedicated
ModuleRegistryManagerthat handles module registry, activation, compatibility, and auto-disable on errors. - Core: Introduce
SerializationSanitizerto sanitize data before JSON encoding and error handling. - Core: Migrate to
module.jsonfor module manifests instead of composer. - Core: Convert table prefix to a param (direct env autowiring removed); rename prefix to
SYNCENGINE. - Core: Add non-destructive schema repair tool (metadata-driven, allows
ALTER TABLEbut blocksDROP) and system repair command (currently handles database only) with option to fetch repair output. - Core: Add system install command as an alternative to the UI.
- Core: Update to Doctrine 3.6 (from 2.20) with updated dbal and persistence packages.
Frontend & API
- API: Add REST API v1 CRUD endpoints for main core models (automation, connection, routine, flow, storage) with entity type validation.
- API: Make the preview endpoint available for API use with a basic schema, type info, and error details when
successis false. - Frontend: Add manual disable action and collapsible disabled modules with uninstall action. Convert module actions to dropdown for better UI.
- Frontend: Fix React
refandkeyprop spreading issues. - Frontend: Improve clipboard capabilities check.
Other
- Testing: Rename Automation scenarios to "Runtime" scenarios and move tests into
Runtimenamespace. - Testing: Add preview runtime test cases (flow, mode, request, routine, scope, service, task, validation).
- Testing: Create BlobStore tests with various blob operations.
- Testing: Create HTTP file upload tests and refactor mock to support file uploads.
- Testing: Add module registry tests.
- Dev: Add
composer/semverrequirement explicitly; silence deprecation messages from dependency projects. - Dev: Update NPM packages and PHP dependencies.
- Dev: Improve dev server config and re-enable file watchers; fix local dev server access control.
- Dev: Fix several PhpStan issues in controllers.
- Docs: Update
SECURITY.mdto reflect current status.
Full changelog: 0.1.0-beta.3...0.1.0-beta.4
0.1.0-beta.3
- Runtime: Introduce execution mode support (
single,parallel,queued) - Runtime: Refactor scheduling into dedicated runtime services and move execute services into the
Runtimenamespace. - Runtime: Expand trace lifecycle handling with new statuses (
registered,queued,scheduled) and better queued-trace dispatch flow. - Runtime: Improve active-run detection with heartbeat/timeout cleanup and stricter stale run reset logic.
- Runtime: Move iterator runtime state to traces and improve iteration continuation/reset behavior (including
{{ iteration.* }}availability). - API: Improve endpoint action handling (including schedule defaults) and return richer status payloads (
running,scheduled,queued, capability flags). - Core: Add execution configuration improvements such as per-automation max traces and execution timeout handling.
- Core: Improve connection/config safety with better validation paths and safer config object handling.
- Core: Add non-destructive schema repair handler that applies metadata-driven DDL without executing DROP statements.
- Webservice: Improve SQL reliability with client caching, reconnect/retry on retryable connection failures, and better PDO/mysqli error reporting.
- Frontend: Expand schema/collection field UX with nested group support, collection input handling, and dynamic optional field selection.
- Frontend: Improve blueprint selection UX (including custom/non-module blueprint grouping) and step preview/config handling.
- Testing: Add broad integration and mock coverage (queued mode, scheduler/status behavior, iterator flows, attempt recovery, SQL mock webservice, advanced automation scenarios).
- Dev: Improve and add migration helper tmp commands, update script naming cleanup, and workflow rename (
composer-installtobuild-release). - Docs: Add
CONTRIBUTING.mdand remove outdated docs pages.
Full Changelog: 0.1.0-beta.2...0.1.0-beta.3
0.1.0-beta.2
- Frontend: Set default flow UI, set default node on load and minor UI improvement.
- Frontend: Enhance Blueprint selection with module and type selection
- Frontend: Group param for select fields
- Frontend: Custom error pages
- API: Allow trailing slashed for endpoint
- Runtime: Keep track of when the trace was killed (timestamp)
- Core: Improve Blueprint model for automation triggers (
afterUpdatemethod and allow config state comparison while updating) - Core: Start on field params within schema definitions
- Core: Several improvements to DB repair handler
- Core: Fix cache handling after module install
- Core: Improve model getter (factory) and allow getting automation by endpoint
- Core: Fix CLI options in system service
Full Changelog: 0.1.0-beta...0.1.0-beta.2
0.1.0-beta
Officially Out of Prototype!
See Readme and Docs for more info on the project!