Code Monkey home page Code Monkey logo

malte's People

Contributors

adaminersjo avatar jonasnorlinder avatar jowe3751 avatar

Watchers

 avatar  avatar  avatar

malte's Issues

As a user I want to be able to edit a single text file that's stored on a server

This includes:

  • Creating the editor frontend #27
  • Establish WebSocket connection between server and client #28
  • Expose a file as a in-memory buffer from the backend to the frontend via the WebSocket connection #29
  • Establish a set of commands (insert/remove) that is sent to/from the server between clients that is applied to the buffer #30
  • Periodically save the in-memory buffer back to the file system

As a user I want to undo/redo code I write

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)

Create editor frontend

  • Create editor React component using Monaco
  • Create basic listener for Model.onDidChangeContent, only adding one character at a time
  • Extend listener for single character deletion
  • Extend listener for multiple character deletion
  • Extend listener for pasting
  • Extend listener for Autocompletion
  • Extend listener for newlines insertion/deletion (LF)
  • Apply listener to Monaco Editor

As a user I want a visual representation of the files in the project

This includes

  • On the backend, send all files in the project root over the websocket connection #37
  • Create a tree frontend component which be can be used to display files #38
  • Integrate the file data sent from backend with the frontend tree component #39
  • Watch the filesystem for external changes and re-submit files to frontend #40

Create button to open/close the shell

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.

Implement CD

We might as well implement CD when we are doing proper CI

Fix wonky layout in frontend

Right now, the editor and terminal together is larger than your browser window leading to overflow

We should

  • Auto size terminal and editor to its parent
  • Never see overflow

Establish a WebSocket connection between server and client

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.