perchance

joined 3 years ago
[–] perchance@lemmy.world 3 points 6 days ago* (last edited 6 days ago)

Hi, sorry about this, the moderation flags currently don't give any specific info to explain what caused it, so I understand the confusion. For your specific case, it may be a coding mistake by your AI if you used one to create it - try pasting the message below to the AI Helper:


The Privacy warning isn't about nicknames, scores, or public chat. Those are fine. It's about private messages. The DM panel says "Private", but two kinds of people can read anyone's DMs.

First, you: your admin/creator password passes the ownership check in nickCallerOwns, which dmPoll and dmSend use. If you want admin/creator access to DMs for moderation, just make that clear to users in the DM panel (for example "Admins can read private messages for moderation.").

Second, other players on the same IP address (same home, school or mobile network): for normal nicknames, nickCallerOwns also accepts a matching IP, so they can take a nickname and read its DMs. To fix it, make dmPoll and dmSend accept only the nickname's real owner (the uuid), not your admin/creator password or the IP. Then request a review again.


(the above message was written by an AI, I haven't personally checked so it could be wrong - let me know if you disagree)

[–] perchance@lemmy.world 6 points 6 days ago (1 children)

Generators that import ai-text-plugin or text-to-image-plugin have an ad displayed at the bottom of the page which funds the GPUs required to support those plugins. If you don't import either of those plugins on your generator, then no ads are ever shown.

Note that if you're logged in, then no ads are ever shown, even on pages that import ai-text-plugin or text-to-image-plugin. The idea is that you're contributing to the perchance ecosystem/community via creating stuff (that's the whole point of having an account on perchance), instead of via seeing ads.

[–] perchance@lemmy.world 1 points 6 days ago (1 children)

Sorry about that! Fixed.

[–] perchance@lemmy.world 3 points 6 days ago (2 children)

From an AI, paste this to AI Helper to check/fix:

The privacy warning is correct. When you are signed in, AI Hub saves your chats, characters and projects to an "editable" file named after your username (aihubbk-yourname). Editable files are public: anyone who knows the name can open the file. Usernames are shown in Community, so anyone can read other users' chats. The second warning is likely because of the message you added that tells visitors the Perchance warning is a mistake and safe to ignore. To fix both, give each account's file a long random name (keep that name on your server, not based on the username), or encrypt the data before saving it. Then remove the "false flag" message, and request a new review from the warning's "More info" box.

[–] perchance@lemmy.world 1 points 6 days ago (1 children)

Thanks! Should be fixed now.

[–] perchance@lemmy.world 5 points 1 week ago* (last edited 1 week ago) (4 children)

Thank you for the report! Should be fixed now. The issue was hideIfScoreIsBelow defaulted to zero (if param was omitted) when you bypass the plugin and fetch the server endpoint directly using the super-fetch-plugin. So @ccufcc@lemmy.world was correct that it was related to your custom code, but I've just fixed it on the server side so the default is now "don't hide regardless of score" if the parameter is omitted from the request URL. Thanks again for the bug report.

[–] perchance@lemmy.world 2 points 2 weeks ago

Thanks! Fixed.

[–] perchance@lemmy.world 3 points 3 weeks ago (2 children)

Please check this (it may be wrong - from ai helper):

The "Save as proven" button in Proof Lab still sends the user's phrase, with no opt-in, to a server vault that any visitor can read. Meanwhile the page tells users it was "Saved as proven on this device".

Also check for anything that could be reasonably interpreted as a feature designed for creating celebrity/real-people nudes/deepfakes, since I think it's flagged for that too. If there's nothing like that, let me know - it could be a false positive.

[–] perchance@lemmy.world 4 points 3 weeks ago* (last edited 3 weeks ago) (17 children)

@Mack2@lemmy.world sorry about this! I'm rolling out a new moderation system - can you check if your generator has anything that might trigger the "may publicly show user inputs that most users would expect to be private by default" message? And also features that might be interpretted as specifically designed to create nsfw deepfake images of real people. You can ask the AI Helper to do a search for anything that might be triggering it. If you've checked and made any relevant changes and waited an hour or so and it's still not fixed, please let me know. If you can't find anything and think it might be a false positive, please also let me know and I'll dig deeper. It's very possible this new system needs some tuning.

@Bestaigen@lemmy.world I believe the message "may log or publicly show user inputs that one might expect to be private by default" is gone now. The reason it didn't go away immediately after you fixed the issue is because the moderation system was overloaded. Sorry about that, and thank you for letting me know. I'm working on making it faster so this doesn't happen again, though it'll likely always take at least 20 minutes, so I should make that clear in the UI somewhere.

[–] perchance@lemmy.world 5 points 1 month ago (4 children)

Hi, thanks, you can DM me here on lemmy by clicking my username and then clicking the "Send message" button on my profile page.

22
[dev] Short note (lemmy.world)
submitted 1 month ago* (last edited 1 month ago) by perchance@lemmy.world to c/perchance@lemmy.world
 
  • As everyone noticed, the ai coding helper had to be downgraded to a worse model due to ballooning costs as more and more people use it - I didn't expect the ai helper to get this popular. I'm working on a way to get it back to a smarter model, which will bring back the visible thinking text. Unsure how long it'll take.

  • I'm still working on fixing text-to-image-plugin since the emergency downgrade ~4 months ago. Still unsure on ETA. It is harder than I expected (as usual), but I have made good progress.

  • I'm not sure if anyone has noticed, but over the last couple of months I've been working a lot on comments plugin moderation systems. It's still very far from perfect, but seems to be much better than before at catching bad behavior, and it should also be better at not accidentally punishing benign behavior. So the report/flag button on comments should work better now. Please let me know (via lemmy post) if you or anyone else gets an undeserved ban or any other issues. Again, it's still far from perfect, and some aspects are easier to fix than others (mainly due to needing to run the moderation cheap enough to keep everything free), but I'll keep iterating on it.

[–] perchance@lemmy.world 1 points 5 months ago (3 children)

Sorry for the delay here, I think I've fixed this - please let me know if you still see issues (pls refresh the page to get new updates).

Thanks again for all your bug reports. I'm still in the process of fixing a bunch of issues. Hopefully things will be back to a more stable state soon.

[–] perchance@lemmy.world 4 points 5 months ago (10 children)

Sorry about all these bugs, and thank you for all your bug reports! I've been migrating everything to new, bigger servers (to hopefully fix comments plugin lag and a bunch of other issues), and so I've likely introduced a bug in collab stuff during that process. That said, I have tried about 5 times now and haven't been able to reproduce the issue. Have you noticed any specific sequence of actions which I might be able to try to reproduce it?

 

I didn't expect it to take this long for me to get the new text model under control. It's much more intelligent in general, but the repetition and random fixations can get surprisingly bad.

Sorry about that. This is just a heads up that I'm still working on it, and it'll likely remain a bumpy ride for the next couple of months.

Thanks to those who have complained here and on reddit, especially the posts that give concrete examples of issues, and attempted workarounds, etc.

Please do keep posting any issues/discoveries, ideally with share links to give me specific examples that I can test.


Other news:

  • I'm still working on the next image gen update, and am hoping it will improve fine details, text rendering, and overall image quality. It should also be about 2x faster. If all goes well (which, from experience, it won't) I should be able to get that done in the next month or so.

  • For a long time I've been very close to shipping a multiplayer plugin and database plugin. I've actually made multiple 'ready to ship' draft plugins of both, but have been disatisfied with the design and ended up not publishing each time. Using these plugins won't trigger ads on the generator, so I need to be really careful about the overall architecture to ensure the the servers for them are dirt-cheap to run. I also want to make them fun/simple to use of course. Once I get text and images stable, I'm going to focus on these two plugins and finally get them done.

 

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.

 

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).

 

