Firefox/Greasemonkey

page_saver_server is a loopback HTTP server that supports two POST verbs (url_seen and clip_this) and a single GET (tags.) The other tools use these.

page_clipper_user.js is a Greasemonkey app that posts the current page, selection, url, and other metadata to the server, which stashes it for later remembrance.

page_saver.user.js just runs on load and unload of every page, and throws the state change at the server, which logs it.

restore_firefox takes those load/unload logs, collapses them into a "currently open" url list, and restarts firefox with the new list of pages.

Bugs in progress