Skip to content

Custom fields

Ryan M. edited this page Sep 17, 2026 · 2 revisions

Custom fields

Declare task fields in fields. Ordryn stores values as {extension id}.{field key} (for example severity.level) and renders them in the task sidebar, list, and/or kanban. No ui.js is needed.

Personal tasks (no project) never get custom fields. Values apply only when the extension is site-enabled and project-enabled.

Example

{
  "id": "severity",
  "name": "Severity",
  "version": "1.0.0",
  "host_api": 1,
  "fields": [
    {
      "key": "level",
      "type": "enum",
      "label": "Severity",
      "description": "How bad it is if this work slips.",
      "show_on": ["sidebar", "kanban"],
      "options": [
        { "value": "low", "label": "Low" },
        { "value": "medium", "label": "Medium" },
        { "value": "high", "label": "High" },
        { "value": "critical", "label": "Critical" }
      ]
    }
  ]
}

That stores as severity.level. Safe to enable alongside other field extensions as long as storage keys differ (estimate.points vs severity.level).

Field object

Field Required Notes
key yes Local key. Pattern ^[a-z][a-z0-9_-]{0,32}$. Combined with the extension id for storage.
type yes One of string, number, boolean, enum, url, user, date, markdown.
label yes Sidebar / badge label.
description no Help text under the control. Max 400 characters.
required no If true, the value cannot be cleared once set.
show_on no Surfaces: sidebar, kanban, list. Defaults to ["sidebar"].
options enum only Non-empty list of { "value", "label?", "color?" }. Duplicate values are rejected. Empty label falls back to value.

show_on controls where the host UI shows the value:

  • sidebar — editor on the task detail sidebar (always the place to set it).
  • kanban — badge on board cards.
  • list — badge on list rows.

Value rules

Type Stored as Validation
string trimmed string Empty clears the field.
number JSON number Must be numeric.
boolean JSON boolean Must be true or false.
enum option value Must match an option.
url string http or https with a host.
user project member user id Must belong to the project.
date string YYYY-MM-DD.
markdown string Max 8000 characters.

Clear a value with JSON null or an empty string (except required fields).

All eight types

fields-demo registers one of each:

Key Type Typical show_on
ticket string sidebar, list
score number sidebar, kanban
blocked boolean sidebar, kanban
size enum sidebar, kanban
spec url sidebar
owner user sidebar, list
review_on date sidebar, list
notes markdown sidebar

See also severity (kanban badge enum), estimate (Fibonacci points enum), and callback-bot (date + markdown plus a panel).

Field values can appear on outbound JSON as fields (for example {"severity.level": "high"}). Hook extensions can filter on them with a field_filter setting. See Delivery and Settings and controls.

Clone this wiki locally