I've received a few messages from experienced developers asking how they might be able to help improve Perchance. I typed out a decently long (but somewhat rambling and incomplete) response to a message just now and figured I might as well post it publicly for the benefit of others who are interested.

The TL;DR is probably: The most impactful thing that devs can do for the perchance community is to just have fun building things (generators/plugins/etc) that are interesting/useful to you, and then share your creations with friends or communities that might enjoy them. This is very helpful!

Message response below:


The Perchance site itself is really just a code editor with a sandboxed iframe (that the code is thrown into), and a mongodb server for accounts/generators, so not a lot of my dev time goes into that level of the platform. And the DSL/engine doesn't change much at this point (though an overhaul will likely come at some point), so most of my time is spent on creating plugins, examples/applications, and stuff like that.

I could add a bunch more features to the site, but I prefer to keep the foundation very simple, which is why I create plugins like perchance.org/upload-plugin and perchance.org/comments-plugin and so on. I.e. instead of adding comments as a "native" feature, I just add it as a plugin, which allows me to be more nimble and experimental.

There are limits to this, of course. One native feature that is sorely needed imo is collaborative editing - akin to Google Docs, so you can just share a link to start working on stuff with others. Another is optional AI-assisted code auto-completion. For both of those I need to upgrade to CodeMirror 6, but the Lezer stuff is kinda gnarly. If someone managed to get the Perchance DSL highlighted with CodeMirror 6 that would be very handy, but this is definitely not a "good first issue". I did spend one day on it, thinking that's all it'd take, but I now realize that it's something which I'll need to set aside several days for, and I've been putting it off.

Here's the basic setup for CodeMirror 6: https://perchance.org/codemirror6-basic-html#edit

And I originally thought I'd use the same mixed parsing approach that @codemirror/lang-html uses, except instead of the HTML script tags triggering the transition from non-JS text to JS-highlighted text, it'd be square brackets (and function headers), but I think the problem with that is that the HTML parser has the advantage that the closing script tag in HTML code always means "end of JS" (even if it's e.g. in the middle of a JS string! this can be somewhat surprising to many web devs), whereas closing square brackets can 'validly' occur in JS code without necessarily indicating the end of a square block. Someone here seems to have come to the conclusion that Lezer might not be a good fit for this sort of thing, and so a stream parser might be the way to go, but I'm not so sure, because IIUC, @codemirror/lang-javascript manages to do it with template strings. I.e. ${ to indicate start of JS, and } to indicate end. That's almost identical to what is needed for the Perchance DSL, so it seems like Lezer can do this. But maybe @codemirror/lang-javascript is doing some non-Lezer stuff, since IIRC there are some proprocessing/tokenization things you can do before it gets passed to Lezer. Either way, using the official JavaScript (or html/markdown/etc - which includes it as a sub-module) parser, with some minimal modifications, is probably the way to go, since I don't want to have to maintain a from-scratch lib of that level of complexity.

So that's one thing that comes to mind right now, but that said, probably the most helpful thing that community members can to do to help Perchance is to create generators/plugins/games/etc. An interesting one that I noticed a few days ago, as an example: https://perchance.org/ai-roguelike and another: https://perchance.org/infinitecraft-but-its-a-trading-card-game

The advantage of helping in this way is: 1) it's fun and you can just build stuff that's interesting to you, and 2) it doesn't require any coordination with me or anyone else. The latter point is pretty important because I'm a pretty solitary/hermit type of person, so it may be hard to get in contact with me for several weeks at a time.

I've spent quite a bit of time recently building generators to try and provide examples of games/experiences/tools that can be created with the AI plugins. The more people there are doing this, the more I can move down to the lower levels of Perchance. My bottleneck is currently at the higher "application" level, rather than the platform level, if that makes sense.

 

By "hide" I mean it shows a button in the top-right, which when clicked, shows the full header bar.

Examples:

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:

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
 

I think I got to the root of what was causing this. If anyone is still having issues signing up, please comment here.

 

See plugin page for details and examples:

https://perchance.org/favicon-plugin

 

As was noted on the plugin page, this was on the roadmap, but not yet supported. I've added support now thanks to a prod from @wthit56 so you can treat it just like you would a normal 'static' import.

One nice use case that this properly/robustly unlocks is the situation where you e.g. have a plugin that you've made, and you want to import the comments plugin so people can chat about your plugin and ask questions, but you don't want to cause all importers of your plugin to automatically get the comments plugin as a dependency.

