multihack / multihack-web Goto Github PK
View Code? Open in Web Editor NEWRealtime collaboration for programmers. (Web Version)
Home Page: https://multihack.github.io/multihack-web/
License: MIT License
Realtime collaboration for programmers. (Web Version)
Home Page: https://multihack.github.io/multihack-web/
License: MIT License
Need to update/improve HyperHost.
This is a regression from V1.
Need to decide the best way to implement this. V1's +/- signs were difficult to use and confusing.
Currently comes packaged with XML, CSS, and Javascript support.
User should be able to add/remove languages, and these Codemirror mixins should be loaded/deleted dynamically.
Multihack should NOT just be for web languages.
See WIP porting instructions
Add keyboard shortcuts to submit with enter (specifically when joining the room)
See WIP porting instructions
Is install documentation available ?
Take advantage of oEmbed and allow embedding Multihack in Slack and such.
Need to hide topbar, collapse file tree and skip upload, room, nickname.
I should've done this from the start, but proper changelogs and releases will start by/before Beta release.
P2P network is fully connected at the moment. This won't scale well to 10+ users.
A structured loose mesh is probably the best option.
Including, but not limited to:
MultiHack use this way to maintain files.
self.yfs.set(filePath, Y.Text)
but I found out this way you get really messy when you try to rename file or directory.
Because of this problem: Cannot change property's key name on y-map. You must delete obj from Y-map and insert again. But when you do that (delete and insert) you cannot use exist Y data type object (y-text, y-array, etc) because Y-Map set takes only TypeDefinition and creates new data type object.
My Solution is use two Y-map data.
filesystem_index: 'Map',
filesystem_nodes: 'Map'
Both filesystem_index and filesystem_nodes use randomly generated contentID as a key.
One contentID can access both file meta information (filesystem_index) and file content (filesystem_nodes).
Meta data looks like this.
self.yFSIndex.set(contentID, {
name: filename,
type: filetype,
contentID: contentID,
replydbID: replydbID,
parentPath: parentPath
})
Feel free to check my implementation on Rellat.
I also fix few things on filesystem.js and main file (index.js).
One tricky thing is when you use _buildPath you can't guarantee to get right meta data at right timing.
So I made this sideway.
self.execWhenTargetSet = function (target, f) {
function ft () {
if (target) f()
else setTimeout(ft, 50)
}
ft()
}
I'm not sure this is best way but this works pretty well.
Multihack is an amazing project !!!!
Is the master branch ok as an alpha....I m part of a team of developers that would like to install and begin using
Thanks for all of the amazing Magic !!!
Should save to localStorage.
Issue for general accessibility testing. Should satisfy the W3C's guidelines, or above.
If you require an accessibility feature, or have any feedback on the topic, please comment here.
Not sure how conducive this is to a programming tool. Voice chat seems better suited.
Backlog until requested.
Tabs at top of editor to quickly switch between recent documents
Probably too many DOM nodes to start with, memory issue later.
Need to take a different approach to the virtual filesystem if we want to support much larger projects.
Modal can slow down the workflow, so I suggest use a pop-up notification.
In other editors, when you toggle between files, it opens the file to the same location it was last opened to
I dont know if this is the right place to ask, but does Mutlihack and the editor plugins need an own logo? Currently there is this one with the two cricling arrows in brackets. It looks boring and a lot like a refresh button.
I could help, I even have some ideas.
Are you interested and if so, what do you want it to look like?
So far Multihack has managed fine with optimistic edits (due to low latency, not many consecutive users), but eventually we should move to a proper CCI model.
To be a provably correct realtime collab system, Multihack must meet the following criteria:
Thanks @kifhan for originally pointing out that there's a bit more theory behind this than I originally thought.
Is it possible to add the option to have an indentation guide like this?
I find it structures the code and gives better overview.
Users should be able to see the mouse cursor of the remote peers.
How it happened.
I believe it's a problem about Operational_transformation.
Should be able to bring a user to a specific file/line to get feedback.
Should behave normally until connection is reestablished.
It could be useful to have this fantastic tool as an Electron app, where users could choose to synchronize the browser file system with the local file system.
They could then use their favorite editor and would not require the files to pass through a zip archive. Instead they could drag in a folder (or point to one) and have the filesystem initialized.
It could even allow you to set up your own "private code server", similar to Coda - although I'm not sure how smart/easy that would be security wise.
Is there a way to install multihack-web on debain ?
Joining an audio call with a large number of people (less than the limit of 10), and deploying a HH server will fail due.
This is less then what the maximum number of connections should be, so some cleanup must be incorrect.
Can currently have two files with the same name in the same directory.
Would be ever so slightly faster if the output from browserify was minified for production
To explain things that might not be 100% clear (ie, deploy button)
Instead of fetching all of the code, the user should be able to:
Cross-file regex search.
Server owners (and possibly users) should be able to change color, syntax themes, etc.
Support for drop-in themes would be ideal.
It's too easy to misclick and delete a whole folder.
Thanks @mbosnjak01 for beta testing.
Everything is encrypted with WebRTC and WSS, but the server can see the key exchanges in the WebRTC case and the content in the WSS case.
Would be neat if you could specify a shared key along with your room and have everything encrypted.
Backlog because web crypto is useless without something like hyperboot (if even then), and that would need to be opt-in and so more complicated.
Basically, if you trust the server, you are fine and this isn't needed.
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.