-
Notifications
You must be signed in to change notification settings - Fork 0
Changelog
Justus Brugman edited this page Aug 25, 2026
·
2 revisions
- Added a validated knowledge graph that grounds story generation and validation with relevant hard facts to reduce entity, skill, relationship, and location bleeding.
- Added a configuration-driven predicate catalog with directional relationships,
LOCATIONsupport, automatic loading, atomic persistence, and native-image-compatible JSON handling. - Added local
/graphinspection, model-free/graph -generate, and model-assisted/graph -fillusing only the configured fixed protagonists. - Added graph regression coverage and updated the architecture documentation with focused runtime, graph, image, and story-session flows.
- Fixed managed MLX requests so
model.chatandmodel.validatorno longer need to duplicatebackend.mlx.modelPath; when left blank, the managed model path is now sent automatically.
- Added
/image <instruction>for sending an image copied to the macOS or Windows desktop clipboard as a transient base64 vision input. - Kept clipboard image data out of history, validation, derived-memory updates, and story exports; only instruction and response text are persisted.
- Added an optional managed
mlx_vlm.serverbackend for local MLX models, including process startup, dynamic loopback ports, readiness checks, and lifecycle shutdown. - Added a mlx-vlm example configuration and documented the managed MLX backend in the README and PlantUML architecture diagrams.
- Added OpenAI-compatible JSON Schema structured output for validator decisions, with
auto,text, and requiredjson-schemaoutput modes. - In automatic mode, validation falls back once to the existing tolerant plain-text parser when a backend rejects
response_format; that capability result is cached for the remaining application session. - Added llama.cpp managed-server examples for a 32K context, 32 context checkpoints, one server slot, CPU/batch sizing, GPU KV-cache offload, Q8_0 K/V cache, Flash Attention, and disabled reasoning.
- Enabled GraalVM shared-arena support for the JLine 4 terminal provider in native builds.
- Reorganized the single deployable application into explicit
nl.llm.storyteller.coreandnl.llm.storyteller.clipackages, retaining one Maven project, one runnable shaded jar, and the existing CLI behavior. - Documented the local browser API boundary and session lifecycle design, including the accompanying API architecture diagram, while keeping HTTP implementation outside the core for now.
- Refactored validator decision parsing into focused JSON, structured-node, and tolerant-text helpers; explicit structured decisions now take precedence over incidental decision words in response text.
- Removed Maven Shade warnings by retaining one Jackson license/notice pair and filtering duplicate manifests, module descriptors, and identical license resources from the shaded jar.
- Split the terminal application into dedicated composition, terminal-controller, and renderer classes so display formatting can be unit-tested without JLine.
- Added renderer tests for word wrapping and fenced code blocks, and aligned the derived-memory queue and cache-buster tests with the Given/When/Then display-name convention.
- Replaced the three independent derived-memory executors with one shared sequential task queue so background refreshes cannot call the LLM backend concurrently.
- Added configurable periodic cache-buster requests after persisted story turns (
cacheBuster.interval=5,0to disable), while undo always retains its cache-buster reset. - Added Apple Silicon / LM Studio performance guidance with conservative long-context and memory-tuning starting points.
- Added configuration and queue-ordering test coverage and updated the architecture documentation.
- Added
Ctrl-U/Cmd-Uas an undo-and-retry control action that removes the last persisted turn, sends a transient reset request, and restores the previous user prompt into the input buffer for editing. - Added
Ctrl-L/Cmd-Las a local read-only shortcut that shows the last persisted user prompt and assistant reply without sending anything to the model. - Fixed reset-only
Ctrl-Wturns so they are treated as transient control requests instead of normal story turns. - Fixed reset-only turns to stay out of
history.jsonand to skip long-term summary, recent summary, and canonical state refresh triggers. - Added a transient request-local cache-buster token to reset-only turns as a presumed best-effort portable cache-break for LM Studio and other OpenAI-compatible backends that do not expose a standard per-request KV-cache flush or slot-selection API.
- Fixed history rollback so undoing the last turn safely clamps the summary, recent-summary, and canonical-state cursors to the shortened
history.json. - Added a history helper for retrieving the latest persisted turn as a user+assistant pair.
- Documented the new last-turn inspection shortcut and the transient undo/reset control flow in the README.
- Documented the transient undo/reset control flow and its non-persisted behavior in the README.
- Fixed prompt assembly for stricter LM Studio and OpenAI-compatible chat templates by sending story chat as one combined first
systemmessage instead of multiple separatesystemmessages. - Fixed long-term summary, recent summary, and canonical state background updates to use the same single-system-message layout, preventing LM Studio template failures on derived-memory refresh calls.
- Updated the release packaging flow to publish the runnable shaded jar as
storyteller-<version>-all.jar, avoiding self-overlap warnings on repeated Maven package or verify runs.
- Added an optional engine-level turn-based game mode that tracks round participation outside the LLM and injects prompt penalties for illegal extra moves.
- Added persistent turn-state storage in
memory/turn-state.jsonand integrated turn-rule evaluation into prompt assembly before each story turn. - Updated the Dungeons & Dragons example configuration to demonstrate turn-based mode defaults and revised the example READMEs to use a more consistent structure.
- Updated the README and PlantUML diagrams to document the new turn-based game flow and example-mode positioning.
- Added the first
systemprompts.example/mode examples as reusable reference configurations for alternative storyteller setups.
- Fixed validator rewrite handling so
REPLACEresponses now use the corrected text instead of falling back to the fail-closed warning message. - Made validator parsing more tolerant for smaller or less strict models by supporting wrapped rewrite payloads in
content,message.content, and full chat-completionchoices[0].message.contentenvelopes. - Added test coverage for plain-text validator rewrite payloads such as
REPLACE: ...andREPLACEfollowed by corrected text on the next line.
- Switched terminal control commands from plain
exitandquitto/exitand/quit - Added Markdown story export commands:
/export,/export -intro,/export -clean, and/export -all - Added
StoryExportServiceto export story history into Markdown files in the application working directory - Updated the README and PlantUML diagrams to document the new command and export flow
- Added more test coverage
- Added a lightweight resilience layer for repeated LLM backend failures, with separate cooldown policies for chat, validation, and background memory refreshes
- Extracted prompt construction into dedicated builder services for chat, validation, summary, recent summary, and canonical state updates.
- Added small prompt-input records in
modelso prompt builders no longer depend on long orderedStringparameter lists. - Moved
ValidationOutcomeinto themodelpackage as a pure decision/result type. - Simplified
DerivedMemoryManagerby removing unused prompt helper code and renaming the enablement hook toisDisabled()for clearer control flow. - Tightened small parser and config cleanups, including the redundant null check in
ValidationDecisionParserand a smaller top-levelAppConfigconstructor shape. - Updated the README and PlantUML diagrams to match the current storyteller prompt and validation architecture.