Rename Project concept to Novel across the stack
Renames the domain concept from Project to Novel throughout the backend (entities, DTOs, services, endpoints, ProjectAccessService/Permission, ProjectId foreign keys), MCP server (tool names and routes), and the React/Vite frontend (types, hooks, routes, components). Adds a new EF Core migration (RenameProjectToNovel) using RenameTable/RenameColumn to preserve existing data instead of dropping/recreating tables. Updates CLAUDE.md's structure section to reference Novels/ instead of Projects/.
This commit is contained in:
@@ -8,12 +8,12 @@ namespace Novelly.Mcp.Tools;
|
||||
public static class ManuscriptTools
|
||||
{
|
||||
[McpServerTool(Name = "list_chapters")]
|
||||
[Description("List a project's chapters in manuscript order, with beat and word counts.")]
|
||||
[Description("List a novel's chapters in manuscript order, with beat and word counts.")]
|
||||
public static Task<CallToolResult> ListChapters(
|
||||
NovelApiClient api,
|
||||
[Description("The project's id.")] Guid projectId,
|
||||
[Description("The novel's id.")] Guid novelId,
|
||||
CancellationToken ct) =>
|
||||
api.GetAsync($"/api/projects/{projectId}/chapters", ct);
|
||||
api.GetAsync($"/api/novels/{novelId}/chapters", ct);
|
||||
|
||||
[McpServerTool(Name = "get_chapter")]
|
||||
[Description("Read one chapter in full: its outline (beats) and its drafted prose.")]
|
||||
@@ -24,10 +24,10 @@ public static class ManuscriptTools
|
||||
api.GetAsync($"/api/chapters/{chapterId}", ct);
|
||||
|
||||
[McpServerTool(Name = "create_chapter")]
|
||||
[Description("Add a chapter to a project. It goes at the end of the manuscript unless you supply a number.")]
|
||||
[Description("Add a chapter to a novel. It goes at the end of the manuscript unless you supply a number.")]
|
||||
public static Task<CallToolResult> CreateChapter(
|
||||
NovelApiClient api,
|
||||
[Description("The project's id.")] Guid projectId,
|
||||
[Description("The novel's id.")] Guid novelId,
|
||||
[Description("Chapter title.")] string title,
|
||||
CancellationToken ct,
|
||||
[Description("Position in the manuscript, 1-based.")] int? number = null,
|
||||
@@ -37,7 +37,7 @@ public static class ManuscriptTools
|
||||
[Description("Target length in words.")] int? targetWordCount = null,
|
||||
[Description("The chapter's drafted text, in markdown, if you are writing it now.")] string? prose = null,
|
||||
[Description("Tags for cross-referencing. Unknown tags are created.")] string[]? tags = null) =>
|
||||
api.PostAsync($"/api/projects/{projectId}/chapters", new
|
||||
api.PostAsync($"/api/novels/{novelId}/chapters", new
|
||||
{
|
||||
title,
|
||||
number,
|
||||
|
||||
Reference in New Issue
Block a user