typeintandem / tandem Goto Github PK
View Code? Open in Web Editor NEWTyping in Tandem. Decentralized, cross-editor, collaborative text-editing!
License: Apache License 2.0
Typing in Tandem. Decentralized, cross-editor, collaborative text-editing!
License: Apache License 2.0
Launching a session will silently fail if you try to do so before sublime loads certain environment variables.
We try to run our agent python3
and invoke the version of python that is bundled with Sublime, but it can't be found. This is not a major issue right now, but should probably be fixed before release. It occurs every time the application (Sublime) is relaunched, and is not a one-time only thing.
Move logic common to sublime and neovim editors to a lib directory
To allow easier firewall configuration, it would make sense to have a section the README detailing the traffic generated by tandem.
Like:
Also, what happen if the two hosts are on different local subnets that are directly connected, is a direct local connection tried first?
Currently we broadcast the entire buffer contents / apply the whole buffer.
We should send/accept diffs (what has changed between cursor movements) to the agent/CRDT process.
When running python3 ./agent/main.py
using Python 3.4 I run into errors with the trailing commas after kwargs that pop up throughout the repo. With python 3.6 it runs fine.
Could you add the minimum version for python and nodejs to the readme?
I'm extensively using real-time collaborative edition for TeX/LaTeX documents.
Today, this usage is dominated by Overleaf/Sharelatex which are both somehow proprietary.
Yesterday, there was bluelatex (full disclosure: I was one of the author, together with @tdurieux and @satabin), but the project has stalled, in particular because of serious bugs / limitations in the synchronization.
It would be great to have collaborative edition for TeX/LaTeX documents coming again in the free world, and having Tandem support in a Linux TeX/LaTeX editor (eg TeXWorks) would be a solution!
I installed the deps and the neovim plugin. Restarted neovim.
In one shell I opened neovim foo.txt
and did :Tandem
(copied session-id )and wrote some stuff into the buffer
In another shell, I opened neovim .
and did :Tandem sessionid
.
I got shown an empty buffer but nothing was reflected in the other buffer, no matter what I wrote in the 1st neovim session's buffer.
I'm on High Sierra (osx).
Neovim (0.3.3) healthcheck is all fine (python2 & 3 support)
I don't see any errors but it doesn't look like it's working. Am I missing something?
Here are the logs:
tandem-agent-62043.log
tandem-agent-62367.log
tandem-crdt-debug-1546944835838.log
tandem-crdt-debug-1546944888109.log
tandem-crdt-1546944888109.log
tandem-crdt-1546944835838.log
The input_checker
in the VIM plugin currently polls every 1s. We can change this to use autocommands and turn this into event driven logic.
The link to our sublime repo should be added to the Package Control channel, and we should open a PR to merge it in.
Not launch blocking but will help increase # users and ease of installation.
See if we can disable the Tandem options when appropriate:
Also see if we can do this with command palette commands
async_call
After cd crdt
, yarn
, yarn build
I get:
Version: webpack 3.12.0
Time: 1865ms
Asset Size Chunks Chunk Names
bundle.js 911 kB 0 [emitted] [big] main
[6] ./stores/document.js 161 bytes {0} [built]
[100] multi ./index.js 28 bytes {0} [built]
[101] ./index.js 1.05 kB {0} [built]
[112] ./api/index.js 458 bytes {0} [built]
[113] ./api/apply_operations.js 365 bytes {0} [built]
[114] ./api/get_document_text.js 257 bytes {0} [built]
[115] ./api/get_document_operations.js 270 bytes {0} [built]
[116] ./api/replicate_document.js 279 bytes {0} [built]
[117] ./api/set_document.js 235 bytes {0} [built]
[118] ./api/set_text_in_range.js 344 bytes {0} [built]
[119] ./io/index.js 590 bytes {0} [built]
[120] ./utils/logger.js 492 bytes {0} [built]
[136] ./node_modules/logform ^\.\/.*\.js$ 1.12 kB {0} [built]
[138] ./node_modules/logform/dist ^\.\/.*\.js$ 508 bytes {0} [built]
+ 189 hidden modules
ERROR in ./node_modules/winston/lib/winston/transports/http.js
Module parse failed: Unexpected token (186:6)
You may need an appropriate loader to handle this file type.
| }
| const req = (this.ssl ? https : http).request({
| ...this.options,
| method: 'POST',
| host: this.host,
@ ./node_modules/winston/lib/winston/transports/index.js 42:11-28
@ ./node_modules/winston/lib/winston.js
@ ./utils/logger.js
@ ./index.js
@ multi ./index.js
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
The rendezvous server is not distributed as part of this plugin/agent. It should be removed from the license section of each plugin's README, and a link to this monorepo's README should be provided instead.
After you run a Tandem session and stop it with "TandemStop", restarting it causes this issue:
Error detected while processing :
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "<string>", line 54, in start
File "/Users/sameer/Documents/development/tandem/plugins/vim/tandem_lib.py", line 285, in start
self._initialize()
File "/Users/sameer/Documents/development/tandem/plugins/vim/tandem_lib.py", line 70, in _initialize
vim.command('enew')
vim.error: Vim(enew):E37: No write since last change (add ! to override)
Press ENTER or type command to continue
Looks like the command is broken. Probably need to add "!" to overwrite it.
As a side note, I had deleted all content on my buffer, so it probably didn't even need to do this in the first place.
Bonus:
lib
folder.🚨 You need to enable Continuous Integration on Greenkeeper branches of this repository. 🚨
To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.
Since we didn’t receive a CI status on the greenkeeper/initial
branch, it’s possible that you don’t have CI set up yet.
We recommend using:
If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/
.
Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.
VS Code is one of the popular editors around, and is being adopted by a lot of developers around the world. Would be good to see support for the same.
The agent still supports the ConnectTo
message, but the vim/neovim plugins no longer send it because we use the hole punching messages.
It may be useful to have a plugin binding that sends this message so we can establish a "direct connection" (e.g. for debugging or if your editing group members are all routable under a private network). This will also require the plugin to display the port number that it's listening on.
Is there a plan to have Javascript web client? Is that on the roadmap?
Even if multiple buffers are open, Tandem should only be listening to changes and writing to one of them.
Needed for both Sublime/Neovim
Implemented by #34
hello!
what's up with the project? :) it looks like the main domain i had in my links has expired:
...and there hasn't been a lot of activity in the last year or so... is this still going?
thanks!
Hi,
Unfortunately, due to the following clause:
(e) Any Derivative Works may not be configured to use the default server
provided by the Copyright holders. You must configure all Derivative
Works to use servers owned by You, or servers You are otherwise
authorized to use.
... typetandem is not in compliance with (at least) the Debian Free Software Guidelines. It would also not be compliant with the FSF's Four Freedoms.
This is a shame as typetandem is genuinely cool but Debian (and others) simply cannot distribute it. :(
Currently the plugin designates one user as the host and others as the listener (user must designate) in order to prevent listeners changes from being echoed back to the host.
We should allow all users to be hosts/listeners in the sense - this will be related to and aided by #40 where we don't send the entire buffer contents but rather the diffs b/w buffers.
Should have connection and communication between agent and plugin
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.