Add character aliases/identity links, move-beats, keyboard help overlay
- Characters can carry aliases and be linked as the same underlying person (canonical SameCharacterAsId, optional reveal chapter/note), surfaced through the API, MCP tools, agent toolset, and web UI. - Characters page redesigned as a filterable/sortable table (name+ aliases, role, importance, occupation, tags) instead of a sidebar list, to stay usable as the cast grows. - Beats can be moved between chapters (BeatService.MoveAsync + MCP/ agent tool + endpoint). - Add a keyboard-shortcuts help overlay (HelpButton/HelpOverlayContext) wired into the project layout. - CLAUDE.md: require every frontend component to carry a unique id attribute; apply it to CharacterMultiSelect and MarkdownEditor.
This commit is contained in:
@@ -78,4 +78,15 @@ public static class BeatTools
|
||||
[Description("Beat ids in their new order.")] Guid[] beatIds,
|
||||
CancellationToken ct) =>
|
||||
api.PostAsync($"/api/chapters/{chapterId}/beats/reorder", new { beatIds }, ct);
|
||||
|
||||
[McpServerTool(Name = "move_beats")]
|
||||
[Description("Move one or more beats from one chapter to another, appending them to the "
|
||||
+ "target chapter's end in the order given.")]
|
||||
public static Task<CallToolResult> MoveBeats(
|
||||
NovelApiClient api,
|
||||
[Description("The beats' current chapter id.")] Guid chapterId,
|
||||
[Description("Id of the chapter to move the beats into.")] Guid targetChapterId,
|
||||
[Description("Ids of the beats to move.")] Guid[] beatIds,
|
||||
CancellationToken ct) =>
|
||||
api.PostAsync($"/api/chapters/{chapterId}/beats/move", new { targetChapterId, beatIds }, ct);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user