diff --git a/docs/v312_new.html b/docs/v312_new.html
new file mode 100644
index 0000000000000000000000000000000000000000..9d061bf75877a3a4abc2e20bd5131d1f8a3fd541
--- /dev/null
+++ b/docs/v312_new.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+<title>What's New in Synchronet v3.12 (Change History)</title>
+</head>
+<body>
+<font face=Arial,Helvetica>
+<h1 align=center>What's New in Synchronet v3.12</h1>
+<ul>
+<li><b>Web Server</b> (New!)<ul>
+	<li>HTTP 1.0 and 1.1
+	<li>Virtual Hosts
+	<li>CGI (currently on Unix only)
+	<li>Server-side JavaScript (SSJS) for dynamically-generated web content
+	<li>Default HTML user interface for creating new user accounts and reading messages
+	<li>Standard format HTTP access logs (<tt>data/logs/http-*</tt>)
+	<li>Configurable MIME file type support (<tt>ctrl/mime_types.ini</tt>)
+	<li>... and many more cool features thanks to Stephen Hurd (Deuce)
+	</ul><br>
+<li><b>Mail Server</b><ul>
+	<li>Supports SMTP authentication (PLAIN, LOGIN, or CRAM-MD5) when using an external relay server
+	<li>Creates default MIME Content-Type for non-Internet messages (<tt>charset=IBM437</tt>)
+	<li>Supports <tt>user@[<i>ip_address</i>]</tt> notation
+	<li>Supports RFC822 header fields in <tt>Field<i>[white-space]</i>:</tt> format
+	<li>Fixed receipt of SMTP telegrams (inter-BBS instant-messages)
+	<li>Fixed possible buffer overflow scenarios
+	<li>Fixed UDP DNS MX-record look-up bug
+	<li>If posting via authenticatd SMTP (e.g. <tt>sub:code@yourbbs.com</tt>), verifies user meets access requirements
+	<li>Much-improved external mail processor support using new <tt>ctrl/mailproc.ini</tt><ul>
+		<li>Or <tt>ctrl/mailproc.<i>host</i>.ini</tt> if it exists
+		<li>Includes ListServer module as example mail processor
+		<li>See <a href=listserver.txt>listserver.txt</a> for details
+		</ul>
+	<li>Mail processors may run only for specific recipients (or a set of recipients)
+	<li>Additional mail processor command-line specifiers:<ul>
+		<li><tt>%R</tt> (Reverse path)
+		<li><tt>%S</tt> (Sender's name)
+		<li><tt>%A</tt> (Sender's address)
+		</ul>
+	<li>JavaScript mail processor modules:<ul>
+		<li>can now use <tt>log()</tt> to write to the mail server log window<br>
+			(AKA <tt>write</tt>, <tt>writeln</tt>, and <tt>print</tt>)
+		<li>have access to global variables: <tt>sender_name</tt>, <tt>sender_address</tt>, and <tt>reverse_path</tt>
+		</ul>
+	</ul><br>
+<li><b>Telnet/RLogin Server</b><ul>
+	<li>Telnet option negotiation overhaul:<ul>
+		<li>Compatibility with more clients
+		<li>Gets/stores terminal type
+		<li>Supports negotiated window size (much more reliable than ANSI cursor position reports)
+		</ul>
+	<li>Telnet server now escapes the telnet IAC (ASCII 255) character
+	<li>Many RLogin improvements and behavior changes (ask Deuce for details)
+	<li>Switched "Allowed RLogin address list" from <tt>data/rlogin.can</tt> to <tt>ctrl/rlogin.cfg</tt>
+	<li>QWK/REP packing/unpacking semaphore file allows multiple hosts to process QWK events (for FTP server)
+	<li>Counts and logs number of "short sends" on client socket
+	<li>Fixed crashes/segfaults when re-loading configuration files
+	<li>Fixed "Monitor Time Left" external program toggle option
+	<li>Fixed calculation of upload/download and post/call ratios over 50% in Access Requirement Strings
+	<li>Beeps at user when reaching end of allowed string input
+	<li>Batch download file list now contains the long filenames if the file transfer protocol is "Native 32-bit"
+	<li>Rejects filenames begining with a dash as a "suspicious filename"
+	<li>Use default <tt>SHELL</tt> value of <tt>/bin/sh</tt> if environment variable not set for Unix version
+	<li>Created <tt>PROT</tt> ARS keyword (e.g. "Telnet" or "RLogin")
+	<li>The <tt>%p</tt> command-line specifier now expands to the client's protocol (e.g. "Telnet" or "RLogin")
+	<li>Allow spinning cursor to be completely disabled by users (even for pause prompts)
+	<li><tt>input_thread_mutex</tt> lock fix (work-around necessary for some Linux distros)
+	<li>Eliminated hard-coded "Continue?" prompt during new user procedure, using text.dat line 564 instead
+	</ul><br>
+<li><b>FTP Server</b><ul>
+	<li>Supports both shared and non-shared open modes when sending files (for download)
+	<li>Guest/anonymous HTML clients can now toggle on/off extended file descriptions in <tt>00index.html</tt>
+	<li>Don't update existing (pre-packed?) QWK packet when downloading or "sizing" a QWK packet via FTP
+	</ul><br>
+<li><b>Synchronet Services</b><ul>
+	<li>Configurable stack size for service threads
+	<li>Improved <tt>client_add()</tt> and <tt>client_remove()</tt> methods
+	<li>Eliminated support for legacy <tt>ctrl/services.cfg</tt><ul>
+		<li>Must use <tt>ctrl/services.ini</tt> or <tt>ctrl/services.<i>host</i>.ini</tt> now
+		</ul>
+	<li>Fixed termination request with active clients
+	</ul><br>
+<li><b>All Servers</b><ul>
+	<li>Automatic bind-retry on failure (typically, "address/port already in use")
+	<li>Much more flexible semaphore file format for recycling or shutting-down servers using the local file system<ul>
+		<li>Format: <tt>ctrl/<i>action</i>[.<i>host</i>][.<i>service</i>]</tt>
+		<li>Examples:<ul>
+			<li><tt>ctrl/recycle</tt> - recycle all services on all hosts
+			<li><tt>ctrl/recycle.vert</tt> - recycle all services on system with hostname "vert"
+			<li><tt>ctrl/shutdown.vert.telnet</tt> - shutdown telnet service on vert only
+			<br>
+			<i>service</i> may be "telnet", "ftp", "mail", "web" or "services"
+			</ul>
+		<li>Legacy (<tt>ctrl/*.rec</tt>) recycle semaphore files still supported
+		</ul>
+	<li>Startup initialization file (<tt>ctrl/sbbs.ini</tt>) is re-parsed upon server recycle
+	<li>Much more responsive to requests for termination (immediate) and shutdown (when not in use)
+	</ul><br>
+<li><b>Message Bases</b> (SMBLIB v2.40)<ul>
+	<li>Performance and reliability improvements
+	<li>The e-mail message base (<tt>data/mail</tt>) now supports an unlimited number of messages (within SMB limits)
+	<li>High-level functions added for the convenience of 3rd party developers
+	<li>New security header fields track who posted what messages from where
+	<li>New hash database<ul>
+		<li>to perform fast look-ups of message-IDs for threading and duplicate checking
+		<li>robust body text dupe checking (better than legacy CRC history method)
+		<li>hash history file is never purged or deleted so old dupes cannot return
+		<li>no chance for false positives
+		</ul>
+	<li>Auto-thread linkage<ul>
+		<li>resulting thread-links will be used extensively in future threaded message displays (ala web-boards)
+		</ul>
+	<li>New SMBUTIL commands:<ul>
+		<li><tt>d</tt> delete all messages
+		<li><tt>h</tt> dump hash database
+		</ul>
+	<li>New SMBUTIL options:<ul>
+		<li><tt>-c[m]</tt> create message base if it doesn't exist (m=max msgs)
+		<li><tt>-l</tt> LZH-compress imported message text
+		<li><tt>-o</tt> print errors on stdout (instead of stderr)
+		<li><tt>-p</tt> wait for keypress (pause) on exit
+		<li><tt>-!</tt> wait for keypress (pause) on error
+		<li><tt>-b</tt> beep on error (quiet is now the default)
+		</ul>
+	<li>New CHKSMB options:<ul>
+		<li><tt>-b</tt> beep on error (quiet is now the default)
+		<li><tt>-h</tt> do not check hash database
+		</ul>
+	<li>FIXSMB may now be used to repair multiple message bases with a single command<br>
+		Example: <tt>fixsmb data/*.shd</tt>
+	<li>FIXSMB now removes "in-transit" attributes (holding messages in the mail server queue)
+	<li>FIXSMB will now add message hashes to the hash database (if missing)
+	</ul><br>
+<li><b>JavaScript</b><ul>
+	<li>JSexec new global methods:<ul>
+		<li><tt>chdir()</tt> (change current directory)
+		<li><tt>putenv()</tt> (create/set environment variable)
+		</ul>
+	<li>Background (multi-threaded) script support using <tt>load(true, <i>filename, args</i>)</tt>
+	<li>New <a href=v312_jsnew.html#Queue>Queue</a> class for bi-directional communications between modules/threads
+	<li>New <tt>bbs.mods</tt> object for a common global repository for 3rd party modifications/modules
+	<li>Reduced memory usage (using the undocumented JSPROP_SHARED attribute for properties)
+	<li><tt>MsgBase.save_msg()</tt> will accept any variable type for the body text<br>
+		and will automatically convert to a string (even arrays of objects)
+	<li>For a complete list of JavaScript Object Model changes, see <a href=v312_jsnew.html>v312_jsnew.html</a>
+	</ul><br>
+<li><b>Full-screen Utilities</b> (e.g. SCFG, EchoCfg, etc.)<ul>
+	<li>Mouse support returns to Win32
+	<li>Strings longer than the screen width can now be edited
+	<li>Support ANSI terminals (remote input doesn't currently work on NT-based OSes)
+	<li>Support X consoles on Unix
+	<li>Compatibility with terminals/keyboards lacking some extended keys.<br>
+	The following are now equivalanet in ulist (menus) and string input:<ul>
+		<li>^B = home
+		<li>^E = end
+		<li>^V = insert (string input only)
+		<li>^Z = help (F1)
+		</ul>
+	and in menus only:<ul>
+		<li>+ = insert
+		<li>- = delete
+		<li>backspace = escape (not new)
+		<li>^U = pgup
+		<li>^D = pgdn
+		<li>^C = copy (F5)
+		<li>^V = paste (F6)
+		</ul>
+	<li>... and many more cool features thanks to Stephen Hurd (Deuce)
+	</ul><br>
+<li><b>Windows NT Services</b><ul>
+	<li>Supports mute/umute and sysop available/unavailable control from the Synchronet Control Panel
+	<li>Event log messages no longer contain warnings about "missing event source descriptions"
+	</ul><br>
+<li><b>Synchronet Control Panel (for Win32)</b><ul>
+	<li>Now stores common server settings in <tt>ctrl/sbbs.ini</tt> instead of Windows Registry<ul>
+		<li>Legacy registry settings are automatically imported
+		<li>Allows easy interoperation with <tt>sbbsNTsvcs.exe</tt> and <tt>sbbs.exe</tt>
+		<li>The startup .ini file can now be specified on the <tt>sbbsctrl.exe</tt> comand-line
+		<li>Will use <tt>ctrl/<i>host</i>.ini</tt> by default, if it exists
+		</ul>
+	<li>Optionally use Windows file associations when editing or viewing text/ansi/ascii files
+	<li>Synchronet Control Panel configuration (window sizes/positions/colors, etc) may be exported-to<br>
+	or imported-from <tt>ctrl/sbbsctrl.ini</tt>
+	</ul><br>
+<li><b>Synchronet Console</b><ul>
+	<li>Added commands:<ul>
+		<li>(R)ecycle/(S)hutdown/(T)erminate any server (or all servers)
+		<li>(!) to execute an external (system) command
+		</ul>
+	</ul>
+</ul>
+For <b>many</b> more changes since v3.10, see <a href=v311_new.html>v311_new.html</a> and
+<a href=v311_jsnew.html>v311_jsnew.html</a>
+<p align="right"><font face="Arial" size="1" , "Helvetica">Copyright � 2004 Rob 
+Swindell <br>
+&nbsp;$Id$</font></p>
+
+</body>
+</html>
\ No newline at end of file