Fix relative pathing to CSS files. Implement the progress bar for Wordpress.
Only check headers for "root" folders, which currently is only set on the initial top-level one.
Implement iteration across pages, version 0.01, currently based on only header links. Uses a Stack to enqueue pending pages, which works well and is a nice architectural improvement over the forum version. Next need is duplicate detection. Or perhaps only selectively enabling header links. Also need to fix nested CSS references.
Download the CSS. Makes a big difference in the layout, especially the header. Refactor page options into WordpressConfig.
Super-basic proof of concept for Wordpress downloading. No CSS yet, images all live from the site and not archived... but it connects and downloads the HTML.
Start building the structure towards Wordpress.
Add Wordpress to the UI.
Move DownloadRunnable to indicate that it's now fairly generic.
Extract the synchronized download runner to its own thread.
Add 404 status logging for unknown hosts.
Reconcile confusing and multiple URL names. Fix an issue where "Click to expand" links that had no href were causing thread downloads to be aborted.
Genericize the ThreadDownloadRunnable. It now takes the DownloadResource interface, of which XFThread is the first implementor.
Reminder of what to do next.
Fix the pause throwing an exception.
Split out the LinkDownloader from the XFPage class. I think this is the key part that is going to be re-used by a potential WordPress variant. Maybe I'll extract some sort of link-iterator from XFForum as well, but this is the key low-level reusable element.
Undo the Archiver static importing a UI variable. Should be a one-way street here.
Bust out more variables from StoryArchiver, and disentangle some of the spaghetti. It's not too bad now, most of these were properly Options from the UI.
Split out Progress. Should make it easier to debug why it doesn't always reflect reality.
Split out thread management. Down under 200 lines at last. That's generally my target. A nice balance of comprehensibility and not being overly strict.
Split out the database.