i tried to drag another long funscript (250K) into a new playlist and get this:
chunk-QJSBBL5W.js
ERROR QuotaExceededError: Failed to execute 'setItem' on 'Storage': Setting the value of 'store_tracks' exceeded the quota.
at u0.set (main-L6A5RVMW.js:8:5872)
at Ge.set (main-L6A5RVMW.js:8:6188)
at e.save (main-L6A5RVMW.js:12:16705)
at e.addTrack (main-L6A5RVMW.js:12:16392)
at r.addTrack (main-L6A5RVMW.js:12:19483)
at e.<anonymous> (main-L6A5RVMW.js:14:396744)
at Generator.next (<anonymous>)
at i (chunk-QJSBBL5W.js:1:1251)
at f.invoke (polyfills-FFHMD2TL.js:1:6443)
at Object.onInvoke (chunk-QJSBBL5W.js:7:29666)
i probably have a few hoursā worth of funscripts loaded into SC rn
Indeed, it looks like youāve reached the storage limit of your browser. I knew this would happen one day, because the 5MB limit (in Chrome) is not enough for this kind of purpose.
Your best option for now is to always export your collection to save it for future sessions.
Can you share your collection, if you donāt mind? Iām curious to see what kind of patterns you have, I basically just used a few.
as soon as i can get OFS working i will, lol. it does not seem to run correctly in win11 arm64.
for now i just use a few basic patterns with hot keys and however many hungswolo scripts i can fit into localstorage
months later, and sadly nothing approaching the functionality of OFS is accessible from arm64, and i have been unable to use OFS on arm64 win11 vm or macOS. i have not made any progress on making patterns for this reason, although i guess i could use handy simple scripter.
the other huge thing holding me back on this is localstorage quota. not sure what else to do as a user except making multiple browser profiles haha.
fwiw, the simplest and most robust way i found to get current usage in MiB: new Blob(Object.values(localStorage)).size / 1024 ** 2;
hungswolo scripts eat this up pretty quick. canāt store more than a few of those.
do you have any plans to use some other storage driver like indexedDB?
I just implemented this Better-localStorage and it does the job, I can import a lot more script into the application, I let you test with your cases and tell me if it works
I donāt own this device, and from what Iāve read, it doesnāt offer a movement/positioning function, but rather vibrations and contractions. So Iām not sure how to handle it.
Iād need to add a channel selection feature to define the desired action that will be sent to the device according to the script. But thatās not planned at the moment, as I donāt have a multi axis device
i am testing it now. i deleted cookies, storage, etc. although i do see you did some kind of migration thing, i wanted to start fresh just because.
i have two problems.
settings > shortcuts > global play/pause: i set this to space, but it does not seem to save. if i close the tab, open a new tab, and go back to it, it shows as unassigned ā i just see the + Add button.
it no longer auto-connects to intiface. i have to go to settings and hit connect. i am accustomed to it ājust workingā when i visit scriptscontrol.web.app.
perhaps both symptoms point to a common issue ā settings are not persisting?
iām testing this in latest chrome on macOS. regular session (not incognito).
but playlists/patterns do persist, and i see they are being stored in indexedDB. and i can store probably as much as i want now
another oddity is that at least some part of the chrome window must be visible for scriptscontrol to perform correctly.
for example, if i completely cover up the chrome window with a video player window (VLC, not fullscreened) or a firefox window, playback on handy may become very laggy (like one input per second or so) or stop entirely. haha
i donāt think itās related to your recent storage change, but this behavior is very goofy. is this a problem in chrome itself i wonder? some kind of power savings thing? or something to do with macOS, or perhaps a library you are using?
i have tried this, didnāt work
i have also gone to chrome settings and ensured that energy saver is Turn on only when your battery is at 20% or lower, but idk if there is some kind of chrome advanced flag that could be toggled to fix it.
anyway, i just make the window as big as possible and try to not let it be completely covered up. some other solution would be nice, though.
also, un-bury the rename button so you donāt have to click the 3 dots. imo probably every playlist will be renamed after creation, so itās a common action.
Indeed, I was missing some async handling for proper autoconnection ā same for shortcuts Fixed now!
Iāve also made the playlist title clickable so you can edit it more easily. The input field will now be fully selected when the window opens.
The latest version also includes the track editor, which is still a work in progress. However, it already allows you to make minor adjustments to existing tracks or create new ones.
To use it:
Click on the chart to create a new point
Double-click on a point to delete it
Points can be dragged to edit them
Iāll look into adding more features later, like multi-selection, copy/paste, and more.
Hey guys, Iāve just polished the top player and added an amplitude control.
Amplitude control
Tweak the intensity of every movement in real time directly from the Player (and the Controller window).
The amplitude slider scales the difference between the current command and the next one:
Changes are applied instantly while you drag the slider and are mirrored on the controller UI.
The chart overlays the adjusted (played) track on top of the original so you can see the impact before it reaches the device.
When I try to one of them, the side bugs out and become unresponsive. I basically had to delete the cache and reload the page fully. I removed the patterns and tried again just to be sure, but the issue remains.
I imported a different script and that one worked perfectly.
Any ideas on why that happens? Could it be that the chapters are too long?
I only just realized that not all chapters were broken. It thought it had something to do with the script as a whole.
Sorry If I donāt provide the script here, itās supposed to be released soon and I donāt want to make it public here yet. I could send it to you in the DMs tho, if there is not other way to find out whatās wrong.
Edit: I just realized it looks like two of the chapters have the same name. Not sure if this can cause any issues.
A script is a JSON file with actions formatted like this: {"at":0,"pos":100},{"at":1640,"pos":60},{"at":3000,"pos":100}
at is the timestamp in milliseconds.
pos is the position along the stroke axis (0ā100%).
I think your script may contain an invalid point sequence, for example: {"at":0,"pos":100},{"at":1640,"pos":60},{"at":3000,"pos":100},{"at":100,"pos":0}
Here, the last point has a timestamp (at: 100) that goes backward, which can cause interpretation issues.
Chapter names have no effect on how the script is interpreted.
If youād like, you can DM me the script and Iāll check it directly. Iāll keep it confidential, especially if you plan to sell it later.