* 2018-04-10 0.9.34 released

2018-04-10 zzz
 * Console: Change Java 9 log warning to Java 10
 * i2psnark: Fix logic error in warning
 * Tunnels: Fix fallback stat name

2018-04-05 zzz
 * EepGet: Increase max header length
 * SSLEepGet: Set default CLI proxy type back to none
 * GeoIP update

2018-04-04 zzz
 * Reseed: Move ReseedBundler from console to router (ticket #2203)

2018-04-03 zzz
 * Stats: Enable per-tunnel bw stats by default (tickets #2106, #2145)

2018-04-02 zzz
 * KeyStore: Fix ConncurrentModificationException (ticket #2196)

2018-03-24 zzz
 * i2psnark: Change default sort order for some columns (ticket #2152)
 * i2ptunnel: Fix display of 'tunnels not initialized' message

2018-03-19 zzz
 * i2ptunnel: Rewrite or pass through Accept: header

2018-03-15 zzz
 * i2psnark: Start even if data directory not found (ticket #2166)

2018-03-14 zzz
 * Console:
   - Hide links to webapps and eepsite if not running (ticket #2161)
   - Hide link to /configplugins if disabled
   - Add error handler to webapps (ticket #2155)
 * i2ptunnel: Hide links to webapps that are not runnning (ticket #2161)
 * SusiDNS: Translate svg image text (ticket #1749)
 * SusiMail: Shorten URLs

2018-03-12 zzz
 * SusiMail: Fix up compose.js (ticket #2176)

2018-03-11 zzz
 * Crypto: Add utils for renewing a cert in a keystore
 * Router: More peer selection fixes for hidden mode

2018-03-10 zzz
 * Console: Fix compression logic
 * i2ptunnel: Strip server Date header
 * NetDB: Wake up FloodfillMonitor when setting changes
 * Router: Fix rekey after hidden config change

2018-03-09 zzz
 * Console:
   - Enable compression (ticket #2157)
   - Close output stream on redirect
   - Add Accept-Ranges header

2018-03-08 zzz
 * Crypto: Generate non-CA cert for family
 * Router:
   - Improved tunnel peer selection of closest hop for routers
     that are hidden, IPv6-only, or have disabled transports
   - Don't select IPv6-only routers for IBGW or OBEP
   - Don't try to build tunnel if adjacent peers aren't compatible
   - Remove ancient version check in peer selectors
   - Check for transport compatibility before direct store of RI;
     send through tunnel if incompatible
   - Fix repeated store of RI when IPv6-only

2018-03-07 zzz
 * Router:
   - Validate tunnel ID in requests
   - Remove ancient version check in BuildRequestor
   - Disable floodfill for IPv6-only and disabled transports

2018-03-05 zzz
 * Util: Consolidate FileFilters

2018-03-04 zzz
 * Console:
   - Show SAM cert on /certs
   - Fix more forms inside tables
 * i2ptunnel: Fix multipart config for /register
 * KeyStore: Log expiration of self-signed certs

2018-03-03 zzz
 * Utils:
   - Skip IPs of down interfaces on Windows
   - Improve identification of temporary IPv6 addresses

2018-02-28 zzz
 * Logs: Fix lost log messages at router shutdown
 * Tools: CLI improvements for Addresses and UPnP
 * Transport: Rescan addresses and UPnP after network reconnection
 * UPnP: IGD IP validation

2018-02-27 zzz
 * UPnP:
   - Improve diagnostics
   - Fix event listening, prep for using events
   - Recognize IGD2 schemas (ticket #2175)
   - Don't use IGD on same host
   - Preliminary work for IPv6

2018-02-25 zzz
 * Crypto: Add support for more alt names in certs (tickets #2159, #2160)

2018-02-24 zzz
 * Console: Mark request handled when rejecting in HostCheckHandler
 * i2psnark standalone: Add DNS rebinding protection
 * XSSFilter: Catch cascaded ISE

2018-02-23 zzz
 * Getopt: Add new translations, fix tests
 * i2psnark: Number formatting tweaks (ticket #1913)
 * SusiMail: Check mail fixes (ticket #2174)

2018-02-22 zzz
 * Util: Support setSoTimeout() for InternalSockets

2018-02-21 zzz
 * Console: Hide options on /configupdate if a package (ticket #2172)
 * SusiMail: Add Date header to sent messages

2018-02-20 zzz
 * Console:
   - Redirect to HTTPS if available (ticket #2160)
   - Change all 302s to 303 or 307
   - Change sendError() to setStatus() for 3xx responses
 * Crypto: Backdate selfsigned cert to allow for clock skew
 * Eepget: Handle 308

2018-02-19 zzz
 * Console:
   - Change trac links (ticket #2014)
   - Change selfsigned cert cname to localhost (ticket #2160)
 * Crypto: Add IP addresses to selfsigned cert SAN (ticket #2160)
 * Streaming: Don't exceed configured tag settings
 * Time: More sanity checks on NTP responses

2018-02-18 zzz
 * i2ptunnel: Retry accept after router soft restart (ticket #2003)

2018-02-17 zzz
 * Console: Number formatting tweaks (ticket #1913)
 * i2psnark: folder.js cleanup (ticket #2168, PR #14)
 * i2ptunnel: Close sockets in finally{}
 * SusiMail: Fix mail save truncation

2018-02-16 zzz
 * i2psnark: Fix NPE on torrent not found (ticket #2167)
 * i2ptunnel: Change POST throttle response to 429
 * Streaming: Configurable response when over conn limits (ticket #2145)

2018-02-12 zzz
 * i2ptunnel: Close sockets
 * Proxy: Update clearnet user-agent (ticket #2163)
 * SusiMail:
   - Background email checking (ticket #2087)
   - Set Cache-Control header for attachments
   - Fix rotated attached images

2018-02-11 zzz
 * Util: Number formatting tweaks (ticket #1913)

2018-02-09 zzz
 * SusiMail:
   - Don't collapse spaces in email display (ticket #2156)
   - Constant URL for attachments
   - Fixes when no subject is present
   - Filename encoding fixes
   - Handle lower case in Q-P decode
   - Don't show the no-charset warning
   - Thread loading mail from disk
   - More error handling fixes

2018-02-08 zzz
 * SusiMail:
   - Error handling fixes
   - More tolerant parsing of Date headers
   - Set a date if we don't get a Date header
   - Fix parsing long Base64 encoded headers
   - Fix page count after changing page size
   - Make attribute name parsing case-insensitive
   - Import mail method for debugging

2018-02-07 zzz
 * SusiMail: Use input streams for reading mail (ticket #2119)
   - Rewrite Base64, HeaderLine, and QuotedPrintable decoders
   - Rewrite ReadBuffer class and utilities for streams
   - ReadBuffer becomes Buffer interface with multiple implementations
   - Rewrite Mail and MailPart to parse the headers only once
   - Rewrite MailPart parser to use streams
   - MailPart decoder rewrite to decode stream-to-stream

2018-02-01 zzz
 * Console: Fix number formatting (tickets #1912, #1913, #2126)
 * i2psnark: URL escape fixes
 * i2ptunnel: Reset connection if out of threads
 * NetDB: Increase min floodfill version
 * SusiMail: Don't duplicate Re: and Fwd: in subject

* 2018-01-30 0.9.33 released

2018-01-26 zzz
 * i2ptunnel: Fix dup tunnels on create
 * Update translations from Transifex

2018-01-25 zzz
 * GeoIP 2018-01-05
 * SusiMail: Close POP3 socket on error

2018-01-24 zzz
 * i2psnark: Prevent commenting without comment name (ticket #2138)
 * SusiMail: Fix header corruption (ticket #2139)

2018-01-19 zzz
 * i2ptunnel: Prevent changing sigtype after dest creation (ticket #2128)

2018-01-18 zzz
 * Build: New poupdate-source target
 * Util: Consolidate console URL generation in PortMapper

2018-01-17 zzz
 * i2ptunnel:
   - Set defaults for limits
   - Change include style for edit jsps

2018-01-16 zzz
 * i2ptunnel: Fix NPE stopping TCG

2018-01-14 zzz
 * Keyring (ticket #2108):
   - Separate local and remote dests on /configkeyring
   - Prohibit local changes on /configkeyring
   - Remove local keys on tunnel shutdown or encryption disable
   - Ensure subsession encryption setting matches primary session

2018-01-13 zzz
 * SessionKeyManager: Clean up sessions with excess tagsets

2018-01-10 zzz
 * Addressbook: Remove finalizers (ticket #2115)
 * /confignet: Display IP even if firewalled (ticket #2133)
 * i2psnark:
   - Fix double-escaping of '&' (ticket #2127)
   - Fix infinite loop stopping update torrent (ticket #2125)
 * jrobin: Disable DeallocationHelper for Java 9
 * /netdb: Note encrypted leasesets

2018-01-09 zzz
 * SusiMail: Rewrite/fix subject line encoding

2018-01-06 zzz
 * Console: Show and set burst bandwidth (ticket #2123)
 * i2ptunnel:
   - Advanced config in/out tunnels separately
   - Better error message on invalid URLs (eepget too) (ticket #2130)
   - Escape chars unescaped by browsers (ticket #2130)

2018-01-04 zzz
 * i2psnark: Fix overflow in ratio sorter (ticket #2129)

2017-12-23 zzz
 * SusiMail:
   - Fix filenames for inline attachments
   - Support RFC 5987/6266 for attachment and save-as filenames
   - Add alt tags for images
   - Fix long encoded lines in headers
   - Fix replacing underscores in Base 64 decoded headers

2017-12-22 zzz
 * SusiMail:
   - Fix bug sending CC recipients as a 2nd To line
   - Separate recipients by commas
   - Workaround on receive side for CC bug
   - Display To and CC lists on show page
   - Case-insensitive handling of all mail headers
   - Escape leading '-' in q-p encoding

2017-12-16 zzz
 * SusiMail:
   - Sorting cleanups and fixes, only sort when required
   - Show result after server check (ticket #2087)

2017-12-15 zzz
 * SusiMail: Don't store state in session object (ticket #1373)

2017-12-14 zzz
 * SusiMail (ticket #1373):
   - Put more parameters in forms and use P-R-G to
     put several parameters into the URLs
   - Redesign sort parameter handling
   - Fix state tracking issues with delete

2017-12-13 zzz
 * i2ptunnel: Add internal sockets for SMTP and POP3 (ticket #2118)
 * Util: InternalSocket improvements

2017-12-11 zzz
 * Jetty: Fix request log showing zero length for static content
 * Startup: Raise open files ulimit (ticket #1967)

2017-12-10 zzz
 * Router: Change RI locking to a read/write lock (ticket #2096)

2017-12-08 zzz
 * SU3File: Flush and sync on extract (ticket #1941)
 * SusiMail:
   - Reference mails by UIDL, not index on page, put UIDL in
     attachment links, remove session object UIDL (ticket #1373)
   - Fix download of attachments without a Content-Transfer-Encoding
   - Fix error return for attachment not found
   - Fix handling of requests for unknown messages
   - Set encoding for text attachments
   - Add more safe mime types for downloading
   - Add tooltips for icon-only buttons

2017-12-07 zzz
 * Console: Don't list aliased tunnels separately on
   /tunnels and /configtunnels
 * i2psnark: Better locking on BitField byte array
 * SusiMail: Recheck max size if SMTP server reports less than default
 * Util: Deprecate BigPipedInputStream

2017-12-05 zzz
 * Console: Fix multipart config for /configplugins
 * SusiMail:
   - Don't store attachments of composed email in-memory (ticket #1668)
   - Fix bug corrupting sent text and text attachments
     larger than about 1000 chars
   - Fix bug corrupting some sent text and text attachments
     containing '.'
   - Fix handling of unimplemented encoders
   - Add test code for encoders
   - Error message improvements
   - Adjust multipart size limits
   - Better handling of errors when multipart limits are exceeded
   - Test for total size limit

2017-12-04 zzz
 * Servlet: Refactor RequestWrapper to use Servlet 3.0 API (ticket #2109)

2017-12-03 zzz
 * i2ptunnel:
   - Don't lose messages on refresh (ticket #2107)
   - New clear messages button
   - Hide message box if none

2017-12-02 zzz
 * i2ptunnel: Propagate resets from streaming to Socket
   and vice versa (ticket #2071)
 * Streaming: Send reset when receiving more data after locally closed,
   rather than acking (ticket #2071)
 * Tests: Fix up deprecation warnings

2017-12-01 zzz
 * Build: Split net.i2p.router.web into two packages
 * Console: Move /configkeyring HTML to console, fix deletion,
   don't truncate hashes, better form errors, tag for translation (ticket #2108)
 * LeaseSet: Better error messages when decode fails (ticket #2108)
 * Streaming: Double the RTO on congestion (ticket #1939)

2017-11-27 zzz
 * Debian: Exclude gradle, IntelliJ, Docker, .tx, gcj files from source tarballs

2017-11-27 str4d
 * Build: Add Gradle build scripts for compiling the codebase and generating
   IDE project files.

2017-11-26 zzz
 * Build: Add xenial build option
 * Console: Safer processing of changes on /configadvanced
 * Context: Hopefully fix rare NPE on Android (ticket #2092)

2017-11-25 zzz
 * Console:
   - Show full logger.config path on /configlogging
   - Don't say 'Plugin downloaded' when installing from file
 * Debian:
   - Replace glassfish-javaee with libtaglibs-standard-* (ticket #2093)
   - Remove libecj-java dependency (ticket #2094)

2017-11-23 zzz
 * i2ptunnel: Add timeout to header reads for CONNECT, HTTP, and SOCKS clients
 * Wrapper 3.5.34

2017-11-22 zzz
 * i2psnark: Fix nbsp in logs on config change (ticket #2082)
 * Streaming: Fix bug causing loopback hangs and
   preventing desired ack behavior (ticket #1939)
 * Tomcat 8.5.23

2017-11-21 zzz
 * EepGet: Refuse attempted redirect to HTTPS, won't work
 * Reseed: Add support for reseeding via outproxy or Orchid (ticket #1841)

2017-11-20 zzz
 * HTTP Proxy: Better HTTP status message when no outproxy configured
 * i2prouter: Fix echo -n on OSX
 * Reseed: Add outproxy and Orchid proxy support (ticket #1841)

2017-11-19 zzz
 * Debian:
   - Fix builds for x32 (ticket #2076)
   - Incorporate patches 2 and 3 into build scripts
 * DTG: On OSX, set dock icon, and enable by default

2017-11-18 zzz
 * Reseed:
   - Add SOCKS proxy support (ticket #1130)
   - Show proxy info, if applicable, in logs
   - Show status in summary bar for manual reseed (previously hidden if more than 30 routers)
   - Show status in summary bar after successul completion
   - Show reseed button in summary bar if less than 50 known RIs (previously 30)
   - Show current status on /configreseed if already running
   - Consolidate proxy settings detection in ReseedRunner constructor
   - Enhance help text on /configreseed (tickets #423, #1130)

2017-11-17 zzz
 * Addressbook: Fix adding alternates after importing an empty book (ticket #2072)
 * Reseed: Add HTTPS proxy support (ticket #423)
 * SOCKS: Move code from i2ptunnel to core, in prep for SSLEepGet use (ticket #1130)

2017-11-16 zzz
 * Console: Hide Reseed HTTP proxy options if no HTTP URLs (ticket #2007)
 * i2psnark: Fix bad completion status after recheck (ticket #2046)
 * Jetty 9.2.22

2017-11-07 zzz
 * Utils: Constant-time password check

* 2017-11-07 0.9.32 released

2017-11-03 zzz
 * Update translations, add Indonesian as selection
 * GeoIP update

2017-11-03 str4d
 * Console:
   - /graphs:
     - Reorganised config form
     - Fixed "hide legends" option
   - Sidebar: limit event logs to last 7 days, to avoid page freezes
   - Fix scrolling latency issue light theme in Chrome/blink and older Firefox
     versions (ticket #2024)
   - Various cosmetic tweaks, fixes and enhancements
 * I2PSnark:
   - Reduce scrolling and hover latency
   - Add sort direction hover indicators to .snarkTorrents header icons
     (dark/midnight)
   - Various cosmetic tweaks, fixes and enhancements
 * Susimail/SusiDNS:
   - Various cosmetic tweaks, fixes and enhancements

2017-11-02 str4d
 * Console:
   - Sidebar:
     - Fix erratic display of sidebar graph
     - Add id to memory bar so we can target it for Chrome/blink display issue
 * I2PSnark:
   - Roll back target="_top" in config page to prevent embedded view from
     breaking out of iframe
   - Add target="_blank" to relevant links to avoid display in iframe in
     embedded mode
   - Enhance presentation of tracker links in TorrentInfo view

2017-10-31 str4d
 * I2PSnark: Use reflection to access ConfigUIHelper in standalone build

2017-10-25 str4d
 * Console:
   - /graphs:
     - Add option to hide legends
     - Adjust size of up/down bw graph to match other graphs (ticket #1996)
     - Modify image font color to better blend with themes
     - Tweak spacing of elements for non-Debian installs
   - Sidebar:
     - Adjust vertical spacing of general section
     - Rename 'General' section to 'Router Info' and move ident info to h3
       tooltip (ticket #1996)
     - Replace 'Short Router Info' with a new 'Advanced Router Info' section in
       default advanced sidebar (adds memory usage and clock skew)
     - Add optional embedded bandwidth graph (experimental)
     - Add optional memory usage bar
     - Add optional Advanced Peers section (adds failing and banned peers)
     - Add Help link to 'I2P Internals' section
     - Add help page anchored links and troubleshooting to 'Help & FAQ' section
     - Add download progress bar for router and plugin updates
     - Add 'Advanced Minimal' sidebar configuration
     - Add Jobs and Events links to Advanced section
     - Add additional reachability states for clockskew and vmcomm (with icons)
   - Homepage: Add 'Customize Sidebar' link to signpost the feature now that
     there are more optional sections available (ticket #1996)
   - /configui:
     - Add option to embed Susimail and I2PSnark in console
     - Use larger flags for language selection
   - /help:
     - Update sidebar help section (en)
     - Remove redundant CSS class from all help section files (li.tidylist)
   - /tunnels:
     - Indicate that no participating tunnels will be built when shared bw is too low
     - Replace <a name> with id attribute for anchor links
   - light:
     - Lighten/tint buttons and dropdowns to better blend with reworked theme,
       vary text color for different button states
     - Increase vertical spacing for status/buttons in news section
     - Fix minor rendering issue with h1's (remove bottom border-radius)
     - Fix some mismatched heading coloring issues
     - Fix alignment issue on /configservice in Arabic/Chinese (ticket #2024)
     - Ensure spacing of sidebar elements is consistent in Chinese
   - dark: Overhaul theme
   - classic: Add fallback CSS to ensure browsers without CSS3 support can
     display icons on buttons (tested with Netsurf)
 * Proxy: Remove truncation of URLs in the error messages and handle with CSS to
   avoid UI breakage
 * I2PTunnel: Add hostname / destination (b32) information to server section on
   index page (for parity with client tunnels section)
 * I2PSnark
   - Fix broken collapsible panels issue for browsers that don't support the
     feature by conditionally loading override CSS to expand panels by default
     and disable hover/active states for panel headings (tickets #2002, #2026)
   - Add UI option to configuration section to enable collapsible panels, and
     disable the option if a non-compliant browser is detected
   - Fix multiple instances of snark refreshing to the homepage (ticket #2028)
     (patch supplied by mindless)
   - Tentative fix for caching of images so ajax refresh doesn't reload all
     image resources
   - Standardize 'Save Configuration' action to return to top of the page
     (so we can see message log entry)
   - Add button hoverstate for tracker details, torrent details and file icons
   - light
     - Sync buttons in embedded mode with console theme
     - Fix non-functioning message log close icon
   - dark: Overhaul theme and sync with console theme in embedded mode
   - classic: refresh CSS
 * SusiDNS:
   - Reinstate filter removal on addressbook navigation links (ticket #1996)
   - Reduce vertical padding for filter buttons section
   - Migrate search section to div and reposition page elements to better
     integrate with host list and minimize whitespace
 * Susimail:
   - Overhaul dark theme
   - Sync theme to console theme by default, override if user sets theme
     (unless universal themeing is enabled)

2017-10-24 zzz
 * NTCP: Convert configured NTCP hostname to IP address
   before publishing (proposal #141)

2017-10-21 zzz
 * UDP: Reduce log level on IP change (ticket #2053)

2017-10-11 zzz
 * Console: Validate host header (thx Kevin Froman)
 * Router: Honor IPv6 setting when converting configured hostnames
   to IP addresses (proposal #141)

2017-10-04 zzz
 * Router: Convert configured hostnames to IP addresses
   before publishing (proposal #141)

2017-09-29 zzz
 * Debian: Backport fixes from 0.9.30-4 package (ticket #2027)

2017-09-14 zzz
 * Router: Don't lookup hostnames in addresses (proposal #141)

2017-09-12 str4d
 * Core: New benchmarking framework based on JMH (ticket #2036)

2017-09-02 zzz
 * Data: Prohibit excess key data in certs (ticket #2035)
 * i2psnark: New open trackers
 * Startup: Add property to disable output redirect (ticket #2037)

2017-08-26 str4d
 * Console (light):
   - Sidebar Restart/Shutdown buttons:
     - Increase width to better occupy available space and increase width of
       containing form to ensure browser scaling doesn't wrap buttons
     - Reduce vertical padding
     - Reduce height of buttons in console_big.css
   - /debug:
     - Multi-column view for Session Key Manager expiry IDs
     - Fix color mismatch of inbound/outbound h3s
 * I2PSnark (ubergine):
   - Fix hover state for inert section headings
   - Minor adjustments to DHT debug section
 * Susimail (light): Minor adjustment of notifications in embedded view

* 2017-08-07 0.9.31 released

2017-07-31 zzz
 * Translations update, Debian patch refresh

2017-07-31 str4d
 * Console: fix router family page form (ticket #2022)

2017-07-30 str4d
 * Console
   - light theme:
     - Fix spacing issue with banned peers list
     - Tweak font sizes for Arabic
   - Shrink icons in sidepanel network status span
   - Add single graph view buttons to classic theme
   - Better separation of graphing controls in single graph view
   - Enhance presentation of /oldconsole and /proof

2017-07-28 str4d
 * Console:
   - Enhance presentation of show/hide news links on home page
   - Fix some issues with Arabic CSS (light/dark)
   - Further tweaks to graphs display and fixes for borderless single graphs
     in midnight/dark themes
   - Fix minor coloring issues with light theme post-rework
   - Misc theme fixes
 * I2PSnark:
   - Move </center> tag in fileinfo view that prevented sticky navbar from
     working
   - ubergine:
     - Alternative panel tabs for embedded view
     - Tighten .snarkTorrents thead/tfoot spacing
     - Tweak embedded navbar coloring
     - Reduce height of download bars

2017-07-26 str4d
 * Themes:
   - 'light' theme (console & apps):
     - Rework to reduce contrast (ticket #1996)
     - Add custom radio/checkbox icons for Chrome/Blink
 * Console:
   - Add JavaScript snippet to reset dest address scroll position onblur (fixes
     Chrome/Blink disappearing text bugs in i2ptunnel and susidns)
   - Fix reseed failure notice overlap when "check connection" message shown
   - Enhance presentation of console "error 500" messages
   - Cosmetic tweaks to welcome page presentation, arabic welcome page tidyup
   - Migrate .smallhead th class to tr to simplify markup
   - Sidebar:
     - Remove "Congestion" from default sidebar (still present in default
       advanced sidebar)
     - Fix label wrapping issue with translations
     - Migrate sidepanel news section to tables to permit better control over
       wrapping and placement (ticket #1996)
     - Move news item dates to tooltips to lessen chance of headlines wrapping
       and cleanup presentation
     - Increase maximum length of local tunnel links in the sidebar (and handle
       overflow with CSS) to minimize chance of default tunnels display
       truncating in translations
     - Add the power off icon to sidebar restart button on hover to clarify
       button function (ticket #1996)
   - /configadvanced: Move floodfill status to row above to remove unnecessary
     whitespace and cleanup UI
   - /debug:
     - Add container divs and styling markup
     - Add top navigation menu
     - Add debug icon to h2 headers to aid navigation
   - /graphs: Improve presentation of graph images by removing rendered border
     and setting background color to better integrate with themes
   - /home: Widen div.app to lessen chance of truncation (classic/midnight)
   - /jars:
     - JARs, WARs & individual plugins separated with headers
     - Filenames stripped of path info (path indicated on headers and tooltips)
     - Add container divs and styling markup
     - Minimize table overflow with conditional scaling of content
     - One-click select for revision, sha256 & unsigned mods
   - /logs:
     - Reduce line/entry spacing for router and critical logs (#ticket 1996)
     - Multi-column view for changelog at >=1400px to address horizontal
       whitespace issue
   - /netdb:
     - Multi-column display of Leases in LeaseSet tables
     - Better alignment of Lease elements, iconify gateway
     - Placeholder flag for unknown/unresolved peers for [flag+dest] combos to
       improve presentation / fix deadspace issue
   - Chinese:
     - Fix alignment of table contents in /tunnels (classic)
     - Fix sidebar content display width (midnight)
     - Cosmetic fixes (all themes)
 * I2PSnark:
   - Mitigate truncation of ratings dropdown in comments section (translations)
   - light: Reduce contrast of display text
   - light/classic: Increase contrast of download bars
   - Create Torrent trackers table: Replace "Tracker URL" with "Tracker Type"
     (ticket #1996)
   - Add a persistent warning to the messagelog when JavaScript is disabled to
     indicate potential loss of form data upon refresh (ticket #1996)
   - Migrate "view or change bandwidth" to [Configure] tooltip to standardize
     configuration links, allow for more space for option labels and lessen
     chance of option labels wrapping in translations
 * I2PTunnel:
   - Ensure message log font scales proportionately
   - Fix overflow issue with dropdowns in Chrome/blink (dark/midnight)
 * SusiDNS
   - Reduce width of filter buttons to lessen chance of wrapping (ticket #1996)
   - Add non-selectable items to improve copy/paste of hosts in address books
   - Make dest addresses in host list only display scrollbar on focus to reduce
     screen clutter
   - Hide broken imagegen images
 * SusiMail:
   - Dismiss notifications on click
   - Enhance presentation of 'postman' links on login panel

2017-07-25 str4d
 * Console: Move JRobin default color and font changes into SummaryRenderer

2017-07-16 zzz
 * Imagegen: Test page text fixups

2017-07-15 zzz
 * Console: Fix compile error with Jetty 9.2.22 (ticket #2019)

2017-07-13 zzz
 * Crypto: Preserve CRT parameters for RSA private keys (ticket #2005)
 * Various fixes after review

2017-07-11 str4d
 * Console:
   - Increase displayed changelog lines to help ensure at least one whole
     release cycle is visible
   - /tunnels: Fix display issue with inbound/outbound glyph display in table
     header (classic/light)
   - light: Prevent routerlogs from causing horizontal page overflow
 * I2PSnark:
   - Fix I2PSnarkUtil.getCommentsName() to match its JavaDoc
   - Reduce size of screenlog font at 1400-1600px viewport width to lessen
     chance of text-wrapping (ticket #1996)
   - classic: Fix a linespacing issue in the config section (options:) that only
     triggers in foreign languages that force the options labels to wrap
 * Fix HTML tags across non-default conditional branches

2017-07-08 zzz
 * GeoIP, blocklist, translations update

2017-07-06 str4d
 * Console:
   - /configlogging: Fix log file size config bug (ticket #1996)
   - /logs: Correctly format unavailable crypto warnings (ticket #1996)
   - Show advanced sidebar links by default in advanced mode (ticket #1996)

2017-07-02 str4d
 * Console:
   - Show correct icon for "Firewalled" network status
   - Cosmetic changes to new firewalled network status in sidebar
   - Arabic: ensure the destinations correctly align on /tunnels
 * SusiDNS: Default to the console theme
 * I2PSnark: Ensure .snarkNoneLoaded background color remains constant on
   mouseover in dark theme

2017-07-01 str4d
 * Console:
   - /netdb:
     - All Routers/Leasesets/Sybil sections:
       - Each transport instance on own line
       - Better presentation of address characteristics
       - Place flag in table header
     - Container div for leasesets to allow responsive 2 column display
     - Increased spacing of lease information in leaseset tables
     - Add div for "not initialized" message
     - Reorganize content in sybil db to reduce horizontal whitespace:
       - Conditional 2-column display of sybil families
       - Multi-column view for sybil router characteristics & threatpoints
       - Empty (n/a) fields to maintain visual consistency in column view
   - /tunnels:
     - Tag "Local" for translation (and convert to lowercase in CSS)
     - Arabic: ensure our tunnel tables display correctly
 * I2PSnark:
   - Fix unclosed <label>
   - Standalone:
     - Better target the per-theme and imported console resources
     - List all available themes in config section
   - Themes: tidyups & further optimizations to reduce lag

2017-07-01 zzz
 * Fix family key export (ticket #2011)

2017-06-19 str4d
 * Console:
   - Welcome page readmes:
     - Responsive 2 column layout for eepsite section
     - Minor formatting corrections
     - Ensure urls in Arabic display correctly
     - Fix commenting out of forum.i2p where it impacts surrounding text
     - Cleanup unneeded CSS classes
     - Enhance Chinese legibility
   - Add untagged strings for /tunnels tooltips and local tunnel indicator
     (to be tagged for translation post .31 release)
   - classic: reduce color contrast of main display font
   - classic/dark/midnight: alignment on /peers and /tunnels
   - /tunnels:
     - Add bandwidth tiers definitions
     - Indicator for local tunnels
   - /profiles:
     - Split capabilities and version
     - Minimize wrapping at narrow viewport width
     - Iconify view profile link
     - Add "OK" status indication for functional peers
   - /peers: merge Dir and CWND rows in definitions table
   - /events: when no events found, place result in table
   - All themes: marginally increased width of sidebar to better accommodate
     extra long strings
   - Chinese: ensure buttons do not deviate in height (ticket #1996)
   - Arabic: fix alignment issues on /configui; presentational enhancements
   - Misc: remove erroneous tags
 * i2ptunnel: consistent tooltips and Destinations for editClient and editServer
 * I2PSnark:
   - Disable JavaScript td:onclick (handled by css)
   - Fix minimode bug in vanilla/ubergine
   - Minimode for dark/classic
   - ubergine:
     - Further optimizations to reduce lag/cpu load
     - New hidpi details.png to bypass mix-blend mode in .snarkTorrents
   - Usability:
     - Tab navigation now works for toggle panels
     - Touch target for configure button now extends entire length
   - All themes: cleanups and optimizations

2017-06-15 zzz
 * Data: Cache hostname lookups in RouterAddress (ticket #1998)
 * Job Queue: Make search jobs droppable (ticket #1998)
 * Router: Increase JVM DNS cache time (ticket #1998)
 * Util: Add negative DNS lookup cache, increase cache size (ticket #1998)

2017-06-12 str4d
 * Console:
   - /logs: fixed environment/running info table resize on hover (ticket #1996)
   - Scale theme/language divs so we don't truncate language display
   - Arabic (light) adjust font size for sidebar elements
   - Sidebar network status display (ticket #1996)
   - Usability:
     - Enhance presentation of tables on /peers (header/column alignment,
       center to separator for multi-value rows)
     - Enhance presentation of tables on /tunnels (reliable alignment of mixed
       content in rows, more prominence to bandwidth tiers)
   - /netdb: Fix UI bug with unpublished LeaseSets
 * I2PSnark:
   - Usability: add tabindex="0" to screenlog
   - Update navbar link classes to allow easier targetting of button type
   - Remove disabled cursor for known tracker radio icons (ticket #1996)
   - Fix alignment issue for comments (ticket #1996)
   - ubergine: further optimize theme to reduce scroll lag (ticket #1996)
   - ubergine/vanilla:
     - Add mini-mode at <=800px
     - Small size reduction to navbar links (ticket #1996)
 * Imagegen: Theme tweaks

2017-06-05 str4d
 * Add state classes to network status messages in sidebar
 * Switch light theme to the same top-nav style as the other themes

2017-06-04 str4d
 * De-duplicate strings for translation
 * Minor theme tweaks and bugfixes
 * SusiDNS: Update SVG image to use grouped objects for styling and hotlinks
 * Hardcode language names in their native language (to make them easier for
   users to identify)

2017-06-03 str4d
 * Console:
   - Add spans to /stats page to avoid summary info breaking mid-sentence, and
     to aid presentation
   - Adjust /stats CSS so information isn't over-dense
   - Set graph size for generated graphs on /stats to 600x200
   - Fix netdb leaseset tables
     - Ensure we only iconify add to addressbook links and not b32 dests
   - Individual icons for I2PSnark and I2P Plugins on /home
   - Add div to upnpstatus on peers to comply with layout
   - Fix various unclosed/erroneous tags
 * SusiDNS:
   - Rework SVG image
     - Now features interactive feedback when mouseover objects and hotlinks
   - Update fallback images for en and fr
   - Update overview text
   - added tabindex="0" to destination addresses, highlighted on :focus
 * i2psnark:
   - Reorder .snarkCommentInfo sections so my rating / average rating is located
     directly above posted comments/ratings in .snarkComments
   - If author name for comments is configured, display it in .snarkCommentInfo
     table header
   - Full status tooltips for status icons in .snarkTorrents
   - Rework td/th classes for .snarkTorrents so each column (both th + td) now
     belongs to a given class
   - Stop .snarkTorrentStatus class being incorrectly applied to .peerinfo
     columns
   - Spans for DHT peers / Dest in #totals, .snarkTorrentInfo info hash
   - Delete icon for delete comments td
   - Overhaul .snarkTorrents column widths
   - CSS tidyups
 * Compress some of the larger image files by 40-60%
 * UI feedback:
   * Console:
     - Increase contrast of table rows on profile/tunnels/peers tables
     - Changed pink font to magenta in /logs to increase legibility
     - Soften H3 headings in sidebar
     - Single click to select I2P Version and Running Environment table text,
       with table:hover color change and text cursor to better reflect selection
       - Modify text above to indicate what exactly needs to be included in logs
     - Reduce size of monospace dests in peers/profiles/tunnels, add additional
       spacing (responsive)
     - Fix resizing of sidebar reseed button
     - De-emphasise sidebar app icons with background-blend-mode: luminosity
     - Change sidebar snark icon to match homepage icon
     - Bump div.main text color from #222 to #333 (reduce contrast)
     - (light, dark, midnight) fix minor alignment issues with Arabic CSS
     - JRobin (graphs):
       - Fix font size issue for non-title text on graphs
       - Optimise layout (tweaked padding, legend box size etc)
       - Tweak graph lines (now dotted, slightly less opaque)
   * i2ptunnel:
     - Remove redundant labels and spans for keyaccess
     - Edit Server:
       - Shift Local Destination / Private Key file to share table row
       - Move "Use SSL to connect to target" to Target Port column
     - Add translation tagging for title tags
     - Remove redundant title tags and provide enhanced strings for features
       that benefit from clarification
     - Move title tags to <label> where applicable
     - Fixed Cancel button on registration so it now jumps back to the list page
     - textareas for registration page and local destination on edit server page
       changed to divs
       - Scrollbars hidden until mouseover, 1 click to select content
       - Responsive width, tabindex="0"
     - Fix overflow issue on select dropdowns (edit server/client -> tunnel
       options) in Chrome / Blink
     - More generous vertical padding for th (responsive)
     - Larger h2/h3s (responsive)
     - Increase spacing between panels in iframe mode
   * SusiDNS: Change address helper icon to add book icon
   * i2psnark:
     - Remove font-adjust-size (ubergine/vanilla)
     - Add extra spacing to screenlogger bullets (ubergine)
     - (ubergine) speed up tr:hover events by optimizing css (remove latency)
     - (all) remove fade activation delay for download bars, speed up fade-in /
       fade-out
     - Fix i2psnark link in navbar overflow issue in Arabic (ubergine/vanilla)
     - (ubergine) change default font for screenlog from Noto Mono to Droid Sans
       Mono to soften text/slightly reduce text size

2017-05-25 zzz
 * Crypto: Fix AES NPE on 4-core RPi 2nd try (ticket #1989)

2017-05-24 zzz
 * GeoIP: Fix NPE

2017-05-21 zzz
 * i2psnark: Fix bencoded scrape response for zzzot (ticket #1994)

2017-05-21 str4d
 * i2psnark: Integrate ratings and comments into themes

2017-05-20 str4d
 * Console:
   - Clarify choices on address helper save page (ticket #1940)
   - Add router.hideFloodfillParticipant to advanced settings help
 * i2psnark:
   - Make DHT debug section collapsible
   - Tooltips for downloading/finished torrents
   - Download bars for torrents, torrent parts and peer downloads
   - Friendlier date format (with completed: <date> tooltip for finished torrents)

2017-05-19 zzz
 * Console: Move /peers page rendering from router to console (ticket #1879)
 * i2psnark: Add ut_comment UI and per-torrent configuration

2017-05-18 str4d
Prop from i2p.i2p.str4d.ui:
 * Backend HTML changes to routerconsole and apps:
   - IDs, classes and <span>s for styling
   - <label>s to extend touch targets
   - Table layouts where it makes sense
   - Tooltips
   - Move most of the hard-coded styles to CSS
 * Overhaul all themes:
   - Responsive layouts
   - Standardisation of UI elements, configuration labels, etc.
   - Consistent layouts, spacing, font sizes, etc.
   - Routerconsole themes now present for all bundled plugins
   - HiDPI images
   - Accessibility and localisation improvements
   - Testing on a wide array of browsers and screen sizes
 * Console:
   - /home:
     - Move console links above hidden service links
     - Link are now full touch button targets
     - Add tabindex ="-1" to icon links
   - Sidebar:
     - Include bandwidth in minimal sidebar
     - Optional Advanced section
   - /graphs:
     - Graph image updates
       - Improve contrast
       - Custom fonts with fallback
       - Left-align legend
       - Thinner restart and graph lines for clarity
       - Separate legend and display period date
       - Text tidyups
     - Tweak layout and text of configuration options
     - Default width to 400px to avoid info truncation
     - 15s and 30s refresh options
   - /help:
     - Collate help topics from various routerconsole pages
     - Document various router.config settings
     - Add mini-FAQ
   - /peers: CSS sort buttons, with new icons to avoid conflation of
     tunnel direction and sort direction
   - /profiles: Add definitions for capabilities
   - Limit file inputs to accepted extensions
   - Fix bug in /configui lang selector when not in advanced mode
 * i2psnark:
   - Collapsible "Add Torrent" and "Create Torrent" sections
   - Disable theme selector when "universal theming" enabled
   - Debug info styling
   - <noscript> fallbacks:
     - Use meta-refresh
     - Hide JavaScript-dependent buttons
 * SusiDNS:
   - Disable spellcheck on config editor
   - Additional column on hostname list page for helper address with icon, and
     iconfication of b32 addresses
   - Add minified identicon to hostname column
   - Consolidation of Hostname/host name/name referenced: now all "Hostname"

2017-05-14 zzz
 * Crypto: Fix AES NPE on 4-core RPi (ticket #1989)
 * i2psnark: Fix HTML double-escape (ticket #1992)
 * Router: New method to get bandwidth class

2017-05-12 zzz
 * i2psnark: Better handling of read-only i2psnark dir (ticket #1990)

2017-05-10 zzz
 * Debian: Fix apparmor profile (ticket #1986)
 * SusiDNS: Fix display of default subscription

2017-05-05 zzz
 * Blockfile: Move from i2p.jar to addressbook.jar
 * i2psnark: Initial support for ut_comment, no UI yet
 * Jetty: New default servlet for eepsite, with
   locale-independent directory listing (ticket #1965)

* 2017-05-03 0.9.30 released

2017-04-30 zzz
 * Jetty: Rollover log files at midnight, not noon

2017-04-29 zzz
 * Build: Fix failing release tests
 * Jetty:
   - Revert previous checkin, unrelated to the Jetty Timer bug
   - Add patch to fix Jetty Timer bug, backported from Jetty 9.4
 * Translations update

2017-04-27 zzz
 * Console: Disable Jetty timer thread consolidation
   causing log file rollover to stop (ticket #1068)

2017-04-26 zzz
 * HTTP Proxy: Add delay before jump page

2017-04-14 zzz
 * SSU:
   - Reuse previous introducer expiration if available,
     so we don't force a republish
   - Don't run peer test if configured to force firewalled

2017-04-13 zzz
 * SSU: Publish introducer expiration (proposal 133)

2017-04-06 zzz
 * Debian: Add bash-completion scripts

2017-04-04 zzz
 * Router: Fix config dir location in Gentoo

2017-04-02 zzz
 * Context: Fix ClientAppManagerImpl in AppContext
 * i2psnark: Fix standalone configuration for Jetty 9

2017-04-01 zzz
 * Console: Fix stopping of webapps when console stops (ticket #1893)
 * i2psnark: Only rewrite torrent config file if changed (ticket #1893)
 * KeyStoreUtil: Reduce log level of expired cert error
 * Util: Don't sync config writes on Android/ARM (ticket #1893)

2017-03-31 zzz
 * SSU:
   - When a IPv6 peer connects, trigger a IPv6 peer test, not a IPv4 one
   - Require two consecutive peer test results for some state transitions,
     to prevent frequent transitions to firewalled and back

2017-03-29 zzz
 * SSU: Refactor PeerTestEvent out of UDPTransport
 * Throttle: Reduce threshold for probabalistic throttling
   on slow platforms (ticket #1964)

2017-03-27 zzz
 * Blockfile: Include authentication strings in exports
 * Build: Suppress JarScanner warning during Debian build (ticket #1975)
 * Debian: Add missing addressbook.jar to package (ticket #1973)
 * SusiDNS: Add addressbook.jar to classpath, don't fail
   to start if it's still not found (ticket #1973)
 * Time: Fix crashes on old Androids (ticket #1976)

2017-03-25 zzz
 * Blockfile: Upgrade to Blockfile format 4 on non-Android ARM
 * i2ptunnel: Allow alt priv key file to be added without restarting I2P

2017-03-24 zzz
 * Addressbook: Remove static reference, hide implementation
 * CPUID: Recognize Ryzen

2017-03-23 zzz
 * Plugins:
   - Blacklist i2pbote and BwSchedule
   - Translate exceptions thrown from PluginStarter
   - Add version number to console messages when installing/starting

2017-03-21 zzz
 * i2psnark: Enhancement to support RPC plugin
 * Context: New ClientAppManagerImpl in AppContext, so registration works

2017-03-20 zzz
 * i2psnark: Enhancements to support RPC plugin
 * SSU: More work on introducer expiration (proposal 133)

2017-03-18 zzz
 * Addressbook (ticket #1966):
   - Build as jar, not war
   - Put empty war in updater
   - Move Servlet starter to SusiDNS
   - Skip war in RouterConsoleRunner

2017-03-14 zzz
 * Blockfile: Fix specified-destination deletion from the correct book
 * i2ptunnel:
   - New form to enter private key file for alternate destination
   - Use alt destination for registration if set
 * NBI: Adjust info logging at startup
 * SusiDNS:
   - New button for adding alternate destination
   - Fix nonces on details page with multiple destinations
   - Fix single dest deletion on details page with multiple destinations
   - Set book in all forms to ensure correct book

2017-03-13 zzz
 * i2ptunnel:
   - Add subsession support to servers
   - Reset I2P socket on TCP socket errors
 * SAM: Reset I2P socket on handler errors
 * Streaming: Add reset() to I2PSocket API

2017-03-11 zzz
Prop from i2p.i2p.zzz.jetty9:
 * Console: Fix RouterConsoleRunner for Jetty 9
 * Debian packages:
   - Remove libjetty8-java and ant-optional dependencies
   - Add libjetty9-java and libtomcat8-java dependencies
     Fixes stretch/sid package (ticket #1902)
   - Fix up build files for package builds
 * Eepsite: Update initial configuration files for Jetty 9
 * Jetty:
   - Update to Jetty 9.2.21.v20170120 and Tomcat 8.0.33 (tickets #1512, #1935)
     Fixes jsp compilation on Java 9 (ticket #1870)
     Fixes InstanceManager warning (ticket #1818)
     We now support servlet API 3.1, JSP API 2.3, and EL API 3.0.
     Breaks the following plugins: bwschedule, i2pbote, i2pcontrol, zzzot
 * Startup: Add migration code for eepsite Jetty 8 configuration files

2017-03-09 zzz
 * i2psnark: Prevent RuntimeException caused by corrupt i2psnark.dht.dat file
 * Router: Set default sig type to EdDSA for non-Android ARM
 * Streaming: Don't change buffer size when max message size is adjusted

2017-03-06 zzz
 * CPUID:
   - Fix saving of libjcpuid.jnifile on Macs,
     was incorrectly saving as libjcpuid.so (tickets #1865, #1900)
   - Try to load libjcpuid-x86_64-osx.jnilib for 32-bit Macs,
     because as of 0.9.26 it's a 'fat binary' with 32-bit in it also.
   - Add library search path logging to main()
 * NBI:
   - Try to load the "none" architecture for x86, even if
     CPUID loading fails (tickets #1865, #1900)
   - Add library search path logging to main()
 * Throttle: Fix disable of probabalistic throttling
   (ticket #1963) (thx mysterious)

2017-03-03 zzz
 * Utils: Fix crash in Windows installer

2017-03-02 zzz
 * SSU:
   - Initial work on introducer expiration (proposal 133)
   - Fix bug in error handling for introduction parameters in RI

2017-03-01 zzz
 * Servlet: Catch OOM in MultiPartRequest

2017-02-27 zzz
 * i2psnark: Fix disappearing start button
 * addressbook: Add date parameter to authentication strings

* 2017-02-27 0.9.29 released

2017-02-27 zzz
 * i2ptunnel: Fix generation of advanced authentication strings

2017-02-23 zzz
 * HostTxtParser: Add -q command line option, enhance return codes
 * PrivateKeyFile: Add option to generate addressbook authentication

2017-02-20 zzz
 * GeoIP and blocklist update

2017-02-15 zzz
 * Build: Fix calls to Class.newInstance() deprecated in Java 9
 * I2CP: Return null on decompression failure instead of
   throwing exception (ticket #1915)
 * Utils: Disable caching of ResettableGZIPOutputStreams,
   add more checks for compression failure,
   fix output for zero-length input (ticket #1915)

2017-02-10 zzz
 * Test: Add random delays and drops to LocalClientManager

2017-02-09 zzz
 * Streaming: Fix optional delay and choking (tickets #1046, #1939)

2017-02-08 zzz
 * I2CP: Return local delivery failure on queue overflow (ticket #1939)

2017-02-05 zzz
 * Console: Consolidate timer threads (ticket #1068)
 * NTCP: Don't write to an inbound connection before
   fully established, causing NPE (ticket #996)
 * Streaming:
   - Don't always send optional delay (ticket #1046)
   - Don't hard fail on expired message error (ticket #1748)

2017-02-04 zzz
 * HTTP proxies:
   - Pass through relative referer URIs, convert same-origin
     absolute referer URIs to relative (ticket #1862)
 * NTP: Enable IPv6 support (ticket #1896)

2017-01-30 zzz
 * Router: Run shutdown tasks in parallel,
   increase max time for shutdown tasks (ticket #1893)
   i2psnark: Remove most delay between announces at shutdown

2017-01-29 zzz
 * i2ptunnel CONNECT proxy:
   - Add support for outproxy plugin (tickets #1364, #1895)
   - Add support for ports

2017-01-28 zzz
 * Utils: Detect when running as service on Gentoo

2017-01-26 zzz
 * Build: Set up translations for man pages
 * Javadoc: Fixes (ticket #1894)

2017-01-24 zzz
 * i2prouter: Add root check to restart and condrestart (ticket #1770)

2017-01-17 zzz
 * Utils: Java 9 yakkety workarounds

2017-01-12 zzz
 * DTG: Don't try to start if headless (ticket #1924)

2017-01-07 zzz
 * i2ptunnel: Fix NPE on proxy.i2p/add when no params

2017-01-06 zzz
 * EepGet: Recognize more status codes

2017-01-04 zzz
 * Crypto: Enforce correct seed and hash lengths in EdDSAPrivateKeySpec
 * Data: No longer sort addresses in an RI by SHA256
 * Router: Replace random tunnel keys when rekeying

2016-12-24 zzz
 * Utils: Add RKG command line tool

2016-12-23 zzz
 * Console: Add Referrer-Policy header

2016-12-22 zzz
 * Blocklist:
   - More efficiently check blocklist when receiving new RI
   - Check blocklist when loading RIs
   - Ensure blocklist is initialized before netdb
 * Clock: Fix duplicate notification of clock shift listeners
 * Console: Limit age of news entries displayed
 * Update: Fix JVM crash and i2p.jar corruption when updating from -1

2016-12-21 zzz
 * NTP:
   - Verify source address and port
   - Add to command line
   - Add KoD support (ticket #1897)
   - Add initial IPv6 support (ticket #1896)

2016-12-20 zzz
 * Build: Fix installer compile failure

2016-12-16 zzz
 * Router: Synchronize graceful exit code access
 * Update: Save blocklist version in UpdateManager

2016-12-16 zzz
Prop from i2p.i2p.zzz.test2:
 * BOB:
   - Refactor NamedDB implementation to HashMap
   - Refactor NamedDB locks to ReentrantReadWriteLock
   - All unlocks in finally blocks, remove redundant unlocking
   - Remove throw declaration from methods that don't
   - Read under write lock when that's simpler
   - Use Boolean fields rather than valueOf()
   - Fix unlock order inversion in I2PtoTCP and MUXlisten
   - Remove unused locking in TCPtoI2P
   - Add missing locking in status command
   - Remove redundant locking
   - Remove unnecessary catch-and-rethrows
   - Spelling fix in error message
   - Make some methods static
 * Console: Sort banlist and floodfills in true binary order, not by base64 string
 * Utils:
   - Consolidate stream copy code
   - Consolidate base64 alphabet string

* 2016-12-12 0.9.28 released

2016-12-09 zzz
 * Translation updates

2016-12-06 zzz
 * GeoIP: Update from Maxmind 2016-12-06

2016-12-05 zzz
 * Router:
   - Revert default family sig type back to ECDSA
   - Update blocklist

2016-12-02 zzz
 * Cleanup: Single char indexOf()
 * Console: Version the css links

2016-12-01 zzz
 * NetDb: Peer selection tweaks

2016-11-27 zzz
 * NetDb:
   - Add same-port check in peer selector
   - Add MTU, SSU caps, IPv6 prefix, and cost lookups

2016-11-26 zzz
 * NetDb:
   - Add advanced lookup form
   - Add port and sig type lookups
   - Fix /16 and /8 lookup
   - Fix tab highlighted for all lookups
   - Add sybil points for banlist

2016-11-25 zzz
 * SU3File: Add types for blocklist (proposal #130)

2016-11-24 zzz
 * Sybil tool enhancements
 * Blocklist feed tweaks

2016-11-23 zzz
 * Console: Support RI lookup by caps or IP
 * NetDB: Penalize new and slow peers
 * News: Add command line utility support
 * Router: Support blocklist in the news feed (proposal #129)

2016-11-21 zzz
 * NetDB: Fix detection of bandwidth class with multiple values specified

2016-11-20 zzz
 * NetDB: When doing lookups, don't use floodfills too close
 * Router: Change default family sig type to EdDSA

2016-11-17 zzz
 * Build: Add attributes for java version to all jars and wars
 * Blocklist: Add support for IPv6 in blocklist.txt
 * Console: Add netdb lookup by family
 * NetDB: When verifying store, don't use floodfills too close
 * Tomcat 6.0.48

2016-11-16 zzz
 * Console: Remove dead home page links (ticket #1882)
 * Profiles: Pull same-IP detection into a utility class
 * Router: Add methods to verify and track members of our family

2016-11-15 zzz
 * Certs: Add Let's Encrypt ISRG Root X1 cert

2016-11-14 zzz
 * Logs: Fix output of dup message after 30 minutes

2016-11-13 zzz
 * Console: Add initial news to bottom of news page (ticket #1153)
 * i2psnark: Periodically save DHT nodes (ticket #1328)
 * UPnP:
   - Prevent exception on bad HTTP header (ticket #1480)
   - Prevent NPE on socket creation fail (tickets #728, #1681)

2016-11-12 zzz
 * Console:
   - Fix inadvertent config save when clicking sidebar
     buttons on /configstats
   - Add IPv6 firewalled setting on /confignet
 * I2CP: Reduce error level on session closed while signing LS (ticket #1606)
 * JRobin: Move DeallocationHelper logging from wrapper log to router log
 * Profiles: Periodically save, delete old ones after saving (ticket #1328)
 * Susimail:
   - Add logout button to more pages (ticket #1374)
   - Fix nonce error on login after logout
   - Fix internal error after cancel button on settings form when not logged in

2016-11-11 zzz
 * Build: Truncate history.txt bundled in installers

2016-11-10 zzz
 * Transport: Use NTCP for some outbound connections even before
   SSU minimums are met (ticket #1835)

2016-11-09 zzz
 * Transport: Add stats for inbound v4/v6 connections (ticket #1854)
 * Tunnels: Reduce default VTBM records from 5 to 4

2016-11-08 zzz
 * Build: Fix minimum Java version for Windows
 * Install: Add max memory option to runplain.sh
 * Crypto: Change serial number in selfsigned certs from int to long
 * Router: Fix low-memory log messages for non-wrapper (ticket #1795)
 * Transport: Improve IPv6 address selection logic

2016-11-06 zzz
 * Console: Add Java 9 log warning (ticket #1870)
 * Security: Consistently log authentication failures for all interfaces
 * Util: Consolidate linux service detection code

2016-11-05 zzz
 * Build: Add support for using libtomcat8-java package
 * Console: Add message to ignore InstanceManager warning (ticket #1818)
 * SusiDNS: Fix jsp EL syntax error with EL 3.0 (Tomcat 8) (ticket #1870)

2016-11-04 zzz
 * Console: Improve handling and logging of webapps that fail to start
 * i2psnark: Add launch-i2psnark.bat (ticket #1871)
 * Transports:
   - New config i2np.allowLocal, fixes test networks (ticket #1875)
   - New configs i2np.udp.minpeers and i2np.udp.minv6peers, for testing (ticket #1876)

2016-10-29 zzz
 * Console: Java 9 fixes for classloader (ticket #1870)

2016-10-28 zzz
 * Build: Fix typo in jcpuid build.sh for Mac (ticket #1865)
 * Crypto:
   - Generate more-conforming selfsigned certs (ticket #1853)
   - Remove deprecated Sha256Standalone as scheduled
 * Utils:
   - Fix Java version detection for Java 9 (ticket #1870)
   - Add Addresses methods for multiple DNS results (ticket #1050)

2016-10-26 zzz
 * Build: Mac jbigi/jcpuid improvements and docs (ticket #1865)
 * JRobin 1.6.0-1
 * Systray: Remove old 32-bit Windows implementation, replaced by DTG

2016-10-25 zzz
 * i2psnark: Better calculation of total upload limit
 * SSU: Increase max IPv6 MTU (proposal #127)
 * Zxing 3.3.0

2016-10-23 zzz
 * Crypto: Create keystore directory when making SSL keys (ticket #1866)

2016-10-22 zzz
 * Build: Fix jbigi build in Arch Linux and others for Java 8 (ticket #1863)
 * Console:
   - New Korean translation
   - New Chinese (Taiwan) translations for susidns, susimail, debian
   - New initial news translations: Czech, Greek
 * Jetty 8.1.21.v20160908

2016-10-21 zzz
 * Console:
   - New Galician translation
   - Remove calls to deprecated two-arg setStatus()
 * Crypto: Actually use a random nonzero byte in ElGamal
 * Data: Cache serialized leasesets on floodfills
 * NetDB: Disallow RSA for RI or LS


----------------

EARLIER HISTORY IS AVAILABLE IN THE SOURCE PACKAGE