mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-23 05:51:39 +00:00
Enhance TODO list and improve ServeSession synchronization logic
- Updated the TODO list to clarify tasks related to auto-selection and one-shot synchronization, ensuring better tracking of issues. - Introduced a new flag `__oneShotSyncDone` in `ServeSession` to manage synchronization state, preventing further message processing after a one-shot sync is completed. - Improved the handling of incoming changes during the patch visualizer, ensuring user selections are appropriately managed. These changes aim to streamline synchronization processes and enhance user experience during patch management.
This commit is contained in:
parent
63b0b031ff
commit
118c195e64
2 changed files with 18 additions and 8 deletions
17
TODO.txt
17
TODO.txt
|
|
@ -326,17 +326,18 @@ We need to investigate Tree reconciliation, make sure it's parallel, etc.
|
||||||
I'd really like to just reconcile specific paths that were modified - but i'm not sure if that just defeats the purpose.. need to explore this topic later.
|
I'd really like to just reconcile specific paths that were modified - but i'm not sure if that just defeats the purpose.. need to explore this topic later.
|
||||||
Worst case - we reconcile only on connect, but do so in mega-parallel
|
Worst case - we reconcile only on connect, but do so in mega-parallel
|
||||||
|
|
||||||
[auto select issue]
|
Also, we need to explore how VSCode deals with this. They seem to have ZERO issues.
|
||||||
when you commit changes on git, it's considered unchanged. we should send like the last git hash too, like prior to head, too.
|
Maybe we can have a mode to tie into the vscode file watcher ourselves? luau-lsp does this.
|
||||||
|
|
||||||
[yielding after sync]
|
[auto select issue]
|
||||||
there is some process that is making disconnecting after a one-shot sync completes take FOREVER if the server is yielding (usually from the reconciler)
|
when you commit changes on git, it's considered unchanged. we need send prior git hash too, like prior to head.
|
||||||
- once the one-shot sync completes, it should not be waiting for additional things to come from the server. it just needs to kill the connection immediately. and go back to the main page.
|
right now i believe we are calculating the hashes manually, we CAN use the git hash since our hash schema matches it 1:1.
|
||||||
|
this would be a nice optimization, too.
|
||||||
|
|
||||||
[one shot mode change]
|
[one shot mode change]
|
||||||
new changes that come in / out during the review menu on the plugin is really disorienting.
|
new changes that come in / out during the pathc visualizer menu on the plugin is really disorienting.
|
||||||
we should just make it stop accepting new changes once it has the full patch ready and displayed to the user
|
if a new change comes in mid-visualizer syncing, we need to unselect the change completely - not even permitting auto selections or whatever the user had selected (ONLY if that specific file was changed, of course)
|
||||||
any further changes should have to be done NEXT one-shot sync
|
this applies to all sync mode which that GUI is being used
|
||||||
|
|
||||||
[syncback]
|
[syncback]
|
||||||
detect when the output file hash is the same, and dont write to it.
|
detect when the output file hash is the same, and dont write to it.
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,7 @@ function ServeSession.new(options)
|
||||||
__confirmingPatch = nil,
|
__confirmingPatch = nil,
|
||||||
__isConfirming = false, -- Explicit confirmation state flag for defense-in-depth
|
__isConfirming = false, -- Explicit confirmation state flag for defense-in-depth
|
||||||
__applyingPatch = false, -- Set during reconciler patch application to suppress DescendantAdded
|
__applyingPatch = false, -- Set during reconciler patch application to suppress DescendantAdded
|
||||||
|
__oneShotSyncDone = false,
|
||||||
__connections = connections,
|
__connections = connections,
|
||||||
__precommitCallbacks = {},
|
__precommitCallbacks = {},
|
||||||
__postcommitCallbacks = {},
|
__postcommitCallbacks = {},
|
||||||
|
|
@ -222,6 +223,10 @@ function ServeSession:__onWebSocketMessage(messagesPacket)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.__oneShotSyncDone then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
Log.info("Received {} messages from Rojo server", #messagesPacket.messages)
|
Log.info("Received {} messages from Rojo server", #messagesPacket.messages)
|
||||||
|
|
||||||
-- Combine all messages into a single patch
|
-- Combine all messages into a single patch
|
||||||
|
|
@ -879,6 +884,10 @@ function ServeSession:__confirmAndApplyInitialPatch(catchUpPatch, serverInfo)
|
||||||
self:__applyPatch(pushPatch)
|
self:__applyPatch(pushPatch)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if Settings:get("oneShotSync") then
|
||||||
|
self.__oneShotSyncDone = true
|
||||||
|
end
|
||||||
|
|
||||||
-- Send pull items + stage requests to Rojo server
|
-- Send pull items + stage requests to Rojo server
|
||||||
local hasPullChanges = self.__twoWaySync and not PatchSet.isEmpty(pullPatch)
|
local hasPullChanges = self.__twoWaySync and not PatchSet.isEmpty(pullPatch)
|
||||||
local hasStageIds = #stageIds > 0
|
local hasStageIds = #stageIds > 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue