Engine capabilities: feature-toggled Access-tab fields, first scheduled visibility of elements #303

Open
opened 2026-10-15 12:27:55 +02:00 by dominik.polakovics · 0 comments

This was generated by AI during triage.

Summary

Let a feature switch on an engine-owned capability that adds editor-managed fields to every element's Access tab, the first one being scheduled visibility (show from / until an instant), the way TYPO3 puts starttime and endtime beside the hidden flag. The capability is defined by the engine and only toggled by the feature, because its rules reach beyond a field type.

Context

From a design discussion on 2026-10-15 about TCA-style sidecar extension. Three mechanisms came out of it, each its own issue: this one, class-wide additive overlays with a theme hook registry, and reusable palettes. Sidecar versioning (#302) is the groundwork all three sit on.

The Access tab holds only the editor's own fields today, the Enabled switch and the #c-<uid> anchor, and tab: access on an element param is a load error (AGENTS.md "Form tabs"). disabled and uid are reserved params the engine manages, with their theme consumers ce/disabled.html and ce/attrs.html. Issue #78 (News v2 scheduled publishing) covers the same need for pages and the rebuild it requires.

Why a capability and not a sidecar field

Scheduled visibility needs rules no sidecar param can carry: a translation sync rule for Access-tab values (General is translated, Appearance synced, Access undefined), harness check understanding the window, the theme filtering at build time as ce/disabled.html does for Enabled, the preview showing scheduled elements, and a rebuild at the instant the window opens, which only deckle-hosted's pipeline can trigger. The litmus test settled in the discussion: a param that needs a rule beyond its field type belongs in the engine, switched on by a feature, not in a sidecar fragment.

Sketch

  • Manifest key capabilities: [schedule] beside config, optional, additive (deckle-hosted parses feature.yaml itself; keys are only ever added). Recorded in the receipt; harness remove switches it off.
  • With schedule on, every block element's Access tab shows two optional datetime fields; the engine stores them as reserved params (names to be decided, frozen once chosen, since content stores them).
  • The theme contract gains the build-time rule in the partial every element already calls (ce/disabled.html or a sibling): outside the window the element renders nothing, as a disabled one does. buildFuture interactions to be settled.
  • harness check: a window whose end precedes its start is an error; a capability the receipt records but the theme cannot honour is a warning.
  • Translations: the window is synced like an Appearance param (proposed; decide).
  • Rebuild trigger: deckle-hosted's, out of this repository; link #78.

Open for triage

  • Reserved param names and the value form (RFC3339, as datetime params write today).
  • Whether the window also applies to items children (probably not; they render inside their owner) and page types (overlaps #78).
  • Preview: show scheduled elements always, or honour the window with a marker.
  • Whether a capability may exist without any feature toggling it on a site developer's own site (a harness.yaml key instead of a manifest key).
  • Docs: AGENTS.md "Form tabs" and "Reserved param names", the theme README, docs/features.md "The manifest", docs/harness.md "The receipt"; skills create-feature, redo-theme, add-element.

Blocked by

None - can start immediately

> *This was generated by AI during triage.* ## Summary Let a feature switch on an engine-owned capability that adds editor-managed fields to every element's Access tab, the first one being scheduled visibility (show from / until an instant), the way TYPO3 puts starttime and endtime beside the hidden flag. The capability is defined by the engine and only toggled by the feature, because its rules reach beyond a field type. ## Context From a design discussion on 2026-10-15 about TCA-style sidecar extension. Three mechanisms came out of it, each its own issue: this one, class-wide additive overlays with a theme hook registry, and reusable palettes. Sidecar versioning (#302) is the groundwork all three sit on. The Access tab holds only the editor's own fields today, the Enabled switch and the `#c-<uid>` anchor, and `tab: access` on an element param is a load error (AGENTS.md "Form tabs"). `disabled` and `uid` are reserved params the engine manages, with their theme consumers `ce/disabled.html` and `ce/attrs.html`. Issue #78 (News v2 scheduled publishing) covers the same need for pages and the rebuild it requires. ## Why a capability and not a sidecar field Scheduled visibility needs rules no sidecar param can carry: a translation sync rule for Access-tab values (General is translated, Appearance synced, Access undefined), `harness check` understanding the window, the theme filtering at build time as `ce/disabled.html` does for Enabled, the preview showing scheduled elements, and a rebuild at the instant the window opens, which only deckle-hosted's pipeline can trigger. The litmus test settled in the discussion: a param that needs a rule beyond its field type belongs in the engine, switched on by a feature, not in a sidecar fragment. ## Sketch - Manifest key `capabilities: [schedule]` beside `config`, optional, additive (deckle-hosted parses `feature.yaml` itself; keys are only ever added). Recorded in the receipt; `harness remove` switches it off. - With `schedule` on, every block element's Access tab shows two optional datetime fields; the engine stores them as reserved params (names to be decided, frozen once chosen, since content stores them). - The theme contract gains the build-time rule in the partial every element already calls (`ce/disabled.html` or a sibling): outside the window the element renders nothing, as a disabled one does. `buildFuture` interactions to be settled. - `harness check`: a window whose end precedes its start is an error; a capability the receipt records but the theme cannot honour is a warning. - Translations: the window is synced like an Appearance param (proposed; decide). - Rebuild trigger: deckle-hosted's, out of this repository; link #78. ## Open for triage - Reserved param names and the value form (RFC3339, as datetime params write today). - Whether the window also applies to items children (probably not; they render inside their owner) and page types (overlaps #78). - Preview: show scheduled elements always, or honour the window with a marker. - Whether a capability may exist without any feature toggling it on a site developer's own site (a `harness.yaml` key instead of a manifest key). - Docs: AGENTS.md "Form tabs" and "Reserved param names", the theme README, docs/features.md "The manifest", docs/harness.md "The receipt"; skills `create-feature`, `redo-theme`, `add-element`. ## Blocked by None - can start immediately
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Cloonar/deckle#303
No description provided.