From 102c0b74a0eec18381ed63b05af18198e7fdd9fe Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 10 Apr 2026 12:35:50 -0400 Subject: [PATCH] feat(settings): tabbed MCP install instructions with Claude Code flow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the hand-edit-JSON instructions in Settings → API Keys with a tabbed UI (Claude Code / Claude Desktop / Other). The Claude Code tab leads with the `claude mcp add` command, pre-filled with FABLE_URL and the most recently generated API key, plus copy-to-clipboard buttons on every snippet. Recommend `uv tool install` or `pipx install` over bare `pip install` so fable-mcp reliably lands on PATH under PEP 668. Also fix incorrect priority values in fable-mcp tool docstrings — the enum is `none|low|medium|high`, not `low|normal|high`. DRY pass: extract shared `copyToClipboard()` helper used by both `copyApiKey` and the new snippet buttons; reuse existing `btn btn-secondary btn-sm` for the copy buttons instead of a bespoke class. Co-Authored-By: Claude Opus 4.6 (1M context) --- fable-mcp/fable_mcp/server.py | 6 +- fable-mcp/pyproject.toml | 2 +- frontend/src/views/SettingsView.vue | 218 ++++++++++++++++++++++++---- 3 files changed, 195 insertions(+), 31 deletions(-) diff --git a/fable-mcp/fable_mcp/server.py b/fable-mcp/fable_mcp/server.py index ca46da9..8e276d3 100644 --- a/fable-mcp/fable_mcp/server.py +++ b/fable-mcp/fable_mcp/server.py @@ -27,7 +27,7 @@ The hierarchy is: Project → Milestone → Task/Note. - **Tasks** belong to a project and optionally a milestone. They support sub-tasks via `parent_id`. - Status values: `todo`, `in_progress`, `done`, `cancelled` - - Priority values: `low`, `normal`, `high` + - Priority values: `none` (default), `low`, `medium`, `high` - **Notes** are free-form markdown documents. They can belong to a project or be standalone (orphan notes). Orphan notes are included in the default RAG scope for chat conversations. @@ -241,7 +241,7 @@ async def fable_create_task( title: Task title (required). body: Markdown description / notes for the task. status: Initial status — one of: todo (default), in_progress, done, cancelled. - priority: One of: low, normal, high. Omit for no priority. + priority: One of: low, medium, high. Omit for no priority (defaults to "none"). project_id: Associate with a project (0 = no project). milestone_id: Place within a project milestone (0 = no milestone). parent_id: Make this a sub-task of another task (0 = top-level). @@ -280,7 +280,7 @@ async def fable_update_task( title: New title, or omit to leave unchanged. body: New markdown body, or omit to leave unchanged. status: New status — one of: todo, in_progress, done, cancelled. - priority: New priority — one of: low, normal, high. + priority: New priority — one of: none, low, medium, high. project_id: New project (0 = remove from project). Omit to leave unchanged. milestone_id: New milestone (0 = remove from milestone). Omit to leave unchanged. """ diff --git a/fable-mcp/pyproject.toml b/fable-mcp/pyproject.toml index 0781762..8ef9133 100644 --- a/fable-mcp/pyproject.toml +++ b/fable-mcp/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "fable-mcp" -version = "0.2.4" +version = "0.2.5" description = "MCP server for Fabled Assistant" requires-python = ">=3.12" dependencies = [ diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index 7cd41ed..987081b 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -1,5 +1,5 @@