rehnarama / malte Goto Github PK
View Code? Open in Web Editor NEWMulti-access live text editor
Home Page: https://rehnarama.github.io/MALTE/index.html
Multi-access live text editor
Home Page: https://rehnarama.github.io/MALTE/index.html
It doesn't seem to work on some docker hosts (windows) and we map the ports anyway, so it's okay to remove it!
This includes:
Note that this ~ kind of ~ work as long as no one writes anything close to where you undo!
Since we use monaco's applyEdits, a function which does not change the undo stack, an undo will be performed on the original positions.
We could use another function instead of applyEdits, but we don't want to undo other peoples text, only our own! A better way would be to utilize the RGA structure to achieve undo-redo (e.g. an undo counter for every RGA node)
This datastructure enables the collaborative editing feature to work. More information on the datastructure is found here: https://pages.lip6.fr/Marc.Shapiro/papers/rgasplit-group2016-11.pdf
This issue covers only implementing the most basic version of RGA, i.e. character wise insertion/deletion. Block-wise functionality can be added in a future issue.
Should be tested
This includes everything except index.tsx/App.tsx
With the data sent from #32, apply this to the xterm.js terminal emulator that already exists in the frontend
Each socket instantiates a new terminal. However, if the client disconnects, the reference to this terminal keeps on living. We need to kill it.
We can listen on the event disconnect
and call the already existing kill function, all inside the Terminal
class
The definitions have to be used on the server side to apply Insert/Remove on the structure.
Should also include TreeNode in fsTree
This includes
A button should exist on the frontend which sends a terminate command to the backend. The backend should then terminate the shell process and clean up any managed resources (if any?).
A button should exist to create a new terminal window.
At the moment, a controlled Monaco Editor is used to replace "\r\n" with "\n" and the operations mapper has to do the same thing. This should be changed to use Monaco methods.
User input should somehow be sent over the WebSocket connection and applied to the stdin of the spawned shell (See #32 )
We might as well implement CD when we are doing proper CI
To display terminal we need to push shell output over WebSocket connection (See #29) so that the client can display it
See express js/socket io documentation for how
Right now, the editor and terminal together is larger than your browser window leading to overflow
We should
With the WebSocket connection, open a file (any will do!) and send this over the WebSocket connection to the frontend (See #28).
The file should then be displayed in the editor frontend (See #27)
Specify and write down an API specification for the communication between backend and frontend
This can include
Create a page in the github wiki with this information
With the WebSocket connection in #29 send a tree of all files to the frontend. It's enough to simply log the received object in the frontend for now.
We need to communicate asynchronously over a duplex channel between the server and client. A WebSocket connection allows this.
To complete this issue a WebSocket connetion should be established between clients that enters the frontend and the backend. Send a "Hello!" message over the connection.
Without it we will suffer
My suggestion is default prettier config together with eslint (it support typescript now I think yay!)
Used https://shapeshed.com/command-line-utilities-with-nodejs/#piping-data to see how you can pipe in Node
Should be able to distinct between folders and files. Bonus point if folders are collapsible
Colored areas/text in each area that says (EDITOR/TERMINAL/FILE TREE) is enough. Images are here: https://rehnarama.github.io/MALTE/
Such that /home/ubuntu/workspace, etc. exists
The in memory buffer (See #29 ) should periodically be saved back to the file system in the backend.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.