Skip to content

[OpenSpec] custom-css-freeform #291

Description

@github-actions

⚠️ OpenSpec-managed issue — this content is automatically synced
from the openspec/ directory. Manual edits will be overwritten on next sync.

Artifacts

Specs

Tasks

  • 1.1 Create lib/Service/CustomCssValidator.php (SPDX docblock, @spec tags referencing
  • 1.2 Create lib/Service/CustomCssService.php (SPDX docblock, @spec tags), mirroring
  • 2.1 In lib/Service/CssInjectionService.php, add a new step immediately after the existing
  • 2.2 Bump appinfo/info.xml <version> (new stylesheet in the cascade — bust the ?v=
  • 3.1 Create lib/Controller/CustomCssController.php (SPDX docblock, @spec tags) with
  • 3.2 Register the new routes in appinfo/routes.php following the existing
  • 4.1 Extend templates/settings/admin.php with a "Custom CSS" section: an enable/disable
  • 5.1 tests/Unit/Service/CustomCssValidatorTest.php: one test per rule in task 1.1 (reject
  • 5.2 tests/Unit/Service/CustomCssServiceTest.php: atomic write (temp file + rename),
  • 5.3 tests/Unit/Controller/CustomCssControllerAuditTest.php (mirroring the existing
  • 5.4 Extend tests/Unit/Service/CssInjectionServiceTest.php: assert custom-css is emitted
  • 6.1 Run composer check:strict (PHPCS, PHPMD, Psalm, PHPStan) against all new/changed PHP
  • 6.2 Run the full phpunit suite and confirm all new and existing tests pass.
  • 6.3 Add/extend a Playwright spec-coverage test (tests/e2e/spec-coverage/custom-css-freeform.spec.ts,
  • 6.4 Run npm run test:lasuite-tokens, test:lasuite-override, test:lasuite-bridge-coverage,

Design

See design.md for technical design details.


Synced from openspec/changes/custom-css-freeform by OpenSpec workflow
App: thematiq

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions