Resource icon
Phree brought to my attention that message weren't escaped.
So you now have a way to escape a string so you can transfer it to OBS
String: Escape before you send a string over to OBS or the transmitter

Release 1.41 1/21/2021
-String: Escape New Command, Will turn a string into a escaped string ready to be put in a json string.
If you send user's text over to anything outside Lioranboard, you should escape them to prevent exploit by users
such as sending text message to a text source
-fixed a bug where button trigger throught the "Trigger Button" command or stream deck wouldn't return the right thing if string: get trigger type was used.
-chat client will now ping the server periodically regardless if a ping command was send by the server. Might solve some disconnection some people are having.
-reload deck and loading decks on the stream deck should be faster in general
-Fixed a bug where File: Save Value sometimes would think the value was not a real and would not save, There is now a message that says if it failed to save.
-Fixed the font and a gift sub bug for the LB notification system Thanks Melonax for fixing that for me.
You can just delete the LB notification deck and reinstall it normally.
You can now select unavailable keys to use for macros, Most people don't know that F13 to F32 are valid buttons, so now you have 20 extra button to use that no other program will use.

Release 1.40b 12/4/2020
-Added a new way to select Macro keys that are unavailable on most keyboard such as F13 to F32, sound control and more.
When you try create a macro, there will be a button you can press to select many usefull keys that might not
be on your keyboard,
-updated keys.ini so all keys will show up fine, lets me know if you find any unknown keys.
-Android version, When putting your tablet in sleep mode for a long period of time, lioranboard will now detect that and
reconnect instantly when you open it back up
-Fixed a bug on PC where the stream deck would crash if it tried to create a surface size 0
Release 1.40a 12/1/2020
-Math: Trigger Pull for chat can now pull user name(2),emotes info(3),Badges info(4)
(IF YOU WERE GETTING WILD CARD using math: trigger pull for chat message, you will have to use String: pull wildcard instead)
-Alternate Accounts were only connecting the first time that the transmitter connected. They will now reconnect everytime.
-Fetch OBS data had some trouble getting some variable name that had dots in them such as the following JSON
Naturaly you'd try to search for settings.Filter.Transform.Rotation.X and lioranboard would try to look for those.
but they dont exist, so now what you can do instead if this kind of thing happen is search for settings.(Filter.Transform.Rotation.X)
If lioranboard sees ( it will ignore all dots until next ). is found and remove the () from both sides
I had to make a small change that will be for the better in the long run. Currently You pull Wildcards using Math: Trigger Pull , the problem with that was that you can have 1 or 2 or 10 wildcards depending on your choice. So that made it impossible to add more stuff to Math: trigger pull without breaking wild card pull for everyone every time. So instead of using Math: Trigger Pull you should use String: Wildcard Pull instead.
So if you were using any wild card, you will have to switch them to using String: Wildcard pull instead. I added a button to help you find them press F12 when in lioranboard, it will tell you potential wildcard you may have.
Other than that I added Math: trigger pull to get Reward ID and Redemption ID for channel points if you want to use the reward twitch api. I made an extension for it, that extension is available on the LioranBoard discord. Make sure you join that Link Here Got plenty of cool extension over there to expand on lioranboard. Even a Streamlabs donation alert extension , i know lots of you ask for donation triggers...WHICH IS NOT A THING ON TWITCH. (nobody should use the celebrate feature). So that extension is your only hope
Also added a way to export any button by right clicking it and selecting Export. This will copy text in your clipboard which you can just share with others, making it super easy to share a button.

Stream Deck is now moving to version 1.40, YOU WILL NEED to update for the stream deck for it to even work now.
Have fun

Release 1.40 11/24/2020
-String: Wildcard pull new command, if you were using math: trigger pull to pull wildcards, move to this one or you will experience problem in the futur updates
(although most wild card will still work using math: trigger pull, the one for Channel point with message will no longer work, so you will need to update those right away)
You can press F12 and it will tell you where you might have used wildcards, not 100% accurate but it's a good way to know if you're forgetting anything.(will remove this later)
-String: Get Trigger Type New command, will return what type of trigger, triggered the button.
-Channel point trigger, math: trigger pull can now return the reward id and the redeem id
-Channel point trigger, you can now put a single * in the box to allow all triggers to active it.(this is not a wild card though)
-Updated the stream deck, YOU WILL NEED TO USE THE NEW ONE both android and pc
-fixed a wrong sound used for the stream deck android app, sorry for anyone that got this update
-Fixed any URL openning through lioranboard when openning in chrome would have an unwanted %22 in front of it
-Added a way to make drop down boxes in the Extension system by setting boxname to name|option1|option2| so on(if you use an extension that does this you will need to use this version for it to work)
-Also added a way to force a box to a certain text how you select an extension, just setting the boxname to name|option Will not be a drop box but simple set the box to whatever is after the |
-Added a way to unlink your twitch account without deleting connect.ini. Button is in the Link Your Twitch window
-Added a way to customize every scope LioranBoard gets from the authentication.
-Added a way to delete a whole stack from an extension with message "DeleteStack"
-Added a way to export/import an entire button with a JSON string, so you can Reimport it, allowing the possibility to exchange buttons with others easily
-Send to Extension list will now be sorted in alphabetical order
-Send to Extension boxes that are counted as real variable and have their boxes left empty will now be regarded as 0 when send over
I attempted to make it more user friendly when you first start using LioranBoard. When you boot LioranBoard there will be a tutorial now for setting things up. The process of creating a button will also be different now. When you click to create a button instead of seeing "Create new button" and "Paste Button" you will see this. Create Blank Button would be the same as before. You can also combine multiple options.

You use LioranBoard with a bot account for your main account.(Requires linking multiple account)
All explained how in the read me file

release 1.39 - 8/2/2020
-You can now link different account at the same time, in case you want to make a bot(check in the read me to know how)
-Greatly change the button creation window. Can now choose between multiple premade buttons.
-The receiver now has a tutorial.
-added a few special extension trigger for chat moderation
!ban when someone gets banned, math trigger pull 1=name of the mod, 2=name of the person who got banned
!unban when someone gets un banned, math trigger pull 1=name of the mod, 2=name of the person who got unbanned
!timeout when someone gets banned, math trigger pull 1=name of the mod, 2=name of the person who got timed out 3=duration in seconds of the timeout
!untimedout when someone gets un banned, math trigger pull 1=name of the mod, 2=name of the person who got untimed out
!clearchat when a mod clears the chat, math trigger pull 1=name of the mod,
-new init extension trigger
!reinitializing When decks are reloaded, this happens at same time then !initlioranboard and every time you click done when saving a deck or moving decks
-!transmitterconnected and !transmitteralways extension trigger now happen with a slight delay to give time to the transmitter to send all its extension
-added the scope whisper:edit to the twitch link URL, so that way you can send whisper message through the command twitch chat message
let me know if there is any missing scope for twitch side so everything you can imagine works in lioranboard
-Trigger Button command now has a box for hidden delay, do not use this unless you know what it does.
-Twitch: Chat Message now has an extra box to specify which channel to send the message to, leave blank for the channel of the linked account.
-added 2 extensions to the main transmitter, Get view count and get channel id extensions
-Fixed a bug where you could trigger the same button multiple times with 1 chat command or overlapping bits numbers and such. now the button will only trigger once.
-LioranBoard will now notify you when something like your antivirus suddenly started blocking it.
release 1.38 - 7/12/2020
-Compare: Redo Previous if new command, same as redo if but redo the command above in the list of commands.
-Math: Clamp new command, allows you to clamp a variable
-the files for your decks now create a backup on save.
-"Value name" will now be refered to as "Variable" as it should, so there might be some left over "Value name" around(does not affect your decks)
-fixed Bits trigger pull now return the name of the person rather than the your name
I've made a notification system for LioranBoard users to use freely. I've made using it as simple as it can get considering there is no way to easily give people my nested scene profile. Here is a short tutorial Install LB Notification System MAKE SURE OBS WEBSOCEKT 4.8.0 IS INSTALLED

Video of all the notifications

release 1.37 - 6/22/2020
-New Twitch trigger for amount of gifted subs
-added new test button to the transmitter for raids/host/gift sub amount, warning gift sub amount will also send the amount of normal gift sub along with it. I suggest using the new one.
-String: Format new command, Allows you to format a string to a specifict width
-String: Letters new command, remove all non letters from a string
-Math: Trigger pull can now get subber/gifted's display name, host/raid display name, chat message is now display name by default, no login name
-Math: Trigger pull for sub months now work on resubs
-Command Parametters now allow for a single simple math example (3+4) or (4*2) or (4*/$value$/), can only be +-*/ and can only contain 1, () must be at the start and the end to trigger this
-Command parametter /$value_name$/ wild card inserts are now more precise when dealing with decimal points.(was 2 decimal max, now is 4)
-You can now hold page up and down in the command edit window to browser faster
-Included a FULLY ANIMATED notification board(Followers/bits/subs/raid/host) that comes with lioranboard(needs to be installed as an extension)
Click Install extension inside lioranboard and select "LioranBoard Notification System.lbe" inside LB notification system folder, follow the steps and it should work.
you can use the transmitter to test out the alerts. or even turn on TTS(requires the transmitter to run through chrome, not browser source)
-Follower Alert extension has been improved to not show a follower again if they unfollow and refollow or show old follower is someone unfollow.
you can either reinstall if from the extension itself or use the new transmitter
-You can now record Twitch chat and twitch notification packets, simply open connect.ini and under connection add record_chat="1" and record_pubsub="1" (this records the raw packet)
More commands, including OBSwebsocket new command support. If you thought text source change text wasn't working, please update to OBSwebsocket 4.8.0, that will fix it. Lots of people were asking about how to switch to the previous scene so instead of telling them what to do, I've implemented that directly as a value that's automatically updated along with current_scene.
Although I've said Trigger short cut wasn't gonna get implemented. Well, it's in now, enjoy, the support for gamepad is not that good and midi keyboard support is just a dream for now since the only way I can do that is with a DLL and the only DLL I found is quite expensive. Unfortunately, I have no experience in programming DLLs.

release 1.36 - 6/6/2020
-Text Source Change Text renamed to Text GDI+ change text
-Freetype 2 change text new command Change the text of a freetype source
-Math: Hex to Real, new command turn an hex string into a real
-Save Replay Buffer, new command not sure why that wasn't ther already
-String: Count new command return the amount of occurence of a certain string within a string.
-Clear button new command allows you to clear all of certain id buttons
-Comment new command, only exist to add a comment to explain your scripts, doesn't do anything. Will clearly marked red in the command list
-OBSwebsocket 4.8.0 has been released, for the following commands you will need to update it. Text source change text should now work with 4.8.0 without having to remove _v2
-Change Scene Transition new command Allows you to set a transition of a scene temporarily
-Remove Scene Transition new command Removes the temporary scene transition set
-Change Audio Monitor Type new command to be able to change the monitoring type of an audio source

-Fixed a bug that happened sometimes if for some reason obswebsocket send some extra message before sending all scene and source list that would crash lioranboard
-when naming a button, pressing cancel doesn't remove the name anymore.
-added a small moving animation when moving a command up or down
-There is now a message that shows OBS and OBSwebsocket version on connect.
-Math: Trigger Pull can now get Bits message,sub message and Subs month count(not consecutive)
-New Shortcut window to set keyboard or gamepad shortcut, gamepad one is not that great it only supports legacy controller which might be deprecated on windows 10
-When you connect to OBSwebsocket, it will now say the ip and port you're connecting to.
-Insert,Delete,home,end now all work as they do in other text boxes
-button id and name now shows up in the command edit window.
-previous_scene is now a permanent variable, since a lot of people seem to need it. so might aswell make that automatic
-new Extension Trigger for Leave scene and Enter scene
!enterscene Scene Name will happen when you switch scene, with the name of the scene you're moving to
!leavescene Scene Name will happen when you switch scene, with the name of the scene you're moving out of,
in both cases math trigger pull 1 will return the transition name and 2 will return the duration in MS of the transition
Implemented a stack system, this system allows you to make list, such as user list, or video list. you can either reference from them or pull from them. Very usefull to create random effect. I'll let you guys experience with it.

release 1.35 - 5/26/2020
-Added a stack system to commands(list struture or array if you prefer) with a few new commands
-Stack: Add Add a value to the a stack, create it if does not exists
-Stack: Replace Change a value in a stack to a new one
-Stack: Pull Pull a value from the stack, deleting it from the stack
-Stack: Peek read a value from the stack, without deleting it
-Stack: Find find the first instance of a value in a stack
-Stack: Get Size Get the size of a given stack
-Stack: Random Get a random value from the stack
-Stack: Shuffle randomize a stack
-Stack: Clear delete an entire stack
-Stack: Stringify return a string of the entire stack
-Stack: Parse turn the stringified stack into a stack
-To go with the stack system, a few extension javascript commands have been added, look inside the extension/readme.txt to find out more.
-Fixed a bug if you have some " in description or other places inside your bio on twitch that prevented you from linking your twitch account correctly
-You no longer need to hold tab to see the value window, its now a on and off feature.
-You can also now search value in the value window by typing, typing the exact name of a stack will show you its content
-Twitch trigger icon in the edit window will now show a Q when Add to Queue is enable
-Creating a new button will now ask for the name right away.
-Clicking the button ID in the select menu in edit mode will now copy the id to clipboard
-Fixed a bug that crashed lioranboard, if connected to OBS and you deleted a source that was inside a group
-Math: Pull source value for volume will no longer return a float. just 0-100
-When a change is being made to the way files are being writen, lioranboard will now notify you.
-Added a Case sensitive option to twitch chat message trigger
-Fixed a bug where empty squares and button resized region would get their own button ID,
this might have caused problem by changing button ids for other buttons randomly when moving decks or resizing decks
Lots of small changes, nothing to big. Greatly improved the connection between LioranBoard and OBSwebsocket. Some people were stuck in an infinite "Fetching obs data" screen. that should now be resolved for everyone. You can now search in any selection menu by just pressing letters.

For some reason people have been struggling to connect to OBSwebsocket, it will connect sometimes and sometimes won't, I don't know what this is related to. Lioranboard is connecting to other services fine. Not sure if it's a windows problem,OBSwebsocket type of connection problem, or a lioranboard problem. I've tried multiple things to try to fix it and I can't find anything. When you're not getting a network reply there isn't much I can test. If you are struggling with this come check the discord out

release 1.34c - 5/19/2020
-fixed wild card with just * that didn't work
-Greatly cleaned the whole project, let me know if it runs smoother. or if i deleted script that were still used by accident

release 1.34b - 5/19/2020
-Subs were crashing lioranboard, should be fixed now, you will need to update your transmitter if you want to use test sub button inside the transmitter.

release 1.34 - 5/18/2020
-Some people have been struggling to connect to obswebsocket, I made a few changes,
first I added longer timeout,(You can open connect.ini and add timeout="2000" under [connection] default is 2000, it was 1000 before)
second added a nonblocking option, this will make it so when you connect to obswebsocket
it won't freeze, but I've had bad luck with this it fails to connect most of the time for me when this is on.
It works better when my timeout is set to 100ms for me for some reason.
-Russian and japanese characters weren't being sent to obswebsocket properly, they should now.
please note that lioranboard doesn't support typing certain characters, you will have to copy-paste those
-the processing speed of JSON data has been greatly increased, fetching obs will be a lot smoother
-got rid of the "fetching obs data" screen(replace with a small red square at the bottom right)
-fixed the issue when a source had a weird symbol like TM in it.
-can now toggle a source without specifying a scene, the scene will be regarded as the current scene if so.
-The receiver will clearly notify you when a second transmitter is attempting to connect now instead of saying stream deck connected.
-SetValue for extensions no longer needs to specify a string or real
-made a small change to the transmitter, the test button won't work unless you update to the newer version.
-Can now do quick search in select menus just by typing letters, try it.
-Fixed a bug if you had a source with # in the name that would break the select menu
-Special sources such as Desktop audio and microphone/auxiliary now show up as source in lioranboard
-increased overall stability of the receiver.
-Stream deck 1.34, optimized the rendering on-screen so it's wasting less power and is less laggy.(no need to update it if you don't mind the previous version)
-Stream deck can now be reconnected if it is disconnected by pressing anywhere on the screen.
-Modify button has been optimized to no longer send the modification if doing the same exact
-custom packet, if you make the message-id 666, you will see a small alert about the status code return
-Fetch obs data is now more precise, allows for more object level, and allows for array use.
-Added more on connect triggers
!transmitterconnected when the transmitter first connected
!obsalways these are the same as the other one but they happen every time