2026-02-11 2.11.0+ (API 0.9.68) released

2026-02-11 dr|z3d
 * Router:
   - Enforce concurrent tunnel build cap per inbound/outbound pool
 * Console:
   - TunnelRenderer tweaks and presentational improvements on /tunnels page

2026-02-10 dr|z3d
 * Router:
   - Sybil Analysis: log IP address in ban reason when available
   - GhostPeerManager: tweak fail count and intervals for faster detection
   - Log IP and reverse DNS for session bans
   - Quadruple floodfill search limit and double timeout when under attack
 * Addressbook:
   - Double HostChecker floodfill lookup timeout to 30s when under attack
 * Console:
   - Refactor session bans page, add flags and IP/hostname parsing
   - Parse hostname from sessionbans.txt to avoid redundant reverse DNS lookups

2026-02-09 dr|z3d
 * Router:
   - Proactively remove slow tunnels (>2x avg latency per hop) from pools
     to maintain efficient tunnel performance without marking them as failed
   - Enforce 2-hop minimum for client tunnel fallbacks; continue building
     indefinitely until successful rather than settling for short tunnels
   - Allow 1-hop fallbacks for client pools configured for 1 hop; allow
     0-hop fallbacks only for exploratory pools or when allowZeroHop configured
   - Remove 0-hop tunnels when pool has 3+ total tunnels available
   - Extend tunnel test timeout to 25s during attacks (up from 15s) to
     accommodate network delays
 * Console:
   - Display last known tunnel latency on /tunnels page showing round-trip
     time from last successful test

2026-02-08 dr|z3d
 * Router:
   - Ban XG (fast, no transit) routers by default
   - Improve tunnel build success calculation to use combined client and
     exploratory stats for consistency
   - Retain duplicate tunnels during attacks since replacements are hard
     to build
   - Ban peers sending 3+ corrupt fragments in 10min for 8h
   - Relaxed peer selection under attack (<40% tunnel build success)
   - Consolidate session bans to sessionbans/sessionbans.txt with disk sync
   - Ban corrupt NTCP handshake attackers for 8 hours
   - Raise tunnel build timeout to 1 hour under attack
   - Relax peer exclusions during attacks - allow P cap, 1/6 E cap,
     U-cap for M/N/O/P/X tiers
   - Increase MAX_TIME_TO_REBUILD to 30min for LeaseSets resilience
   - Allow client tunnels to retry and fallback to >0-hop exploratory
   - Add last-hop exclusion for client tunnels to limit the same peer
     at the last hop in pools
   - Prevent tunnel pools from dropping to 0 and implement defensive
     building under attack
   - Scale NTCP connections under attack (20 per 1%, min 100, max 800);
   - Add router.throttleNTCPunderAttack config property (default false)
   - Enforce max 3 hops for client and exploratory tunnels when under attack
 * Console:
   - Add IP, hostname columns and sessionbans IP-only bans to banlist
   - Move Blocklist IP to IP column on session bans page

2026-02-07 dr|z3d
 * Router:
   - Add periodic cleanup to remove tunnels with duplicate peer sequences,
     ensuring at least one tunnel remains per pool
   - Prevent 0-hop tunnels from being added to client pools unless
     explicitly configured to allow them
   - Fix duplicate tunnel rejection logic to keep existing tunnels and
     reject new duplicates instead of clearing pools
   - Fix zero-hop cleanup to properly fail removed tunnels
   - Add gap-based pre-emptive botnet detection
   - Separate exploratory and client tunnel peer percentage limits
   - Lower burst thresholds and add 1s immediate ban for severe bursts
   - Rate-limit tunnel unavailable logs to 1 per minute after 10min uptime
   - Display max of 1m and 10m tunnel build success averages in sidebar
   - Relax LeaseSet validation during attacks to accommodate tunnel delays
   - Increase stored profile limits and use lastHeardFrom for eviction
   - Add warn logging for client 0-hop tunnels and extend cleanup to
     client pools
   - Fix fallback tunnel selection to properly enforce hop count for
     client tunnels
   - Adaptive tier classification; protect client tunnel hop count
   - Extend profile expiration to 2x when under attack
   - Don't persist ghost tunnel history, add periodic ghost reset,
     bootstrap from fastest tiers
   - Fix profile manager to bootstrap fast peers from NetDB and improve
     ghost peer handling during attacks
   - Reduce ClientPeerSelector log spam during attacks
   - Improve predictive banning with recovery, caching and higher
     thresholds
 * Console:
   - Fix fast peer count discrepancy on profiles page
   - Show tunnel build success faster using 1-minute average
 * Core: Allow slight LeaseSet expiry during attacks for tunnel delay
   tolerance

