Changes in version 3.5.0.1876
- CLI: apply-patch verb with 36 operations for all model object types (New!)
- CLI: Three new auto-update verbs: check-update queries Harbor, download-update fetches release, apply-update installs (New!)
- CLI: -license-info command shows current license status (New!)
- CLI: -license-activate command for headless license activation (no GUI/X server needed) (New!)
- Custom SQL in migrations: raw before/after SQL on up()/down() (Laravel, Knex) - via the GUI Migration SQL editor, the Custom migration tab in Create revision, and the -cli-set-migration-sql verb. (New!)
- CLI: 16 command-line verbs for headless schema management (New!)
- CLI: SkipperCli.exe console build for CI/CD and scripting use (New!)
- CLI: export-diagram renders schema as PNG or PDF from command line (New!)
- CLI: create-project, import-project, and import-database verbs (New!)
- CLI: AI-ready skill document bundled with installer (DocumentationAi/ folder) (New!)
- CLI: schema-summary, validate, compare, and export verbs (New!)
- CLI: apply-merge verb for declarative target-state schema updates (New!)
- CLI: -cli-export-ops round-trips unsigned columns and required polymorphic associations; write ops report errors on failed generation, unknown region, or bad $ref.
- CLI: Enhanced module name resolution with case-insensitive and prefix-match fallbacks
- CLI: apply-patch update_index accepts fields to add index columns (idempotent)
- CLI: Added exception handling for std::exception and generic exceptions in patch operations
- CLI: License commands (activate/info/unregister) now return structured JSON for automation instead of GUI dialogs
- CLI: License errors in CLI mode now return structured JSON output instead of attempting to open GUI dialogs
- CLI: Added -license-unregister command to deactivate and remove license via command line
- Migration log now stores IANA timezone name (e.g., "Europe/Berlin") for deterministic UTC computation across environments
- CLI: apply-patch returns per-op ids; add* ops accept inline ormattributes (incl. M:N per-side); $ref references within one patch; setormattribute supports all object types.
- CLI: Automatic headless mode on Linux — QTQPAPLATFORM=offscreen set automatically when CLI flags detected without DISPLAY
- CLI: NULLABLE_PK and other validation warnings for schema quality checks
- CLI: schema-summary includes orm_attributes on all object types
- CLI: new entities auto-create PK, many-to-many auto-creates join entity with composite PK
- CLI: JSON escape auto-correction and forward-slash namespace conversion for AI tools
- CLI: lifecycle callbacks configurable in single operation via values parameter
- CLI: ORM attribute manipulation with Entity.field dotted notation for fields
- CLI: addfield/updatefield handle unsigned attribute
- CLI: apply-patch rejects unknown field data types (e.g. unsignedBigInteger) at write time instead of failing later during validate
- CLI: add_association links a pre-existing same-named foreign-key column instead of creating a duplicate; a column already used by another association still gets its own column.
- CLI: addmanytomany and updatemanytomany now persist owner/inverse aliases (previously applied in memory but lost on save, leaving the template-generated aliases)
- CLI: license commands (activate/info/unregister) route trace and message output to stderr, keeping stdout clean JSON for automation
- CLI: update package extraction now blocks Zip Slip path traversal
- CLI: -cli-export no longer fails with "Directory []" for a relative project path.
- Migrations: custom before/after SQL is no longer lost on save; multi-query ordering fixed.
- CLI: entity/module references resolve by full qualified name (fixes duplicate short names across modules).
- CLI: INDEXNOFIELDS validation warning for indexes without field columns
- CLI: add_index accepts fields parameter as both string and array (previously string was silently dropped)
- Fixed migration export producing UTC datetime diffs when exporting on a server with a different timezone than the original author
- CLI: Removed export-classes and export-migrations verbs; export pipeline generates all files in single pass
- CLI: Fixed silent crash when module names cannot be resolved; added comprehensive exception handling
- CLI: Fixed attribute inflation; removed unnecessary export metadata, reducing file size ~5x
- CLI: Fixed temp directory path leaking into saved project files
- Doctrine2: Fixed export of has-lifecycle-callbacks attribute to PHP 8 attributes format - was incorrectly placed as ORM\Table parameter instead of standalone #[ORM\HasLifecycleCallbacks] attribute
- CLI: Fixed Linux CLI crash when X11 display forwarding is broken or unavailable
- CLI: Fixed headless CLI commands hanging indefinitely on Linux when no license is present
- Fixed viewer license rejected with MAINTENANCE_EXPIRED (viewer has no maintenance field)
- Fixed ORM attribute path resolution failing for short entity names and forward-slash paths
- Fixed many-to-many join entity FK fields missing primary key and NOT NULL constraints
- Fixed entity rename creating copy in temporary module instead of renaming in-place
Latest Skipper beta version is 3.5.0.1876
Windows
Linux
MacOS