I’d been putting this off for quite a while because I thought it’d require a database restructuring, but I realized just now that there’s an easy way to do it, so it’s done. Thanks for nudging me again on this! (IIRC you [and several others] asked for this feature quite a while ago)
Currently it just allows you to change the channel and submit again. It’s a bit annoying imo - ideally you’d be able to have a list of pinned channels names and just tap the channel name to send it there. But less annoying than before, for sure. Please bug me to improve this at your leisure.
Also, side note: I really need to finally get around to upgrading the image models themselves. This is very high on my priority list, and it should result in a pretty substantial improvement in image quality and prompt comprehension. I’m always a bit too optimistic, but I’m hoping to finally get this done within the next few weeks - fingers crossed.
Thanks! Should be fixed now. I think it would have occurred in cases where the image gen iframe was removed just after the image finished generating.
Unfortunately a 13B model probably isn’t going to cut it. Perchance uses a popular open source 70B Llama-based model (you’ll come across it’s name almost immediately if you look at top model lists, but any of the top models will work fine - and you should use the recommended parameters in the HuggingFace repo). If you can’t run a 70B models, then I’d recommend these two places to find a 30B/20B/13B model to suit your specific use case, depending on your GPU size:
This community is not well-suited to helping you get it set up, but the above two communities have lots of info.
Yep you summarized it well, thanks! The only thing I’d mention, is about this dot point:
Later on (as long as the local storage is not cleared) you can navigate again to that newly created page (while still not logged in into an account) then enter the edit password after clicking save to return back/apply your changes to the generator.
The “as long as the local storage is not cleared” part can be removed - as long as you have the password, you can edit it. So e.g. you can share the edit password with a friend and they will be able to edit the generator too. But note, if you’re editing at the same time as your friend, you’ll overwrite one another’s work. Once I get the upgrade to CodeMirror 6 done, I’d like to add real-time collaborative editing (like a google doc, via a simple link you can share with your collaborators) so this won’t be an issue.
Also @wthit56@lemmy.world the signup issues should hopefully be fixed for real this time, but do let me know if you hear of any more reports about this.
Thanks for the heads up! I’m trying to get syntax highlighting for Perchance code working with CodeMirror 6, and if I do then I’ll need to completely replace the search stuff. So I’ll hold out on fixing this for now - but please ping again if I’ve not done this in a few weeks.
Hmm, this error is related to your device’s storage limits - since chats are stored on your device rather than on a server. Is your device’s storage nearly full? Or is your chat massive (i.e. multiple novels worth of text in the chat logs)? If you could paste chat logs into a character counter, and let me know, and also let me know the device/OS and browser you’re using (e.g. Samsung A50 + Chrome, or iPhone + Safari), that would be helpful so I can try to replicate this error on my end.
Oof sorry about that! There was a very silly bug in moderation/spam detection stuff - fixed now. Thanks for the clear bug report 🙏
(aside: i’ve been listening to the music on /starlitsky for the past 30 mins - since starting on fixing this bug, it’s nice:)
Yep, fair point. Done. I didn’t sticky this btw - I’m not sure if I’ve ever stickied a post on here.
Heads up: Just found a critical issue with the new approach - had to disable it for now, so it’s back to the old approach. Need to sleep soon so probably won’t solve it today, but will hopefully get it solved tomorrow 🤞
Oh, strange! Are you able to reliably reproduce this? Even if only 1 in 100 or something? I don’t mind generating a few hundred images if that’s what it takes to reproduce this. Does it happen with specific prompts/seeds, or e.g. only when using square brackets in prompt, or high parenthesis weightings, or just completely randomly and very rarely?
Yep you guessed right - it’s for the screenshot API. I’m sure there is a smarter way (maybe load with param in URL or something), but it was a quick solution
Hmm. I just tested with a gmail address, and it works, but it took a while, and it went to the spam folder.
Since temp-mail.org has always worked, and has been fast, I’m 95% sure that it’s due to some residual ‘blocking’/filtering that gmail is doing, due to the spammer issue that perchance was hit by a while back. I think it’s only a problem with gmail addresses, but only some of them, for some weird reason.
I’ll add a note on the verification screen to tell them to use temp mail for now (and switch email later) if it’s not working. Another solution is probably to send an email to the email address that the verification email gets sent from (or manually add it to contacts list). That should mark that email address as not-spam, which would hopefully make it easier for the verification email to get through. I’ll add a note about that too.
Yeah so I did end up upgrading the whole stack (as I mentioned in the other thread), thinking that that would surely fix this gibberish problem once and for all, but it didn’t. It should happen a lot less now though, since I have added detection code which catches a decent percentage of the machines that get into the broken state. I’ll keep improving the detection code so it should happen less and less over the next week or two.
If you have links to bug reports that you’re talking about, please do share them - I want to be sure that it’s the same issue that I’m talking about here. If there are issues that are still quite common, then it’s possible there are other issues that I’m not aware of.
I guess because you’re always copying everything onto the window object?
Update: I’ve now added a more general fix so I don’t need to do this copy-everything-to-window stuff anymore. Along with solving some miscellaneous bugs, it also fixes the annoying thing where the engine needed to overwrite inline onclick
/etc resulting in them ‘disappearing’ when you look for them in DevTools. Hopefully this fix hasn’t introduced any bugs. Please let me know if you spot any issues! @VioneT@lemmy.world @BluePower@sh.itjust.works
The overall goal here is to push the engine closer and closer to “It’s just HTML/JS/CSS (plus some Perchance stuff on top)”, instead of having all sorts of engine implementation details “getting in the way” of HTML/JS that should work fine.
Edit: Had to disable the new approach due to an issue, but will hopefully be able to re-enable it tomorrow if all goes well.
Very cool!! Nice job on this. One thing I was just imagining was an optional “high quality” mode where it screenshots the page using getDisplayMedia
, which will be more accurate (e.g. iframes, modern CSS, etc.), but has the downside that it requires a browser permission popup:
async function captureScreenshot() {
try {
// Request screen capture permission if not already granted
const stream = await navigator.mediaDevices.getDisplayMedia({ preferCurrentTab: true });
// Create a video element to capture the stream
const video = document.createElement('video');
video.srcObject = stream;
await video.play();
// Create a canvas to draw the video frame
const canvas = document.createElement('canvas');
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
// Draw the current video frame to the canvas
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
// Stop all tracks in the stream
stream.getTracks().forEach(track => track.stop());
// Convert the canvas to a data URL (PNG format)
return canvas.toDataURL('image/png');
} catch (error) {
console.error('Error capturing screenshot:', error);
return null;
}
}
https://perchance.org/getdisplaymedia-screenshot-example
If the mode is set to high quality, and the user denies the permission (or their device doesn’t support it - e.g. mobile devices don’t currently support getDisplayMedia), then it could fall back to the normal approach.
In any case, well done with this plugin!
Nope, it’s not malware or “shady” - it’s a very widely used bot-prevention service by Cloudflare, a reputable company, and it’s specifically designed to be privacy-preserving: https://blog.cloudflare.com/turnstile-private-captcha-alternative/
An example of the (scary sounding) “fingerprinting” you mention is checking whether the browser viewport is actually being rendered into pixels (as opposed to it being a “headless” machine with no actual rendering, which is a sign of a bot). These sorts of checks are harmless, and they make things like Perchance’s AI plugins possible when they otherwise wouldn’t be.
The modern internet is built upon bot and fraud prevention mechanisms. The economics of the internet wouldn’t work at all without them. You’re free to block scripts on your machine of course, but “begging website administrators to remove these scripts from their websites” is plainly naive, and wastes the time of said admins. (Edit: This sentence came out a bit harsh in hindsight, sorry about that. I’ll leave it here for accountability.)
I’m not adding paid features to Perchance. It’ll always be completely free. This means bot prevention checks are required for generators that import ad supported plugins (i.e. AI plugins). You have very specific requirements, so you should use a paid service instead of Perchance. (Though note, to get through the checkout of said paid service, Stripe will run a bot/fraud check against your browser and your IP, let alone getting your credit card number which is obviously tied directly to you. Maybe find one that accepts crypto - or even better, support open source by joining the local ML community: reddit.com/r/LocalLLaMA)
It’s definitely possible, since all the code for generators on Perchance is openly available and downloadable, but currently there’s unfortunately no “one-click” way to do this right now - and it still would require a bit of coding knowledge at this point.
I think I wrote a comment related to this a few months back - basically you’d need to use something like ollama or llama.cpp or tabbyAPI or Aphrodite or vLLM or TGI (…etc) to run the AI text gen model (and for image gen, ComfyUI or Forge WebUI). Unfortunately even a top-of-the-line gaming GPU like a 4090 is not enough to run 70B text gen models fully in VRAM, so it may be slow. And then you’d need swap out some code in perchance.org/ai-text-plugin and perchance.org/text-to-image-plugin so that it references your localhost API instead of Perchance’s server. You’d just fork the plugins, make the changes, then swap out the imports of the ai plugin for your new copies in the gens you want to self-host.
Someone in the community with some coding experience could do the work to make this easier for non-coders, and hopefully they share it in this forum if they do. I’ll likely get around to implementing something eventually, but probably won’t have time in the near future.
I’ve just updated the dynamic import plugin so it’s a bit more helpful with the error message. Looks like you’re passing undefined to dynamicImport
.
The error messages in Perchance are, in general, atrociously unhelpful. I really need to overhaul it so bugs like this are easier for you to find. From some fiddling with Chrome DevTools, it looks like the first instance of this type of error is occurring on this line:
dynamicImport(document.i, 'preload');
i.e. document.i
is undefined when that runs.
@VioneT@lemmy.world You also mentioned people asking for resources button on Discord. What are the most common reasons people used the resource button? E.g. upload, plugins, templates, …? And is it frequency-of-access that makes the current situation annoying, or is it that newbies aren’t able to find plugins/templates/etc. in the first place?
Thanks!