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:
[x] Receive replica_id from remote frontend
Memo 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_id when opening local WorkTrees.
When using Xray in the browser, the frontend should define the replica_id and 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_column on selections
Memo's Selection implementation is missing goal_column – being a strict UX requirement. I need to create a wrapper around Memo's Selection that can persist the goal_column after
[ ] Enable Save action
The 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_location on WorkspaceView.set_active_buffer_view
Bug to be fixed:
[x] Fix: Properly propagate edits
[x] Fix: Enable to open and edit the same file multiple times
I think this issue could be related to the one above.
[x] Fix: already borrowed: BorrowMutError on remote
Support 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.
[x] Enable benchmarks
[ ] Remove commented code
[ ] Prepare new visual rpc implementation
[ ] Write new update doc
As always, suggestions and/or help are always more than welcome!
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:
[x] Receive
replica_id
from remote frontend Memo 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 uszieuser_id
.Ideally, when we first open Xray, it should create and store a new UUID that will always be used as
replica_id
when opening local WorkTrees.When using Xray in the browser, the frontend should define the
replica_id
and 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_column
on selections Memo'sSelection
implementation is missinggoal_column
– being a strict UX requirement. I need to create a wrapper around Memo'sSelection
that can persist thegoal_column
after[ ] Enable
Save
action The 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_location
onWorkspaceView.set_active_buffer_view
Bug to be fixed:
[x] Fix: Properly propagate edits
[x] Fix: Enable to open and edit the same file multiple times I think this issue could be related to the one above.
[x] Fix:
already borrowed: BorrowMutError
on 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.
[x] Enable benchmarks
[ ] Remove commented code
[ ] Prepare new visual
rpc
implementation[ ] Write new update doc
As always, suggestions and/or help are always more than welcome!