Skip to content

Changelog

Justus Brugman edited this page Aug 25, 2026 · 2 revisions

1.2.0

  • 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, LOCATION support, automatic loading, atomic persistence, and native-image-compatible JSON handling.
  • Added local /graph inspection, model-free /graph -generate, and model-assisted /graph -fill using only the configured fixed protagonists.
  • Added graph regression coverage and updated the architecture documentation with focused runtime, graph, image, and story-session flows.

1.1.5

  • Fixed managed MLX requests so model.chat and model.validator no longer need to duplicate backend.mlx.modelPath; when left blank, the managed model path is now sent automatically.

1.1.4

  • 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.

1.1.3

  • Added an optional managed mlx_vlm.server backend 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.

1.1.2

  • Added OpenAI-compatible JSON Schema structured output for validator decisions, with auto, text, and required json-schema output 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.

1.1.1

  • Enabled GraalVM shared-arena support for the JLine 4 terminal provider in native builds.

1.1.0

  • Reorganized the single deployable application into explicit nl.llm.storyteller.core and nl.llm.storyteller.cli packages, 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.

1.0.11

  • 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.

1.0.10

  • 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, 0 to 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.

1.0.9

  • Added Ctrl-U / Cmd-U as 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-L as 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-W turns so they are treated as transient control requests instead of normal story turns.
  • Fixed reset-only turns to stay out of history.json and 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.

1.0.8

  • Fixed prompt assembly for stricter LM Studio and OpenAI-compatible chat templates by sending story chat as one combined first system message instead of multiple separate system messages.
  • 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.

1.0.7

  • 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.

1.0.6

  • 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.json and 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.

1.0.5

  • Added the first systemprompts.example/ mode examples as reusable reference configurations for alternative storyteller setups.

1.0.4

  • Fixed validator rewrite handling so REPLACE responses 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-completion choices[0].message.content envelopes.
  • Added test coverage for plain-text validator rewrite payloads such as REPLACE: ... and REPLACE followed by corrected text on the next line.

1.0.3

  • Switched terminal control commands from plain exit and quit to /exit and /quit
  • Added Markdown story export commands: /export, /export -intro, /export -clean, and /export -all
  • Added StoryExportService to 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

1.0.2

  • 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

1.0.1

  • Extracted prompt construction into dedicated builder services for chat, validation, summary, recent summary, and canonical state updates.
  • Added small prompt-input records in model so prompt builders no longer depend on long ordered String parameter lists.
  • Moved ValidationOutcome into the model package as a pure decision/result type.
  • Simplified DerivedMemoryManager by removing unused prompt helper code and renaming the enablement hook to isDisabled() for clearer control flow.
  • Tightened small parser and config cleanups, including the redundant null check in ValidationDecisionParser and a smaller top-level AppConfig constructor shape.
  • Updated the README and PlantUML diagrams to match the current storyteller prompt and validation architecture.

Clone this wiki locally