ForeverList update: after a week of work, you can download it!

tl;dr – After a week of hard work, the app is mostly feature-complete and available for download as a preview.

Go download the app here.

This past week I’ve sunk about 13 or so hours into working on ForeverList. I’ve done a lot of work. Here’s the list:

  • added deleting of entries
  • added drag and drop support for images and links
  • added drag and drop for notes (you can reorder them or move to to other notes as sub-notes)
  • added undo/redo support
  • cleaned up the UI overall

The biggest amount of work was the undo/redo support. I basically had to refactor the core model for the app as it couldn’t handle undo/redo in its current state. The new version is much cleaner architecturally. It now uses the diff as its atomic unit of work on the database in memory.

Whenever you modify an entry by deleting it or modifying its contents, the change is encapsulated in a “diff” object. At the same time, a reverse diff object is created to undo the action. The diff is recorded to our database journal. Then, if you wish to undo the action, we do two things: 1. we remove the last diff from the journal and 2. we apply the reverse diff to get the database back into its old state. The removal from the journal is necessary because when we write the journal of diffs to disk, we only want to keep around the actions that weren’t undone.

I did a lot of UI cleanup, but there is more on the way. Here’s what the app looks like now. It’s usable, but has a few rough edges here and there.

I’ve decided to put a preview build of the app online to force me to complete it. 🙂 The preview is fully functional and then file format isn’t going to change, so feel free to start using it regularly. A future update will be posted to the Mac App Store.