Skip to content
/ syncdoc Public

Operational transformation for markdown documents, in Go.

Notifications You must be signed in to change notification settings

cchan/syncdoc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

56b0af0 · Apr 1, 2020

History

50 Commits
Apr 1, 2020
Apr 1, 2020
Apr 1, 2020
Mar 2, 2020
Apr 16, 2018
Sep 20, 2019
Apr 17, 2018
Sep 20, 2019
Sep 22, 2019
Apr 1, 2020
Mar 6, 2020
Mar 19, 2020
Mar 19, 2020
Mar 24, 2020
Mar 2, 2020

Repository files navigation

SyncDoc

A collaborative editing tool written in Go by Clive Chan.

Copyright (c) 2018, all rights reserved, for now.

TODO

x separate this into neater files x ISSUE: when you newline above a line with content, that line gets cleared

  • ISSUE: onconnect full-doc update duplicates the document if the client disconnects & reconnects; SOLUTION: have separate Edit and FullUpdate events
    • Maintain a local queue of changes while offline
  • ISSUE: bounds checks for change events before slicing
  • ISSUE: ctrl-a delete doesn't sync x periodically dump History results to plaintext file, and use that as the base
    • keep enough history (1000 entries?) that it can still merge any latecomers
    • full-file updates periodically (every 10s?)
  • OT is pretty easy; to test it just give a setTimeout delay before js send edit to server
  • collapse history entries (hard to preserve indexes) - should probably happen mainly on js side? for now don't worry about load
  • WSS LetsEncrypt - not just CloudFlare
  • Use a linkedlist for Document connections?
  • Add cursors for other users (cursorPosition events)
  • Integrate some changes from protobuf branch

About

Operational transformation for markdown documents, in Go.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published