Improve tasks and align page elements
This commit is contained in:
@@ -13,7 +13,8 @@
|
||||
<p><strong>Group Mapping</strong>: binds a chat channel (service + channel identifier) to a project and optional epic. Task extraction only runs where mappings exist.</p>
|
||||
<p><strong>Matching Hierarchy</strong>: channel mapping flags override project flags. Project flags are defaults; mapping flags are per-chat precision controls.</p>
|
||||
<p><strong>False-Positive Controls</strong>: defaults are safe: <code>match_mode=strict</code>, <code>require_prefix=true</code>, and prefixes <code>task:</code>/<code>todo:</code>. Freeform matching is off by default.</p>
|
||||
<p><strong>Task ID Announcements</strong>: when enabled, newly derived tasks post an in-chat confirmation containing the new task reference (for example <code>#17</code>).</p>
|
||||
<p><strong>Task ID Announcements</strong>: when enabled, newly derived tasks post an in-chat confirmation containing the new task reference (for example <code>#17</code>). Default is off.</p>
|
||||
<p><strong>Legacy Backfill</strong>: opening this page applies safe defaults to older project and mapping rows created before strict prefix-only matching.</p>
|
||||
<p><strong>Completion Phrases</strong>: explicit trigger words used to detect completion markers like <code>done #12</code>, <code>completed #12</code>, <code>fixed #12</code>.</p>
|
||||
<p><strong>Provider</strong>: external sync adapter toggle. In current setup, mock provider validates append-only sync flow and retry behavior.</p>
|
||||
<p><strong>Sync Event Log</strong>: audit of provider sync attempts and outcomes. Retry replays the event without mutating immutable task source records.</p>
|
||||
@@ -24,14 +25,14 @@
|
||||
<article class="box">
|
||||
<h2 class="title is-6">Quick Setup For Current Chat</h2>
|
||||
<p class="help">Prefilled from compose for <code>{{ prefill_service }}</code> · <code>{{ prefill_identifier }}</code>. Create/update project + epic + channel mapping in one step.</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="action" value="quick_setup">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="action" value="quick_setup">
|
||||
<input type="hidden" name="service" value="{{ prefill_service }}">
|
||||
<input type="hidden" name="channel_identifier" value="{{ prefill_identifier }}">
|
||||
<input type="hidden" name="prefill_service" value="{{ prefill_service }}">
|
||||
<input type="hidden" name="prefill_identifier" value="{{ prefill_identifier }}">
|
||||
<div class="columns">
|
||||
<div class="columns tasks-settings-inline-columns">
|
||||
<div class="column">
|
||||
<label class="label is-size-7">Project</label>
|
||||
<input class="input is-small" name="project_name" placeholder="Project name">
|
||||
@@ -58,7 +59,7 @@
|
||||
<label class="checkbox is-size-7"><input type="checkbox" name="source_require_prefix" value="1" checked> Require Prefix</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_completion_enabled" value="1" checked> Completion Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_derive_enabled" value="1" checked> Derivation Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_announce_task_id" value="1" checked> Announce Task ID</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_announce_task_id" value="1"> Announce Task ID</label>
|
||||
<button class="button is-small is-link" type="submit" style="margin-left: 0.75rem;">Apply Quick Setup</button>
|
||||
</form>
|
||||
</article>
|
||||
@@ -95,11 +96,23 @@
|
||||
<label class="checkbox is-size-7"><input type="checkbox" name="require_prefix" value="1" checked> Require Prefix</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="derive_enabled" value="1" checked> Derivation Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="completion_enabled" value="1" checked> Completion Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="announce_task_id" value="1" checked> Announce Task ID</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="announce_task_id" value="1"> Announce Task ID</label>
|
||||
<button class="button is-small is-link" type="submit">Add Project</button>
|
||||
</form>
|
||||
<ul class="tasks-settings-list">
|
||||
{% for row in projects %}<li>{{ row.name }}</li>{% empty %}<li>No projects.</li>{% endfor %}
|
||||
{% for row in projects %}
|
||||
<li>
|
||||
{{ row.name }}
|
||||
<span class="has-text-grey">
|
||||
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 }}
|
||||
</span>
|
||||
</li>
|
||||
{% empty %}
|
||||
<li>No projects.</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
@@ -139,7 +152,7 @@
|
||||
<input type="hidden" name="action" value="source_create">
|
||||
<input type="hidden" name="prefill_service" value="{{ prefill_service }}">
|
||||
<input type="hidden" name="prefill_identifier" value="{{ prefill_identifier }}">
|
||||
<div class="columns">
|
||||
<div class="columns tasks-settings-inline-columns">
|
||||
<div class="column">
|
||||
<label class="label is-size-7">Service</label>
|
||||
<div class="select is-small is-fullwidth">
|
||||
@@ -176,7 +189,7 @@
|
||||
<button class="button is-small is-link" type="submit" style="margin-top: 1.8rem;">Add</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="columns tasks-settings-inline-columns">
|
||||
<div class="column">
|
||||
<label class="label is-size-7">Match Mode</label>
|
||||
<div class="select is-small is-fullwidth">
|
||||
@@ -200,15 +213,21 @@
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_derive_enabled" value="1" checked> Derivation Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_completion_enabled" value="1" checked> Completion Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_ai_title_enabled" value="1" checked> AI Title Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_announce_task_id" value="1" checked> Announce Task ID</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_announce_task_id" value="1"> Announce Task ID</label>
|
||||
</form>
|
||||
<table class="table is-fullwidth is-size-7">
|
||||
<thead><tr><th>Chat</th><th>Project</th><th>Epic</th></tr></thead>
|
||||
<thead><tr><th>Chat</th><th>Project</th><th>Epic</th><th>Match</th><th>Announce</th></tr></thead>
|
||||
<tbody>
|
||||
{% for row in sources %}
|
||||
<tr><td>{{ row.service }} · {{ row.channel_identifier }}</td><td>{{ row.project.name }}</td><td>{{ row.epic.name }}</td></tr>
|
||||
<tr>
|
||||
<td>{{ row.service }} · {{ row.channel_identifier }}</td>
|
||||
<td>{{ row.project.name }}</td>
|
||||
<td>{{ row.epic.name }}</td>
|
||||
<td>{{ row.settings_effective.match_mode }}{% if row.settings_effective.require_prefix %} +prefix{% endif %}</td>
|
||||
<td>{{ row.settings_effective.announce_task_id }}</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr><td colspan="3">No mappings.</td></tr>
|
||||
<tr><td colspan="5">No mappings.</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -255,7 +274,7 @@
|
||||
<label class="checkbox is-size-7"><input type="checkbox" name="require_prefix" value="1" checked> Require Prefix</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="derive_enabled" value="1" checked> Derivation Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="completion_enabled" value="1" checked> Completion Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="announce_task_id" value="1" checked> Announce Task ID</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="announce_task_id" value="1"> Announce Task ID</label>
|
||||
<button class="button is-small is-link is-light" type="submit" style="margin-left: 0.75rem;">Save Project Flags</button>
|
||||
</form>
|
||||
</article>
|
||||
@@ -300,7 +319,7 @@
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_derive_enabled" value="1" checked> Derivation Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_completion_enabled" value="1" checked> Completion Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_ai_title_enabled" value="1" checked> AI Title Enabled</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_announce_task_id" value="1" checked> Announce Task ID</label>
|
||||
<label class="checkbox is-size-7" style="margin-left: 0.75rem;"><input type="checkbox" name="source_announce_task_id" value="1"> Announce Task ID</label>
|
||||
<button class="button is-small is-link is-light" type="submit" style="margin-left: 0.75rem;">Save Channel Flags</button>
|
||||
</form>
|
||||
</article>
|
||||
@@ -376,6 +395,18 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.tasks-settings-page .tasks-settings-inline-columns {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
.tasks-settings-page .tasks-settings-inline-columns > .column {
|
||||
padding-left: 0;
|
||||
padding-right: 0.75rem;
|
||||
}
|
||||
.tasks-settings-page .tasks-settings-inline-columns > .column:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
.tasks-settings-page .tasks-settings-list {
|
||||
margin-top: 0.75rem;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user