Dave's todo

done/off the table
  keeping the cursor visible too aggressive
    only keep it visible on a cursor movement or a reorganization
  at startup if there are no tabs open..
    try to open notes.opml
    if not there, create it
  there's a problem with /configuration call in davetwitter, running on localhost:1229
  if you're not logged in, stop running scheduled scripts
  create a new server on my local system, for debugging, and go through the startup pains
  archived 4/23
    create folder for drummer.scripting.com on palatka
    un-jury rig the startup, we're never starting up as notdrummer again.
    the popovers only activate when over the icon
      are a nice idea, but totally get in the way and don't do much for the user
      i think they have to go
      or maybe?
    make bar cursor visible vertically?
      I think it has to run every second too
    Complete the new Docs menu, remove the old one
      idea -- make Docs menu something you load from an opml file, like the Scripts menu?
        this was a good idea! :-)
        4/21/2021 by DW
      webBrowser.openUrl verb for Docs menu
    save and restore hoist stack between tab switches
      must have an event that says we're about to deactivate you, save off your shit
    timestamp command as in frontier -- cmd-4
      it works. i had to modify concord's keystroke handling to include meta-0 to 9.
      it doesn't paste the text, instead I do an opInsert
      but it works and it's nice to have. :-)
      4/20/2021 by DW
    test making an outline public
      subscribing to an outline
    lock icon needs to be implemented
      lockIconClick calls tabClick
    test making something an instant outline, has not been tested since shakeup
      there was missing functionality.
    changing the title does not survive a refresh
    file popovers
      the popover icon needs to be changeable, as the file is modified, status changes, becomes active or not, etc.
      we need to be able to get file info for tabs that have not been loaded yet
      if it's an instant outline, say so and provide the other info
      the popover should give you information about the file in the tab
        file path
        size
        creation/mod dates
        whether it's private
        if it's an instant outline
      this information should be added to getfile function in daveappserver
    set title of tab interactively
    double-clicking on bookmarks should work, no matter where they are
      type == bookmark
    i want to be able to copy paste a bookmark outside of the bookmarks menu
    format of a bookmark node
      type == bookmark
      subtype = (opmlFile or instantOutline)
      the cursor attribute should be a number, not a date string
        makes it a bit more opaque, less confusing imho
    save the serial number in the options object
      this can be used to tell if a script switched tabs
      the serial number is unique to each tab
    View OPML
      for public files
      for private files
        we had a separate page that we communicated with via localStorage
        now we display it in the outliner app itself
    LO2 faster switch between outlines
      maybe don't go through OPML translation?
      it's even worse than that -- it's reloading the outline from the server every tab-click
      tab click is going back to the server to get the opml.
        we can cache the outline locally.
        or at least we can be sure the outline hasn't been modified before using the cache.
    commenting out code is caught in debugger
      this only happens if you have the javascript console open
    when you switch tabs, keep the old outline around somehow
      in tabClick, when you're switching away from a tab, save off a copy of the dom for the outline
      it can't be that hard
        please
        i beg you
      places where tabClick is called
        when you literally click on the tab in the window
        when you close a tab, we click on the new frontmost tab for you
        when you call openOutlineInTab
          if the file is already open in another tab
          you might not need the opmltext
            it's possible you've never viewed the outline before, in which case you do
          if the file is not open in another tab
            you're definitely going to have to read the opml
        when you subscribe to an instant outline
        when you open a file from the File/Open command
        when you create a new file
        when you click the Lock icon in an instant outline that has updated
        when you start up, click on the initial tab
intro for testers
  this is a scripting system. you use the outliner to write scripts and of course to write other stuff, in the outliner. stuff that the scripts can operate on, or generate. but first and foremost you must think of it as for script-writing.
  it's a little weird because usually scripts operate on files on your local computer, but since this is running in a browser our scripts cannot access the local file system. this is a good thing. it's why it's safe to play in this environment. all that's at risk is your stuff "out there" not the stuff on your computer.
  the verbs are not guaranteed to work as they do now, in the released product. there will be breakage. in general you should stick to the verbs that are included in docserver, because these will be maintained. you can if you want call functions inside drummer itself. but you do that at great risk. the routines could change, breaking your code, or could disappear altogether. there's a firm dividing line there. on one side is code you can and should call, and on the other side is stuff that not stable, and likely to change, without notice, i might add. very likely i'll change some of these things just to prove that i can.
  i've been down this road before, btw.
re-learn how the electron code works
can i make the icon bar show up at startup?
set up my workspace on drummer, and move my work there
  drummerDocs
  verbDocs
  todo
  dave's status
verbs to get the selected text and replace the selected text
  example: strike-through this text
file open dialog should only show OPML files
review contents of appPrefs
first time login put up a dialog saying we're creating notes.opml for you
when you're reading prefs.json in api.js, use the optional file feature in daveappserver
  it'll have to know it can do this, since nodeStorage does not have this feature
I want a "data" folder, into which publicFiles and privateFiles go.
create a twitter app for drummer, separated from littleoutliner.com
get info for popover from the head elements
  author, description, etc.
the title attribute of each tab should be the description from the OPML file.
test dropping an opml file on a tab
test reader outline startup
try logging off and back on
cleanup code, commenting or removing code that manages the old style tabs
close boxes -- space reserved but not visible
  i don't like the way the tabs re-align when you click on one
  also minimum and maximum tab width?
  or.. fixed tab with?
xml-rpc functionality added to Drummer
a new scheduler module that catches function keys
drummer.scripting.com on palatka
get Dave's status outline updating again
integrate DocServer into Drummer.
how do [[links]] work on scripting.com
  what would it take to activate?
  don't need it right now, but i forgot how it works
there's still some old tab code floating around
  search for calls to "tabclick" that are not commented out
your own instantoutliner.com
  i want to be able to edit a directory for an instantoutliner.com-like system
  the urls of my outlines may change, but the url of the link people subscribe to must be constant
  the use-case is the movement of the Dave's Status outline. it's set to move again.
  my RSS address doesn't change when I change CMSes.
  this can't work until it has that kind of stability
error messages when trying to open a file and there's an error
drummer.scripting.com
  set up on palatka
  no myOutlines folder
  outlinerPrefs.json --> prefs.json
tab.openFile verb doesn't leave the tabs in a cool state
  two tabs are active
find the downloadable EO
op.getCursor needs love
  var origCursor = op.getCursor (); op.go (flatdown, 100); var theText = op.getLineText (); console.log (theText)
EO version built with new LO2 code
  can you do an http server in JS in the browser?
    if not, then we have to get an EO system up sooner than later
drummer.startSocket
  write glue script, come up with a demo, write docserver page
drummer.runScript ("100 * 12")
  undefined
reorganizing the file system
  we'll do this by starting a new server
    no more test.littleoutliner.com
    possibly drummer.scripting.com
    drummer.userland.com
  no more myOutlines folder
  all code-related stuff goes into a top-level system folder
    menubar, iconbar, bookmarks, scheduler, root
includes get better
  if you include something from your own space, you can go from a reference to a place you can edit it.
s3 verbs
daveappserver
  zip my files call
backup everything from my storage every night
  this is where the EO version comes in handy because it has access to the local filesystem
test reading and writing of non-opml files
file verb to get info about a file
how to bring in EO functionality to the new outliner
  a new set of verbs that read and write to and from the local file system.
  obviously not enabled when you're accessing the environment over the net.
  localFile.exists
  localFile.readWholeFile
  localFile.writeWholeFile
github interface
subscribe command
  you should be able to subscribe to an OPML file, not just a link to instantoutliner.com
    http://electricserver.scripting.com/users/davewiner/electric/states.opml
view text dialog
  https://gist.github.com/scripting/6165085
unicase names?
examples for op.visit verbs
dialog.about could be useful, but you have to get outlineDialogs working in example code
the return values of op verbs are messy
docs notes
  When we say a returned value is undefined, we mean that it returns the JavaScript value undefined, not that what it returns is anything.
  Explain comments in outlines.