6580d16942
tools.py: - Default tag_mode changed from 'replace' to 'add' — existing tags are preserved unless the user explicitly requests replacement - create_task, create_note, update_note, create_milestone: project and milestone lookup now uses get_by_title with fuzzy fallback; returns a clear error (with a hint to use list_projects/list_milestones) instead of silently creating duplicate projects or milestones via get_or_create - create_task: project/milestone resolved before note creation so a bad project name fails fast without leaving an orphaned task behind - update_note return value now includes item_type, tags, project_id, and an 'updated' summary string so the LLM can confirm what was modified - research_topic stub now logs an error and returns failure instead of silently returning success when reached via wrong code path ProjectView.vue: - Milestone headers now show edit (✎) and delete (✕) action buttons on hover - Edit triggers inline rename input; Enter/blur commits, Escape cancels - Delete opens a confirmation modal clarifying tasks are unlinked not deleted Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>