{% extends "base.html" %} {% block title %}Work · Keywright{% endblock %} {% block body %}

Work

{{ selected.name if selected else 'Needs you' if view == 'needs_you' else 'All tasks' }}{% if selected and selected.kind == 'general' %} General{% endif %}

New task
All tasksNeeds youKeywright / GeneralRepositories
{% if selected and selected.project_id %}{% endif %}

{{ 'Unfinished work assigned to you. Review and blocked requests appear first in list view.' if view == 'needs_you' else 'Plan work, track progress, and keep each project in view.' }}

Notifications · {{ unread|length }} unread{{ '+' if unread|length == 20 }}{% for notification in unread %}
Task assigned for your attention
{% if notification.error %}

{{ notification.error }}

{% endif %}{% else %}

No unread notifications.

{% endfor %}
Filters and view
{% if board_offset %}Previous boards{% endif %}{% if boards.next_offset %}Browse more boards{% endif %}

{{ result.total }} matching tasks · showing {{ result.tasks|length }} on this page. {{ 'Manual order within each status.' if selected else 'Sorted by priority, due date, then task ID.' }}

{% macro card(task) %}

{{ task.board_name }}{{ ' / General' if task.board_kind == 'general' }} · {{ priorities[task.priority] }}{% if task.archived %} · Archived{% endif %}

{{ task.title }}

{% if task.source %}

GitHub #{{ task.source.number }} · {{ task.source.state }}{% if task.source.state == 'closed' and task.status != 'done' %} · Local work active{% endif %}

{% endif %}

{{ owner if task.assignee == 'owner' else 'Unassigned' if task.assignee == 'unassigned' else (agents|selectattr('id', 'equalto', task.assignee[6:])|map(attribute='name')|first|default('Agent')) }}{% if task.due_date %} · Due {{ task.due_date }}{% endif %}

{% if task.labels %}

{{ task.labels|join(' · ') }}

{% endif %} {% if not task.archived %}
{% endif %}
{% endmacro %}
{% if mode == 'list' %}
{% for task in result.tasks %}{{ card(task) }}{% else %}

No matching tasks. Create a task below or adjust your filters.

{% endfor %}
{% else %}{% for key, label in statuses.items() %}

{{ label }} {{ result.tasks|selectattr('status', 'equalto', key)|list|length }}

{% for task in result.tasks if task.status == key %}{{ card(task) }}{% else %}

No tasks on this page.

{% endfor %}
{% endfor %}{% endif %}
{% if filters.offset %}Previous tasks{% endif %}{% if result.next_offset is not none %}Next tasks{% endif %}
Create a task
Create a project
{% if selected %}
Board access · {{ selected.name }}

Agents need explicit board access. These permissions grant no host or repository access.

{% for agent in agents %}{% set grant = grants.get(agent.id) %}
{{ agent.name }}{{ ' (disabled)' if agent.disabled }}
{% else %}

No agents registered.

{% endfor %}
{% endif %} {% if selected_project and selected_project.project_id %}

Archiving hides this project and its tasks from normal views. Records remain available.

{% endif %}
Owner display name
{% endblock %}