Skip to content

Releases: neph1/LlamaTale

v0.42.0 - Replacing event source with web sockets

29 Nov 15:34
90fab26

Choose a tag to compare

As part of a modernization of the user experience, the legacy event source api has been replaced by web sockets. This is a "breaking change", as in requiring updating requirements.

There is a new wizard command, !restart_story, which I guess doesn't need any further explanation (run with --wizard to enable commands).

The command prompt in the web ui will now be disabled while waiting for the server to respond.

There is now a dungeon underneath The Prancing Llama. Something I have envisioned since the start of development.

Consider the new API a bit experimental. If you encounter problems, roll back to v0.41.1 (and please report the issue).

What's Changed

  • Add WebSocket support to browser IO using FastAPI by @Copilot in #126
  • Add !reset_story wizard command to restart story without server restart by @Copilot in #128
  • Remove EventSource-based WSGI API from IF mode by @Copilot in #131
  • update v0.42.0 by @neph1 in #129

Full Changelog: v0.41.1...v0.42.0

v0.41.1 Minor fixes

24 Nov 19:26
27efaff

Choose a tag to compare

Fixes mobs having no combat points
Increasing chance of dungeon in zone
A change to make idle actions not appear to affect anything.

What's Changed

Full Changelog: v0.41.0...v0.41.1

v0.41.0 - Dungeons v2

22 Nov 13:00
f15e00e

Choose a tag to compare

Dungeons has been around since (oh my, is it that long?) https://github.com/neph1/LlamaTale/releases/tag/v0.28.0

Dungeons introduced a more compact gameplay, akin to classical dungeon crawlers. They have doors (which may be locked, requiring keys), random items and mobs spawning throughout. The layout (for one "level") is also generated before hand.

But there has always been one thing that bothered me about them (apart from them probably being bugged), and that is that they were separate stories. You couldn't have dungeons in a normal story. Migrating them has always felt overwhelming, but with my recently acquired "agent skills", I decided to assign copilot to the task.

Here is the result; dungeons can now be added to a normal story, they can be generated in a "Land of Anything" story. They exist outside the normal "world grid", and have only one entrance.

This became a larger task than I had anticipated, and there are probably some bugs here and there. If you find any, please raise issues so that they can be resolved.

What's Changed

  • Break down llm_config.yaml into individual prompt template files by @Copilot in #113
  • Fix dungeons by @neph1 in #117
  • Update v0.40.0 by @neph1 in #118
  • Refactor dungeons into reusable component for any story type by @Copilot in #116
  • Add dungeon config generation to zone creation with 10% probability by @Copilot in #120
  • Generate dungeon entrances when building locations by @Copilot in #123
  • Update v0.41.0 by @neph1 in #121

Full Changelog: v0.39.0...v0.41.0

v0.39.0 Housekeeping

27 Oct 20:17
859432e

Choose a tag to compare

After a motivational talk with chatgpt, I got a few ideas for how to go forward with the project.
I decided to try out some copilot agentic coding to get started with a few maintenance chores. It didn't quite get there, but made a lot of ground work.

Summary:

  • Better JSON sanitizing.
  • Chunked generation of items and creatures. To get less fails due to long running outputs in Anything stories. Now it generates one item/creature per call.
  • Fixed a long running issue with directions not being generated for the starting location in Anything stories.
  • Fixed duplicate exits sometimes being saved for stories.
  • Fixed that The Prancing Llama story was apparently broken.

What's Changed

  • handle none in mood_to_string_from_int by @neph1 in #101
  • Generate world items and creatures in chunks to avoid JSON parsing failures by @Copilot in #105
  • Fix None directions and duplicate exits in start location generation by @Copilot in #109
  • missing commit + test fix by @neph1 in #110
  • Json sanitizing by @neph1 in #102
  • Update v0.39 by @neph1 in #106

New Contributors

  • @Copilot made their first contribution in #105

Full Changelog: v0.38.0...v0.39.0

v0.38.0

23 Nov 18:28
b0d6c21

Choose a tag to compare

What's Changed

Mostly more house keeping.
Noticed that 'goals' was not passed in the character card, so had no effect on action generation
Added 'hidden' state to context passed to actions so that npcs won't act on other hidden npcs
Moved away from storing prompts in the classes and referenced directly to the llm_config instead.

Full Changelog: v0.37.0...v0.38.0

v0.37.0

04 Nov 20:13
6a19be8

Choose a tag to compare

  • I've reworked the combat prompt and how it's defined to hopefully get some better generation results. This also introduced a 'durability' feature for items, which is not yet fully into play (but it degrades).

  • Added support for 'story wearables'. If you define wearables in the story's 'catalogue', they will be added to the total pool when loading the story. Useful for themed stories, that may not fit into the limited genres already defined.

  • Added support for 'password' for koboldcpp servers. Define 'API_PASSWORD' in backend_kobold_cpp.yaml to enable it.

  • This led me to find a bug with openai api's that didn't send the API_KEY when streaming, so that has been fixed as well.

What's Changed

Full Changelog: v0.36.2...v0.37.0

v0.36.2

31 Oct 16:50
4212f07

Choose a tag to compare

Mostly refactoring and removal of some technical debt.

But I broke out wearables loading to .json files, so it'll be easier if you want to create your own. They're located in the 'items' folder.

What's Changed

Full Changelog: v0.36.1...v0.36.2

v0.36.1 Progressive story context

20 Oct 19:02
9350be3

Choose a tag to compare

What's Changed

This is an experimental feature I started writing this summer, but didn't get around to finish until now. Unsure about its effects.

The idea being that having a static background story may not work well for long-form RP games, since the LLM will get stuck and only generate based on the existing story.
This feature expands on the background story and will, at intervals, ask the LLM to move the overarching plot forward. The result will get stored in the story, and then some time later, it will be expanded upon again.

It is currently built into generated stories, but deliberately it's meant to be subtle. I'll do a writeup in the wiki with some examples of how to add it to your own stories.

Full Changelog: v0.35.2...v0.36.1

v0.35.2 Discord bot and fixes

17 Oct 19:31
1c878a1

Choose a tag to compare

What's Changed

Some small shop related fixes and a minor change to the server to be able to support a discord bot relay.

Yes, you can now run LlamaTale anywhere through the LlamaTale-DiscordBot project.
Sadly you need to set up the Discord bot yourself. I can't distribute a bot with unique keys (since that's what it's using to connect to a server)
It's still in a basic state, you can't restart a story remotely, mostly due to how Tale manages sessions. It's something I will look into.
Check the repository for instructions.

Full Changelog: v0.35.1...v0.35.2

v0.35.1 - Equinox update

05 Oct 05:49
ed3eb51

Choose a tag to compare

Edit: I've updated the release to contain a few fixes.

This is the biggest update to LlamaTale for a long time.

Highlights are:

Traders - Enabling Tale's shop system
Automatically equip and dress generated NPCs based on occupation
Optional removal of model specific templates (ie, allow usage of backends chat templates)
A bunch of fixes as per usual

Traders

Tale already had a working shop system. This update allows traders being set up with inventory and using the correct template. A whole list of new commands are used, which I'll add a wiki page for. Traders have things to sell, and will sometimes buy things as well.
Will still need some improvements to the economic system to work well (note to self).

Occupation parsing

An npc's occupation is now parsed for generated npcs (and optional for loaded ones). This will automatically give them some relevant weapons or equipment and clothing. To make a previously generated npc use the feature (such as a loaded companion), add 'parse_occupation=True' to the json file.
They will also get relevant skills and spells (yes, spells have been rewritten to be used by npcs now too)

Template optional

To accomodate to the 'modern' feature of backends automatically selecting the correct template

USER_START: '### Instruction:\n'
USER_END: '### Response:\n'

have been removed from llm_config.yaml. Any mentions of USER_START in the prompt will be removed when parsing.
You may still add them back if you for some reason want them, and it will use that template instead.

A big shoutout to ko-fi supporter OtterDemon for the donations during a fairly slow summer season.

Upcoming changes

There is still some work to do to fully take advantage of the new occupation features. I haven't specifically told the LLM to generate occupations (or what occupations to use).
I should make the npcs actually wear and wield the items they receive.
As mentioned, improve the economic system, or use it more.
Do an overhaul to the prompts. They were made in a different era with 2k to 4k prompts and are very brief. I think they could be more expansive to make better use of modern LLM's.
Update wiki articles. Some are outdated, and some new entries are needed.

What's Changed

Full Changelog: v0.34.0...v0.35.1