When I started logging getch() events (which are just to help the reader
orient on the log), this suddenly became more urgent.
Now the log is larger, and it's also a circular buffer that rolls back
to the start when it fills up.
The next failure mode will be if we see the buffer filled up with just
getch() calls, reducing visibility over real file and network
operations. In which case we'll need to start coalescing getch() events.
We also made render dynamic, showing zettels in the first place it
encounters them in depth-first order.
Open question: how to show a collapsed outline view with the data model
I'm experimenting with. Not even clear 'outline' has meaning in the
presence of cross-links. Outliners privilege one view of the network.
Zettelkasten also does so; changing child/sibling relationships is a lot
of work. However, reading between the links it seems to try to provide
an escape hatch for rethinking connections using cross-links. I'm trying
to lean into that -- at the cost of providing outlines. We'll see if
this is a good trade-off.
Conundrum:
I want the app to provide some sample data for people to interact with.
However, I also want them to be able to delete it to make it their own.
BUT I'm not yet convinced the app should allow deletion in general.
Besides, deleting stuff robustly and reliably is a whole other level of
programming.
Solution:
Make people edit the app to clear the initial sample zettels.
This has the "beneficial" side-effect of getting them editing apps on
Teliva.
The problem I'm running into is that apps might want to perform their
own editing. So I can't take up prime estate like the ctrl-e hotkey or a
menu name of 'edit'.
I'm still prioritizing rendering Teliva's edit and permissions menu. If
the window is too narrow the app's settings will be overwritten and
Teliva's hotkeys will be preferentially displayed. Seems safer.
Just like with `require`, we don't we don't know how to sandbox it.
(Though we still have `require` because standard libraries outside apps
need it. I need to make sure apps can't invoke `require`..)