diff --git a/apps/i2psnark/java/src/org/klomp/snark/BitField.java b/apps/i2psnark/java/src/org/klomp/snark/BitField.java
index 3f16deb684da1b5100c2affc7bb79917e1eb4c11..d18ef13435d8b129949742589511921db1a24156 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/BitField.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/BitField.java
@@ -59,7 +59,6 @@ public class BitField
     // cleared or clear them explicitly ourselves.
     System.arraycopy(bitfield, 0, this.bitfield, 0, arraysize);
 
-    this.count = 0;
     for (int i = 0; i < size; i++)
       if (get(i))
         this.count++;
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
index 442ac83c6ebd0a976f8d5225e0cd9ec0df248a23..f1ef08eb18c914b1505f29a5aeb532128df92dd2 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
@@ -958,16 +958,11 @@ class PeerCoordinator implements PeerListener
    */
   public boolean gotPiece(Peer peer, PartialPiece pp)
   {
-    if (metainfo == null || storage == null || storage.isChecking()) {
+    if (metainfo == null || storage == null || storage.isChecking() || halted) {
         pp.release();
         return true;
     }
     int piece = pp.getPiece();
-    if (halted) {
-      _log.info("Got while-halted piece " + piece + "/" + metainfo.getPieces() +" from " + peer + " for " + metainfo.getName());
-      pp.release();
-      return true; // We don't actually care anymore.
-    }
     
     synchronized(wantedPieces)
       {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
index f812050d4e0e7ffff10092ef811b1e479b3a6dc7..d96fe03c12cee11ad0c16e1272255b58ac4be9a7 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
@@ -798,15 +798,6 @@ public class RouterConsoleRunner implements RouterApp {
         }
     }
     
-    /** @since 0.8.8 */
-    private static class ServerShutdown implements Runnable {
-        public void run() {
-            try {
-                _server.stop();
-            } catch (Exception ie) {}
-        }
-    }
-
     private Properties webAppProperties() {
         return webAppProperties(_context.getConfigDir().getAbsolutePath());
     }
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java b/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java
index 3bc119d817671d4ad241d7cba9d0113f437ed514..a5020cccde8704200d4d9b3331bdc7d1b9baf08e 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java
@@ -40,7 +40,7 @@ import net.i2p.data.Hash;
  *  Yes we could dump it natively and write a wireshark dissector. That sounds hard.
  *  And we wouldn't get the TCP stream analysis built into the tools.
  *
- * @author zzz
+ *  @since 0.9.4
  */
 public class PcapWriter {
 
diff --git a/core/java/src/net/i2p/app/ClientAppManager.java b/core/java/src/net/i2p/app/ClientAppManager.java
index e246254b17fa3fdbc3c2fbf91c81e3108c1b12ea..0830b7390cc16aed6f896b4191da6a1d04cad46a 100644
--- a/core/java/src/net/i2p/app/ClientAppManager.java
+++ b/core/java/src/net/i2p/app/ClientAppManager.java
@@ -25,7 +25,6 @@ public interface ClientAppManager {
      *  Only required for apps used by other apps.
      *
      *  @param app non-null
-     *  @param name non-null
      *  @return true if successful, false if duplicate name
      */
     public boolean register(ClientApp app);
@@ -35,7 +34,6 @@ public interface ClientAppManager {
      *  Only required for apps used by other apps.
      *
      *  @param app non-null
-     *  @param name non-null
      */
     public void unregister(ClientApp app);
     
@@ -43,7 +41,6 @@ public interface ClientAppManager {
      *  Get a registered app.
      *  Only used for apps finding other apps.
      *
-     *  @param app non-null
      *  @param name non-null
      *  @return client app or null
      */
diff --git a/core/java/src/net/i2p/util/Addresses.java b/core/java/src/net/i2p/util/Addresses.java
index cd773bdd9a20b40c792e337c214c267e136beffd..27d67f3dd4c35a801b414a08a3f8b27ef52e11e8 100644
--- a/core/java/src/net/i2p/util/Addresses.java
+++ b/core/java/src/net/i2p/util/Addresses.java
@@ -73,9 +73,8 @@ public abstract class Addresses {
     /**
      *  @return a sorted set of all addresses
      *  @param includeSiteLocal whether to include private like 192.168.x.x
-     *  @param includeLoopAndWildcard whether to include 127.x.x.x and 0.0.0.0
+     *  @param includeLoopbackAndWildcard whether to include 127.x.x.x and 0.0.0.0
      *  @param includeIPv6 whether to include IPV6
-     *  @param includeWildCard whether to include 0.0.0.0 and/or 0:0:0:0:0:0 (includeLocal must be true)
      *  @return an array of all addresses
      *  @since 0.9.4
      */
diff --git a/history.txt b/history.txt
index 0367819546728dddc65319c053377f784e74ddc2..9c8c5a6fc2fca92535397b2da2266e3207cfa1bd 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,47 @@
+2012-10-28 zzz
+ * Addresses:
+   - Add methods for connectivity detection
+   - Remove Hamachi restriction
+ * Banlist: renamed
+ * Clients: New interface for clients started via clients.config, and a new
+   manager to track the lifecycle and start/stop clients on demand.
+   (ticket #347)
+ * Console:
+   - Add console password form to configui.jsp
+   - Consolidate all the jsp formhandler boilerplate in the new formhandler.jsi
+   - Store form handler nonces in the servlet session instead of system properties,
+     to prevent cross-session interference
+   - Bypass nonces if console password enabled
+   - Remove ports from port mapper on shutdown, other changes to
+     track actual ports better (ticket #731)
+   - Prep for RouterApp interface by storing context in a field,
+     shuffle around what's static and what's not (ticket #347)
+   - Convert to RouterApp interface
+   - Convert from basic to digest authentication
+   - Use new password manager (ticket #731)
+ * Core: New password manager for storing passwords in router.config
+   in consistent ways, including salting and hashing if possible.
+   (ticket #731)
+ * i2ptunnel:
+   - Convert HTTP and CONNECT proxies from basic to digest authentication
+   - Bypass nonces if console password enabled
+   - Convert to ClientApp interface
+   - Synchronization improvements
+ * Streaming: Add pcap debug facility, from i2p.i2p.zzz.pcap
+ * Transport:
+   - Add a simple network monitor
+   - Add new reachability state for network disconnected
+   - Prevent any tunnel building when disconnected (ticket #519)
+   - Don't unleash watchdog when disconnected
+   - Split up NTCPConnection's single _bwRequests Set into inbound and outbound,
+     make FIFOBandwithLimiter.Request unidirectional (ticket #719)
+ * Update: Major redesign of the update facilities:
+   - Generic interfaces for updating and checking things
+   - Allow checkers and updaters outside router context
+   - Hide update buttons after downloading update (ticket #484)
+   - Add update-via-i2psnark facility
+   - Don't hold references to updaters after completion
+
 * 2012-10-27 0.9.3 released
 
 2012-10-25 zzz
diff --git a/installer/resources/checklist.txt b/installer/resources/checklist.txt
index 865506c99d3340b2cc709a713152047755ba05f6..e9e0fb688b25db41b0d44944347039156fe6d937 100644
--- a/installer/resources/checklist.txt
+++ b/installer/resources/checklist.txt
@@ -6,7 +6,6 @@ Sync with mtn.i2p2.i2p
 Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p
 Copy over override.properties to set build.built-by
 Double-check trust list
-Deploy the Jetty archive, a clean checkout lacks it
 
 Change revision in:
 	history.txt
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index a411b009986dc5f1f6384384ad98aeea42885422..87e5bffca0684477c0ba8daee48da05fbea99f44 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
     /** deprecated */
     public final static String ID = "Monotone";
     public final static String VERSION = CoreVersion.VERSION;
-    public final static long BUILD = 0;
+    public final static long BUILD = 1;
 
     /** for example "-test" */
     public final static String EXTRA = "";
diff --git a/router/java/src/net/i2p/router/startup/RouterAppManager.java b/router/java/src/net/i2p/router/startup/RouterAppManager.java
index 25d6da932f9d6109a85293ab97bce3d893132348..eade1e8d18f354dfad045caccbc80220024fed70 100644
--- a/router/java/src/net/i2p/router/startup/RouterAppManager.java
+++ b/router/java/src/net/i2p/router/startup/RouterAppManager.java
@@ -94,7 +94,6 @@ public class RouterAppManager implements ClientAppManager {
      *  Only required for apps used by other apps.
      *
      *  @param app non-null
-     *  @param name non-null
      *  @return true if successful, false if duplicate name
      */
     public boolean register(ClientApp app) {
@@ -109,7 +108,6 @@ public class RouterAppManager implements ClientAppManager {
      *  Only required for apps used by other apps.
      *
      *  @param app non-null
-     *  @param name non-null
      */
     public void unregister(ClientApp app) {
         _registered.remove(app.getName(), app);
@@ -121,7 +119,6 @@ public class RouterAppManager implements ClientAppManager {
      *  Do not hold a static reference.
      *  If you only need to find a port, use the PortMapper instead.
      *
-     *  @param app non-null
      *  @param name non-null
      *  @return client app or null
      */