Skip to content

Conversation

@Rhystic1
Copy link
Contributor

@Rhystic1 Rhystic1 commented Dec 11, 2025

Update with plenty of QoL features and improvements! (Includes the update which I was planning to release after Christmas, but I feel it is stable enough to be included here)

  • Added support for the Pollinations API provider (both free/no-key and paid).

  • Added support for Response Healing Schema and refactored JSON output format. This is only applicable for OpenRouter and only for supported models, but it should, in theory, reduce the chances for those models to output incorrect JSON format.

  • As an alternative to web search, users can now choose to utilize an internal, accurate and hand-verified database of more than 60 characters. This reduces costs (and should not incur any costs for free models on OpenRouter) and noticeably increases speed of generation. Enabled by default and recommended.

  • Users can still allow the models to search the web as a fallback option in case the requested characters are not present in the list. Enabled by default and recommended.

  • Web Search Fallback is now permanently enabled for models that do not have native search capabilities since the Cloudflare Worker enables fetching from the Wiki for "free". No change for the Gemini and Perplexity APIs or for other models that don't fit the above criteria.

  • Prettified the Settings menu (will likely still be changed).

  • Enabled Context Caching for supported models (mostly Gemini and Anthropic) for OpenRouter. Some models, such as DeepSeek, already support this feature automatically. This allows noticeable cost savings, as most providers charge only a fraction of the cost for using the cache compared to "fresh" tokens. This option cannot be disabled and is hidden from the UI, since there is no real reason for anyone to do so. However, it can still be shown and disabled by running a dev build for debugging reasons.

  • Added the Asset Quality option in the Settings menu, allowing users to switch between high quality and low quality models, with a noticeable performance improvement, especially on low-end hardware, for selecting the latter option.

  • Added a God Mode toggle that prevents the Commander from receiving fatal injuries/dying in the stories. This may be more useful for models that have negative and dark biases.

  • Added a small "Retry" button (shown on the last received message in the top right corner) to regenerate the last answer. Useful if the model's response is still garbled, nonsensical, or if the user simply wants to experience a different outcome.

    • Added a "Problems?" button in the chat box that injects prompts to the model in the next turn to help it fix various types of possible problems, such as wrong JSON schema, wrong speech patterns for certain characters, etc.
  • Expanded the Text-to-Speech feature by enabling support for GPT-SoVITS and Chatterbox, which in many cases are superior to AllTalk. This is still experimental and requires the TTS model to be running locally and with a very specific configuration (I may write a guide on this in the future). TTS is disabled by default.

  • The enriching actions with animations sequence that occurs during the fallback JSON should now take context more into consideration when assigning said animations.

  • Improvements to JSON parsing for both fallback and non-fallback instances.

  • In particular, significantly improved the JSON parsing fallback for DeepSeek models.

  • Improvements to the summarization feature, reducing the likelihood that it will misbehave, especially when using the "High" token count option.

  • The trigger for searching characters that appear in the story should now be more stable.

  • Fixed a major crash that would occur with the Spine player in certain situations, such as when the player would very quickly change characters.

  • Lots of refactoring, especially for ChatInterface.vue.

  • Sending a message/prompt now displays a spinning icon and messages to indicate to the user what is going on in the background (including some easter egg messages...)

Demo video that shows some of these improvements (pre new commits):

2025-12-11.22-10-05.mp4

…e user may use this instead of the standard web search. This is enabled by default and will be the recommended setting from now on, as it decreases costs and significantly improves speed. Currently contains 62 characters. Will be expanded in the near future.

- Added the ability to optionally fallback to web search for characters that are not yet in the internal database if the internal DB setting is enabled. Strongly recommended to turn on, though this may incur the web search costs.
- Enabled context caching for supported models like Gemini and Anthropic through OpenRouter. Experimental for now. Enabled by default as there is no real reason to disable it. Mostly relevant for users that select "High" or "Goddess" mode.
- Improved chat window so that the user is more aware of what the model is doing, if the chat is being processed, or if there are more dialogue lines in the turn.
- Refactored ChatInterface by moving prompts to a separate JSON file.
…erate the last message (useful, for example, if the model output was garbled or incorrect JSON, or simply if the user wants a different response)

- Fixed a crash with Spine Player that could occur in certain instances, such as when changing characters too quickly
- Additional refactoring by moving the parsing logic to a new file.
…toggle is only visible in dev builds, since this option provides noticeable benefits and there is no practical reason to be disabled

- Added a "character progression" field in the memory to allow models to potentially "grow" characters and do character development depending on the story.
- Fixed an issue that caused the model to overwrite the original character profiles.
- Fixed an issue that caused the model to search for characters that were not present in the story.
- Additional fixes and improvements for JSON fallback and non-fallback parsing.
- Minor fix on Scarlet's built-in character profile.
… robustness, in particular with mixed dialogue/narration content.

- Improved error handling when parsing character profiles via Wikia.
- Added more loading messages.
… robustness, in particular with mixed dialogue/narration content.

