Prepare my plugin for Tone Picnic so I can drag ONE file onto https://tonepicnic.pages.dev/upload.html and have its details, desktop downloads, and playable browser version ready together. I may not know programming or plugin formats. Work in the project I have opened or supplied. Explain decisions simply. Do the preparation yourself; do not give me a long list of technical tasks. FIRST, ASK ME HOW PEOPLE CAN USE THIS PLUGIN Before packaging, check for existing LICENSE/COPYING files, dependency and framework terms (for example JUCE, iPlug2 or GPL code), bundled samples and assets, and required notices. If the project already has a clear license that applies to this release, tell me in one plain sentence what it lets people do, and use it. Otherwise ask me this question, in these words, and wait for my answer. Leave out any option the project's existing terms do not allow, and say why in one sentence: How do you want people to be able to use your plugin? A. Free to use, code stays private. People can download it and use it in their music. They can't copy, resell, or change it. B. Open source, no strings. Anyone can use, change, share, or sell it, as long as they keep your name on it. (MIT) C. Open source, changes stay open. Anyone can use and change it, but whoever shares it must share the source code too, including you. (GPL-3.0) D. I'm not sure yet. Never choose for me. Set project.license in patchwork-upload.json to exactly: A "Free to use, code private"; B "MIT"; C "GPL-3.0-only"; D "Not decided yet"; or the existing license's name and version. PRIMARY DELIVERABLE Create a real, playable WAM 2 (Web Audio Modules version 2) browser version of this effect, alongside its available desktop builds. Package everything into ONE .tonepicnic.zip. Building the WAM 2 version is a primary task, not an optional suggestion. Inspect source, build instructions, processing code, UI, licenses and dependencies first. Use the actual effect processing; do not replace it with a similar-sounding approximation and claim it is a port. Preserve my desktop project and existing work. A compiled VST/AU binary alone generally cannot be converted to WAM 2. If the required source or toolchain is missing, ask for the specific missing item. Complete the supported work and clearly report any genuine blocker. Never manufacture builds, test results or redistribution rights. Do not spend money, deploy hosting, publish, or upload files on my behalf. Tone Picnic handles hosting after I approve the upload. MAKE THE BROWSER VERSION Follow the current official WAM 2 SDK documentation and the project's supported build tools. Port its DSP to WebAssembly/AudioWorklet where appropriate, expose controls/presets/state, and include a usable plugin UI. The entry module must default-export a WAM 2 plugin class with createInstance; createAudioNode/createGui/destroyGui and lifecycle behavior must work with a WAM host. Include the dependencies locally. Use relative import and asset URLs resolved against import.meta.url, including inside worklets. Do not hardcode localhost, a hosting domain, or absolute root paths. The module is hosted at a versioned nested URL on a separate origin from the player. Do not require server code, cookies, credentials, external CDNs, eval, or third-party accounts. Bundle HTML templates into JavaScript; standalone .html assets are not accepted. Make an inner browser ZIP with these files at its root (no enclosing folder): patchwork.json: {"schemaVersion":1,"format":"wam2","entry":"index.js","descriptor":"descriptor.json","licenseFile":"LICENSE"} descriptor.json must include nonempty name, vendor, version (each <=160 characters), and apiVersion "2.0.0" (or the supported WAM 2.x.x version). Include the actual license text, entry, processor, GUI, WebAssembly, and all necessary assets. All manifest paths must exist, using exact capitalization. Browser limits: ZIP <=25,000,000 bytes; expanded total <=25,000,000 bytes; at most 64 regular files; each <=10,000,000 bytes. Paths <=240 characters, simple relative ASCII letters/digits/spaces/_/@/+/()/./- and slash separators. No hidden files, dot segments, symlinks, duplicate names ignoring case, password protection, ZIP64, or desktop executables. Supported extensions: js,mjs,wasm,json,css,png,jpg,jpeg,gif,webp,avif,svg,ico,woff,woff2,ttf,otf,wav,mp3,ogg,flac,txt,md,gz,xz,dsc; extensionless LICENSE,COPYING,NOTICE,AUTHORS,SHA256SUMS are allowed. Store or Deflate compression. Include corresponding source/notices where the license requires it; a private source upload does not satisfy a public source-sharing obligation by itself. Use a supported .gz source archive when needed. Test initialization in a real WAM 2 host, the UI, actual non-silent audio, parameter changes, bypass, presets/state, cleanup, and supported sample rates. Avoid blocking operations and unnecessary allocation in the audio callback. Compare native and browser processing where possible, recording differences and tests actually run. Static ZIP validation alone is not an audio test. If a faithful working port cannot be completed, explain why and keep usable desktop builds available; do not label a placeholder as playable. DESKTOP DOWNLOADS AND LICENSE Prepare separate ZIPs for real VST3, AU, CLAP, VST2, or standalone builds that exist or can be built using this project's supported toolchain. Retain bundle structures, resources, signatures, installation instructions and licenses. AU is macOS only. Label processors x64, arm64, or universal only when verified. Never relabel source or a browser build as a native plugin. Report systems you could not build or test. Tone Picnic currently requires at least one desktop build before publication. Apply the license from my answer above and keep every required third-party notice. A metadata label does not license a file, so include the actual terms in each archive: the official text with the correct owner and year for a standard license such as B or C; for A, a short plain-language LICENSE naming the copyright owner and stating those permissions, and tell me it has not been reviewed by a lawyer; for D, a LICENSE saying all rights are reserved until terms are chosen, and tell me Tone Picnic will ask me to choose before publishing. For C, tell me my source must be available to anyone who gets the plugin, and that Tone Picnic keeps source ZIPs private unless I choose to share them. Optional source ZIPs stay private by default. Never include .env files, credentials, keys, signing certificates, account data, private backups, version-control folders, node_modules, caches or unrelated files. ASSEMBLE THE SINGLE PACKAGE Create a new tonepicnic-ready folder with only: - the desktop ZIP(s); - the working WAM 2 browser ZIP, when completed; - an optional private source ZIP; - patchwork-upload.json as below; - optional START-HERE.txt (<=32,000 bytes): a short build/test summary and honest blockers. Each inner ZIP <=100,000,000 bytes (browser ZIP has the tighter limit above), at most 10 ZIPs, one browser ZIP. Total package and expanded contents <=300,000,000 bytes. Tone Picnic allows 10 projects/account and 512,000,000 stored bytes/account, including hosted browser assets. Do not silently omit required resources to fit limits. patchwork-upload.json is UTF-8 JSON (<=50,000 bytes), no comments, with exactly these keys. Replace all example values and list ONLY the files actually present: { "schemaVersion": 1, "project": { "title": "My Plugin", "description": "A plain-language description of what it sounds like or does.", "version": "1.0.0", "license": "Not decided yet", "previewMode": "wam", "previewUrl": null }, "files": [ {"filename":"MyPlugin-Windows-VST3-x64.zip","kind":"native","format":"VST3","platform":"Windows","architecture":"x64"}, {"filename":"MyPlugin-browser.zip","kind":"wam","visibility":"private"}, {"filename":"MyPlugin-source.zip","kind":"source","visibility":"private"} ] } Metadata limits: title80, description2000, version40, license80 characters; plain text, no HTML. Filenames start with a letter/digit, end .zip, <=120 characters, contain only letters/digits/spaces/underscores/hyphens/dots/parentheses/plus; unique ignoring case, with no path. Native format=VST3/AU/CLAP/VST2/standalone; platform=Windows/macOS/Linux; architecture=x64/arm64/universal. Source/WAM entries must not include format/platform/architecture. Set previewMode="wam" when including a browser build and leave previewUrl=null: Tone Picnic will host it. If the browser build is blocked, omit its file and set previewMode="none", explaining why in START-HERE.txt. Do not invent a hosted URL. Download Tone Picnic's standalone packaging tool from: https://tonepicnic.pages.dev/prepare-package.py Inspect it before running. With Python 3, run: python3 prepare-package.py tonepicnic-ready MyPlugin.tonepicnic.zip The tool validates the folder and makes the final archive without uploading anything. It refuses overwrites. If unavailable, produce an equivalent standard ZIP_STORED outer archive (no ZIP64): patchwork-upload.json, the exact listed inner ZIPs, and optional START-HERE.txt at the root; no enclosing folder or extra files. Verify CRCs, lengths, contents and metadata. Keep the source/build folders separately. FINISH WITH ONE CLEAR HANDOFF Give me the clickable path to MyPlugin.tonepicnic.zip first. Then at most a short summary of included systems/formats, browser test status, license and any blockers. Tell me: 1. Drag this one file onto Tone Picnic's Upload a plugin page. 2. Review the filled-in details and press Upload this plugin (sign in if needed). 3. Open Try your plugin to check the sound, then press Publish. Do not ask me to import JSON, label each ZIP, find a hosting URL, or upload each file separately. Those steps are handled by the single-package flow. If the WAM 2 version is missing, say so clearly before calling the package ready.