Sando
A Library to make extension developer's lives easier!
Current Version: 2.9.0
Price:
FREE
❓ What is this?
wip
Nothing to see here!
Getting Started
Installation
- Download the .sef file
- Install the .sef file via the left hand side menu of the core, clicking the bridge button, then clicking "Install an Extension".
General Extension Command Usage
When you use these commands, any command that stores data in a variable must be a persistent button. You can check and change your button's persistence by checking that button's settings. This is a limitation of SAMMI, so this must be done for your variable saving commands to work.
A slightly purple colored command implies that the command is not instant. This means that you have to provide a delay, or, what is recommended, a Wait Until Variable Exists
command block right after, which halts everything until that command returns the data that is required for the rest of the button to work. Since buttons are persistent, you must have a Delete Variable
command in the top of your button to ensure that it is properly waiting for new data to exist.
Delete Variable
: ensures that theWait Until Variable Exists
command waits for a brand new variable to existPurple Extension Command
: indicates that the command doesn't return the information instantly. must be paired with delay.Wait Until Variable Exists
: A delay, halting the rest of the button, until the data exists within LB or the timeout is reached.
Then do whatever you want with that sweet, sweet data!
Updating
I value updates a lot, so i can ensure everyone has the top quality product! When the bridge connects, there is an automatic update check. If there is a new update available, an alert message will be displayed in your core to check your bridge for an update button which checks, and provides a link to the releases section of this extension.
If you have a lot of alert messages pop up on bridge connect, you might miss it. I recommend clicking the "Check for updates" button in this extension's tab in the bridge every so often, or if you encounter an issue out of the blue.
⚠ Updating Procedure
To update this extension, please follow the steps below!
- Install the .sef file via the left hand side menu of the core, clicking the bridge button, then clicking "Install an Extension".
- Allow it to replace the deck it prompts
- 👍 (ur good)
Usage
Visit the docs for usage!
Tutorial content here!
None yet
2.9.0
- New Features:
- Welcome in,
Sando: OBS Plugin Validation
! This has been an ongoing effort for a year to get the perfect automatic plugin version checker, downloader, and installer, and it's finally here! It is a single command that takes in an array of all the plugins you want to "Validate", and simply outputstrue
orfalse
depending on what happens throughout the process. Extension developers! No longer should you have trouble ensuring users have the correct plugins, AND at least a specified minimum version (with the option to just download the latest!). The docs will be updated to guide through how to use it, since it can be quite complicated. There are no built in ways to check plugin versions, download obs plugins, or install obs plugins, so I had to create these systems from scratch. Apologies if it gets rough around the edges at some points. To accomodate for these potential pitfalls, there is a fallback "manual" mode that pops up an interactive interface to go to the download pages on the plugins, download the right file and drag it into the window.
- Welcome in,
- Bug fixes:
- Fixed an issue where a first-time install of OBS past version 30 would cause a crash when grabbbing extra websocket context. This was caused due to a key not existing in
global.ini
of OBS. - Fixed an issue where Sando Helper would take up an absurd amount of CPU in some cases
- Fixed an issue where custom helper ports would not work for sando helper
- Fixed an issue where a first-time install of OBS past version 30 would cause a crash when grabbbing extra websocket context. This was caused due to a key not existing in
- QOL
- Added the ability to completely wipe old sando_helper files before extracting a new version to cut back on bloat of unused assets
2.8.3
- Bug fixes:
- Fixed an issue where a variable wouldn't get set during validation, making it impossible to continue (still experimenting with this)
- Fixed an issue where the popup window for installation sometimes showed NaN in the loading bar
- Fixed an issue where the popup window for installation sometimes wouldn't disappear when the bar was full
- Fixed an issue where the popup window for installation sometimes wouldn't disappear due to a status bug not letting SAMMI listen to that event from the window
- Fixed an issue where sando-helper.zip would not get destroyed upon extraction
- Fixed an issue where sando helper was not properly waiting for a connection from SAMMI before setting itself as ready (async issue)
- Fixed an issue where the websocket client on the bridge would duplicate when manually disconnecting and reconnecting the bridge
2.8.2
- Bug fixes:
- Fixed an issue where the .sef asset unpacker was hardcoded to a testing string
- Fixed an issue where the unpacker was pulling the websocket password from the wrong location.
- Fixed an issue where sando-helper.exe was taking way too long to open with zero feedback, making opening SAMMI a frustrating experience
- A side effect of this fix is exploding the file size, however, this was no different than it was before, as the exe was, under the hood, extracting a zip, contributing to the large downtime between runs, that has the same amount of storage. It's simply always unpacked now for maximum responsiveness.
- Fixed a hardcoded path used in
Sando: CW Dropdown
- Fixed a hardcoded path used in Sando Initialization
There is a potential lingering bug related to the server connecting too fast, but we'll get there when we get there.
2.8.1
- Bug Fix:
- Give validation more time to recognize yes, you are connected to the bridge. Do your thing.
2.8.0
- New Features:
- Installation of Sando now has a popup to help with user feedback and reassure to them they are not doing anything wrong
- Introduced a message when extracting assets from an installation to give assurance on SAMMI Hanging.
Sando: Extract Zip
now supports instance ids- Introduced a new global variable,
pid
, which is the process ID of the currently running SAMMI. Useful for third party applications wanting to ensure no matter what, even if the close and crash triggers for SAMMI fail, that their app exits, via polling for the ID. Sando: System Dialog
adds custom system dialogs to be displayed thanks to the electron framework of "Sando Helper" providing system calls. The current included presets includeSando: SD Choice
,Sando: SD Open
,Sando: SD Save
, andSando: SD Custom
. Choice, is a simple yes/no prompt with some customizable features, while the Open and Save prompts, open a File Explorer allowing users to select files/folders for opening or saving. The Custom command is a far more complicated version of Choice, with full access to how a standard System Dialog is displayed. Relies on electron documentation for configuration.Sando: Custom Window
adds custom chromium based popups for extension developers, or SAMMI users wanting to make a very nice looking popup! This is a command that contains multiple commands, those commands beingSando: CW Custom
, which is the main command that will allow you to generate a bi-directional chromium window, and any other options such asSando: CW Dropdown
are presets that useSando: CW Custom
with easy-to-fill boxes for simple use case. Refer to docs (when finished) on usage! There is alsoSando: CW Custom (Event)
to send live events to your popups via a specified unique ID, orSando: CW Custom (Status)
to force a window to close with a result if desired. Documentation is going to be important on this one once i get around to it!- "Sando Helper" has been introduced as a new bundled electron application. This handles the generation of custom windows, and in the future, will handle all future scripts of Sando with communication via the relay server. This will make commands that previously ran on running the script manually through the
Command Line
, be ran through a websocket connection instead, making responses lightning fast, and cached in some cases for even better performance.
- Improvements:
- Improved logging of various commands
- Changed the helper connection message to not look like it's failing
- Bug Fixes:
- Fixed an issue where validation wasn't waiting long enough for
npm install
result (was only waiting a single second before!) - Attempted to fix an issue with logs not logging before exit/crash
- Fixed an issue where validation wasn't waiting long enough for
Im sure there are plenty of other things im forgetting about here!
2.7.1
- Bug Fixes:
- Fixed an issue where
Extract .sef assets
was not persistent, leavingExtract .zip
in limbo. - Fixed an issue where node modules would need a little more time to be recognized before running another script (obs websocket extended info)
- Fixed an issue where
Work in progress: fixing my big ass paws to stop clicking things I don't mean to
2.7.0
This update has been in the works for a long time, so I can't remember everything i've done! EDIT: lol i lost almost all of it so here is what you're getting for now
- New Features:
- New Command:
Twitch Get User Info (Cached)
. This is the same as theTwitch: Get User Info
built in command, however, this caches the response so if you search for the same person in the same SAMMI session, it does not make an extra API call to Twitch. This is very useful to make sure you aren't spamming Twitch's API for repetitive, same tasks and gives a better performance result aswell since it's already in memory! More might be added in the future, so consider this a test run. - New Global Data: Extended OBS Info. This provides a connection object
obs_connections
in theSando
button that mirrors the obs objects you see inglobal
. The difference with the two is the Sando object contains extra goodies likeconfig_path
,extended_ws_info
,global_data
,is_portable
,latest_log_path
,exe_path
, androot_path
. These are all meant to help with some of the more painful things to fetch on your own, and focus more on advanced functionality. Want to see what scripts a user has installed? You got it! Want to see what plugins the user has installed? Sike, use my other commandCompare OBS Plugin Versions
!!!
- New Command:
- Changes:
- Changed the way validation checks a websocket connection to OBS
- Changed the way validation provides a websocket password for connection test
- Changed frequency of websocket tests (every validation)
- Rewrote the sef extractor to be exclusively in SAMMI and not nodejs to allow Sando to use it for itself
Read Folder
now uses instance IDs- Validation now unpacks from zip in sef (not deck data) using dev only
Extract .sef assets (No Node)
.
- Bug Fixes:
- Fixed an issue with the websocket relay server not being properly set to "running" in local file
- Fixed an issue with the websocket relay server not restarting when it should
- Fixed an issue with the Scene Unpacker and OBS versions 30.2 and above not properly unpacking text sources due to Text GDI+ v2 getting deprecated in favor of v3. The websocket actively prevents the creation of deprecated sources, hence the crashing.
- Fixed an issue with the server file poller not properly using async
- Fixed an issue with
Extract .sef assets
not properly allowing overlapped buttons - Fixed an issue with logging commands not working properly under certain circumstances
- Misc:
- Removed unused code in
Extract .sef assets
, improving performance
- Removed unused code in
2.6.0
- New Features:
- Added "Unpack Extension Assets" command. adding the new key to copied deck data
extension_assets
allows you to provide base64 of a zip file that gets extracted on execution to the main SAMMI directory. This exists so extension developers can pack in assets with their extensions without impacting performance by including the assets elsewhere in the .sef file such as the deck data, which would make SAMMI lag on every time it saves.
- Added "Unpack Extension Assets" command. adding the new key to copied deck data
2.5.6
- Bug Fixes:
- use the updated extensions version method in global vars to get version for compare
2.5.5
- Bug Fixes:
- I somehow reverted the authentication fix on the unpacker. this should be fixed now!
2.5.4
- Bug Fixes
- Fixed an issue where Scene Packer would not apply updated visibility changes if overlaying on existing install
- Fixed an issue where the relay server would only send an alert and no data to SAMMI. You can listen to the relay server by the extension trigger
SandoRelay {IDHERE}
, with{IDHERE}
being the identifier added to the end of the websocket url when connecting. for example: if you connected using the linkhttps://127.0.0.1:6626/mycoolclient
, the trigger with the data would beSandoRelay mycoolclient
.
- New Additions
- Added a check for npm install failure in the validation checks when installing from .sef
- More logging for events such as npm install and if installing from sef or not
- Changes
- Changed when the install complete message pops up to prevent false guise
2.5.3
- Bug Fixes
- Fixed an issue where Scene Packer's unpack would not be accurate, so I added a bunch of validation checks. Slightly slower but barely noticable.
- Attempted a fix for npm install not running when it should (on install)
2.5.2
- Bug Fixes:
- Fixes an authentication error with scene packer's unpack process due to not loading the saved password (good job me)
- Fixed some broken links
2.5.1
- New Features:
- added a dev mode for looking at the output of background node processes. will be used for more in the future.
- Bug Fixes:
- Fixed an issue where Sando would wait for validation on things that don't need it
- Added more logging to the Sando validation process (zip extraction)
- Fixed sando assets extraction looking in the wrong directory (Thanks Oldrego!)
2.5.0
- New Features:
- Sando now boasts a websocket relay server that clients can connect to to both send and recieve data from/to the SAMMI bridge. The default port for the server is
6626
. It is highly recommended to include an identifier at the end of the address when connecting, so you can easily identify where a source is coming from. ex:ws://localhost:6626/vnyan
, with the/vnyan
part being the identifier. An example of what this would be used for is to connect a browser source/dock directly to SAMMI and receive events in real time for something like a chatbox. This could also be used for services that don't host their own websocket server but can connect to a server on their own. - Whenever a service that Sando relies on such as the SAMMI Bridge or OBS Websocket disconnects, the validation will be set back to zero and re-run when those services are reconnected.
- Added logging to scene packer's unpackage
- Added extra logging to Sando's validation, specifically the obs websocket validation
- Sando now boasts a websocket relay server that clients can connect to to both send and recieve data from/to the SAMMI bridge. The default port for the server is
- Changes:
- Changed the package that file tailer uses to something that allows the files it's listening to, to be deleted. Prior to this update, if the file that was being listened to was reduced in capacity in any way, it would cease to listen. This is a problem when listening to something like game logs in which they are cleared on game restart.
- Bug Fixes:
- Fixed an issue where scene packer would not wait for Sando validation
- Fixed an issue where connecting multiple file tails would not close the previous script, causing double events
- Fixed an issue where disconnecting from services other than the bridge, such as resetting sammi or the obs websocket would cause the validation to hang
- Fixed an issue where sando would re-validate itself while already validated, causing a redundancy.
2.4.5
- Bug Fixes:
- Fixed an issue with scene packer's unpack not creating scenes with no scene items (I AM LOOSING IT. 4 PATCHES IN ONE DAY.)
2.4.4
- Bug Fixes:
- Fixed a global not being set when installing (it only set when starting up SAMMI)
2.4.3
- Changes:
- Moved the obsws validation to the validation of sando, so credentials can be used in other obsws applications
- Changed the scripts relying on node to use the new variable
Sando.node
(points to the node.exe, more reliable than trusting an environment variable went through)
- Bug Fixes:
- Fixed the folder reader port to run asynchronously and not drop commands
2.4.2
- Bug Fixes:
- fixed an issue where node would not be detected on startup despite having it installed (thanks Kash the Dingo!)
2.4.1
- New Additions
- Ported Folder Reader to Sando with the new command:
Sando: Read Folder
- Ported Folder Reader to Sando with the new command:
2.3.0
- New Additions
Sando: Array Search
is a command that allows you to provide an array of data (currently only strings) and allows you to match it against a query which gives you back the closest set of matches. The first value of the returned array is the closest match. The only mode available at this current moment is simple mode, but advanced mode which supports objects, will be released at a later date.- new script
unpack.js
- new script
obswebsocket_connection_test.js
, for testing websocket connection via nodejs
- Changes
- the pack script changed from the name
script.js
topack.js
- The background image has been significantly reduced in size to prevent SAMMI hitching while saving decks (might be removed entirely in the future)
- the pack script changed from the name
- Reworks
Sando: SP Unpack
has had an overhaul to be done entirely in nodejs while connected to the websocket. This adds the side effect of needing to provide an OBS Websocket Password if one is present on connection. This is automatically handled by the command. Nothing execution wise changes, just enjoy drastically faster unpack times!Sando: Powershell
has had an execution rewrite. Originally, Sando would transform the user's script text into a text file, read the text file, encode via powershell to base64, then use powershell's -EncodedCommand flag to run the script. This convoluted process allowed a bypass of powershell's execution policy, at the cost of efficiency and firewall popups from bad antivirus applications that assume any and all powershell operations are bad. This rewrite still writes the script to a file, but its a .ps1 file with a clever command line process to bypass the execution policy easier and more friendly. It's efficient, and I hope firewalls will act up less now.- Sando's validation process now checks for up to date node version instead of checking whether it's only installed or not (Thanks Caigan!)
2.2.4
- New Additions
Sando: File Watch/Tail
now features a white/black list option (optional)
- Changes
- Removed the default
data.txt
present in the sando assets zip, as it's leftover.
- Removed the default
2.2.3
- Bug Fixes:
- Fixed a case where node would falsely be flagged as installed if done on a system not set to 'English'
2.2.2.2
- Changes:
- Removed queueing for
Sando: Log
for speed reasons. hopefully will not cause logs to be sent out of sync but tests look good.
- Removed queueing for
2.2.2.1
- Bug Fixes:
- Fixed variable re-initialization when upgrading from prior versions of Sando.
2.2.2
- Additions:
- added some extra logging to the scene packer for created inputs. you can view the scene packer log in your main sammi directory, under the name
packer.log
. In the future, this will be moved intoLandies_Extensions\sando\sando.log
!
- added some extra logging to the scene packer for created inputs. you can view the scene packer log in your main sammi directory, under the name
- Bug Fixes:
- Fixed an issue when unpacking scenes to update existing scenes. Referenced sources would cease to be created if the original source was not created in the same session. Scene packer now analyzes the current scenes and sources installed to make an extra check for those cases.
- Fixed an issue with the built-in auto update checker being stuck on 2.2.0
2.2.1
- Additions:
- adds global variables for easy access to the "Landies Extensions" folder, keys labelled
landies_extensions
andlandies_extensions_slash
respectively - Added a restart flag when installing applications through Sando to refresh shell process
- adds global variables for easy access to the "Landies Extensions" folder, keys labelled
- Changes:
- more comprehensive checks on "Check OBS Plugins"
- check status of validation on every sando command ran, instead of endlessly waiting
- Added logging to validation
- npm install now only runs when installing/updating via the sef file, not on every load
- Bug Fixes:
- fixed an issue where Sando would not detect when node was finished installing,
- fixed a potential hanging issue when sando hasn't been verified
2.2.0
- Additions:
- New: File Tailer! Hook up any log file to SAMMI via the new command
Sando: File Tailer
! set an extension trigger to output log updates to! Can be awesome for adding game integrations for your stream! - New: Scene Packer! Package up a scene and all of it's nested scenes (source clone too!) into a single .spkg file, which can then be extracted as long as the recieving user has Sando installed aswell. Super useful for extension developers making OBS Widgets!! will continue to be updated
- New: Node Install checker. Sando will now be using various node scripts to carry out tasks like File Tailer and Scene Packer, so there is a validation process on startup now! sando commands will wait for startup to finish before continuing.
- New: File Tailer! Hook up any log file to SAMMI via the new command
There is more but i forgot to update this as i was working on it since this isn't really "public" public. hasnt has a proper announcement yet.
2.0.1
- Bug Fixes:
- Powershell scripts now starts in SAMMI directory (thanks silverlink!)
- Tweaked to allow overlap, letting multiple scripts run at once
- fixed a drive issue when sammi or obs is stored in a different drive when using Check OBS Plugins
2.0.0
- Reworked:
- Powershell scripts are now executed using an entirely different process, making them miles more stable than previous methods.
1.3.0
- New:
- Added new command:
Sando: Powershell
! Run powershell scripts in a familiar command-line like box. Make custom GUIs, open file dialogs, and so much more! examples included.
- Added new command:
1.2.0
- New:
- Added new command:
Sando: Compare Bridge Versions
for extension developers to ensure user's bridge versions are up to date if using newly added functions that don't exist in prior bridge versions.
- Added new command:
1.1.0
- Bug Fixes:
- Fixed
Sando: Extract Zip
from failing due to extraction into same directory - Fixed
Sando: Compare OBS Plugins
from failing to return "detected_version" in result object
- Fixed
- New:
- Added a "Admin" Checkbox to
Sando: Extract Zip
for admin extractions
- Added a "Admin" Checkbox to
1.0.0
- Initial release 🎉