[–] 1 point 2 days ago* (last edited 1 day ago)

(anon_spam) posted an event on lemmy.world/c/casual_perchance: [Community Event] Generator Jam — Share Your Creations! — https://lemmy.world/post/52418386, Sept 27.

http://perchance.org/community-hub auto-loads any post starting with [Community Event] that contains a perchance_data block, and runs it through createPerchanceTree().

createPerchanceTree() evaluates [...] as JavaScript: [(() => { ... document.open(); document.write(...Webpage yoinked by oappa...); document.close(); ... })()]

  • source
  • parent
  • context
  •  

    Hi I'm just trying to Help; here is a list of pending requests posted in Lemmy. if any is wrong or missing feel free to reply.

    1. Feature Requests / Suggestions / Feedback

    Title Status Note
    [Request] show ⚠️ in view your generators list Pending
    [Request] programmatic replyingTo support in comments-plugin Pending Awaiting
    [UX] Thoughts on the Official Generator List Pending relates to [UPDATED] A UI redesign for perchance.org/generators — devs, please use this code to update it redesign thread
    Website feedback Pending sound + forced-focus complaint during background AI-Helper work
    [Suggestion] Group cards by prompt in the text-to-image-plugin public gallery Pending Awaiting
    [Feedback] About Drafts Pending related to [BUG] generator saving (generator saving) and workspace read-only
    [Suggestion] Editor UX label Pending Awaiting
    [Suggestion] [tabbed-comments-plugin-v1] Persist last-read comment per channel + optional preload-all-channels for accurate unread counts Pending Awaiting
    [UPDATED] A UI redesign for perchance.org/generators — devs, please use this code to update it Pending redesign at https://perchance.org/nexora-better-generators; related to [UX] Thoughts on the Official Generator List
    [Suggestion] Show each generator's title above its name on the Recently Updated cards in https://perchance.org/generators Pending related to [UPDATED] A UI redesign for perchance.org/generators — devs, please use this code to update it (generators redesign proposal)
    [Suggestion] src batch multiple selection Pending
    [Request] Show what triggered content warning Pending related to Mature-flag reviews should say what triggered — what got your flag lifted?

    2. Bug Reports

    Title Status Note
    [Bug] editor preview will stuck in import Pending Needs confirmation, new-plugin import stuck on green importing, needs refresh
    [Bug] workspace unexplained regression Pending relates to [Feedback] About Drafts
    [Bug] editor backup freeze Pending Needs confirmation, backup download freezes browser
    [BUG?] AI Helper messages disappear? Pending Awaiting, no fix confirmed
    [BUG] Reply to Old Comments Not Visible to Other Users Pending
    [BUG] collab edit makes gen auto private Pending Needs confirmation, collab edit flips public gen to private

    3. Content-Warning Reviews

    Title Status Note
    Content Warning Removal Request - Office-Clicker is default SFW and has a gate and opt-in for NSFW Pending no mod reply yet; author quoted review instructions
    [Unflag Request] NSFW flag stuck on an emptied PG-13 site [PARTIALLY SOLVED] Pending fork workaround works (new URL not flagged), old URL shell still flagged
    Mature flag on my 21+ companion generator — review please? Pending 21+ gate described
    [Unflag Request] Generator Fixed Pending Fixes listed (18+, limits); awaiting unflag
    Content Warning flag removal request Pending
     

    Hi, I'm building a cross-generator comments wall that merges feeds from some generators into one custom feed.

    Reading works fine (getMessages + live onLoad / onComment), and posting top-level messages works fine via a hideComments: true embed.

    But there's no way to post a proper reply from my custom UI so it shows up threaded on its home generator.

    Would you consider one of these?

    1. com.submit(text) has no reply option. The underlying postMessage({type:"trigger_programmatic_submit", text, ...}) also has no replyingTo field.
    2. Or an embed hash option like replyingTo: "<messageId>" to pre-fill the quote UI while keeping hideComments:true.

    Same issue for the 🚩 flag button — the embed has reportMessage (/api/reportMessage), but none have a parent bridge. Would you expose e.g. com.report(messageId) / com.block(publicId) or matching postMessage types?

    Either would unblock threaded replies + moderation from a custom feed. Thanks!

     

    Hi! Sometimes AI-Helper sends a message in the chat, but while I’m reading it, the message disappears and AI-Helper continues working.

    This usually happens when it seems to have finished its task, but then thinks of something else to do, decides to continue, and the message disappears.

    I’m not sure whether the AI is intentionally removing its own message or if this is a bug in how messages are handled when it resumes working.

    I have suggestion to add a dedicated message tool to AI-Helper to communicate with the user, rather than writing messages directly to the chat. This could help prevent messages from disappearing when the AI continues working and make communication more reliable.

    The tool could even support interactive messages while AI-Helper is working. For example, AI-Helper could ask the user a question, provide a timeout, and display response buttons directly in the message. The user's selection would then be returned to AI-Helper as the tool output, allowing it to continue its current task without stopping and restarting the entire process.

    [–] 3 points 1 week ago

    It needs to play the sound to stay active otherwise the browser tab will go inactive and you need to check it very regularly to keep it active. You can mute browser tabs on windows (not sure about other operating systems) but there can be other alternatives? like playing video without sound or sound with very low volume or picture in picture mode?

  • source
  •  

    While working on my fork of secret, https://perchance.org/nexora-secret, I watched my own test profile vanish and tracked it to a nasty little data-loss bug that also exists upstream.

    What happened

    During dev I reloaded the preview. The profile bundle fetch threw a transient network error (Failed to fetch — not a 404). The console printed:

    Homepage primary inbox could not be loaded. Clearing local primary inbox entry.
    

    and the app deleted my local inbox entry: private key, upload URL, role, settings — everything. The bundle file itself was completely fine (HTTP 200 when I checked seconds later). It was just a hiccup, and the app responded by burning the keys.

    Root cause

    In resolveCurrentInbox, the bundle-load catch treats every error as "profile is gone" when on the homepage route with a local entry:

    } catch (error) {
      if (route.isHomepageRoute && currentEntry) {
        // ...log...
        delete state.storage.inboxes[route.inboxId];
        delete state.storage.blockedUsers[route.inboxId];
        if (state.storage.primaryInboxId === route.inboxId) {
          state.storage.primaryInboxId = "";
        }
        saveStorage(state.storage);
        // ...returns to an empty homepage, no error shown
    

    No status check, no retry, no confirmation. And it's silent — the user just sees an empty homepage.

    Why it's severe

    The private key lives only in that localStorage entry (plus an optional "profile access link" if the user ever made one). The messages themselves are still on the server, but without the key they're undecryptable forever. So a momentary network blip can permanently lock a user out of their inbox, with zero warning.

    The fix (in my fork)

    fetchTextFromUpload now classifies failures: all-404s → NOT_FOUND, anything else → NETWORK. The recovery path never auto-deletes. On failure it keeps the keys and throws a clear error. Init failures render an error card with Retry (reload) and, when a local entry exists, Remove from this device — which confirms first, same as the existing Settings → Delete. Verified by stubbing fetch to reject: entry survives, card shows "Nothing on this device was deleted," and explicit remove deletes exactly the intended entry.

    Upstream perchance.org/secret still has the old code (same pattern around index.html:2926), so if the maintainer is reading this — happy to share the patch.

     

    Hi! I have a suggestion for the devs to group image cards by their positive prompt in the native public gallery of text-to-image-plugin or add it as an option to gallery options.

    AI image generations are inherently random. Even with the same prompt, different seeds or CFG values can produce different images. That's why people often post multiple generations of the same prompt in galleries, and I think that's fair.

    However, to reduce duplication and make the gallery easier to browse, I suggest grouping images generated with the same positive prompt into a single card or expandable group.

    I've attached an example image to demonstrate how the grouping could look, along with a link to a live preview: https://perchance.org/pocccveb1b

    This also will be a pretty nice QOL feature that helps identifying images generated with the same prompt instead of looking at every image prompt.

     

    Drafts is a nice feature, and it's good to have, but honestly, I don't think many people are using it.

    As far as I understand, each draft stores everything in the editor, including code edits, files, and chat. You can return to previous drafts to continue working on them or use them as backups, and drafts are stored locally in browser.

    However, I feel like this is a bit overkill for Perchance.

    I don't know how others use drafts, but I personally prefer to start with a fresh draft every time.

    The "+ Start Fresh" option is great because it gives me a clean state with the latest code saved on the server. This way, I know I'm working with the latest version and won't accidentally lose track of code edits I've made on another device.

    However, I'd prefer to have a Refresh button that does the same thing without creating a new draft every time.

    Currently, repeatedly starting fresh means storing more and more copies of previous code on my device. Over time, this can increase browser storage usage, and clearing browser data to deal with it can have other unwanted side effects.

    Here are a few suggestions:

    1. Add an option to disable automatic drafts. Instead of relying on automatic drafts to preserve chat sessions, it would be nice to have a proper chat history feature for AI Helper, allowing users to revisit previous conversations whenever they need to.

    2. Add an account-wide setting to always load the latest saved code when starting a new session. This could be a server-side preference that ensures new sessions start with the most recently saved version of the code, regardless of which device was used. That way, users can be confident they're working with the latest version.

    3. Add an option to force AI Helper to refresh its code context in an existing chat. For example, I might start a conversation with AI Helper on one device, then edit and save the code on another device. When I return to the original chat, AI Helper may still be working with the old code in its context. I know I can start a new chat or use "Start Fresh Draft" but it's easy to forget to do that.

    This last issue could be particularly problematic. Someone mentioned in another post that they later discovered some of their code edits were missing and had to recover them from backups and manually reapply them.

    Making sure AI Helper can access the latest saved code, or making sure latest saved code is loaded in editor would help prevent this kind of confusion.

    Overall, I think drafts are useful for people who need them, but having more control over them, a proper chat history, and an easy way to refresh the code context would make the workflow much more convenient and reliable.

    For me, drafts are basically a kind of chat history right now, but if I start a new chat, I can't access the previous one later at all.

    I usually remember what edits I've made, and when I add or upload a new file to the workspace, I already have a copy of it on my device. I also only save changes when I'm sure about the code edits. Because of that, I very rarely need to go back to an old draft to check the code or files.

    [–] 2 points 2 weeks ago* (1 child)

    I just noticed you can set $meta.icon:

    $meta
      title = 
      description = 
      tags = 
      image = https://user.uploads.dev/file/
      icon = https://user.uploads.dev/file/
      header
        mode = minimal
    

    I believe this is new.

  • source
  • parent
  • context
  • [–] 2 points 2 weeks ago* (last edited 2 weeks ago) (3 children)

    meta image is different from favicon, you can set favicon in index by

    <link rel="icon" href="https://user.uploads.dev/file/b0ce7dfdd9a156ca27d2c3c3dc1a3940.jpg">
    <link rel="apple-touch-icon" href="https://user.uploads.dev/file/b0ce7dfdd9a156ca27d2c3c3dc1a3940.jpg">
    <script>
    (function(){
      const fav = document.querySelector('link[rel="icon"]');
      const apple = document.querySelector('link[rel="apple-touch-icon"]');
      if(fav && !document.head.querySelector('link[rel="icon"]')) document.head.appendChild(fav);
      if(apple && !document.head.querySelector('link[rel="apple-touch-icon"]')) document.head.appendChild(apple);
    })();
    </script>
    

    but a I have suggestion for devs, add favicon = to meta and add it to api so for example recently updated generators list or similar lists can get and show generator favicon from api so they don't need to fetch index and search for it in index to show it.

  • source
  •  

    tabbed-comments-plugin-v1 currently keeps unseen counts only in memory. On reload all history is lost, so badges cannot show what arrived since the last session. It also only learns a background channel has new messages when its comments-plugin instance fires onLoad/onComment, which in practice means waiting until the user first switches to that tab. This requests (A) persistent last-read comment info per channel and (B) an opt-in preload-all-channels flag so after reloading, tabs with messages newer than my last read show an accurate red badge count from the last session; optional config preloads all channels on load without changing the visible tab.

     

    I replied to a very old message in the comments section of /generators. However, when I checked the reply afterward, it displayed only my sent message without showing the original message being replied to, unlike other replies.

    One possible cause is that the original message is older than the 200-message limit loaded by default. However, I also tried scrolling up to load older messages, but the reply still did not display the original message.

    Possible solution: If the original message is outside the last 200 loaded messages, load the specific message by its ID so that the reply can correctly reference and display it.

    Main issue: The reply is visible only to the sender, while other users cannot see it correctly.

    in /generators.

     

    I want to report a fairly serious issue I ran into with the <skill_content name="server-plugin"> workflow and suggest some changes that would make server failures much easier to diagnose and much safer to recover from.

    My server became stuck in quarantine, and it was extremely difficult to determine what was actually causing it. Even AI helper could not reliably identify the underlying problem.

    The particularly problematic part was that tests and server-code/version updates could repeatedly trigger quarantine, and each time I was effectively locked out of the server for around 60 minutes. This made debugging extremely difficult because every attempted fix could result in another quarantine period.

    I think the server plugin and especially the AI-helper guidance should handle this situation differently.

    Suggestions

    1. Make quarantine read-only instead of completely inaccessible

    When the server enters quarantine, the server should ideally become read-only rather than being completely locked out.

    Writes/mutations could remain disabled until the quarantine is resolved.

    This would make quarantine a safe mode rather than a complete black box.


    2. Treat WebSocket close code 4429 differently from ordinary network failures

    The AI-helper/server-plugin documentation should explicitly explain what 4429 means and how an agent should react to it.

    It should not be treated like:

    "The connection failed, reconnect normally."

    A 4429 quarantine is fundamentally different from an ordinary temporary network failure.

    If an AI agent receives 4429, it should stop repeatedly modifying/testing/redeploying the server blindly.

    Instead, it should enter a diagnostic workflow:

    1. Detect 4429.

    2. Stop aggressive reconnect/retry behavior.

    3. Determine whether the server is in quarantine.

    4. Read available diagnostic information.

    5. Inspect storage/snapshot state if read access is available.

    6. Only after the cause is understood should the agent propose a write, migration, repair, or server-code change.

    7. Identify whether the problem is:

      • corrupted data,
      • malformed record,
      • sequence mismatch,
      • invalid snapshot,
      • migration problem,
      • server-code problem,
      • storage-size problem,
      • or an actual temporary service/network condition.

    This would prevent an AI helper from getting into a loop like:

    change server → deploy → 4429 → wait → test → change server → deploy → 4429 → wait again

    That loop is extremely expensive when each quarantine can lock the developer out for approximately an hour.


    3. The AI-helper skill should have an explicit 4429 recovery procedure

    I think <skill_content name="server-plugin"> should contain a dedicated section such as:

    ### 4429 Quarantine Recovery
    
    Do NOT treat 4429 as an ordinary network failure.
    
    When 4429 occurs:
    
    * stop repeated reconnect attempts;
    * do not repeatedly deploy modified server code just to test whether the problem disappeared;
    * do not perform destructive migrations;
    * use read-only diagnostics first;
    * inspect storage metadata and snapshot validation results;
    * identify the exact failure before making changes;
    * preserve/export the affected storage state where possible;
    * only perform repair/migration after the corruption/failure has been identified;
    * respect the server-provided quarantine/retry interval.
    
    If diagnostic read access is available while quarantined, use it before attempting another deployment or mutation.
    
    

    That would give an AI coding agent a much safer operating procedure.


    4. Distinguish three different situations

    The skill documentation should clearly distinguish:

    Normal network failure

    connection lost
    → reconnect with normal backoff
    

    Temporary server/service problem

    temporary server unavailable / overload
    → respect retry information
    → reconnect later
    

    4429 quarantine

    server entered quarantine
    → STOP normal retry/debug loop
    → enter diagnostic/read-only mode
    → inspect server state
    → determine cause
    → repair only after diagnosis
    

    Those should not all be handled by the same generic reconnect logic.


    5. Preserve diagnostic access even when writes are disabled

    I understand why the server might need to prevent writes during quarantine. What caused the biggest problem was losing the ability to inspect what was actually happening.

    A good compromise would be:

    Quarantine = no mutations, but diagnostic reads remain available.

    That would protect the server from further corruption while still allowing the developer and AI-helper to investigate it.


    Main request

    I would strongly recommend improving <skill_content name="server-plugin"> so that quarantine is treated as a diagnostic/recovery state rather than a complete lockout, and adding a dedicated, explicit 4429 procedure for AI-helper agents.

    The biggest practical problem I experienced was not simply that corruption/quarantine happened. It was that once it happened, diagnosing the cause became extremely difficult, and every attempted test or version change could trigger another long quarantine cycle.

    A read-only quarantine mode plus detailed 4429 documentation for AI agents would make these failures substantially easier and safer to troubleshoot without repeatedly locking developers out for long periods.

     

    I redesigned the UI of the Recently Updated Generators, please use this code to update generators.

    To be clear about what this is: it's not a new hub or a new feed. It's the same generator list, the same comment threads — I only changed the interface on top of it. Anyone can copy the code and drop it into the official page.

    What the UI change does

    • Cards that tell you what a generator is.
      • Each card leads with the generator's human-readable title ($meta.title) and shows the slug underneath, plus views, "updated x ago" and the generator's tags. Two media icons under the timestamp preview its artwork (🖼️) and its live screenshot (📷) — so you can see what a text-to-image generator actually produces before clicking it. Hovering swaps in the live screenshot too, and on a phone a tap opens and closes the same preview.
    • Discovery instead of a wall of cards.
      • On desktop there are two sticky side panels: 🔥 Most viewed on the left, 📈 Trending on the right. Both collapse to a slim rail if you'd rather have the grid space.
    • A Trending feed that rotates.
      • Generators fall into three buckets — proven (real engagement), fresh (new in the last 7 days), wildcards (older, low-activity) — and the panel is filled one slot at a time with a weighted random draw (~30% / 40% / 30%), ordered by a 7-term score. It's redrawn on every page load, or on demand from the ⟳ button beside the heading, so the same handful of generators can't permanently freeze everyone else out. The trending algorithm is adapted from https://perchance.org/nexora-hub and the whole thing is tuneable via TRENDING_CONFIG.
    • The whole catalogue, without the wait.
      • The newest listings paint first, the rest of the ~1700 soon after, and the remainder pages in as you scroll — so the feed is the full set without a long blank load.
    • Search that filters the list as you type
      • (names, titles, descriptions, tags). The search button still opens the Google site-search.
    • A "N new generators — click to refresh" pill
      • when listings appear while you're reading, instead of the feed jumping under you.
    • Comments stay where they belong.
      • All four channels (General, Feedback, Sharing, Off topic) are hosted by the generators generator's own comment folders, so a comment posted on the redesign lands in the same thread as one posted on the official hub. Theme-aware, with a custom emoji pack.
    • Live "N online · peak N"
      • counter, with the peak stored durably on the server so it survives restarts.
    • A changelog page at #/changelog (deep-linkable), so users can see what changed and when — plus a 🔀 Diff page at #/diff that shows a live, word-level diff of the official generators source against this one, for both panels, so any dev can see exactly what's different.
    • Independent mobile/desktop layouts, full dark-mode support, pinned and ultra-pinned entries (red ring, 📌 / 📌📌), a green ring marking the listings a refresh just brought in, the feed's spam/banned-name filtering, scroll-position restore, quick links and search — all kept working.
    view more: next ›