Skip to content

editor: multipart events need a way to add several non-regular dates without recreating the form #51

Description

@hhkaos

Context

Came up while designing the "Part of (series)" UX (see the series-linking
wizard work). `partOf.type: "multipart"` covers an event held across
several non-consecutive, not-necessarily-regular dates — e.g. a
3-session study jam on arbitrary Saturdays, or day 2/3 of a conference.

Per OTE's spec, each session is still its own document ("un documento =
una ocurrencia"), all pointing at the same `partOf.id`.

Current gap

The editor's only batch-generation mechanism today is "+ Add recurrence"
(renderRecurrenceRows in apps/editor/src/ui/form.ts), and it is
strictly rule-based: daily/weekly/monthly/yearly + interval
(apps/editor/src/lib/recurrence.ts). There is no way to enter a plain
list of arbitrary dates.

Two workarounds exist today, neither good for a genuinely irregular
multipart series:

  1. Approximate with a rule (e.g. weekly) and uncheck the occurrences
    that don't apply in the generation-review dialog (that per-occurrence
    checkbox list already exists, reused from ICS/JSON-LD import) — works
    only when the real dates happen to be a subset of a regular pattern.
  2. Use "Create event" N times by hand, re-entering the same 4
    partOf.* fields (id/name/url/type) on every single occurrence —
    tedious and error-prone (easy to typo the shared partOf.id, which
    breaks the grouping silently).

Suggested direction (not scoped/designed yet)

A dedicated "+ Add session" repeater for the multipart case — plain
date+time rows instead of a frequency rule — reusing the same batch
generation/review/submission pipeline recurrence rows already use
(onGenerateRecurrenceSeries / submitRecurringBatch in
apps/editor/src/main.ts), so all sessions share one partOf filled in
once.

Deliberately left open-ended — needs its own UX pass (where it lives in
the form, how it interacts with the "Part of" series-linking wizard once
that lands, whether it's its own row type or a mode of the existing
recurrence rows) rather than being bundled into the series-identity work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    tool:editorEvent editor / generator (apps/editor)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions