Unconventional Text Writer

Search Stories

Changelog

Last build date: March 26, 2025 at 03:21 PM UTC

2025-03-26

Added local Ollama support. If you do run a local server, you would need to allow CORS, such as doing:
set OLLAMA_ORIGINS=https://unconventional-text-writer.com

Also adjusted max response size to be an open input field, so you can increase it to 10k+ if you want to get big outputs out of Claude.

2025-01-26

Removed model providers: Mistral, Anthropic, Replicate
I'm pretty sure these weren't being used, and cleaning up the codebase will make future features easier to implement. OpenRouter has a wide variety of supported models so that's the recommended approach for non-OpenAI models going forward.

Renamed 'Response Size Buffer' to 'Max Return Size' to better reflect what it does - it now directly limits output size.

New: You can now artificially reduce context limit which might help resolve a few token counting edge cases, or simply reduce your cost.

Also performance increase on story saving logic 🚀

2025-01-20

You can now attach images to Open Router models.

2025-01-03

Added story sorting - by recent activity, created at, or by name.
This is only a "one time" sort, and afterwards you can continue to drag stories, and new stories continue to be created at the bottom.

2025-01-02

Updated OpenRouter error handling so it now shows the error returned by open router.

2024-08-08

Added OpenAI's cheaper GPT4-o model gpt-4o-2024-08-06.

2024-07-20

Added OpenAI's gpt4o-mini model.

2024-07-12

A few small tweaks to prefills. They are now saved/loaded with prompt templates, and the value wasn't being initialized on switching stories which I think caused an issue where it looked like it was in place, but was actually blank.

2024-07-06

New Feature: Prefill for Anthropic models!
Use this to guide the AI response in a certain direction

I also removed openAI npm package depedency, which will help me clean up code down the line and results in a smaller bundle size.

2024-06-20

Added Anthropic Claude 3.5 Sonnet model.

Started working on tracking timestamps for stories. You'll now see modified and created dates underneath the settings.
This is groundwork for sorting stories by recently used, etc.

2024-05-20

Image uploads now supported!
Currently, I have tagged both OpenAI GPT-4o and Anthropic/Claude models as supporting image uploads.
Both selecting local files and pasting image data (screenshots) works.
I'll look at adding drag-n-drop in a future update (I don't personally use drag-n-drop, so I didn't think of it until now).

2024-05-14

Added new OpenAI GPT4-o model.

2024-04-25

Made Model list filterable to help with large lists.

2024-04-20

Added retry attempts for OpenRouter generation lookups.
Failure in initial openAI call shouldn't trigger a cost lookup now.

2024-04-09

Added new ChatGPT Turbo model (gpt-4-turbo-2024-04-09).
Added trim to Replicate outputs, since I noticed a lot of newlines in the beginning.

2024-04-08

Added Anthropic as a model provider.
Added my own provided proxy server in order to access Anthropic and Replicate through UTW. The Proxy URL is configurable so if you wanted to spin up your own, you can.
The way I have my proxy setup is that requests to proxy.unconventional-text-writer.com/anthropic go to Anthropic, and proxy.unconventional-text-writer.com/replicate go to Replicate.


I have had 3 reports of stories being wiped, that I would like to touch on here.
  • One user reported that their stories got wiped after "clearing cookies for the last hour". UTW story data is saved in IndexedDB and I'm not sure how this function works with that.
  • Another user reported that after a system update, all their stories were wiped. Since UTW just stores data in the browser's IndexedDB data store, if something happens that cause this to get erased, your stories are gone.
  • Another user reported that a story seemingly vanished, and I don't have a lot of information to help troubleshoot.

But most importantly, remember to backup your stories from time to time with the "Download as JSON" option. Then you can import it easily if something happens in the future.
I am investigating options for a better solution in the meantime.

2024-02-26

Added the new Mixtral Large model and optimized small model for Mistral AI provider.

2024-02-24

Bugfix: API key was not being set when the browser was freshly loaded on a story.

Feature enhancement: You can now target user prompts with search-replace tool. Ran into complications developing this feature, so for right now User replacement runs on the first generation only, not refreshes.

2024-02-11

Reworked story and memory management.
Previously, all stories were loaded into memory at the same time, and saved to a single 'key' to local storage.
Now, only a single story is loaded into memory at a time, and saved to a unique key in local storage.
This means less memory usage and also less disk i/o as only one story is written to storage at a time.

Since this affected a wide range of features across the app, I've tried to test everything but if you find something broken, please let me know.

2024-02-06

Added Flatten Story option which can free up memory if you don't need to keep versions etc.

2024-01-28

Added new GPT4 Turbo model: gpt-4-0125-preview
Updated GPT 3.5 pricing.

2024-01-18

New Feature: Auto Search/Replace
Now you can specify rules that get automatically ran against new AI responses.
This could be useful for stripping out text that may be repeated in every AI response.
It's a first version, and in the future I may add more features, like before/after views, but for now this serves my purpose, so please leave feedback if you need something specific wit hit.

A few other bugfixes are included. This fixes Mistral which had updated their API validation to reject unnecessary parameters. So what I've done for the time being is when using a non-OpenAI model, the refresh count is locked at one. This is because OpenAI is the only provider who honors the 'n' parameter.
I have also added better trimming to dialog edits, removing unnecessary leading and trailing whitespace. I have noticed that if your prompt has ending new lines, it could be more likely to get rejected.

I have created a subreddit for Unconventional Text Writer.
You can use this for feature requests, bug reports, or prompt discussion.

2023-12-30

Bugfix for OpenRouter "Model ID not found" error.
Bugfix for scroll arrows not showing initially.
Bugfix for new stories not being set to the correct default model provider

2023-12-25

Merry Christmas!
You can now download a story as a JSON file, either for backup or transfer, and import these files.

2023-12-24

Added the first version of Search.

2023-12-19

Good news! Mistral AI has enabled CORS, so you no longer need to disable CORS in your browser to use it. I've updated the Settings page to reflect this.

Also, small fix so navigating between pages jumps to the top of the page.

2023-12-17

Added Mistral as a model provider.
Currently still trying to get both Mistral AI and Replicate to enable CORS at their endpoints, but until then, you'll need to disable CORS in your browser.

2023-12-12

Small update: Added scroll top/bottom arrows

2023-12-09

Some small UI tweaks in regards to replicate. Now it shows a CORS error when CORS is not enabled.
Also show the replicate request status, such as "starting" (cold booting) or "processing" (when being billed per second)

2023-12-08

New Model Provider: Replicate

I've added Replicate as a model provider. This new service allows open source model usage, billing per second of processing.

Important: Replicate currently lacks proper CORS support, requiring CORS to be disabled in your browser. This may limit functionality for most users.

Since each model on Replicate needs a different prompt template, I need to add them in manually and so far I've added Goliath-120b and Yi-34b.

Note: Initial requests might involve a 4-5 minute cold boot (not billed), with subsequent processing time billed.

This integration has been an excellent exercise in adapting Unconventional Text Writer to a new API with different billing methods.

Stay tuned for upcoming bugfixes and feature updates.

2023-11-22

New Feature: OpenRouter as a model provider
Based on a suggestion by a user, I have implemented OpenRouter, which is a seperate service that leverages open LLMs through a mostly-compatible OpenAI API format.
Currently, there are 47 models to choose from. But there are several things to note:

  • OpenRouter is a seperate service, it's a separate API key you need to register and a new Settings field was added for it.
  • I have gotten a fair number of timeouts and other errors. It feels like a fledgling service compared to OpenAI.
  • Since OpenRouter routes through other service providers, those providers limitations are still in play. (like some models are restricted to 300 token outputs for some reason)

With all that said, it could be worth signing up and playing around with it. Maybe you might find a model that is comparable that fits your needs.
OpenRouter does enable logging of API calls by default, but they offer a setting to disable it on your account page.

I've rushed the open router implementation in 2 days, so this is a rough first pass. I will be working on bugfixes as I hear of issues.

Besides OpenRouter, I fixed a few bugs in regards to HTML encoding and markdown code support in responses.

2023-11-08

Added scroll to top for new dialog generations

2023-11-07

Added new GPT-4 Turbo and GPT 3.5 Turbo models.
You'll need to select the specific November model, '1106'.

2023-10-10

Added a new favicon and fixed bug with history view.

2023-10-10

Bugfix for 'only use latest user prompt' not working
Bugfix for too many dialogs being held in memory, causing out of context memory errors
Added a model indicator for AI responses, in case you were trying different models and wanted to compare.

2023-10-07

Bugfix for arrow keys sometimes switching dialogs while editing
Reworked app initialization to try to prevent a race condition when loading state. Will see if this fixes errors some users are running into.

2023-10-04

another bugfix that broke saving the app state, sorry!
Also, still tracking on another bug with dialog history, still looking into it...

2023-10-03

small bugfix where saved API key wasn't being initialized correctly

2023-10-01

New Feature: revision tracking in dialogs
Added revision history tracking for dialog edits. You should now be able to jump back to a previous edit quickly.
New Feature: labeling dialogs
Right now this puts the label on top of the dialog, should help be able to quickly identify what happened in the dialog if you have a bunch.
This will also used in future features.
UI updates
Made 'new arc' a checkbox instead of a button.
made new toolbar on top of dialogs and moved the 'copy' command into it, with the above new features.

Some bugfixes, including holding down shift while using the arrow key moved between dialogs if you were trying to select text instead.

2023-09-26

Updated from Local Storage to IndexedDB for greater capacity.
Reworked story arc visibility calculations, should be much lighter weight, but let me know if there are any issues!

2023-09-14

Minor updates.
  • fixed bug to rename a story when in a folder
  • When duplicating a story, the total cost is now reset for the new duplicate
  • Added option for stories to reset price tracking. (useful if you roll into a new month and want to reset your tracking)

2023-09-07

Added 'null model' - this can help if you want to manually write out an AI response and you don't want to trigger an actual request to OpenAI yet.
Added story Copy/Download options - you can select to include User and AI responses. Download specifically can let you get ALL arcs and dialog versions, however, this might be a little messy since arcs aren't currently sorted.

Bugfix: Local storage conflict check now prompts if you want the current window to be saved to local storage or not

2023-08-29

New Feature: Story Arcs!
Have you wanted to alter the direction of a story, try a new path, and realized the only way currently was to duplicate the story?
Well, now you can have user prompts branch off into a story arc, letting you try something new!
Unlike other UIs (OpenAI's ChatGPT UI), this doesn't happen on every edit. So if you still want to tweak wording that you've said before, you can still do that too.

I have also added specific GPT-4 models, so if there is a classic GPT-4 model you want to use, you can now do that.

Remember, you can always submit feedback or bug reports.
I am trying to watch for performance issues but right now it's hard to pin down.

2023-08-16

Two updates today!
First, there is a new option in Settings for "default number of responses". You can leave this at 1, but if you want to have multiple AI responses off the bat, you can now increase the setting.

Next, I've re-organized change log entries programmatically. This makes it easier for me to create entries, but also to update styling across the board without lots of copying and pasting. I also added an indicator on the Changelog link at the bottom, and a simple date checker, so it can let you know if there are new changes you haven't read through.

2023-08-09

Added prompt templates!
There is "Global" (shared amongst stories) and story-specific scope.
I have loaded in 5 defaults to get people started.
You can overwrite them, rename, delete, save new ones, or toggle off the prompt template bar entirely.

There was also a rather insidious edge case that I fixed, while probably rare: If you had the app open in 2 tabs, they would both use local storage. However, if you used the older tab, it would overwrite the newer tab's local storage (i.e. reverting back to the state that the old tab was in)
Now, if an old tab tries to write to local storage and it wasn't the last one to do so, it will error and request you refresh the page instead.

2023-07-29

Fixed bug with handling arrow keys (typing in a prompt and using arrow keys would switch between versions)
Updated UI/styling for when using sticky header/footer

2023-07-14

Added base gpt-4 model.
Bugfix for editing prompts with newlines.
Optimized what app state to save to local storage, which should show a reduction in local storage size used.

2023-07-02

New storage bar for local storage usage.
You will see local storage usage jump between switching stories, this is because currently it's saving the full app state (and working memory changes between story lengths) The 5mb is also just an estimate, as the size limit differs between browsers.
However, whenever it does fail, it will alert you and show an error status. At that point, you can continue to use the app, however, your state won't be preserved if you close your browser window.

Also, some bugfixes for deleting + duplicating stories in folders, thanks to an anon for using the feedback tool and reporting.

2023-07-01

You can now toggle sticky header or footers for your prompt (i.e. prefix or suffix).
I find myself copying and pasting a lot, i.e. "Describe in vivid detail and 11 paragraphs", so now you can just have it as a footer, and only the main message body resets when you submit.
I have thought of expanding this (i.e. multiple saved templates for headers/footers) but I don't know how actively it would be used, but for now this is good enough for version 1.
The header/footer is saved per story, and is only enabled when it's toggled on.

I am also tracking on a few bugs (unable to duplicate stories in a folder) that someone submitted, so I will be working on fixing those next.

2023-06-17

Added support for the new ChatGPT models!
You can choose between the general gpt-3.5-turbo and gpt-3.5-turbor-16k or specific model versions.
In my little testing, the 16k model seems like it might be harder to jailbreak, not entirely sure but I was getting some declines in 16k and switching back to 4k resolved it, so you'll have to experiment on your own.
Also, keep in mind that on June 27th, 2023, gpt-3.5-turbo will be updated to point from gpt-3.5-turbo-0301 to gpt-3.5-turbo-0613.
For now, I have just updated the pricing estimate to the new process (calculating input & output separately), so there might be a little discrepancy on base gpt-3.5-turbo pricing estimate until the 27th.
It should be easy to add support for gpt4 models now, but I don't have access to the GPT4 API yet, so I'll add them when I do. OpenAI mentioned they will be opening it up in the next few weeks.

I also fixed a bug with deleting the first version of a response (it seemed to happen when there were 2 and you deleted the first).
Added a new field so you can see time taken for your requests.

2023-06-16

Added the first version of folders.
  • Stories are now draggable and can be moved to folders.
  • Folders can be opened/closed.

This first version has some limitations:
  • Folders can't be nested into other folders, currently
  • Folders can't be dragged/sorted
  • Haven't coded support for folders to be deleted yet, but you can rename them by double clicking

I was sitting on this work half-done for a while and I needed to hurry up and get it out so I could switch over to supporting the new ChatGPT model.
Going to start on that now and should have an update soon.
The next version of folders will have all of the above limitations fixed.

2023-05-20

Do you load up on lots of responses in a single prompt? Now you can add 'favorites' for easier comparison to quickly go back to responses you liked.
You can also now remove specific versions of a response (instead of deleting the whole prompt)
Also, you can now quickly move between responses by using the arrow keys on your keyboard. This is based off of what prompt you hovered over.

2023-05-06

Super small update. Now when waiting for a prompt to load, thinking emoji is set as the window title, which can help if you are alt-tabbed waiting for ChatGPT to return a response.

2023-05-05

Added easy copy icon in top right for prompts

2023-05-04

Updates to editing prompt experience. The edit textarea should now (very closely) match how the text was formatted in the div. It's not perfect, but it's pretty close, and it's not as jarring as before.
Fixed the send message box from overlapping dialogs above

2023-04-30

Updates to Refresh button, you can now fetch up to 5 versions of a prompt!
Slight modification to allow a temperature of 1.1. The API allows up to 2, but in my testing the text went to gibberish.
Some misc bugfixes

2023-04-28

Error checking / error message on API call error
Duplicate stories! Added in menu near story title
MOBILE - removed edit/delete story from mobile menu since it was complicated and we have that functionality on the main story screen now
Added Google form for feedback / feature requests!

2023-04-11

Added primitive changelog
You can edit story name on story view screen
bugfixes

2023-04-10

Update mobile formatting so it's actually usable on mobile

2023-04-09

First public release!
See the Reddit announcement post.

Searching for ''

Searching active story only
Searching active dialogs only

No results found