{% extends "base.html" %} {% block content %}

Task Settings

Configure task derivation, chat mapping, completion parsing, and external sync behavior.

Setting Definitions

Projects: top-level containers for derived tasks. A single group can map to any project.

Epics: optional sub-grouping inside a project. Use these for parallel workstreams in the same project.

Group Mapping: binds a chat channel (service + channel identifier) to a project and optional epic. Task extraction only runs where mappings exist.

Matching Hierarchy: channel mapping flags override project flags. Project flags are defaults; mapping flags are per-chat precision controls.

False-Positive Controls: defaults are safe: match_mode=strict, require_prefix=true, and prefixes task:/todo:. Freeform matching is off by default.

Task ID Announcements: when enabled, newly derived tasks post an in-chat confirmation containing the new task reference (for example #17). Default is off.

Legacy Backfill: opening this page applies safe defaults to older project and mapping rows created before strict prefix-only matching.

Completion Phrases: explicit trigger words used to detect completion markers like done #12, completed #12, fixed #12.

Provider: external sync adapter toggle. In current setup, mock provider validates append-only sync flow and retry behavior.

Sync Event Log: audit of provider sync attempts and outcomes. Retry replays the event without mutating immutable task source records.

{% if prefill_service and prefill_identifier %}

Quick Setup For Current Chat

Prefilled from compose for {{ prefill_service }} · {{ prefill_identifier }}. Create/update project + epic + channel mapping in one step.

{% csrf_token %}
{% endif %}

Projects

Create project scopes used by group mappings and derived tasks.

{% csrf_token %}
    {% for row in projects %}
  • {{ row.name }} mode={{ row.settings_effective.match_mode }}, prefixes={{ row.allowed_prefixes_csv }}, require_prefix={{ row.settings_effective.require_prefix }}, announce_id={{ row.settings_effective.announce_task_id }}
  • {% empty %}
  • No projects.
  • {% endfor %}

Epics

Create project-local epics to refine routing and reporting.

{% csrf_token %}

Group Mapping (Chat -> Project/Epic)

Each mapped group becomes eligible for derived task extraction and completion tracking.

{% csrf_token %}
{% for row in sources %} {% empty %} {% endfor %}
ChatProjectEpicMatchAnnounce
{{ row.service }} · {{ row.channel_identifier }} {{ row.project.name }} {{ row.epic.name }} {{ row.settings_effective.match_mode }}{% if row.settings_effective.require_prefix %} +prefix{% endif %} {{ row.settings_effective.announce_task_id }}
No mappings.

Project Matching Flags

Project defaults apply to all mapped chats unless channel-level override changes them.

{% csrf_token %}

Channel Override Flags

These flags override project defaults for one mapped chat only.

{% csrf_token %}

Completion Phrases

Add parser phrases for completion statements followed by a task reference, e.g. done #12.

{% csrf_token %}
    {% for row in patterns %}
  • {{ row.phrase }}
  • {% empty %}
  • No phrases.
  • {% endfor %}

Provider

Enable/disable external sync adapter and review recent provider event outcomes.

{% csrf_token %}
{% for row in sync_events %} {% empty %} {% endfor %}
UpdatedProviderStatus
{{ row.updated_at }} {{ row.provider }} {{ row.status }}
{% csrf_token %}
No sync events.
{% endblock %}