- Improved error handling when parsing character profiles via Wikia.
- Added more loading messages.
…ehaviour in case it produces output in incorrect format or uses the wrong honorifics. Potentially expandable for other issues.

- Added support for Response Healing Schema and refactored JSON output format. This is only applicable for OpenRouter and only for supported models, but it should, in theory, reduce the chances for those models to output incorrect JSON format.
- Additional fixes for parsing.
…s DeepSeek to overwrite character profiles. They should now correctly use a separate `characterProgression` section.

- Better error handling for summarization, ensuring that it still occurs even if it errors out.
- Slight changes to some character profiles.
…s DeepSeek to overwrite character profiles. They should now correctly use a separate `characterProgression` section.

- Better error handling for summarization, ensuring that it still occurs even if it errors out.
- Slight changes to some character profiles.
@Koshirei
Copy link
Collaborator

check out the thing I reviewed, otherwise I'm ight you didn't touch anything else than your files so I won't deeply code review, I'll pass the PR when you're OK

@Rhystic1
Copy link
Contributor Author

check out the thing I reviewed, otherwise I'm ight you didn't touch anything else than your files so I won't deeply code review, I'll pass the PR when you're OK

@Koshirei Sorry, I'm a bit confused. Which file did you review? I cannot see any comments from you in the PR.

In any case, I am confident this PR is ready - yesterday I fixed all the evident issues I could find.

I am also preparing Update #2 with things such as Pollinations API support (including the free tier, no key required, so people can have a try albeit with limited rates), and other QoL improvements, but I'll need time to test that one properly, so I might create a PR for that after Christmas.

rewrite: (path) => path.replace(/^\/alltalk/, '')
},
'/gptsovits': {
target: 'http://127.0.0.1:9880',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this correct ? it's targetting localhost, not sure of how it'll work in prod

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, at the moment TTS support is local only and disabled by default

Comment on lines 412 to 413
const gptSovitsEndpoint = ref('http://localhost:9880')
const gptSovitsBasePath = ref('C:/GPT-SoVITS')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will it work on prod?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, as mentioned this is local only. The path needs to be modified by the user in the Settings menu if TTS is enabled. If there is an error because the path is incorrect, it is handled appropriately by skipping TTS.

@Koshirei
Copy link
Collaborator

sorry I forgot to close the review. the PR system is quite different from gitlab and I'm more used to it there..

@Rhystic1
Copy link
Contributor Author

sorry I forgot to close the review. the PR system is quite different from gitlab and I'm more used to it there..

No problem! I answered the comments. To clarify, gptSovitsBasePath refers to where the user has installed the model locally, so it is correct that is a local path.

- The enriching actions with animations sequence that occurs during the fallback JSON should now take context more into consideration when assigning said animations.
- Prettified the Settings menu (will likely still be changed)
- Web Search Fallback is now permanently enabled for models that do not have native search capabilities since the Cloudflare Worker enables fetching from the Wiki for "free". No change for the Gemini and Perplexity APIs or for other models that don't fit the above criteria.
- Certain Pollinations API models are now hidden as they are completely useless for purposes of storywriting and roleplaying.
- Fixed a bug that caused Pollinations API models to crash when search was triggered and fixed a bug that caused the search to have no effect on the character profiles.
- Added a God Mode toggle that prevents the Commander from receiving fatal injuries/dying in the stories. This may be more useful for models that have negative and dark biases.
- Additional refactoring.
- Improvements to the summarization feature, reducing the likelihood that it will misbehave, especially when using the "High" token count option.
- The trigger for searching characters that appear in the story should now be more stable.
- Added more characters in the internal database and slightly adjusted some existing entries.
- Additional refactorings to create better separation of concerns.
…-to-speech (requires a specific configuration - will need to write a guide).

- Renamed the "AI Reminders" button to "Problems?" and changed its icon, to reduce confusion.
- Added a new "Wrong Speech Styles" injection prompt useful in case the model is confusing speech patterns, such as when one character is speaking the same way as someone else.
- Added the Asset Quality option in the Settings menu, allowing users to switch between high quality and low quality models, with a noticeable performance improvement, especially on low-end hardware, for selecting the latter option.
- More improvements to the Pollinations API provider: removed free models that do not work properly and automatically refresh the model list when the user is inputting an API key or is removing it.
Pollinations API support + much more
@Rhystic1
Copy link
Contributor Author

Rhystic1 commented Dec 17, 2025

I was planning on releasing another update that I was working on after Christmas, but I was able to work on it these days and felt stable enough to me that I have included it here since the PR was not merged yet. This adds significant new features, and it even allows people to try out the Story/Roleplaying generator for free, no key necessary!

(that reminds me, I will do a tiny change to update the Help menu to specify that) (done)

Next (again, after my vacations), I will work on yet more improvements, including the ability to use locally running models for those that have enough performance to be able to do that, and improvements to the mobile experience.

@Koshirei Koshirei merged commit aa0d064 into Nikke-db:main Dec 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants