Repository navigation
Releases: Atlantic18/Skipper
Releases · Atlantic18/Skipper
Release list
3.5.3.1893
Changes in version 3.5.3.1893
- Fixed a crash on Apple Silicon Macs when a project could not be loaded. Project-loading errors are now handled safely and diagnostic reports include the original error.
3.5.2.1891
Changes in version 3.5.2.1891
- Bundle export settings: the export path is now saved correctly for a bundle stored in its own file. Before, the path got one extra ../, so the export went one directory too high. (support-ticket)
3.5.1.1890
Changes in version 3.5.1.1890
- Native Apple Silicon (arm64) support - Skipper now runs natively on Apple Silicon Macs as a Universal 2 (arm64 + Intel) build, no Rosetta required. (New!)
- Native Windows on ARM (ARM64) support - Skipper now runs natively on Windows on ARM devices as a dedicated ARM64 build, no x64 emulation required. (New!)
- Native 64-bit Windows package - Skipper is now distributed as a native x64 build alongside the existing 32-bit one, lifting the address-space limit of the 32-bit process on very large models. (New!)
- Security and stability: upgraded the core third-party library stack - OpenSSL 3.6.3, Boost 1.91, and refreshed vcpkg-managed libraries (libcurl, libxml2/libxslt and others), rebuilt with the current Visual Studio 2019 (v142) toolset.
- Updated the Qt framework to 5.15.19 (KDE Patch Collection), adding accumulated upstream fixes on top of the maintained Qt 5.15 LTS series.
- Linux builds are now compiled on Ubuntu 22.04 LTS and macOS builds on macOS 15.
- Linux system requirements: the Linux package now requires glibc 2.35 or newer. It runs on Ubuntu 22.04 LTS, Debian 12, Fedora 36 and Red Hat Enterprise Linux 10 and their later releases.
- Laravel migrations: changing a property of a column that already has a unique index (for example NOT NULL to nullable) no longer tries to create that index a second time. The migration failed with 'Duplicate key name'.
- Knex migrations: changing a property of a column that already has a unique index no longer re-creates the index. Turning a primary key into a plain unique column no longer drops an index that does not exist.
- Laravel migrations: after() is no longer generated inside change(). The column is already in place, so it only forced a full table rebuild on MySQL and was ignored by the other database platforms.
- Laravel and Knex migrations: rolling back a changed named index now restores its previous type, name, and columns instead of repeating the forward definition.
- Laravel and Knex migrations: changing a named index now replaces the previous definition before creating the updated one, preventing duplicate index errors.
- Laravel migrations: removing a property from a named index now replaces the previous index definition instead of generating an empty migration.
- Doctrine 2 attributes: a trailing comma inside a PHP 8 attribute group or argument list (as written by code formatters such as Prettier) no longer produces an empty attribute and invalid PHP on re-export; the same fix covers docblock annotation argument lists (support-ticket)
- Doctrine 2 attributes: attribute overrides now export valid PHP 8 code. The nested ORM\Column inside ORM\AttributeOverrides was written without the new keyword, so PHP rejected the generated file with Constant expression contains invalid operations. (support-ticket)
- Doctrine 2 attributes: importing attribute overrides no longer loses their content. Every override inside ORM\AttributeOverrides was dropped during the import and came back as an empty list on the next export.
3.5.1.1889
Changes in version 3.5.1.1889
- Native Apple Silicon (arm64) support - Skipper now runs natively on Apple Silicon Macs as a Universal 2 (arm64 + Intel) build, no Rosetta required. (New!)
- Native Windows on ARM (ARM64) support - Skipper now runs natively on Windows on ARM devices as a dedicated ARM64 build, no x64 emulation required. (New!)
- Native 64-bit Windows package - Skipper is now distributed as a native x64 build alongside the existing 32-bit one, lifting the address-space limit of the 32-bit process on very large models. (New!)
- Security and stability: upgraded the core third-party library stack - OpenSSL 3.6.3, Boost 1.91, and refreshed vcpkg-managed libraries (libcurl, libxml2/libxslt and others), rebuilt with the current Visual Studio 2019 (v142) toolset.
- Updated the Qt framework to 5.15.19 (KDE Patch Collection), adding accumulated upstream fixes on top of the maintained Qt 5.15 LTS series.
- Linux builds are now compiled on Ubuntu 22.04 LTS and macOS builds on macOS 15.
- Linux system requirements: the Linux package now requires glibc 2.35 or newer. It runs on Ubuntu 22.04 LTS, Debian 12, Fedora 36 and Red Hat Enterprise Linux 10 and their later releases.
- Laravel migrations: changing a property of a column that already has a unique index (for example NOT NULL to nullable) no longer tries to create that index a second time. The migration failed with 'Duplicate key name'.
- Knex migrations: changing a property of a column that already has a unique index no longer re-creates the index. Turning a primary key into a plain unique column no longer drops an index that does not exist.
- Laravel migrations: after() is no longer generated inside change(). The column is already in place, so it only forced a full table rebuild on MySQL and was ignored by the other database platforms.
- Laravel and Knex migrations: rolling back a changed named index now restores its previous type, name, and columns instead of repeating the forward definition.
- Laravel and Knex migrations: changing a named index now replaces the previous definition before creating the updated one, preventing duplicate index errors.
- Laravel migrations: removing a property from a named index now replaces the previous index definition instead of generating an empty migration.
- Doctrine 2 attributes: a trailing comma inside a PHP 8 attribute group or argument list (as written by code formatters such as Prettier) no longer produces an empty attribute and invalid PHP on re-export; the same fix covers docblock annotation argument lists (support-ticket)
- Doctrine 2 attributes: attribute overrides now export valid PHP 8 code. The nested ORM\Column inside ORM\AttributeOverrides was written without the new keyword, so PHP rejected the generated file with Constant expression contains invalid operations. (support-ticket)
- Doctrine 2 attributes: importing attribute overrides no longer loses their content. Every override inside ORM\AttributeOverrides was dropped during the import and came back as an empty list on the next export.
3.5.1.1888
Changes in version 3.5.1.1888
- Native Apple Silicon (arm64) support - Skipper now runs natively on Apple Silicon Macs as a Universal 2 (arm64 + Intel) build, no Rosetta required. (New!)
- Native Windows on ARM (ARM64) support - Skipper now runs natively on Windows on ARM devices as a dedicated ARM64 build, no x64 emulation required. (New!)
- Security and stability: upgraded the core third-party library stack - OpenSSL 3.6.3, Boost 1.91, and refreshed vcpkg-managed libraries (libcurl, libxml2/libxslt and others), rebuilt with the current Visual Studio 2019 (v142) toolset.
- Updated the Qt framework to 5.15.19 (KDE Patch Collection), adding accumulated upstream fixes on top of the maintained Qt 5.15 LTS series.
- Migrated deployment to Ubuntu 26.04 (GCC 15) and macOS 15
- Laravel migrations: changing a property of a column that already has a unique index (for example NOT NULL to nullable) no longer tries to create that index a second time. The migration failed with 'Duplicate key name'.
- Knex migrations: changing a property of a column that already has a unique index no longer re-creates the index. Turning a primary key into a plain unique column no longer drops an index that does not exist.
- Laravel migrations: after() is no longer generated inside change(). The column is already in place, so it only forced a full table rebuild on MySQL and was ignored by the other database platforms.
- Laravel and Knex migrations: rolling back a changed named index now restores its previous type, name, and columns instead of repeating the forward definition.
- Laravel and Knex migrations: changing a named index now replaces the previous definition before creating the updated one, preventing duplicate index errors.
- Laravel migrations: removing a property from a named index now replaces the previous index definition instead of generating an empty migration.
- Doctrine 2 attributes: a trailing comma inside a PHP 8 attribute group or argument list (as written by code formatters such as Prettier) no longer produces an empty attribute and invalid PHP on re-export; the same fix covers docblock annotation argument lists (support-ticket)
- Doctrine 2 attributes: attribute overrides now export valid PHP 8 code. The nested ORM\Column inside ORM\AttributeOverrides was written without the new keyword, so PHP rejected the generated file with Constant expression contains invalid operations. (support-ticket)
- Doctrine 2 attributes: importing attribute overrides no longer loses their content. Every override inside ORM\AttributeOverrides was dropped during the import and came back as an empty list on the next export.
3.5.1.1887
Changes in version 3.5.1.1887
- Native Apple Silicon (arm64) support - Skipper now runs natively on Apple Silicon Macs as a Universal 2 (arm64 + Intel) build, no Rosetta required. (New!)
- Native Windows on ARM (ARM64) support - Skipper now runs natively on Windows on ARM devices as a dedicated ARM64 build, no x64 emulation required. (New!)
- Security and stability: upgraded the core third-party library stack - OpenSSL 3.6.3, Boost 1.91, and refreshed vcpkg-managed libraries (libcurl, libxml2/libxslt and others), rebuilt with the current Visual Studio 2019 (v142) toolset.
- Updated the Qt framework to 5.15.19 (KDE Patch Collection), adding accumulated upstream fixes on top of the maintained Qt 5.15 LTS series.
- Migrated deployment to Ubuntu 26.04 (GCC 15) and macOS 15
- Laravel migrations: changing a property of a column that already has a unique index (for example NOT NULL to nullable) no longer tries to create that index a second time. The migration failed with 'Duplicate key name'.
- Knex migrations: changing a property of a column that already has a unique index no longer re-creates the index. Turning a primary key into a plain unique column no longer drops an index that does not exist.
- Laravel migrations: after() is no longer generated inside change(). The column is already in place, so it only forced a full table rebuild on MySQL and was ignored by the other database platforms.
- Laravel and Knex migrations: rolling back a changed named index now restores its previous type, name, and columns instead of repeating the forward definition.
- Laravel and Knex migrations: changing a named index now replaces the previous definition before creating the updated one, preventing duplicate index errors.
- Laravel migrations: removing a property from a named index now replaces the previous index definition instead of generating an empty migration.
- Doctrine 2 attributes: a trailing comma inside a PHP 8 attribute group or argument list (as written by code formatters such as Prettier) no longer produces an empty attribute and invalid PHP on re-export; the same fix covers docblock annotation argument lists (support-ticket)
3.5.1.1886
Changes in version 3.5.1.1886
- Native Apple Silicon (arm64) support - Skipper now runs natively on Apple Silicon Macs as a Universal 2 (arm64 + Intel) build, no Rosetta required. (New!)
- Native Windows on ARM (ARM64) support - Skipper now runs natively on Windows on ARM devices as a dedicated ARM64 build, no x64 emulation required. (New!)
- Security and stability: upgraded the core third-party library stack - OpenSSL 3.6.3, Boost 1.91, and refreshed vcpkg-managed libraries (libcurl, libxml2/libxslt and others), rebuilt with the current Visual Studio 2019 (v142) toolset.
- Updated the Qt framework to 5.15.19 (KDE Patch Collection), adding accumulated upstream fixes on top of the maintained Qt 5.15 LTS series.
- Migrated deployment to Ubuntu 26.04 (GCC 15) and macOS 15
- Laravel migrations: changing a property of a column that already has a unique index (for example NOT NULL to nullable) no longer tries to create that index a second time. The migration failed with 'Duplicate key name'.
- Knex migrations: changing a property of a column that already has a unique index no longer re-creates the index. Turning a primary key into a plain unique column no longer drops an index that does not exist.
- Laravel migrations: after() is no longer generated inside change(). The column is already in place, so it only forced a full table rebuild on MySQL and was ignored by the other database platforms.
3.5.1.1882
Changes in version 3.5.1.1882
- Native Apple Silicon (arm64) support - Skipper now runs natively on Apple Silicon Macs as a Universal 2 (arm64 + Intel) build, no Rosetta required. (New!)
- Security and stability: upgraded the core third-party library stack - OpenSSL 3.6.3, Boost 1.91, and refreshed vcpkg-managed libraries (libcurl, libxml2/libxslt and others), rebuilt with the current Visual Studio 2019 (v142) toolset.
- Updated the Qt framework to 5.15.19 (KDE Patch Collection), adding accumulated upstream fixes on top of the maintained Qt 5.15 LTS series.
- Migrated deployment to Ubuntu 26.04 (GCC 15) and macOS 15
- Laravel migrations: changing a property of a column that already has a unique index (for example NOT NULL to nullable) no longer tries to create that index a second time. The migration failed with 'Duplicate key name'.
- Knex migrations: changing a property of a column that already has a unique index no longer re-creates the index. Turning a primary key into a plain unique column no longer drops an index that does not exist.
- Laravel migrations: after() is no longer generated inside change(). The column is already in place, so it only forced a full table rebuild on MySQL and was ignored by the other database platforms.
3.5.1.1881
Changes in version 3.5.1.1881
- Native Apple Silicon (arm64) support - Skipper now runs natively on Apple Silicon Macs as a Universal 2 (arm64 + Intel) build, no Rosetta required. (New!)
- Security and stability: upgraded the core third-party library stack - OpenSSL 3.6.3, Boost 1.91, and refreshed vcpkg-managed libraries (libcurl, libxml2/libxslt and others), rebuilt with the current Visual Studio 2019 (v142) toolset.
- Updated the Qt framework to 5.15.19 (KDE Patch Collection), adding accumulated upstream fixes on top of the maintained Qt 5.15 LTS series.
- Migrated deployment to Ubuntu 26.04 (GCC 15) and macOS 15
3.5.0.1878
Changes in version 3.5.0.1878
- CLI: apply-patch verb with 36 operations for all model object types (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: -license-info command shows current license status (New!)
- CLI: -license-activate command for headless license activation (no GUI/X server needed) (New!)
- CLI: 16 command-line verbs for headless schema management (New!)
- CLI: Three new auto-update verbs: check-update queries Harbor, download-update fetches release, apply-update installs (New!)
- CLI: SkipperCli.exe console build for CI/CD and scripting use (New!)
- CLI: AI-ready skill document bundled with installer (DocumentationAi/ folder) (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: schema-summary, validate, compare, and export verbs (New!)
- CLI: apply-merge verb for declarative target-state schema updates (New!)
- CLI: Enhanced module name resolution with case-insensitive and prefix-match fallbacks
- CLI: License commands (activate/info/unregister) now return structured JSON for automation instead of GUI dialogs
- CLI: apply-patch returns per-op ids; add_* ops accept inline orm_attributes (incl. M:N per-side); $ref references within one patch; set_orm_attribute supports all object types.
- 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: 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: Added exception handling for std::exception and generic exceptions in patch operations
- CLI: Automatic headless mode on Linux — QT_QPA_PLATFORM=offscreen set automatically when CLI flags detected without DISPLAY
- CLI: apply-patch update_index accepts fields to add index columns (idempotent)
- 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: add_many_to_many and update_many_to_many now persist owner/inverse aliases (previously applied in memory but lost on save, leaving the template-generated aliases)
- Doctrine 2: PHP 8.4 property hooks ({ get; set; }, including by-reference &get) are now preserved when re-exporting an existing entity. Regression introduced in 3.4.4.
- CLI: license commands (activate/info/unregister) route trace and message output to stderr, keeping stdout clean JSON for automation
- CLI: apply-patch rejects unknown field data types (e.g. unsignedBigInteger) at write time instead of failing later during validate
- 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: 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.
- Fixed an application crash during automatic session-state autosave: when the temporary state database file was locked by another process (e.g. a second running Skipper instance), the backup error escaped into the Qt event loop and terminated the application. Autosave failures are now handled safely and the locked-file situation is avoided.
- Doctrine 2: Re-exporting an existing entity now preserves custom property visibility (public / protected / private) instead of resetting it. Regression introduced in 3.4.4.
- CLI: add_field/update_field handle unsigned attribute
- CLI: INDEX_NO_FIELDS 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