if you clicked a link with a note id and a note with the link's title was
already open, it just highlighted that note, regardless of the id. Now, that
will only happen if the link has no id.
* When you try to load a note called "all notes", load a magic (dynamically-generated) note that
lists all notes in reverse revision time order.
* Changed controller.Notebooks.recent_notes() to all_notes().
* Prevent "all notes" link from showing up when you're in the trash.
* Prevent link pulldown from showing up for links within read-only notes.
* Wrote a crappy deletenote tool.
* Blank iframe contents now come from static HTML rather than dynamic CherryPy.
* Reindented @strongly_expire decorator.
* Removed one stage of Editor's multi-stage construction.
Now the client has to explicitly request the inclusion of startup notes.
Also no longer including startup notes or revision lists with every single
serialized Notebook.
notebook's trash. If found, it first undeletes the note before saving it. This
is necessary if, for instance, you have the same note open in window A and
window B, and then you delete the note in window A and subsequently modify it
and save it in window B.
from a different window:
* Made controller.notebooks responsible for preventing unmodified notes from being saved, instead
of model.Notebook handling this task.
* Created a revision validator for passing revisions as arguments to exposed methods.
* controller.Notebooks.save_note() now requires a previous_revision parameter, used to determine
whether the note has been modified in the particular window it's being saved from.
* save_note() returns a new previous_revision value, so the client can determine whether a save
has occurred from another window.
* controller.Notebooks.undelete_note() fixed to quietly bail if the note to undelete isn't
actually deleted, which can happen if it was undeleted in another window.
* Editor() now responsible for making revisions list if it doesn't exist
* No longer giving an "undo" message when the user deletes an empty note.
* On the client side, detecting whether the previous_revision as reported by save_note() looks
correct, and if not, alerting the user about the conflict. Also displaying a "compare versions"
button that opens both the current version and the previous version.