* Add notifications prototype
* Add timeout
* Improve function name
* Faster timeouts and fully clickable
* Update remove padding from old X button
* Only auto-dismiss when viewport is open
* Start auto dismiss once viewed
* Avoid redundantly displaying widget text as notifs
* Add sound effect
* Add setting for notifications
* Remove duplicate PluginSettings.StudioProvider
* Use short pop sound effect
* Fix broken audio, thanks Roblox
* Use e instead of createElement
* Use session's state instead of existence to determine action
* Retain host/port text
* Use bindings instead of text/ref tunneling
Co-authored-by: Lucien Greathouse <me@lpghatguy.com>
* Create plugin action component
* Add plugin action for session start/end
* Add output for connection status change
* Move host & port refs to App level so keybind can access them
* Use passed function directly
* Improve the action text clarity
* Add actions for single action
* Add to changelog
* Explicitly return nil
Co-authored-by: Lucien Greathouse <me@lpghatguy.com>
* Change log level to info
* Refactor startSession to contain the logic
* Formatting
Co-authored-by: Lucien Greathouse <me@lpghatguy.com>
* Implement ChangeBatcher
* Use ChangeBatcher for two-way sync
* Pause updates during patch application
* I can English good
* Break after encountering a nil Parent change
This prevents __flush from erroring out when an instance's Parent is
changed to nil and it has other property changes in the same batch.
* Update rbx_dom_lua
* Don't connect changed listeners in a running game
#468 made me realize how bad of an idea this is in general...
* Update TestEZ and fix sibling Ref reification test
* Add ChangeBatcher tests
* Test instance unpausing by breaking functionality out to __cycle
* Break up the module a bit and improve tests
* Shuffle requires around and edit comment
* Break out more stuff, rename createChangePatch -> createPatchSet
* Make ChangeBatcher responsible for unpausing all paused instances
This somewhat improves the situation (of course, it would preferrable
to not have to hack around this problem with Source at all). It also
sets us up nicely if we come across any other properties that do
anything similar.
* Remove old reference to pausedBatchInstances
* Use RenderStepped instead of Heartbeat and trash multi-frame pauses
I probably should have done this in the first place...
ChangeBatcher still needs to unpause instances, but we don't need to
hold pauses for any longer than one cycle.
* Remove useless branch
* if not next(x) -> if next(x) == nil
* Add InstanceMap:unpauseAllInstances, use it in ChangeBatcher
* Move IsRunning check to InstanceMap:__maybeFireInstanceChanged
* Add Flipper
* Remove old UI
* Add boilerplate UI
* Change plugin version
* Merge upstream
* Bunch of new UI changes
Too lazy to list them all in individual commits
* Touch ripple for buttons and a few other things
* Make the close button on the PluginGui work
* Set button state to guiEnabled
* Implement Connecting, NotConnected; add Header; don't update plugin button on render
* Replace mapLerpColor with mapLerp
* Update blendAlpha to be 0 without any values
* Add ActionFillTransparency to Theme.Button
* Suffix all Theme entries
* Update Flipper
* Add disconnect button
* Remove cancel button
* Add settings page
* Add scrollbar and dark theme support to settings
* Include settings in startSession
* Set context default value to nil
I always thought this was the name, lol...
* Add Error page
* Fix preloadAssets
* Fix preloadAssets import
* Update checkbox colors a little
* Add setting descriptions
* Fix scrolling frame in settings panel
* Remove .vscode
* Rename Throbber to Spinner
* Update merge
* Move Spinner images to assets
* Change casing of directories
* Remove old directories
* Add comments to getDerivedStateFromProps
* Account for offset in host TextBox size
* Turn width variables into constants
* Attempt to fix the comments
* Add a missing comma in Settings
* Remove a double space
* Remove Dummy object
* Move most of the Studio logic out of render
* Don't truncate port input
* Replace merge with Dictionary.merge
* Replace "Got it!" with "Okay"
* Add projectName to setStatus call
* Add Flipper to build.rs
* Start splitting apart reconciler, with tests
* Reify children in reify
* Baseline hydrate implementation
* Remove debug print
* Scaffold out diff implementation, just supporting name changes
* invariant -> error in decodeValue
* Flesh out diff and add getProperty
* Clear out top-level reconciler interface, start updating code that touches it
* Address review feedback
* Add (experimental) Selene configuration
* Add emptiness checks to PatchSet, remove unimplement invert method
* Improve descendant destruction behavior in InstanceMap
* Track instanceId on all reify errors
* Base implementation of applyPatch, returning partial patches on failure
* Change reify to accept InstanceMap and insert instances into it
* Start testing applyPatch for removals
* Add test for applyPatch adding instances successfully and not
* Add , which is just error with formatting
* Correctly use new diff and applyPatch APIs
* Improve applyPatch logging and fix field name typo
* Better debug output when reify fails
* Print out unapplied patch in debug mode
* Don't write properties if their values are not different.
This was exposed trying to sync the Rojo plugin, which
has a gigantic ModuleScript in it with the reflection
database. This workaround was present in some form in
many versions of Rojo, and I guess we still need it.
This time, I actually documented why it's here so that
I don't forget for the umpteenth time...
* Add placeholder test that needs to happen still
* Introduce easier plugin testing, write applyPatch properties test
* Delete legacy get/setCanonicalProperty files
* Fix trying to remove numbers instead of instances
* Change applyPatch to return partial patches instead of binary success
* Work towards being able to decode and apply refs
* Add helpers for PatchSet assertions
* Apply refs in reify, test all cases
* Improve diagnostics when patches fail to apply
* Stop logging when destroying untracked instances, it's ok
* Remove read before setting property in applyPatch
* Fix diff thinking all properties are changed