Commit graph

53 commits

Author SHA1 Message Date
boatbomber
d1d70521a3 Properly handle changing and removing permissions 2023-09-04 08:46:14 -07:00
boatbomber
955b143ced Change to a game.Rojo module instead of _G 2023-09-04 08:22:58 -07:00
boatbomber
4ab51e1906
Merge branch 'master' into headless-api 2023-08-20 21:58:03 -07:00
boatbomber
c43726bc75
Confirmation behaviors (#774) 2023-08-20 12:37:40 -07:00
boatbomber
dda01ae9bb Merge branch 'master' of https://github.com/boatbomber/rojo into headless-api 2023-08-15 06:14:54 -07:00
boatbomber
ecc31dea15
View rich diffs for Source property changes (#748) 2023-07-26 23:50:29 -07:00
boatbomber
1220b5c0d6 Merge branch 'master' of https://github.com/boatbomber/rojo into headless-api 2023-07-16 21:05:57 -07:00
boatbomber
4915477823
Expose reconciler hooks on servesession (#741) 2023-07-17 04:03:06 +00:00
boatbomber
6e40993199
Rework patch visualizer with many fixes and improvements (#726)
- Reconciler now has precommit and postcommit hooks for patch applying
  - This is used to compute a patch tree snapshot precommit and update the
tree metadata postcommit
- PatchVisualizer can now display Removes that happened during sync
  - It was previously missing because the removed objects no longer
existed so it couldn't get any info on them (This is resolved because
the info is gotten in precommit, before the instance was removed)
- PatchVisualizer now shows Old and New values instead of just Incoming
during sync
  - (Still displays Current and Incoming during confirmation)
  - This is much more useful, since you now see what the changes were and
not just which things were changed
- PatchVisualizer displays clarifying message when initial sync has no
changes instead of just showing a blank box
- Objects in the tree UI no longer get stuck expanded when the next
patch has the same instance but different info on it
- Objects in the tree UI correctly become selectable after their
instance is added and unclickable when removed during sync
2023-07-13 20:09:19 -07:00
boatbomber
9d48af2b50
Better settings control (#725)
- Lock some settings during sync
- Make experimental features more clearly labelled
2023-07-12 13:00:07 -07:00
boatbomber
7154113c13
Add buttons on connected page (#722) 2023-07-08 21:23:25 -07:00
boatbomber
a0b99317bc Fix editing permissions to use new request api 2023-07-08 15:39:54 -07:00
boatbomber
fde78738b6
Improve sync info (#692)
- Fixed an edge case where disconnecting and then reconnecting would
retain outdated info
- Fixed an issue where new patches wouldn't immediately update the
change info text
- Removed extraneous changes count info, as it was not useful and could
be checked in the visualizer anyway
- Added warning info for when some changes fail to apply
- Updates timestamp of last sync even if patch was empty, to have a more
accurate signal on Rojo's uptime
2023-07-05 21:38:11 +00:00
boatbomber
ce530e795a
Fix Rojo breaking when users undo/redo in Studio (#708) 2023-07-05 14:09:11 -07:00
boatbomber
dcfdf7fabd Prevent misuse of RequestAccess 2023-07-04 19:21:32 -07:00
boatbomber
a795e23c3c Fix typo in log 2023-07-04 13:46:31 -07:00
boatbomber
1ff018a2ce Merge branch 'master' of https://github.com/boatbomber/rojo into headless-api 2023-07-04 13:45:36 -07:00
boatbomber
658d211779
Sync reminder notification & notification actions (#689)
Implements and closes #652.

---------

Co-authored-by: Chris Chang <51393127+chriscerie@users.noreply.github.com>
Co-authored-by: Micah <git@dekkonot.com>
2023-07-04 20:09:41 +00:00
boatbomber
55ac231cec
Skip confirming patches that only contain a datamodel name change (#688)
Closes #672.

Skips the user confirmation if the patch contains only a datamodel name
change.

I decided to build generic PatchSet utility functions in case we need to
use similar logic in the future, in addition to maintaining clear
division of duties. The app code shouldn't be too dependent upon patch
internal structure when we can avoid it.

---------

Co-authored-by: Kenneth Loeffler <kenloef@gmail.com>
2023-06-30 11:21:36 -07:00
boatbomber
6542304340
Fix the diff visualizer of connected sessions (#674)
Clicking on the "X changes X ago" message opens up a handy diff
visualizer to see what those changes were. However, it had quite a few
issues that needed fixing.

- Disconnecting a session with it expanded caused an error as it tried
to read the serveSession that no longer exists during the page fade
transition. (#671)
- Resolved by converting to stateful component and holding the
serveSession during the lifetime to ensure it can render the last known
changes during the fade transition
- Leaving it open while new changes are synced did not update the
visualizer
- The patch data was piggybacking on an existing binding, which meant
that new patches did not trigger rerender.
    - Resolved by converting to state
    - Also made some improvements to that old binding
- Moved from app to connected page for better organization and
separation of duties
      - No more useless updates causing rerenders with no real change
- Scroll window child component wouldn't actually display the updated
visuals
    - Resolved by making major improvements to VirtualScroller
      - Made more robust against edge case states
      - Made smarter about knowing when it needs to refresh

As you can see in this slow motion GIF, it works now.

![slowedDemo](https://github.com/rojo-rbx/rojo/assets/40185666/c9fc8489-72a9-47be-ae45-9c420e1535d4)
2023-06-03 22:46:16 -07:00
boatbomber
36ec55de52
Merge branch 'master' into headless-api 2023-04-02 02:59:26 -04:00
boatbomber
b5ed952d5c
Add visual diffs to syncing (#603)
* Add user confirmation to initial sync

* Use "Accept" instead of "Confirm"

* Draw tree alphabetically for determinism

* Add diff table dropdown

* Add diff table to newly added objects

* Unblock keybind workflow

* Only show reject button when two way is enabled

* Try to patch back to the files when changes are rejected

* Improve text spacing of the prop diff table

* Skip user confirmation of perfect syncs

* Give instances names for debugging UI

* Optimize tree building

* Efficiency: dynamic virtual scrolling & lazy rendering

* Simplify virtual scroller logic and avoid wasteful rerenders

* Remove debug print

* Consistent naming

* Move new patch applied callback into accept

* Pcall archivable

* Keybinds open popup diff window

* Theme rows in diff

* Remove relic of prototype

* Color value visuals and better component name

* changeBatcher is not needed when no sync is active

* Simplify popup roact entrypoint

* Alphabetical prop lists and refactor

* Add a stroke to color blot for contrast

* Make color blots animate transparency with the rest of the page

* StyLua formatting on newly added files

* Remove wasteful table

* Fix diffing custom properties

* Display tables more meaningfully

* Allow children in the button components

* Create a rough tooltip component

* Add tooltips to buttons

* Use provider+trigger schema to avoid tooltip ZIndex issues

* Add triangle point to tooltip

* Tooltip underneath instead of covering

* Cancel hovers when unmounting

* Allow multiple canvases from one provider

* Display above or below depending on available space

* Move patch equality to PatchSet.isEqual

* Use Container

* Remove old submodules

* Reduce false positives in diff

* Add debug log

* Fuzzy equals CFrame in diffs to avoid floating point in

* Fix decodeValue usage

* Support the .changedName patches

* Fix content overlapping border

* Fix tooltip tail alignment

* Fix tooltip text fit

* Whoops, fix it properly

* Move PatchVisualizer to Components

* Provide Connected info with full patch data

* Avoid implicit nil return

* Add patch visualizer to connected page

* Make Current column invisible when visualizing applied patches

* Avoid floating point diffs in a numbers and vectors
2023-04-01 23:17:23 -04:00
boatbomber
cf5e13f5a0 Add api conflict popup 2023-01-04 19:37:37 -05:00
boatbomber
6fddcc5ceb Generic popup titles 2023-01-04 19:13:31 -05:00
boatbomber
d158ccb2eb Simplify popup handling 2023-01-04 18:59:53 -05:00
boatbomber
de33cf0e55 Genericize popup state 2023-01-04 18:51:55 -05:00
boatbomber
7c1afd5aa9 Add permission management listings 2023-01-04 18:20:57 -05:00
boatbomber
4275783ba4 Add permissions page 2023-01-04 17:28:06 -05:00
boatbomber
7c0a67ba86 Merge branch 'master' of boatbomber/rojo into headless-api 2022-10-08 09:49:01 -04:00
boatbomber
b88d34c639
Add tooltips to buttons (#637)
* Add tooltips

* Fix whitespace

* Avoid overloaded word canvas

* Clean render function

* Switch folder to fragment
2022-10-07 19:31:14 -04:00
boatbomber
7e7583bcfc
Merge branch 'master' into headless-api 2022-09-30 17:13:38 -07:00
fox
96cb1ee3fd
Support explicitly specifying http or https protocol in plugin (#642)
* Support explicitly specifying http or https protocol in plugin

* Fix incorrect format string

Port is not a number
2022-09-30 17:59:09 -04:00
boatbomber
2a8cb118d5 Clearer names and titles 2022-09-30 16:56:27 -04:00
boatbomber
e3a8152575 Handle plugin state prior to headless 2022-09-30 14:14:28 -04:00
boatbomber
d7cee5c5be Add api permissions 2022-09-28 17:01:17 -04:00
boatbomber
17b2752b38 Add Changed event 2022-09-27 22:21:23 -04:00
boatbomber
2a25193941 Add CreateApiContext and more caller info 2022-09-27 01:59:48 -04:00
boatbomber
be89259bbd Add Address and ProjectName when connected 2022-09-25 17:10:30 -04:00
boatbomber
4832035a18 Add headless API 2022-09-25 16:43:02 -04:00
boatbomber
003abe86bb
Save host and port by placeId (#613)
* Save host and port by placeId

* Bump to 5 months before clearing

* Fix indentation
2022-09-22 23:03:09 -04:00
Qualadore
c7c0903804
Reduce minimum plugin size (#606)
* Reduce minimum plugin size

* Resize to 300x120

Co-authored-by: Qualadore <me@qualadore.com>
2022-08-20 22:40:52 -04:00
boatbomber
4cb49c7825
Add sync locking for Team Create (#590)
* Add sync locking

* Steal lock from users who left without releasing

* Do not remove lock as unknown instance

* Don't delete non Archivable instance
2022-08-08 04:08:55 -04:00
James Onnen
41d7aaf323
Add uipadding to notifications (#589) 2022-08-03 19:01:07 -04:00
boatbomber
e110f3726a
Real-time status about sync details (#569)
* Rough prototype of patch info display

* Remove extra newline

* Switch to binding

* Update slower for older timestamps

* Batch patches within a second of each other

* Fix indentation

* Less wasteful refresh hz

* More apt variable name

Co-authored-by: Lucien Greathouse <me@lpghatguy.com>
2022-08-03 18:58:28 -04:00
boatbomber
e864cf0c7d
Switch git submodules to Wally packages (#584)
* Switch git submodules to Wally packages

* Update build snapshot

* Add wally to foreman and use latest versions

* Install packages in CI runners

* Fix indents

* Install packages in the correct directory

* Install packages in correct dir of release action too

* Remove submodules from ci checkout

* Remove submodules from release checkout

* Update selene with latest fix

* Fix whitespace

Co-authored-by: Lucien Greathouse <me@lpghatguy.com>
2022-08-03 18:36:58 -04:00
boatbomber
6ae0bf366a
Use singleton settings outside the Roact tree (#576)
* Use singleton settings outside the Roact tree

* Cleanup listener on unmount

* Refactor setting page components

* Fix willUnmount being added to the wrong table

* Remove bindings in favor of state
2022-07-18 19:36:38 -04:00
boatbomber
54398d4c4b
Add setting to toggle sound effects (#568)
* Use soundPlayer object with setting

* Style changes
2022-07-02 05:12:58 -04:00
boatbomber
ca0759a011
Add notification popups (#540)
* 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
2022-06-29 19:06:13 -04:00
boatbomber
0a412ade88
Remove duplicate PluginSettings.StudioProvider (#545) 2022-05-25 18:48:10 -04:00
boatbomber
f1d0f1c1c9
Bugfix: PluginAction spam causing errors (#541)
* 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>
2022-05-22 18:47:11 -04:00