Skip to content
This repository was archived by the owner on Nov 9, 2026. It is now read-only.

Release 2.0.0 - #1

Merged
micschk merged 15 commits into
mainfrom
ss6-upgrade
Sep 25, 2026
Merged

micschk merged 15 commits into
mainfrom
ss6-upgrade

Conversation

@micschk

@micschk micschk commented Sep 25, 2026

Copy link
Copy Markdown
Member

See CHANGELOG.md.

- composer: php ^8.1, framework ^5 || ^6, elemental ^5.4 || ^6, admintweaks ^3 || ^4,
  vendor-plugin ^2 || ^3; suggest elemental-virtual and subsites; funding entry.
- Extensions extend Extension instead of DataExtension (removed in 6), without the
  parent::onBeforeWrite() calls that only DataExtension could answer.
- Block descriptions use class_description / i18n_classDescription(): elemental 5.4
  ignores the old 'description' config and elemental 6 removed getDescription().
- BlockAdmin links the page through getCMSEditLink() where it exists.
- BlockIconsPreviewController: index() now matches LeftAndMain::index(), which fataled
  every flush on Silverstripe 5 and 6; it lists BaseElement subclasses (Block::class never
  resolved); the inline template moved to a .ss file (no SSViewer::fromString() in 6); the
  ArrayList class is picked per major.
…ecode(null)

- BlockContent::FieldEnabled('Content') answered has_image and ('Image') answered
  has_content.
- ElementContentMigrationExtension took $migratable and $skip by value, so its
  assignments never reached MigrateContentToElement.
- getExtraData() passed NULL to json_decode() for a block without ExtraData, a
  deprecation since PHP 8.1.
Silverstripe 6 types the argument as array, so opening a block in the Content Blocks
admin threw a TypeError. An array works on Silverstripe 5 too.
Covers BlockContent (schema, has_* config, upload folder, ExtraData, templates),
ElementBlockBaseExtension, ContentBlocksToggleExtension, the block admin, the
block-type icon preview, the migration hooks, the module config, and the optional
elemental-virtual and subsites integrations (skipped when those are not installed).
Each defect fixed in this pass has a regression test.
A mutation that returned getType() survived: for BlockBase subclasses getType() is the
class description already.
… boot step

Matrix: Silverstripe 5 on PHP 8.1 and 8.3, Silverstripe 6 on PHP 8.3 and 8.4, with
elemental-virtual and subsites installed. Tests run before the database is built, with
--fail-on-empty-test-suite on every leg. .gitattributes keeps tests and CI files out of
dist installs.
README: requirements, compatibility table, what installing configures, every config
option and public method, the optional integrations, running the tests, sponsorship line.
…de dev

As a LeftAndMain with a url_segment it was listed in the CMS menu (titled with its class name) and
routed at admin/admin/blocktypeicons in every environment; only the Director rule was dev-gated.
It now sets ignore_menuitem and answers 404 from init() outside dev.
… stop add(null) throwing

LinkedElementRelation() called add() with the clone's LinkedElementID even when a new clone had none,
which throws InvalidArgumentException. The onBeforeWrite() transfer was not covered by any test.
…v-only scope, the v1 branch; ship UPGRADING.md
@micschk
micschk merged commit de8b659 into main Sep 25, 2026
6 checks passed
@micschk
micschk deleted the ss6-upgrade branch September 25, 2026 00:07
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant