This repository was archived by the owner on May 14, 2024. It is now read-only.
Implement Memo #9
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Here's finally an initial implementation I'm proud.
Xray CRDT representation is now based on Memo. It is possible to open local and remote projects, but some more work to perfection it must be performed.
Features to add/re-enable:
Receive
replica_idfrom remote frontendMemo uses UUID as replica ids – we can suppose that each user should have a unique replica id.
At this point, workspaces are paired to a user through an uszie
user_id.Ideally, when we first open Xray, it should create and store a new UUID that will always be used as
replica_idwhen opening local WorkTrees.When using Xray in the browser, the frontend should define the
replica_idand send it to the server application. Initially, it can be generated on a connection base, but later on, should be collected from GitHub OAuth or similar.Proper handle
goal_columnon selectionsMemo's
Selectionimplementation is missinggoal_column– being a strict UX requirement. I need to create a wrapper around Memo'sSelectionthat can persist thegoal_columnafterEnable
SaveactionThe previous implementation of the buffer was able to communicate with the server through RPC. I feel it should be Workspace/Project responsibility to save buffer to the FileSystem.
set_active_locationonWorkspaceView.set_active_buffer_viewBug to be fixed:
Fix: Properly propagate edits
Fix: Enable to open and edit the same file multiple times
I think this issue could be related to the one above.
Fix:
already borrowed: BorrowMutErroron remoteSupport tasks to be completed:
Pass all tests
During this re-implementation, an effort was made to keep the existing test suit up to date, and it helped a lot in properly shape Memo's integration. Unluckily, due to my poor knowledge on how to effectively test async Rust code, some tests have been commented out.
Enable benchmarks
Remove commented code
Prepare new visual
rpcimplementationWrite new update doc
As always, suggestions and/or help are always more than welcome!