I'm sorry, im new to making websites so some things may look off!

Offcanvas
test... :3c

Sando

A Library to make extension developer's lives easier!

Current Version: 2.9.0

Payment is done through itch.io ! It is highly recommended to make an account to save your purchases!
Price:

FREE

❓ What is this?

wip

Nothing to see here!

Getting Started

Installation

  1. Download the .sef file
  2. 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

local variable persist visual

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.

purple command proper usage

  1. Delete Variable: ensures that the Wait Until Variable Exists command waits for a brand new variable to exist
  2. Purple Extension Command: indicates that the command doesn't return the information instantly. must be paired with delay.
  3. 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!

  1. Install the .sef file via the left hand side menu of the core, clicking the bridge button, then clicking "Install an Extension".
  2. Allow it to replace the deck it prompts
  3. 👍 (ur good)

Usage

Visit the docs for usage!

Visit the new Documentation page here!

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 outputs true or false 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.
  • 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
  • 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 include Sando: SD Choice, Sando: SD Open, Sando: SD Save, and Sando: 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 being Sando: CW Custom, which is the main command that will allow you to generate a bi-directional chromium window, and any other options such as Sando: CW Dropdown are presets that use Sando: CW Custom with easy-to-fill boxes for simple use case. Refer to docs (when finished) on usage! There is also Sando: CW Custom (Event) to send live events to your popups via a specified unique ID, or Sando: 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

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, leaving Extract .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)

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 the Twitch: 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 the Sando button that mirrors the obs objects you see in global. The difference with the two is the Sando object contains extra goodies like config_path, extended_ws_info, global_data, is_portable, latest_log_path, exe_path, and root_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 command Compare OBS Plugin Versions!!!
  • 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

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.

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 link https://127.0.0.1:6626/mycoolclient, the trigger with the data would be SandoRelay 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
  • 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

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 to pack.js
    • The background image has been significantly reduced in size to prevent SAMMI hitching while saving decks (might be removed entirely in the future)
  • 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.

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.

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 into Landies_Extensions\sando\sando.log!
  • 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 and landies_extensions_slash respectively
    • Added a restart flag when installing applications through Sando to refresh shell process
  • 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.

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.

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.

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
  • New:
    • Added a "Admin" Checkbox to Sando: Extract Zip for admin extractions

1.0.0

  • Initial release 🎉