Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
e4ae6a5
Remove gating of Debug button
StableLlama Apr 29, 2026
5ae75da
UI improvement: all disabling of Provider API key
StableLlama Apr 29, 2026
df6c239
Remove modification tags when changing chat or using undo
StableLlama Apr 29, 2026
cbb2774
Optimize startup experience
StableLlama Apr 29, 2026
8724585
fix new line handling
StableLlama Apr 29, 2026
31e5647
Highlight chat JSON
StableLlama Apr 29, 2026
0859a8b
Fix stopping of the chat when it calls another LLM
StableLlama Apr 29, 2026
ebd0ca6
Stop LLM generation when stop is pressed
StableLlama Apr 29, 2026
19a2571
Fix CHAPTER AI to keep text when stopping
StableLlama Apr 29, 2026
8b04e5d
try to fix GH error message
StableLlama Apr 29, 2026
5a6b9d3
Fix joining of LLM extension of the prose
StableLlama Apr 29, 2026
9de8999
Fix auto scroll
StableLlama Apr 30, 2026
f043c85
Optimize diff view when the chat does multiple modifiactions
StableLlama Apr 30, 2026
516b6ce
Fix more display of changes
StableLlama Apr 30, 2026
9255eb0
Try to fix GitHub error
StableLlama Apr 30, 2026
425c667
Merge pull request #232 from StableLlama/fixes
StableLlama Apr 30, 2026
53c5671
Fix linter warnings
StableLlama Apr 30, 2026
2ba1ce5
More lint fixes
StableLlama Apr 30, 2026
7604ef9
fix more linting
StableLlama Apr 30, 2026
33e74db
Merge pull request #233 from StableLlama/fixes
StableLlama May 1, 2026
a90e3ad
fix more linting
StableLlama May 1, 2026
0a3f32f
Allow bigger zip size
StableLlama May 1, 2026
d8e55c8
Reenable max-lines-per-function lint rule
StableLlama May 1, 2026
9520204
Merge pull request #235 from StableLlama/fix_more_linting
StableLlama May 1, 2026
df6f704
Fix error messages appearing during tests
StableLlama May 1, 2026
09ca304
Ease linting pressure on long functions
StableLlama May 2, 2026
cf67413
Merge pull request #236 from StableLlama/code_quality_fixes
StableLlama May 2, 2026
6fac5f9
Remove Deprecated tools
StableLlama May 2, 2026
afc017a
Fix update_story_metadata
StableLlama May 2, 2026
c259821
fix more update_chapter_metadata
StableLlama May 2, 2026
12a3e61
fix LLM replace
StableLlama May 2, 2026
09e1d23
Fix mutation tag and diff view
StableLlama May 2, 2026
d32f03b
Invalidate/refresh chat context when the user changes entries that th…
StableLlama May 2, 2026
77c0065
Clarify that call_writing_llm is stateless
StableLlama May 2, 2026
e4a73a5
Allow reading from the end for the LLM tools
StableLlama May 2, 2026
063d5e9
Enhance read_story_content tool
StableLlama May 3, 2026
becfab3
Ensure prompts are in instrucions.json
StableLlama May 3, 2026
4b16380
Remove filename from LLM tools
StableLlama May 3, 2026
9970d3a
Merge pull request #237 from StableLlama/fix_llm_interaction
StableLlama May 3, 2026
d965309
Remove in get_project_overview the unneeded content_file
StableLlama May 3, 2026
8be7bf3
Gemma 4 non thinking optimization
StableLlama May 3, 2026
c3c0712
Fix error message when WRITING is streaming in
StableLlama May 3, 2026
25bfeb6
Fix main editor auto scroll
StableLlama May 3, 2026
3c42390
Code clean up
StableLlama May 3, 2026
72ed4cc
Optimize toolbar responsiveness
StableLlama May 3, 2026
f51e7b6
Handle not set max_tokens correctly
StableLlama May 4, 2026
5609e41
Change the tool "get_project_overview" to default to show the notes
StableLlama May 4, 2026
8d10527
Optimize undo/redo button style
StableLlama May 4, 2026
03e7e55
Enhance the `call_writing_llm` tool by accepting an additional parame…
StableLlama May 4, 2026
8c60bfd
Enhance call_writing_llm rewrite; add LLM tool for undo
StableLlama May 4, 2026
6cd35b9
Fix error message when streaming content
StableLlama May 6, 2026
8c0d64f
Update version number when making a release
StableLlama May 6, 2026
fe61b7c
try to fix GH error
StableLlama May 6, 2026
9b695dd
Merge pull request #238 from StableLlama/final_fixes
StableLlama May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,13 @@ jobs:
python -m pip install --upgrade pip
pip install -e .
pip install pyinstaller uvicorn
- name: Set frontend package version
run: |
VERSION="${{ env.RELEASE_VERSION }}"
VERSION_CLEAN="${VERSION#v}"
python -c "import json; p='src/frontend/package.json'; d=json.load(open(p)); d['version']='${VERSION_CLEAN}'; json.dump(d, open(p, 'w'), indent=2)"
- name: Build Frontend
run: |
cd src/frontend
npm ci
npm run build
Expand Down Expand Up @@ -151,6 +158,13 @@ jobs:
python -m pip install --upgrade pip
pip install -e .
pip install pyinstaller uvicorn
- name: Set frontend package version
run: |
VERSION="${{ env.RELEASE_VERSION }}"
VERSION_CLEAN="${VERSION#v}"
python -c "import json; p='src/frontend/package.json'; d=json.load(open(p)); d['version']='${VERSION_CLEAN}'; json.dump(d, open(p, 'w'), indent=2)"
- name: Build Frontend
run: |
cd src/frontend
npm ci
npm run build
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ python tools/check_copyright.py .
- Never hardcode user-facing English strings in UI components.
- Use `react-i18next` translation keys.
- Inputs/textareas that edit story text must set `lang={storyLanguage || 'en'}` (or equivalent) and keep spellcheck behavior correct.
- Never hardcode LLM facing prompts or prompt templates, use `instructions.json` and its infrastructure for project specific language prompts and templates.

