Search
New feature: Collaborate with others on your generator (realtime/live shared editing)
You can now click the gear icon in the text editor and create a "collab link" for your generator. If you share that link with others, they'll be able to edit/save the generator, and you'll be able to see each others text cursors/carets.
You can disable/invalidate the link, and regenerate a new one.
Please let me know if there are any issues! I may be able to improve the performance/latency of it after some more work on the server.
Why do we still not have better image generation?
Several months ago I said new image generation quality would be coming soon. Then flux came out and I was like "oh cool, i'll just wait a month or so for community finetunes", and once again informed people that an image gen upgrade was not far off. But it turns out flux is really hard to finetune in its current form.
> Aside: There have been attempts to fix this issue, but we're not quite there. I've been helping some people who are working on this (mainly dataset stuff, I'm no ML researcher), and progress is being made, but we're still at least a month away from 'serious' flux finetunes.
So base flux still doesn't know 'basic' stuff (e.g. doesn't even know most pokemon), and illustrious (another new model) requires a very specific prompting format.
While helping with the eventual open source flux finetune, I have also been attempting to put together a system that would intelligently route to the best model based on prompt content, and also generate tags for illustrious based on a natural language prompt, but it's still not good enough.
So Perchance images are atrociously bad at this point, and I considered just upgrading to SDXL, but this would likely mean two upgrades in a short period of time, both of which would require prompt engineering adjustments on the part of perchance generator devs. That would be annoying, and maybe more painful than just dealing with bad generation quality for another month or two.
In hindsight, I should have just upgraded to SDXL midway through 2024 (or even earlier). We may actually get another text gen upgrade before the image gen one at this rate. We're also getting close on video gen now with models like HunyuanVideo, which seems to be finetunable, and is quite fast with FastVideo.
Tangentially, I've been spending a lot of time on behind the scenes server stuff recently. For example, I've had to add filters to prevent people from uploading literal CSAM to perchance.org/upload - a problem that I naively did not consider when first creating the upload feature. This sort of work is annoying because it doesn't result in fun new features or plugins, but spending time on automating this sort of thing is important, because it ensures that e.g. using features like /upload doesn't require logging in, and doesn't e.g. require employing people for moderation. I'd much rather move a bit slower, and ensure perchance's sustainability and complete independence.
And tangential to that: One thing that I want to publicly promise, just so I can say "I told you so" in 20 years, is that Perchance will never "sell out" or "rug pull" in any sense of either phrase. It'll always be a bit weird. It'll never get investors, I'll never sell it, never require login, never send you emails (except e.g. password reset), never put ads on generators (unless it imports an AI/server-GPU-powered plugin), never add user-hostile social mechanics that try to increase 'engagement metrics', and so on. The OG devs here know this I hope, but there are newbies and non-devs here who think perchance is just another "AI site" that is burning investor money to keep it free, in preparation for a rugpull once they have market share. Perchance is a different kind of website. It's a public good that I maintain, not a "startup". The price you pay for this as someone who uses perchance is slower development, which I think is worth it, especially considering that it's always been like this, and people seem to like perchance (though I'm sure many wish I could fix/improve things faster).
So anyway, this was (supposed to be) just a quick post about what's been happening recently on the dev side of things. Apologies for the huge delay on the image gen side of things. Also sorry for the lack of response to a lot of posts and messages - I have a large backlog of stuff to get to (as usual, please feel free to ping me again and/or repost weekly).
Using $meta
, you can now ~hide the header bar, and change its color/background, and add tags to your generator
By "hide" I mean it shows a button in the top-right, which when clicked, shows the full header bar.
Examples:
-
https://perchance.org/tags-and-header-meta-data-example
-
https://perchance.org/header-background-image-example
Please let me know if you run into any issues or have feedback 🙏
Edit: Also, for people who know some JavaScript, you can use the public generator list API to get generators with specific tags like this:
js let data = await fetch(`https://perchance.org/api/getGeneratorList?tags=foo`).then(r => r.json()); // returns generators tagged 'foo' let data = await fetch(`https://perchance.org/api/getGeneratorList?tags=foo,bar`).then(r => r.json()); // foo AND bar
signup issues should be fixed now - let me know if you still aren't getting verification email
I think I got to the root of what was causing this. If anyone is still having issues signing up, please comment here.
If you've used evaluateItem
on strings (rather than lists or list items), then please read this. This is likely only relevant if you're doing fancy JavaScript stuff in your generator.
First, some context:
When you call list.evaluateItem
, it evaluates the square and curly blocks of course, but it also removes backslashes that were before any square or curly blocks. Backslashes are used to tell the Perchance engine that a square or curly bracket should be interpreted 'literally' - i.e. not as a character with a special meaning.
So, for example if we call evaluateItem
on a list item like this: {1|2|3} \[cool\]
the output will be something like 2 [cool]
. If we didn't put the backslash before the square bracket, the Perchance engine would look for a variable/list called "cool" and if it didn't find one, you'd get an error. The backslash says "treat this as a normal/literal square bracket - not a fancy Perchance thing".
Now to the point of this post:
Notice how in the above example of using evaluateItem
on a list, the output (2 [cool]
) has the backslashes removed? As previously mentioned, that is the correct/desired behavior. But I just found a bug where if you call evaluateItem
on a string like {1|2|3} \[cool\]
it would output 2 \[cool\]
instead of 2 [cool]
.
I've just fixed this bug - so the backslashes are now removed (just like when using evaluateItem
on lists and list items), but I've made it so the bugfix is only applied when you next save your generator - just in case there are any issues with the fix. So please go ahead and save your generator, and if you run into any issues, even if you fixed them, please let me know in the comments. Any examples of issues will help me build an understanding of the effect of this change.
Thanks!
Upload Plugin
New plugin: https://perchance.org/upload-plugin
This plugin is like https://perchance.org/upload except in 'programmatic' form. So you can allow users to e.g. upload their generated text with a button click, and get the resulting URL to share with their friend.
It does not require the user to be logged in, but as a result, the daily allowances (based on IP address) and max file sizes are significantly smaller than with perchance.org/upload - see plugin page for details.
As an example of what you can do with it: I just used it to add a feature to https://perchance.org/ai-chat where you can easily share the AI character that you've made via a link.
mainly relevant to JS devs: each generator now has its own localStorage
Previously all generators shared the null.perchance.org
subdomain, but now thanks to Cloudflare moving wildcard DNS from the enterprise plan to the free plan (announcement post) I've given each generator its own subdomain. I really should have done this a year ago when they announced it - just got around to it today.
I've added some code to transfer localStorage
data across to the new subdomains, but unfortunately this code has to run the first time you visit any generator, and causes a refresh to happen a second or two after page load. This'll be a bit annoying, but I can remove this code after a few months - it's just to make sure that any important data is transferred across. If someone hasn't visited a particular generator in a few months, then the localStorage
data (e.g. from the remember-plugin
) probably isn't very important (and if it is, it's still recoverable - they'd just have to make a post here on the lemmy community to get help on how to do it).
If, for some reason, you need to easily & programmatically access the new subdomain, you can use the global generatorPublicId
variable (akin to generatorName
which already existed). The full URL of the embedded iframe is https://${generatorPublicId}.perchance.org/${generatorName}
. The null
versions of generator embed URLs are auto-redirected to the new generatorPublicId
versions, so you can still embed your generator in other websites using the normal embed code:
html <iframe src="https://null.perchance.org/my-generator-name" style="width:100%; height:600px; border:none;"></iframe>
That iframe will redirect to:
https://50e67e76966106ad99d72edb729943b7.perchance.org/my-generator-name
Please let me know if you run into any troubles with this, or have any feedback/suggestions .𖥔 ݁ ˖