Use the terminal-progress-bar package to display a progress bar
during replay, when there are jobs that need to be replayed. Bumps
the lts resolver so we get access to this package.
This performs all normal filesystem operations. We can take
filesystem hash snapshots on startup, write the contents of an
%ergo to disk, send changes to Urbit with an %into, and finally
delete mount points when they are %ogre.
This doesn't deal with updating an initial filesystem on first
run with -A, or with acquiring a lockfile, which should happen
elsewhere.
Can take filesystem hash snapshots on startup, and can write the
contents of an %ergo to disk.
The compute thread should take an event or a save request or a
shutdown request. We now take snapshots every 120 seconds like
vere does, and take a snapshot before clean shutdown.
(Also changes the terminal driver so that it doesn't unboundedly
block shutdown.)
Using websockets because it would be nice to eventually have a terminal
in the Electron client.
This is prototype-quality code. Using the built-in client/server from the
`websockets` package, but that's just for testing.
After looking at vty for a bit, I decided to just do a straight port
of term.c's raw output code. This gets the "~zod:dojo" in the right
position, though the other logging output screws things up a bit.
Joe told me to look at the Jaque terminal and I just did. That uses
the Lanterna Java library to handle terminal output. Joe then suggested
that I move the entire system here to curses or another similar library.
For now, this is mostly useful as an integration test: Replay the whole
event log of an existing ship using King Haskell.
This also opens the door for a future tool that inspects collected
effects for debugging purposes.