## 8. Test Data Safety (Strict)

Expand Down
134 changes: 134 additions & 0 deletions openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -2672,6 +2672,67 @@
}
}
},
"/api/v1/projects/{project_name}/chat/tools/batches/{batch_id}/chapter-before/{chapter_id}": {
"get": {
"tags": ["Chat"],
"summary": "Api Chat Batch Chapter Before",
"description": "Return the pre-batch content of a chapter for diff-baseline restoration.\n\nUsed by the frontend to reconstruct the baseline state for chapters that\nwere not loaded in memory when an AI tool modified them.",
"operationId": "api_chat_batch_chapter_before_api_v1_projects__project_name__chat_tools_batches__batch_id__chapter_before__chapter_id__get",
"parameters": [
{
"name": "batch_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"title": "Batch Id"
}
},
{
"name": "chapter_id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"title": "Chapter Id"
}
},
{
"name": "project_name",
"in": "path",
"required": true,
"schema": {
"type": "string",
"description": "Directory name of the project",
"title": "Project Name"
},
"description": "Directory name of the project"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChapterBeforeContentResponse"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/v1/projects/{project_name}/chat/stream": {
"post": {
"tags": ["Chat"],
Expand Down Expand Up @@ -3628,6 +3689,18 @@
"title": "BooksReorderRequest",
"description": "Request body for reordering books."
},
"ChapterBeforeContentResponse": {
"properties": {
"content": {
"type": "string",
"title": "Content"
}
},
"type": "object",
"required": ["content"],
"title": "ChapterBeforeContentResponse",
"description": "Response body for ``GET /api/v1/chat/tools/batches/{batch_id}/chapter-before/{chapter_id}``."
},
"ChapterContentUpdate": {
"properties": {
"content": {
Expand Down Expand Up @@ -3982,6 +4055,17 @@
],
"title": "Editing Scratchpad"
},
"projectContextRevision": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Projectcontextrevision"
},
"created_at": {
"anyOf": [
{
Expand Down Expand Up @@ -5673,6 +5757,48 @@
"title": "ReplaceAllRequest",
"description": "Request to replace all occurrences of a search query."
},
"ReplaceChangeLocation": {
"properties": {
"type": {
"type": "string",
"title": "Type",
"description": "One of: chapter, story, metadata, sourcebook, book"
},
"target_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Id",
"description": "Target identifier for the changed section, e.g. chapter ID or sourcebook entry name"
},
"field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Field",
"description": "Optional field name or metadata subfield affected by the replacement"
},
"label": {
"type": "string",
"title": "Label",
"description": "Human-readable label for the changed section"
}
},
"type": "object",
"required": ["type", "label"],
"title": "ReplaceChangeLocation",
"description": "Structured information about a single replaced section."
},
"ReplaceResponse": {
"properties": {
"replacements_made": {
Expand All @@ -5688,6 +5814,14 @@
"type": "array",
"title": "Changed Sections",
"description": "Human-readable labels for each changed section"
},
"changed_sections_meta": {
"items": {
"$ref": "#/components/schemas/ReplaceChangeLocation"
},
"type": "array",
"title": "Changed Sections Meta",
"description": "Structured information for each changed section"
}
},
"type": "object",
Expand Down
Loading
Loading