Improve project/task/sub-task workflows across backend and web
Backend: - notes.py: add parent_id filter to list_notes() - routes/notes.py: expose project_id, milestone_id, parent_id, type query params on GET /api/notes - milestones.py: add find_milestone_by_title() (cross-project search) - tools.py: list_notes project filter + updated_at; list_tasks milestone without project; tag_mode default add; fail-fast project resolution Web frontend: - TaskEditorView: add sub-tasks section (fetch, toggle, create inline); pre-fill projectId/milestoneId/parentId from URL query params on new task - ProjectView: add + button in Todo kanban column header linking to /tasks/new?projectId=X&milestoneId=Y for quick task creation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -474,6 +474,11 @@ function formatDate(dateStr?: string | null): string {
|
||||
<div class="kanban-col-header">
|
||||
<span>Todo</span>
|
||||
<span class="col-count">{{ group.tasks.filter(t => t.status === 'todo').length }}</span>
|
||||
<router-link
|
||||
:to="`/tasks/new?projectId=${projectId}${group.milestone ? '&milestoneId=' + group.milestone.id : ''}`"
|
||||
class="col-add-btn"
|
||||
title="Add task"
|
||||
>+</router-link>
|
||||
</div>
|
||||
<div class="kanban-cards">
|
||||
<router-link
|
||||
@@ -969,6 +974,16 @@ function formatDate(dateStr?: string | null): string {
|
||||
color: var(--color-text-muted);
|
||||
font-weight: 600;
|
||||
}
|
||||
.col-add-btn {
|
||||
margin-left: auto;
|
||||
color: var(--color-text-muted);
|
||||
text-decoration: none;
|
||||
font-size: 1rem;
|
||||
line-height: 1;
|
||||
padding: 0 0.15rem;
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
.col-add-btn:hover { color: var(--color-primary); }
|
||||
.kanban-cards {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
Reference in New Issue
Block a user