Skip to content

[OpenSpec] authoring-dtcg-export #688

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 Read the DTCG Format Module and Color Module v2025.10. Confirm the colour space
  • 1.2 Write tests/Unit/fixtures/dtcg/colour-spaces.tokens.json with one colour per colour
  • 2.1 Add lib/Service/ColorSpaceConverter.php: to and from sRGB for every listed colour space,
  • 2.2 Use it in DesignTokensMapper::serializeColorObject(): every listed colour space, the
  • 2.3 Carry the two new reason codes into the converter report and into the panel's reason
  • 3.1 Read $extensions["nl.conduction.thematiq"].cssVariable in resolveTarget() before the
  • 4.1 Add lib/Service/DesignTokensWriter.php: paths, the extension on every token, the typing
  • 4.2 Add CustomTokenSetController::exportDtcg() on
  • 4.3 Add the 200, 403 and 404 calls to tests/integration/thematiq.postman_collection.json,
  • 4.4 Add tests/Unit/Service/DesignTokensRoundTripTest.php: export every shipped set, import
  • 5.1 Add "Download as design tokens" next to the token set dropdown (templates/settings/admin.php:66-76)
  • 5.2 Round trip by hand in the browser: download a set, upload it under a new name, compare.
  • 6.1 Localisation: the button labels, the two new reason labels and every new error text in
  • 6.2 Documentation: a "Download as design tokens" section in docs/features/import-export.md
  • 6.3 WCAG AA contrast: a colour converted from another colour space reaches the contrast check
  • 6.4 Dark mode: a set imported from oklch gets a dark variant for that token. Verify: PHPUnit
  • 6.5 Incomplete token sets: exporting a set that declares only a few tokens gives only those
  • 6.6 Accessibility: both buttons are real <button> elements with visible text, reachable by
  • 6.7 Security: the endpoint is admin-only, reads only css/tokens/{id}.css for an id
  • 7.1 Run COMPOSER_PROCESS_TIMEOUT=0 composer check:strict once, then npm run lint,
  • 7.2 Open one exported file in Tokens Studio (or another DTCG tool) and record in the PR body

Design

See design.md for technical design details.


Synced from openspec/changes/authoring-dtcg-export by OpenSpec workflow
App: thematiq

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    openspecOpenSpec-driven changeopenspec:tasksOpenSpec phase: Tasksspec:too-largeBuilder bounced: >20 unchecked tasks. Fallback needs-input; re-split via Specter.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions