Changelog
Last build date: March 26, 2025 at 03:21 PM UTC
2025-03-26
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
2025-01-03
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
2024-08-08
2024-07-20
2024-07-12
2024-07-06
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
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
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
2024-04-25
2024-04-20
Failure in initial openAI call shouldn't trigger a cost lookup now.
2024-04-09
Added trim to Replicate outputs, since I noticed a lot of newlines in the beginning.
2024-04-08
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
2024-02-24
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
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
2024-01-28
Updated GPT 3.5 pricing.
2024-01-18
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 scroll arrows not showing initially.
Bugfix for new stories not being set to the correct default model provider
2023-12-25
You can now download a story as a JSON file, either for backup or transfer, and import these files.
2023-12-24
2023-12-19
Also, small fix so navigating between pages jumps to the top of the page.
2023-12-17
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
2023-12-09
Also show the replicate request status, such as "starting" (cold booting) or "processing" (when being billed per second)
2023-12-08
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
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
2023-11-07
You'll need to select the specific November model, '1106'.
2023-10-10
2023-10-10
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
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
Also, still tracking on another bug with dialog history, still looking into it...
2023-10-03
2023-10-01
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
Reworked story arc visibility calculations, should be much lighter weight, but let me know if there are any issues!
2023-09-14
- 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 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
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
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
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
Updated UI/styling for when using sticky header/footer
2023-07-14
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
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
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
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
- 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
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
2023-05-05
2023-05-04
Fixed the send message box from overlapping dialogs above
2023-04-30
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
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
You can edit story name on story view screen
bugfixes
2023-04-10
2023-04-09
See the Reddit announcement post.