URL naming
----------
-/$LISTNAME/?before=$GIT_COMMIT -> HTML only
-/$LISTNAME/all.html?before=$GIT_COMMIT -> HTML only, includes replies
+### Unstable endpoints
+/$LISTNAME/?r=$GIT_COMMIT -> HTML only
/$LISTNAME/index.atom.xml -> Atom feed
/$LISTNAME/all.atom.xml -> Atom feed, includes replies
-/$LISTNAME/mid/$MESSAGE_ID.html -> HTML content
-/$LISTNAME/mid/$MESSAGE_ID.txt -> raw text
+
+### Stable endpoints
+/$LISTNAME/m/$MESSAGE_ID.html -> HTML content (short quotes)
+/$LISTNAME/m/$MESSAGE_ID.txt -> raw original
+/$LISTNAME/m/$MESSAGE_ID -> 301 to .html version
+/$LISTNAME/f/$MESSAGE_ID.html -> HTML content (full quotes)
+/$LISTNAME/f/$MESSAGE_ID -> 301 to .html version
+/$LISTNAME/f/$MESSAGE_ID.txt -> 301 to m/$MESSAGE_ID.txt
+
+TODO (these might be expensive)
+-------------------------------
+/$LISTNAME/t/$MESSAGE_ID.html -> HTML content of thread
+/$LISTNAME/t/$MESSAGE_ID.mbox -> mbox content of thread
We use file name suffixes on all of these (except /) so URLs may easily
cached/memoized using a static file server.