If you just dynamically import the plugin in your HTML panel, then importers of your plugin won't get the comments plugin as a dependency. Example:

https://perchance.org/import-only-in-html-panel-no-dependency-example#edit

(Reminder that, as mentioned on the dynamic import plugin page, you should only use the dynamic import plugin in very particular scenarios, like this one, or e.g. when you have hundreds of imports but only a subset of those imports tend to get used by any particular user of your generator. Regular imports will generally allow for much faster generator loading, since all the data is preloaded.)

 

As usual, the Chrome team is leading the charge on some exciting new web platform tech. The goal is to release some prototypes and eventually write up the feature as a browser standard that would make its way into all browsers (i.e. not just Chrome).

The point is, it'd run completely on-device (no cloud access, works offline), so it'd be a very small model, but would likely still be smart enough for a lot of tasks - e.g. summarizing text, converting a list of words into a grammatically correct sentence/description, guessing an appropriate emotion based on some character dialogue, etc.

Article: https://developer.chrome.com/docs/ai/built-in

The key problem with these text generation models is how massive they are. They're so big that they could literally fill your entire device (for smart phones and cheap laptops, at least), and would bloat the initial browser download time from a few minutes to a few days for a lot of people.

Still, smaller models are getting surprisingly smart, and while they're still several times the size of the actual browser download itself, this download can be done in the background.

Either way, I'm excited about this new direction, because there are lots of tasks that don't require an extremely smart model, and so it's overkill to use /ai-text-plugin, especially since it means ads will be shown for non-logged-in users.

One problem that I do anticipate, is that the models will be extremely "safety-oriented", meaning refusal to even generate stuff like violence in a DnD fantasy adventure, and stuff like that. I know from experience that Google's Gemini models have false-positive-refusal rates that almost make them unusable even for many sfw tasks. There is a mention of LoRA fine-tuning in the article, which is very exciting and might help with that. If you're a web dev, you can use the links on the page to test their prototypes and give constructive+professional feedback on them. It'd be good for the health of the web platform to have some of the feedback be for use-cases like Perchance, and not just e.g. business applications.

Tangentially, builders here may also be interested in Transformers.js which allows you to run AI models in your browser. Ad-free AI plugins could already be created using this project, although for a lot of models the download times are a bit too long, and processing times also a bit too long (for mobile devices especially). Still, the situation is improving quite rapidly. /ai-character-chat already uses Transformers.js for text embedding.

 

It basically allows you to specify to different colors - one for if the user's device is in light mode, and the other if they're in dark mode. Here's an example gen showing how to use it:

https://perchance.org/css-light-dark-test#edit

<style>
  html { color-scheme: light dark; } /* this line is important! otherwise the code below won't work */
  
  body {
    background: light-dark(lightgrey, black);
  }
</style>

<p style=" color:light-dark(blue,lime); ">this text will be blue in light mode and lime in dark mode</p>

Note that this is a very new browser feature, and a lot of people are on older browser versions, so for at least the next few months you should probably still add a default color before your light-dark color like color:blue; color:light-dark(blue,lime);. That way the older browsers will still get the right colors, but in the newer browsers the light-dark color will override the default color.

 

This likely won't be relevant to a lot of devs here, because the remember plugin does the job fine in most cases, but:

Here's a normal text input (id is not needed for this example, but is almost always needed so adding it here):

<input id="thingyInput">

And here's one which remembers what you type into it even after page refresh:

<input id="thingyInput" oninput="localStorage.thingy=this.value" value="[localStorage.thingy || '']">

Of course, the remember-plugin can do this for you, but I often find myself reaching for the above pattern for its simplicity.

localStorage is what the remember-plugin uses behind the scenes - whatever you store in it will be persisted even after page refresh. It's a built-in browser/JavaScript feature - not something that's specific to Perchance.

The || '' in [localStorage.thingy || ''] means or ''. In other words, it means or output nothing. If you want a default value for when the user loads the page for the first time, you could write [localStorage.thingy || 'blah'] which means "use whatever is in localStorage.thingy if it exists, otherwise use 'blah'"

view more: next ›