2026-02-06 dr|z3d
 * Router:
   - Adaptive peer testing - double concurrency under attack, limit
     when job queue backed up
   - Log flood throttle offenders and auto-ban abusers
   - Reduce lease renewal interval under attack

2026-02-05 dr|z3d
 * Router:
   - Add BanLogger and HashPatternDetector for botnet detection and
     sessionbans logging
   - Integrate BanLogger for netDB, transport layer, and tunnel pool
     ban event logging
   - Add duplicate tunnel sequence detection; display duplicate status
     in tunnel list, mark and fail duplicates appropriately
   - Increase tunnel test capacity and peer tunnel limit under low
     build success to mitigate attacks
   - Add 10-minute sliding window to bad packet counter to avoid false
     positives
   - Increase floodfill query concurrency under attack
   - Do not ban floodfills for version mismatches

2026-02-04 dr|z3d
 * Router:
   - Track and ban routers for unsolicited DbSearchReply after 3
     occurrences
   - Track and ban repeat offenders for corrupt SSU2 SessionConfirmed
     messages
   - Add per-IP tracking for SSU2 TERMINATION and establishment failures

2026-02-01 dr|z3d
 * Console: Display tunnel test status on /tunnels; don't display
   transient HostChecker ping tables
 * Addressbook: Throttle hostchecker concurrency based on router job lag
 * Router:
   - Implement job lag-based concurrency and batched staggered
     scheduling for sendStore to eliminate blocking
   - Add JobQueueScaler for job runner scaling based on system load
   - Increase LeaseSet republishing interval and implement 15-second
     batching window for republishing

2026-01-31 dr|z3d
 * Router:
   - Implement async delegation for tunnel build reply processing to
     prevent InNetMessagePool lag
   - Optimize UDP packet memory usage with buffer pooling/reduced zeroing
   - Add early packet drop mechanisms for UDP queue backpressure
   - Reduce NTCP/SSU buffer and queue over-allocation
   - Add nanosecond precision timing for sub-millisecond job duration
     tracking

2026-01-30 dr|z3d
 * I2PSnark: Optimize DHT for more efficient memory management
 * Console: Enhance and declutter presentation of jobs on /jobqueue
 * Router:
   - TestJob optimizations with deduplication and pool coverage tracking
   - Batch tunnel expirations via ExpireJobManager
   - Improve job dropping logic to prevent lag buildup and memory bloat
   - Reduce lock contention in TunnelRemovalJob

2026-01-26 dr|z3d
 * Router: Improve tunnel test performance with faster failure detection
   and higher limits
 * Console/Webapps: Tibetan translation

2026-01-24 dr|z3d
 * Router:
   - Implement adaptive tunnel testing frequency with success rate tracking
   - Grace period of 10m after startup before banning for excessive lookups

2026-01-18 dr|z3d
 * I2PTunnel: Add graceful shutdown and destination limit to AccessFilter
 * Router: Add cache cleanup to prevent memory leaks in RepublishLeaseSetJob

2026-01-09 dr|z3d
 * I2PTunnel: Implement optional random startup delay for automatically
   started server tunnels

2025-12-26 dr|z3d
 * SusiDNS: Add support for Blacklisting host(s) via "Blacklist selected"
   button on addressbook pages

2025-12-19 dr|z3d
 * SusiDNS: Display site categories in host lists, classifications
   courtesy of notbob.i2p

2025-12-17 dr|z3d
 * SusiDNS: Implement blacklist feature to hide blacklisted hosts from
   addressbook lists
 * I2PTunnel: Use SusiDNS blacklist to block access to hosts via http proxy

2025-12-13 dr|z3d
 * SusiDNS: Implement automated host checker to determine reachability
   and display status in host lists

2025-12-10 dr|z3d
 * Router: Reduce memory footprint by optimizing stats collection

2025-12-08 dr|z3d
 * Console: Add Tibetan translation to console and webapps

2025-12-07 dr|z3d
 * SusiDNS: Add source and date added columns to main hostlist tables

2025-11-18 dr|z3d
 * Console:
   - Migrate various auto-refreshing pages to refreshElements.js,
     leverage morphdom.js for improved refresh rendering performance,
     and use shared worker for background updates
   - Fixup and enhance column sorting on eligible tables
   - Add auto-refresh to leasesets and netdb listings pages

2025-10-08 dr|z3d
 * Console: Rendering speedups for tunnels pages and routerinfo listings

2025-10-03 dr|z3d
 * Console: Indicate errors on logs sidebar icon and tooltip

2025-10-01 dr|z3d
 * Console: Replace combined logs view with error view and remove
   error logs from /routerlogs page; add error logs counter on nav

2025-09-29 dr|z3d
 * Console: Iconize and add tooltips to peer status on /profiles
 * Transports: Optimize and refactor NTCP EventPumper to reduce CPU
   usage and improve connection management

2025-09-24 dr|z3d
 * Console: Add compact NetDb search form to /netdb pages
 * Transports: Fix syntax bug preventing inbound SSU connections

2025-09-22 dr|z3d
 * Console: Add optional fallback whois lookups for routers when
   reverse dns lookups are enabled

2025-09-17 dr|z3d
 * Router: Implement reverse DNS lookup file cache with LRU eviction
   policy and configurable memory limits

2025-09-12 dr|z3d
 * Console: Add UI option to toggle sticky sidebar on /configsidebar


2025-09-09 2.10.0+ (API 0.9.67) released

2025-09-02 dr|z3d
 * Console: Add navigation bar to /logs with additional links

2025-09-02 dr|z3d
 * Console: Optimize and enhance page loader bar

2025-08-28 dr|z3d
 * Console: Implement interstitial for homepage searches

2025-08-28 dr|z3d
 * Console: Add UI option to toggle unified sidebar on /configsidebar

2025-08-23 dr|z3d
 * Console: Ensure configuration changes to sidebar display immediately

2025-08-23 dr|z3d
 * Router: New addJobToTop method in JobQueue to send job to head of
   of job queue and use when publishing leasesets

2025-08-23 dr|z3d
 * Console: Add summary section and autorefresh to session bans page

2025-08-20 dr|z3d
 * Console: Add routerconsole.unifiedSidebar={true|false}
   configuration option to present the standard sidebar on /home

2025-08-18 dr|z3d
 * Console: Add javascript graphs search/filter feature

2025-08-16 dr|z3d
 * I2PTunnel: Add javascript tunnel search/filter feature to index

2025-08-15 dr|z3d
 * Console: Ensure local services sidebar section correctly updates
   when service tunnel status changes
 * I2PTunnel: Ensure isDown status is correctly displayed and page
   is correctly restored when router is detected

2025-08-09 dr|z3d
 * Console: Add leaseset search on single leaseset page

2025-08-08 dr|z3d
 * SusiDNS: Add clear filter / search button to search input

2025-08-04 dr|z3d
 * I2PTunnel:
   - Display hop and tunnel count on index page in expanded view
   - Migrate screenlogs to a