It has been a very long time since I've got this idea of combining Leo with 
fossil. For all these years I felt that there was a great potential in this 
mixture, but I haven't got the time to do anything about it until recently. 

Fossil uses an extremely good algorithm to calculate the difference between 
two texts. And the deltas produced by this algorithm are very compact and 
nice to work with. If the input texts are texts, than the delta is also a 
plain text. I have ported this algorithm from C in which fossil is 
originally written, to Rust programming language. The ported code is 
published on crates.io as fossil-delta 
<https://crates.io/crates/fossil-delta>. Using this library, I wrote a 
small web server which accepts snapshots sent from Leo periodically at idle 
time and calculates the delta between the previous one and the current one, 
and stores those deltas in the sqlite database. The server also serves 
small web application that allows user to browse history of any recorded 
Leo outline. Using two scale widgets user can choose any recorded version 
of the outline shape, and history of the selected node.

Sending snapshots from Leo is done by the plugin which keeps track of the 
time passed since the last Leo command has been executed. When 5s pass 
since the last executed command, Leo calculates the snapshot and if it is 
different than the previous one it sends it in separate thread to the 
server. The whole process is almost unnoticeable by the user. The server 
stores the deltas in the database file (one database per Leo outline) which 
is located in the same folder as the Leo document, and has the '.history' 
appended to its name. For example: outline test.leo will have it's history 
stored in the database test.leo.history in the same folder.

Below is the link to the video demonstration (if you have read everything 
above you can skip to the 3:00). There are some issues with the sound which 
I couldn't fix, but there are captions in English.

The demo <https://youtu.be/apqc1iri1hA?t=174>

Vitalije

PS: the outline is about 210Kb, and database with about 625 recorded 
versions is about 450Kb. Those 625 versions were recorded during the 30 
hours time span.

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/897a3b7a-554b-4db6-8501-ebafc1746214%40googlegroups.com.

Reply via email to