replacing the old HTML user guide with a Sphinx-managed user guide
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
new file mode 100644
index 0000000..e94e87e
--- /dev/null
+++ b/user_guide_src/source/changelog.rst
@@ -0,0 +1,2177 @@
+##########
+Change Log
+##########
+
+Version 2.1.0 (planned)
+=======================
+
+Release Date: Not Released
+
+-  General Changes
+
+   -  Added Android to the list of user agents.
+   -  Added Windows 7 to the list of user platforms.
+   -  Callback validation rules can now accept parameters like any other
+      validation rule.
+   -  Ability to log certain error types, not all under a threshold.
+   -  Added html_escape() to :doc:`Common
+      functions <general/common_functions>` to escape HTML output
+      for preventing XSS.
+   -  Added support for pem,p10,p12,p7a,p7c,p7m,p7r,p7s,crt,crl,der,kdb,rsa,cer,sst,csr Certs to mimes.php.
+   -  Added support pgp,gpg to mimes.php.
+   -  Added support 3gp, 3g2, mp4, wmv, f4v, vlc Video files to mimes.php.
+   -  Added support m4a, aac, m4u, xspf, au, ac3, flac, ogg Audio files to mimes.php.
+
+-  Helpers
+
+   -  Added increment_string() to :doc:`String
+      Helper <helpers/string_helper>` to turn "foo" into "foo-1"
+      or "foo-1" into "foo-2".
+   -  Altered form helper - made action on form_open_multipart helper
+      function call optional. Fixes (#65)
+   -  url_title() will now trim extra dashes from beginning and end.
+   -  Improved speed of <a href="helpers/string_helper.html">String Helper</a>'s <b>random_string()</b> method
+   -  Added XHTML Basic 1.1 doctype to <a href="helpers/html_helper.html">HTML Helper</a>.
+
+-  Database
+
+   -  Added a `CUBRID <http://www.cubrid.org/>`_ driver to the `Database
+      Driver <database/index>`. Thanks to the CUBRID team for
+      supplying this patch.
+   -  Added a PDO driver to the <a href="database/index.html">Database Driver</a>.
+   -  Typecast limit and offset in the :doc:`Database
+      Driver <database/queries>` to integers to avoid possible
+      injection.
+   -  Added additional option 'none' for the optional third argument for
+      $this->db->like() in the :doc:`Database
+      Driver <database/active_record>`.
+   -  Added <kbd>$this->db->insert_batch()</kbd> support to the OCI8 (Oracle) driver.
+
+-  Libraries
+
+   -  Changed $this->cart->insert() in the :doc:`Cart
+      Library <libraries/cart>` to return the Row ID if a single
+      item was inserted successfully.
+   -  Added support to set an optional parameter in your callback rules
+      of validation using the :doc:`Form Validation
+      Library <libraries/form_validation>`.
+   -  Driver children can be located in any package path.
+   -  Added max_filename_increment config setting for Upload library.
+   -  CI_Loader::_ci_autoloader() is now a protected method.
+   -  Added is_unique to the :doc:`Form Validation
+      library <libraries/form_validation>`.
+   -  Modified valid_ip() to use PHP's filter_var() when possible (>= PHP 5.2) in the <a href="libraries/form_validation.html">Form Validation</a> library.
+   -  Added <kbd>$config['use_page_numbers']</kbd> to the <a href="libraries/pagination.html">Pagination library</a>, which enables real page numbers in the URI.
+   -  Added TLS and SSL Encryption for SMTP.
+
+-  Core
+
+   -  Changed private functions in CI_URI to protected so MY_URI can
+      override them.
+   -  Removed CI_CORE boolean constant from CodeIgniter.php (no longer Reactor and Core versions).
+
+Bug fixes for 2.1.0
+-------------------
+
+-  Unlink raised an error if cache file did not exist when you try to delete it.
+-  Fixed #378 Robots identified as regular browsers by the User Agent
+   class.
+-  If a config class was loaded first then a library with the same name
+   is loaded, the config would be ignored.
+-  Fixed a bug (Reactor #19) where 1) the 404_override route was being
+   ignored in some cases, and 2) auto-loaded libraries were not
+   available to the 404_override controller when a controller existed
+   but the requested method did not.
+-  Fixed a bug (Reactor #89) where MySQL export would fail if the table
+   had hyphens or other non alphanumeric/underscore characters.
+-  Fixed a bug (#200) where MySQL queries would be malformed after
+   calling count_all() then db->get()
+-  Fixed bug #105 that stopped query errors from being logged unless database debugging was enabled
+-  Fixed a bug (#181) where a mis-spelling was in the form validation
+   language file.
+-  Fixed a bug (#160) - Removed unneeded array copy in the file cache
+   driver.
+-  Fixed a bug (#150) - field_data() now correctly returns column
+   length.
+-  Fixed a bug (#8) - load_class() now looks for core classes in
+   APPPATH first, allowing them to be replaced.
+-  Fixed a bug (#24) - ODBC database driver called incorrect parent in
+   __construct().
+-  Fixed a bug (#85) - OCI8 (Oracle) database escape_str() function did
+   not escape correct.
+-  Fixed a bug (#344) - Using schema found in <a href="libraries/sessions.html">Saving Session Data to a Database</a>, system would throw error "user_data does not have a default value" when deleting then creating a session.
+-  Fixed a bug (#112) - OCI8 (Oracle) driver didn't pass the configured database character set when connecting.
+-  Fixed a bug (#182) - OCI8 (Oracle) driver used to re-execute the statement whenever num_rows() is called.
+-  Fixed a bug (#82) - WHERE clause field names in the DB <samp>update_string()</samp> method were not escaped, resulting in failed queries in some cases.
+-  Fixed a bug (#89) - Fix a variable type mismatch in DB <samp>display_error()</samp> where an array is expected, but a string could be set instead.
+-  Fixed a bug (#467) - Suppress warnings generated from get_magic_quotes_gpc() (deprecated in PHP 5.4)
+-  Fixed a bug (#484) - First time _csrf_set_hash() is called, hash is never set to the cookie (in Security.php).
+
+Version 2.0.3
+=============
+
+Release Date: August 20, 2011
+
+-  Security
+
+   -  An improvement was made to the MySQL and MySQLi drivers to prevent
+      exposing a potential vector for SQL injection on sites using
+      multi-byte character sets in the database client connection.
+      An incompatibility in PHP versions < 5.2.3 and MySQL < 5.0.7 with
+      *mysql_set_charset()* creates a situation where using multi-byte
+      character sets on these environments may potentially expose a SQL
+      injection attack vector. Latin-1, UTF-8, and other "low ASCII"
+      character sets are unaffected on all environments.
+
+      If you are running or considering running a multi-byte character
+      set for your database connection, please pay close attention to
+      the server environment you are deploying on to ensure you are not
+      vulnerable.
+
+-  General Changes
+
+   -  Fixed a bug where there was a misspelling within a code comment in
+      the index.php file.
+   -  Added Session Class userdata to the output profiler. Additionally,
+      added a show/hide toggle on HTTP Headers, Session Data and Config
+      Variables.
+   -  Removed internal usage of the EXT constant.
+   -  Visual updates to the welcome_message view file and default error
+      templates. Thanks to `danijelb <https://bitbucket.org/danijelb>`_
+      for the pull request.
+   -  Added insert_batch() function to the PostgreSQL database driver.
+      Thanks to epallerols for the patch.
+   -  Added "application/x-csv" to mimes.php.
+   -  Added CSRF protection URI whitelisting.
+   -  Fixed a bug where `Email library <libraries/email>`
+      attachments with a "." in the name would using invalid MIME-types.
+   -  Added support for
+      pem,p10,p12,p7a,p7c,p7m,p7r,p7s,crt,crl,der,kdb,rsa,cer,sst,csr
+      Certs to mimes.php.
+   -  Added support pgp,gpg to mimes.php.
+   -  Added support 3gp, 3g2, mp4, wmv, f4v, vlc Video files to
+      mimes.php.
+   -  Added support m4a, aac, m4u, xspf, au, ac3, flac, ogg Audio files
+      to mimes.php.
+
+-  Helpers
+
+   -  Added an optional third parameter to heading() which allows adding
+      html attributes to the rendered heading tag.
+   -  form_open() now only adds a hidden (Cross-site Reference Forgery)
+      protection field when the form's action is internal and is set to
+      the post method. (Reactor #165)
+   -  Re-worked plural() and singular() functions in the :doc:`Inflector
+      helper <helpers/inflector_helper>` to support considerably
+      more words.
+
+-  Libraries
+
+   -  Altered Session to use a longer match against the user_agent
+      string. See upgrade notes if using database sessions.
+   -  Added $this->db->set_dbprefix() to the :doc:`Database
+      Driver <database/queries>`.
+   -  Changed $this->cart->insert() in the :doc:`Cart
+      Library <libraries/cart>` to return the Row ID if a single
+      item was inserted successfully.
+   -  Added $this->load->get_var() to the :doc:`Loader
+      library <libraries/loader>` to retrieve global vars set with
+      $this->load->view() and $this->load->vars().
+   -  Changed $this->db->having() to insert quotes using escape() rather
+      than escape_str().
+
+Bug fixes for 2.0.3
+-------------------
+
+-  Added ENVIRONMENT to reserved constants. (Reactor #196)
+-  Changed server check to ensure SCRIPT_NAME is defined. (Reactor #57)
+-  Removed APPPATH.'third_party' from the packages autoloader to negate
+   needless file stats if no packages exist or if the developer does not
+   load any other packages by default.
+-  Fixed a bug (Reactor #231) where Sessions Library database table
+   example SQL did not contain an index on last_activity. See :doc:`Upgrade
+   Notes <installation/upgrade_203>`.
+-  Fixed a bug (Reactor #229) where the Sessions Library example SQL in
+   the documentation contained incorrect SQL.
+-  Fixed a bug (Core #340) where when passing in the second parameter to
+   $this->db->select(), column names in subsequent queries would not be
+   properly escaped.
+-  Fixed issue #199 - Attributes passed as string does not include a
+   space between it and the opening tag.
+-  Fixed a bug where the method $this->cart->total_items() from :doc:`Cart
+   Library <libraries/cart>` now returns the sum of the quantity
+   of all items in the cart instead of your total count.
+-  Fixed a bug where not setting 'null' when adding fields in db_forge
+   for mysql and mysqli drivers would default to NULL instead of NOT
+   NULL as the docs suggest.
+-  Fixed a bug where using $this->db->select_max(),
+   $this->db->select_min(), etc could throw notices. Thanks to w43l for
+   the patch.
+-  Replace checks for STDIN with php_sapi_name() == 'cli' which on the
+   whole is more reliable. This should get parameters in crontab
+   working.
+
+Version 2.0.2
+=============
+
+Release Date: April 7, 2011
+Hg Tag: v2.0.2
+
+-  General changes
+
+   -  The :doc:`Security library <./libraries/security>` was moved to
+      the core and is now loaded automatically. Please remove your
+      loading calls.
+   -  The CI_SHA class is now deprecated. All supported versions of PHP
+      provide a sha1() function.
+   -  constants.php will now be loaded from the environment folder if
+      available.
+   -  Added language key error logging
+   -  Made Environment Support optional. Comment out or delete the
+      constant to stop environment checks.
+   -  Added Environment Support for Hooks.
+   -  Added CI\_ Prefix to the :doc:`Cache driver <libraries/caching>`.
+   -  Added :doc:`CLI usage <./general/cli>` documentation.
+
+-  Helpers
+
+   -  Removed the previously deprecated dohash() from the :doc:`Security
+      helper <./helpers/security_helper>`; use do_hash() instead.
+   -  Changed the 'plural' function so that it doesn't ruin the
+      captalization of your string. It also take into consideration
+      acronyms which are all caps.
+
+-  Database
+
+   -  $this->db->count_all_results() will now return an integer
+      instead of a string.
+
+Bug fixes for 2.0.2
+-------------------
+
+-  Fixed a bug (Reactor #145) where the Output Library had
+   parse_exec_vars set to protected.
+-  Fixed a bug (Reactor #80) where is_really_writable would create an
+   empty file when on Windows or with safe_mode enabled.
+-  Fixed various bugs with User Guide.
+-  Added is_cli_request() method to documentation for :doc:`Input
+   class <libraries/input>`.
+-  Added form_validation_lang entries for decimal, less_than and
+   greater_than.
+-  `Fixed issue
+   #153 <https://bitbucket.org/ellislab/codeigniter-reactor/issue/153/escape-str-bug-in-mssql-driver>`_
+   Escape Str Bug in MSSQL driver.
+-  `Fixed issue
+   #172 <https://bitbucket.org/ellislab/codeigniter-reactor/issue/172/bug-in-chrome-and-form_open-in-201>`_
+   Google Chrome 11 posts incorrectly when action is empty.
+
+Version 2.0.1
+=============
+
+Release Date: March 15, 2011
+Hg Tag: v2.0.1
+
+-  General changes
+
+   -  Added $config['cookie_secure'] to the config file to allow
+      requiring a secure (HTTPS) in order to set cookies.
+   -  Added the constant CI_CORE to help differentiate between Core:
+      TRUE and Reactor: FALSE.
+   -  Added an ENVIRONMENT constant in index.php, which affects PHP
+      error reporting settings, and optionally, which configuration
+      files are loaded (see below). Read more on the `Handling
+      Environments <general/environments>` page.
+   -  Added support for
+      :ref:`environment-specific <config-environments>`
+      configuration files.
+
+-  Libraries
+
+   -  Added decimal, less_than and greater_than rules to the `Form
+      validation Class <libraries/form_validation>`.
+   -  :doc:`Input Class <libraries/input>` methods post() and get()
+      will now return a full array if the first argument is not
+      provided.
+   -  Secure cookies can now be made with the set_cookie() helper and
+      :doc:`Input Class <libraries/input>` method.
+   -  Added set_content_type() to :doc:`Output
+      Class <libraries/output>` to set the output Content-Type
+      HTTP header based on a MIME Type or a config/mimes.php array key.
+   -  :doc:`Output Class <libraries/output>` will now support method
+      chaining.
+
+-  Helpers
+
+   -  Changed the logic for form_open() in :doc:`Form
+      helper <helpers/form_helper>`. If no value is passed it will
+      submit to the current URL.
+
+Bug fixes for 2.0.1
+-------------------
+
+-  CLI requests can now be run from any folder, not just when CD'ed next
+   to index.php.
+-  Fixed issue #41: Added audio/mp3 mime type to mp3.
+-  Fixed a bug (Core #329) where the file caching driver referenced the
+   incorrect cache directory.
+-  Fixed a bug (Reactor #69) where the SHA1 library was named
+   incorrectly.
+
+Version 2.0.0
+=============
+
+Release Date: January 28, 2011
+Hg Tag: v2.0.0
+
+-  General changes
+
+   -  PHP 4 support is removed. CodeIgniter now requires PHP 5.1.6.
+   -  Scaffolding, having been deprecated for a number of versions, has
+      been removed.
+   -  Plugins have been removed, in favor of Helpers. The CAPTCHA plugin
+      has been converted to a Helper and
+      :doc:`documented <./helpers/captcha_helper>`. The JavaScript
+      calendar plugin was removed due to the ready availability of great
+      JavaScript calendars, particularly with jQuery.
+   -  Added new special Library type:
+      :doc:`Drivers <./general/drivers>`.
+   -  Added full query-string support. See the config file for details.
+   -  Moved the application folder outside of the system folder.
+   -  Moved system/cache and system/logs directories to the application
+      directory.
+   -  Added routing overrides to the main index.php file, enabling the
+      normal routing to be overridden on a per "index" file basis.
+   -  Added the ability to set config values (or override config values)
+      directly from data set in the main index.php file. This allows a
+      single application to be used with multiple front controllers,
+      each having its own config values.
+   -  Added $config['directory_trigger'] to the config file so that a
+      controller sub-directory can be specified when running _GET
+      strings instead of URI segments.
+   -  Added ability to set "Package" paths - specific paths where the
+      Loader and Config classes should try to look first for a requested
+      file. This allows distribution of sub-applications with their own
+      libraries, models, config files, etc. in a single "package"
+      directory. See the :doc:`Loader class <libraries/loader>`
+      documentation for more details.
+   -  In-development code is now hosted at
+      `BitBucket <http://bitbucket.org/ellislab/codeigniter-reactor/>`_.
+   -  Removed the deprecated Validation Class.
+   -  Added CI\_ Prefix to all core classes.
+   -  Package paths can now be set in application/config/autoload.php.
+   -  `Upload library <libraries/file_uploading>` file_name can
+      now be set without an extension, the extension will be taken from
+      the uploaded file instead of the given name.
+   -  In :doc:`Database Forge <database/forge>` the name can be omitted
+      from $this->dbforge->modify_column()'s 2nd param if you aren't
+      changing the name.
+   -  $config['base_url'] is now empty by default and will guess what
+      it should be.
+   -  Enabled full Command Line Interface compatibility with
+      config['uri_protocol'] = 'CLI';.
+
+-  Libraries
+
+   -  Added a :doc:`Cache driver <libraries/caching>` with APC,
+      memcached, and file-based support.
+   -  Added $prefix, $suffix and $first_url properties to :doc:`Pagination
+      library <./libraries/pagination>`.
+   -  Added the ability to suppress first, previous, next, last, and
+      page links by setting their values to FALSE in the :doc:`Pagination
+      library <./libraries/pagination>`.
+   -  Added :doc:`Security library <./libraries/security>`, which now
+      contains the xss_clean function, filename_security function and
+      other security related functions.
+   -  Added CSRF (Cross-site Reference Forgery) protection to the
+      :doc:`Security library <./libraries/security>`.
+   -  Added $parse_exec_vars property to Output library.
+   -  Added ability to enable / disable individual sections of the
+      :doc:`Profiler <general/profiling>`
+   -  Added a wildcard option $config['allowed_types'] = '\*' to the
+      :doc:`File Uploading Class <./libraries/file_uploading>`.
+   -  Added an 'object' config variable to the XML-RPC Server library so
+      that one can specify the object to look for requested methods,
+      instead of assuming it is in the $CI superobject.
+   -  Added "is_object" into the list of unit tests capable of being
+      run.
+   -  Table library will generate an empty cell with a blank string, or
+      NULL value.
+   -  Added ability to set tag attributes for individual cells in the
+      Table library
+   -  Added a parse_string() method to the :doc:`Parser
+      Class <libraries/parser>`.
+   -  Added HTTP headers and Config information to the
+      :doc:`Profiler <general/profiling>` output.
+   -  Added Chrome and Flock to the list of detectable browsers by
+      browser() in the :doc:`User Agent Class <libraries/user_agent>`.
+   -  The :doc:`Unit Test Class <libraries/unit_testing>` now has an
+      optional "notes" field available to it, and allows for discrete
+      display of test result items using
+      $this->unit->set_test_items().
+   -  Added a $xss_clean class variable to the XMLRPC library, enabling
+      control over the use of the Security library's xss_clean()
+      method.
+   -  Added a download() method to the :doc:`FTP
+      library <libraries/ftp>`
+   -  Changed do_xss_clean() to return FALSE if the uploaded file
+      fails XSS checks.
+   -  Added stripslashes() and trim()ing of double quotes from $_FILES
+      type value to standardize input in Upload library.
+   -  Added a second parameter (boolean) to
+      $this->zip->read_dir('/path/to/directory', FALSE) to remove the
+      preceding trail of empty folders when creating a Zip archive. This
+      example would contain a zip with "directory" and all of its
+      contents.
+   -  Added ability in the Image Library to handle PNG transparency for
+      resize operations when using the GD lib.
+   -  Modified the Session class to prevent use if no encryption key is
+      set in the config file.
+   -  Added a new config item to the Session class
+      sess_expire_on_close to allow sessions to auto-expire when the
+      browser window is closed.
+   -  Improved performance of the Encryption library on servers where
+      Mcrypt is available.
+   -  Changed the default encryption mode in the Encryption library to
+      CBC.
+   -  Added an encode_from_legacy() method to provide a way to
+      transition encrypted data from CodeIgniter 1.x to CodeIgniter 2.x.
+      Please see the :doc:`upgrade
+      instructions <./installation/upgrade_200>` for details.
+   -  Altered Form_Validation library to allow for method chaining on
+      set_rules(), set_message() and set_error_delimiters()
+      functions.
+   -  Altered Email Library to allow for method chaining.
+   -  Added request_headers(), get_request_header() and
+      is_ajax_request() to the input class.
+   -  Altered :doc:`User agent library <libraries/user_agent>` so that
+      is_browser(), is_mobile() and is_robot() can optionally check
+      for a specific browser or mobile device.
+   -  Altered :doc:`Input library <libraries/input>` so that post() and
+      get() will return all POST and GET items (respectively) if there
+      are no parameters passed in.
+
+-  Database
+
+   -  :doc:`database configuration <./database/configuration>`.
+   -  Added autoinit value to :doc:`database
+      configuration <./database/configuration>`.
+   -  Added stricton value to :doc:`database
+      configuration <./database/configuration>`.
+   -  Added database_exists() to the :doc:`Database Utilities
+      Class <database/utilities>`.
+   -  Semantic change to db->version() function to allow a list of
+      exceptions for databases with functions to return version string
+      instead of specially formed SQL queries. Currently this list only
+      includes Oracle and SQLite.
+   -  Fixed a bug where driver specific table identifier protection
+      could lead to malformed queries in the field_data() functions.
+   -  Fixed a bug where an undefined class variable was referenced in
+      database drivers.
+   -  Modified the database errors to show the filename and line number
+      of the problematic query.
+   -  Removed the following deprecated functions: orwhere, orlike,
+      groupby, orhaving, orderby, getwhere.
+   -  Removed deprecated _drop_database() and _create_database()
+      functions from the db utility drivers.
+   -  Improved dbforge create_table() function for the Postgres driver.
+
+-  Helpers
+
+   -  Added convert_accented_characters() function to :doc:`text
+      helper <./helpers/text_helper>`.
+   -  Added accept-charset to the list of inserted attributes of
+      form_open() in the :doc:`Form Helper <helpers/form_helper>`.
+   -  Deprecated the dohash() function in favour of do_hash() for
+      naming consistency.
+   -  Non-backwards compatible change made to get_dir_file_info() in
+      the :doc:`File Helper <helpers/file_helper>`. No longer recurses
+      by default so as to encourage responsible use (this function can
+      cause server performance issues when used without caution).
+   -  Modified the second parameter of directory_map() in the
+      :doc:`Directory Helper <helpers/directory_helper>` to accept an
+      integer to specify recursion depth.
+   -  Modified delete_files() in the :doc:`File
+      Helper <helpers/file_helper>` to return FALSE on failure.
+   -  Added an optional second parameter to byte_format() in the
+      :doc:`Number Helper <helpers/number_helper>` to allow for decimal
+      precision.
+   -  Added alpha, and sha1 string types to random_string() in the
+      :doc:`String Helper <helpers/string_helper>`.
+   -  Modified prep_url() so as to not prepend http:// if the supplied
+      string already has a scheme.
+   -  Modified get_file_info in the file helper, changing filectime()
+      to filemtime() for dates.
+   -  Modified smiley_js() to add optional third parameter to return
+      only the javascript with no script tags.
+   -  The img() function of the :doc:`HTML
+      helper <./helpers/html_helper>` will now generate an empty
+      string as an alt attribute if one is not provided.
+   -  If CSRF is enabled in the application config file, form_open()
+      will automatically insert it as a hidden field.
+   -  Added sanitize_filename() into the :doc:`Security
+      helper <./helpers/security_helper>`.
+   -  Added ellipsize() to the :doc:`Text
+      Helper <./helpers/text_helper>`
+   -  Added elements() to the :doc:`Array
+      Helper <./helpers/array_helper>`
+
+-  Other Changes
+
+   -  Added an optional second parameter to show_404() to disable
+      logging.
+   -  Updated loader to automatically apply the sub-class prefix as an
+      option when loading classes. Class names can be prefixed with the
+      standard "CI\_" or the same prefix as the subclass prefix, or no
+      prefix at all.
+   -  Increased randomness with is_really_writable() to avoid file
+      collisions when hundreds or thousands of requests occur at once.
+   -  Switched some DIR_WRITE_MODE constant uses to FILE_WRITE_MODE
+      where files and not directories are being operated on.
+   -  get_mime_by_extension() is now case insensitive.
+   -  Added "default" to the list :doc:`Reserved
+      Names <general/reserved_names>`.
+   -  Added 'application/x-msdownload' for .exe files and
+      ''application/x-gzip-compressed' for .tgz files to
+      config/mimes.php.
+   -  Updated the output library to no longer compress output or send
+      content-length headers if the server runs with
+      zlib.output_compression enabled.
+   -  Eliminated a call to is_really_writable() on each request unless
+      it is really needed (Output caching)
+   -  Documented append_output() in the :doc:`Output
+      Class <libraries/output>`.
+   -  Documented a second argument in the decode() function for the
+      :doc:`Encryption Class <libraries/encryption>`.
+   -  Documented db->close().
+   -  Updated the router to support a default route with any number of
+      segments.
+   -  Moved _remove_invisible_characters() function from the
+      :doc:`Security Library <libraries/security>` to :doc:`common
+      functions. <general/common_functions>`
+   -  Added audio/mpeg3 as a valid mime type for MP3.
+
+Bug fixes for 2.0.0
+-------------------
+
+-  Fixed a bug where you could not change the User-Agent when sending
+   email.
+-  Fixed a bug where the Output class would send incorrect cached output
+   for controllers implementing their own _output() method.
+-  Fixed a bug where a failed query would not have a saved query
+   execution time causing errors in the Profiler
+-  Fixed a bug that was writing log entries when multiple identical
+   helpers and plugins were loaded.
+-  Fixed assorted user guide typos or examples (#10693, #8951, #7825,
+   #8660, #7883, #6771, #10656).
+-  Fixed a language key in the profiler: "profiler_no_memory_usage"
+   to "profiler_no_memory".
+-  Fixed an error in the Zip library that didn't allow downloading on
+   PHP 4 servers.
+-  Fixed a bug in the Form Validation library where fields passed as
+   rule parameters were not being translated (#9132)
+-  Modified inflector helper to properly pluralize words that end in
+   'ch' or 'sh'
+-  Fixed a bug in xss_clean() that was not allowing hyphens in query
+   strings of submitted URLs.
+-  Fixed bugs in get_dir_file_info() and get_file_info() in the
+   File Helper with recursion, and file paths on Windows.
+-  Fixed a bug where Active Record override parameter would not let you
+   disable Active Record if it was enabled in your database config file.
+-  Fixed a bug in reduce_double_slashes() in the String Helper to
+   properly remove duplicate leading slashes (#7585)
+-  Fixed a bug in values_parsing() of the XML-RPC library which
+   prevented NULL variables typed as 'string' from being handled
+   properly.
+-  Fixed a bug were form_open_multipart() didn't accept string
+   attribute arguments (#10930).
+-  Fixed a bug (#10470) where get_mime_by_extension() was case
+   sensitive.
+-  Fixed a bug where some error messages for the SQLite and Oracle
+   drivers would not display.
+-  Fixed a bug where files created with the Zip Library would result in
+   file creation dates of 1980.
+-  Fixed a bug in the Session library that would result in PHP error
+   when attempting to store values with objects.
+-  Fixed a bug where extending the Controller class would result in a
+   fatal PHP error.
+-  Fixed a PHP Strict Standards Error in the index.php file.
+-  Fixed a bug where getimagesize() was being needlessly checked on
+   non-image files in is_allowed_type().
+-  Fixed a bug in the Encryption library where an empty key was not
+   triggering an error.
+-  Fixed a bug in the Email library where CC and BCC recipients were not
+   reset when using the clear() method (#109).
+-  Fixed a bug in the URL Helper where prep_url() could cause a PHP
+   error on PHP versions < 5.1.2.
+-  Added a log message in core/output if the cache directory config
+   value was not found.
+-  Fixed a bug where multiple libraries could not be loaded by passing
+   an array to load->library()
+-  Fixed a bug in the html helper where too much white space was
+   rendered between the src and alt tags in the img() function.
+-  Fixed a bug in the profilers _compile_queries() function.
+-  Fixed a bug in the date helper where the DATE_ISO8601 variable was
+   returning an incorrectly formatted date string.
+
+Version 1.7.2
+=============
+
+Release Date: September 11, 2009
+Hg Tag: v1.7.2
+
+-  Libraries
+
+   -  Added a new :doc:`Cart Class <libraries/cart>`.
+   -  Added the ability to pass $config['file_name'] for the :doc:`File
+      Uploading Class <libraries/file_uploading>` and rename the
+      uploaded file.
+   -  Changed order of listed user-agents so Safari would more
+      accurately report itself. (#6844)
+
+-  Database
+
+   -  Switched from using gettype() in escape() to is\_* methods, since
+      future PHP versions might change its output.
+   -  Updated all database drivers to handle arrays in escape_str()
+   -  Added escape_like_str() method for escaping strings to be used
+      in LIKE conditions
+   -  Updated Active Record to utilize the new LIKE escaping mechanism.
+   -  Added reconnect() method to DB drivers to try to keep alive /
+      reestablish a connection after a long idle.
+   -  Modified MSSQL driver to use mssql_get_last_message() for error
+      messages.
+
+-  Helpers
+
+   -  Added form_multiselect() to the :doc:`Form
+      helper <helpers/form_helper>`.
+   -  Modified form_hidden() in the :doc:`Form
+      helper <helpers/form_helper>` to accept multi-dimensional
+      arrays.
+   -  Modified form_prep() in the :doc:`Form
+      helper <helpers/form_helper>` to keep track of prepped
+      fields to avoid multiple prep/mutation from subsequent calls which
+      can occur when using Form Validation and form helper functions to
+      output form fields.
+   -  Modified directory_map() in the :doc:`Directory
+      helper <helpers/directory_helper>` to allow the inclusion of
+      hidden files, and to return FALSE on failure to read directory.
+   -  Modified the :doc:`Smiley helper <helpers/smiley_helper>` to work
+      with multiple fields and insert the smiley at the last known
+      cursor position.
+
+-  General
+
+   -  Compatible with PHP 5.3.0
+   -  Modified :doc:`show_error() <general/errors>` to allow sending
+      of HTTP server response codes.
+   -  Modified :doc:`show_404() <general/errors>` to send 404 status
+      code, removing non-CGI compatible header() statement from
+      error_404.php template.
+   -  Added set_status_header() to the :doc:`Common
+      functions <general/common_functions>` to allow use when the
+      Output class is unavailable.
+   -  Added is_php() to :doc:`Common
+      functions <general/common_functions>` to facilitate PHP
+      version comparisons.
+   -  Added 2 CodeIgniter "cheatsheets" (thanks to DesignFellow.com for
+      this contribution).
+
+Bug fixes for 1.7.2
+-------------------
+
+-  Fixed assorted user guide typos or examples (#6743, #7214, #7516,
+   #7287, #7852, #8224, #8324, #8349).
+-  Fixed a bug in the Form Validation library where multiple callbacks
+   weren't working (#6110)
+-  doctype helper default value was missing a "1".
+-  Fixed a bug in the language class when outputting an error for an
+   unfound file.
+-  Fixed a bug in the Calendar library where the shortname was output
+   for "May".
+-  Fixed a bug with ORIG_PATH_INFO that was allowing URIs of just a
+   slash through.
+-  Fixed a fatal error in the Oracle and ODBC drivers (#6752)
+-  Fixed a bug where xml_from_result() was checking for a nonexistent
+   method.
+-  Fixed a bug where Database Forge's add_column and modify_column
+   were not looping through when sent multiple fields.
+-  Fixed a bug where the File Helper was using '/' instead of the
+   DIRECTORY_SEPARATOR constant.
+-  Fixed a bug to prevent PHP errors when attempting to use sendmail on
+   servers that have manually disabled the PHP popen() function.
+-  Fixed a bug that would cause PHP errors in XML-RPC data if the PHP
+   data type did not match the specified XML-RPC type.
+-  Fixed a bug in the XML-RPC class with parsing dateTime.iso8601 data
+   types.
+-  Fixed a case sensitive string replacement in xss_clean()
+-  Fixed a bug in form_textarea() where form data was not prepped
+   correctly.
+-  Fixed a bug in form_prep() causing it to not preserve entities in
+   the user's original input when called back into a form element
+-  Fixed a bug in _protect_identifiers() where the swap prefix
+   ($swap_pre) was not being observed.
+-  Fixed a bug where the 400 status header sent with the 'disallowed URI
+   characters' was not compatible with CGI environments.
+-  Fixed a bug in the typography class where heading tags could have
+   paragraph tags inserted when using auto_typography().
+
+Version 1.7.1
+=============
+
+Release Date: February 10, 2009
+Hg Tag: 1.7.1
+
+-  Libraries
+
+   -  Fixed an arbitrary script execution security flaw (#6068) in the
+      Form Validation library (thanks to hkk)
+   -  Changed default current page indicator in the Pagination library
+      to use <strong> instead of <b>
+   -  A "HTTP/1.1 400 Bad Request" header is now sent when disallowed
+      characters are encountered.
+   -  Added <big>, <small>, <q>, and <tt> to the Typography parser's
+      inline elements.
+   -  Added more accurate error reporting for the Email library when
+      using sendmail.
+   -  Removed a strict type check from the rotate() function of the
+      :doc:`Image Manipulation Class <libraries/image_lib>`.
+   -  Added enhanced error checking in file saving in the Image library
+      when using the GD lib.
+   -  Added an additional newline between multipart email headers and
+      the MIME message text for better compatibility with a variety of
+      MUAs.
+   -  Made modest improvements to efficiency and accuracy of
+      explode_name() in the Image lib.
+
+-  Database
+
+   -  Added where_in to the list of expected arguments received by
+      delete().
+
+-  Helpers
+
+   -  Added the ability to have optgroups in form_dropdown() within the
+      :doc:`form helper <helpers/form_helper>`.
+   -  Added a doctype() function to the :doc:`HTML
+      helper <helpers/html_helper>`.
+   -  Added ability to force lowercase for url_title() in the :doc:`URL
+      helper <helpers/url_helper>`.
+   -  Changed the default "type" of form_button() to "button" from
+      "submit" in the :doc:`form helper <helpers/form_helper>`.
+   -  Changed redirect() in the URL helper to allow redirections to URLs
+      outside of the CI site.
+   -  Updated get_cookie() to try to fetch the cookie using the global
+      cookie prefix if the requested cookie name doesn't exist.
+
+-  Other Changes
+
+   -  Improved security in xss_clean() to help prevent attacks
+      targeting Internet Explorer.
+   -  Added 'application/msexcel' to config/mimes.php for .xls files.
+   -  Added 'proxy_ips' config item to whitelist reverse proxy servers
+      from which to trust the HTTP_X_FORWARDED_FOR header to to
+      determine the visitor's IP address.
+   -  Improved accuracy of Upload::is_allowed_filetype() for images
+      (#6715)
+
+Bug fixes for 1.7.1
+-------------------
+
+-  Database
+
+   -  Fixed a bug when doing 'random' on order_by() (#5706).
+   -  Fixed a bug where adding a primary key through Forge could fail
+      (#5731).
+   -  Fixed a bug when using DB cache on multiple databases (#5737).
+   -  Fixed a bug where TRUNCATE was not considered a "write" query
+      (#6619).
+   -  Fixed a bug where csv_from_result() was checking for a
+      nonexistent method.
+   -  Fixed a bug _protect_identifiers() where it was improperly
+      removing all pipe symbols from items
+
+-  Fixed assorted user guide typos or examples (#5998, #6093, #6259,
+   #6339, #6432, #6521).
+-  Fixed a bug in the MySQLi driver when no port is specified
+-  Fixed a bug (#5702), in which the field label was not being fetched
+   properly, when "matching" one field to another.
+-  Fixed a bug in which identifers were not being escaped properly when
+   reserved characters were used.
+-  Fixed a bug with the regular expression used to protect submitted
+   paragraph tags in auto typography.
+-  Fixed a bug where double dashes within tag attributes were being
+   converted to em dash entities.
+-  Fixed a bug where double spaces within tag attributes were being
+   converted to non-breaking space entities.
+-  Fixed some accuracy issues with curly quotes in
+   Typography::format_characters()
+-  Changed a few docblock comments to reflect actual return values.
+-  Fixed a bug with high ascii characters in subject and from email
+   headers.
+-  Fixed a bug in xss_clean() where whitespace following a validated
+   character entity would not be preserved.
+-  Fixed a bug where HTML comments and <pre> tags were being parsed in
+   Typography::auto_typography().
+-  Fixed a bug with non-breaking space cleanup in
+   Typography::auto_typography().
+-  Fixed a bug in database escaping where a compound statement (ie:
+   SUM()) wasn't handled correctly with database prefixes.
+-  Fixed a bug when an opening quote is preceded by a paragraph tag and
+   immediately followed by another tag.
+-  Fixed a bug in the Text Helper affecting some locales where
+   word_censor() would not work on words beginning or ending with an
+   accented character.
+-  Fixed a bug in the Text Helper character limiter where the provided
+   limit intersects the last word of the string.
+-  Fixed a bug (#6342) with plural() in the Inflection helper with words
+   ending in "y".
+-  Fixed bug (#6517) where Routed URI segments returned by
+   URI::rsegment() method were incorrect for the default controller.
+-  Fixed a bug (#6706) in the Security Helper where xss_clean() was
+   using a deprecated second argument.
+-  Fixed a bug in the URL helper url_title() function where trailing
+   periods were allowed at the end of a URL.
+-  Fixed a bug (#6669) in the Email class when CRLF's are used for the
+   newline character with headers when used with the "mail" protocol.
+-  Fixed a bug (#6500) where URI::A_filter_uri() was exit()ing an
+   error instead of using show_error().
+-  Fixed a bug (#6592) in the File Helper where get_dir_file_info()
+   where recursion was not occurring properly.
+-  Tweaked Typography::auto_typography() for some edge-cases.
+
+Version 1.7
+===========
+
+Release Date: October 23, 2008
+Hg Tag: 1.7.0
+
+-  Libraries
+
+   -  Added a new :doc:`Form Validation
+      Class <libraries/form_validation>`. It simplifies setting
+      rules and field names, supports arrays as field names, allows
+      groups of validation rules to be saved in a config file, and adds
+      some helper functions for use in view files. **Please note that
+      the old Validation class is now deprecated**. We will leave it in
+      the library folder for some time so that existing applications
+      that use it will not break, but you are encouraged to migrate to
+      the new version.
+   -  Updated the :doc:`Sessions class <libraries/sessions>` so that
+      any custom data being saved gets stored to a database rather than
+      the session cookie (assuming you are using a database to store
+      session data), permitting much more data to be saved.
+   -  Added the ability to store libraries in subdirectories within
+      either the main "libraries" or the local application "libraries"
+      folder. Please see the :doc:`Loader class <libraries/loader>` for
+      more info.
+   -  Added the ability to assign library objects to your own variable
+      names when you use $this->load->library(). Please see the :doc:`Loader
+      class <libraries/loader>` for more info.
+   -  Added controller class/method info to :doc:`Profiler
+      class <general/profiling>` and support for multiple database
+      connections.
+   -  Improved the "auto typography" feature and moved it out of the
+      helper into its own :doc:`Typography
+      Class <libraries/typography>`.
+   -  Improved performance and accuracy of xss_clean(), including
+      reduction of false positives on image/file tests.
+   -  Improved :doc:`Parser class <./libraries/parser>` to allow
+      multiple calls to the parse() function. The output of each is
+      appended in the output.
+   -  Added max_filename option to set a file name length limit in the
+      :doc:`File Upload Class <libraries/file_uploading>`.
+   -  Added set_status_header() function to :doc:`Output
+      class <libraries/output>`.
+   -  Modified :doc:`Pagination <libraries/pagination>` class to only
+      output the "First" link when the link for page one would not be
+      shown.
+   -  Added support for mb_strlen in the :doc:`Form
+      Validation <libraries/form_validation>` class so that
+      multi-byte languages will calculate string lengths properly.
+
+-  Database
+
+   -  Improved Active Record class to allow full path column and table
+      names: hostname.database.table.column. Also improved the alias
+      handling.
+   -  Improved how table and column names are escaped and prefixed. It
+      now honors full path names when adding prefixes and escaping.
+   -  Added Active Record caching feature to "update" and "delete"
+      functions.
+   -  Added removal of non-printing control characters in escape_str()
+      of DB drivers that do not have native PHP escaping mechanisms
+      (mssql, oci8, odbc), to avoid potential SQL errors, and possible
+      sources of SQL injection.
+   -  Added port support to MySQL, MySQLi, and MS SQL database drivers.
+   -  Added driver name variable in each DB driver, based on bug report
+      #4436.
+
+-  Helpers
+
+   -  Added several new "setting" functions to the :doc:`Form
+      helper <helpers/form_helper>` that allow POST data to be
+      retrieved and set into forms. These are intended to be used on
+      their own, or with the new :doc:`Form Validation
+      Class <libraries/form_validation>`.
+   -  Added current_url() and uri_segments() to :doc:`URL
+      helper <helpers/url_helper>`.
+   -  Altered auto_link() in the :doc:`URL
+      helper <helpers/url_helper>` so that email addresses with
+      "+" included will be linked.
+   -  Added meta() function to :doc:`HTML
+      helper <helpers/html_helper>`.
+   -  Improved accuracy of calculations in :doc:`Number
+      helper <helpers/number_helper>`.
+   -  Removed added newlines ("\\n") from most form and html helper
+      functions.
+   -  Tightened up validation in the :doc:`Date
+      helper <helpers/date_helper>` function human_to_unix(),
+      and eliminated the POSIX regex.
+   -  Updated :doc:`Date helper <helpers/date_helper>` to match the
+      world's current time zones and offsets.
+   -  Modified url_title() in the :doc:`URL
+      helper <helpers/url_helper>` to remove characters and digits
+      that are part of character entities, to allow dashes, underscores,
+      and periods regardless of the $separator, and to allow uppercase
+      characters.
+   -  Added support for arbitrary attributes in anchor_popup() of the
+      :doc:`URL helper <helpers/url_helper>`.
+
+-  Other Changes
+
+   -  Added :doc:`PHP Style Guide <./general/styleguide>` to docs.
+   -  Added sanitization in xss_clean() for a deprecated HTML tag that
+      could be abused in user input in Internet Explorer.
+   -  Added a few openxml document mime types, and an additional mobile
+      agent to mimes.php and user_agents.php respectively.
+   -  Added a file lock check during caching, before trying to write to
+      the file.
+   -  Modified Cookie key cleaning to unset a few troublesome key names
+      that can be present in certain environments, preventing CI from
+      halting execution.
+   -  Changed the output of the profiler to use style attribute rather
+      than clear, and added the id "codeigniter_profiler" to the
+      container div.
+
+Bug fixes for 1.7.0
+-------------------
+
+-  Fixed bug in xss_clean() that could remove some desirable tag
+   attributes.
+-  Fixed assorted user guide typos or examples (#4807, #4812, #4840,
+   #4862, #4864, #4899, #4930, #5006, #5071, #5158, #5229, #5254,
+   #5351).
+-  Fixed an edit from 1.6.3 that made the $robots array in
+   user_agents.php go poof.
+-  Fixed a bug in the :doc:`Email library <libraries/email>` with
+   quoted-printable encoding improperly encoding space and tab
+   characters.
+-  Modified XSS sanitization to no longer add semicolons after &[single
+   letter], such as in M&M's, B&B, etc.
+-  Modified XSS sanitization to no longer strip XHTML image tags of
+   closing slashes.
+-  Fixed a bug in the Session class when database sessions are used
+   where upon session update all userdata would be errantly written to
+   the session cookie.
+-  Fixed a bug (#4536) in backups with the MySQL driver where some
+   legacy code was causing certain characters to be double escaped.
+-  Fixed a routing bug (#4661) that occurred when the default route
+   pointed to a subfolder.
+-  Fixed the spelling of "Dhaka" in the timezone_menu() function of the
+   :doc:`Date helper. <helpers/date_helper>`
+-  Fixed the spelling of "raspberry" in config/smileys.php.
+-  Fixed incorrect parenthesis in form_open() function (#5135).
+-  Fixed a bug that was ignoring case when comparing controller methods
+   (#4560).
+-  Fixed a bug (#4615) that was not setting SMTP authorization settings
+   when using the initialize function.
+-  Fixed a bug in highlight_code() in the :doc:`Text
+   helper <helpers/text_helper>` that would leave a stray </span>
+   in certain cases.
+-  Fixed Oracle bug (#3306) that was preventing multiple queries in one
+   action.
+-  Fixed ODBC bug that was ignoring connection params due to its use of
+   a constructor.
+-  Fixed a DB driver bug with num_rows() that would cause an error with
+   the Oracle driver.
+-  Fixed MS SQL bug (#4915). Added brackets around database name in MS
+   SQL driver when selecting the database, in the event that reserved
+   characters are used in the name.
+-  Fixed a DB caching bug (4718) in which the path was incorrect when no
+   URI segments were present.
+-  Fixed Image_lib class bug #4562. A path was not defined for NetPBM.
+-  Fixed Image_lib class bug #4532. When cropping an image with
+   identical height/width settings on output, a copy is made.
+-  Fixed DB_driver bug (4900), in which a database error was not being
+   logged correctly.
+-  Fixed DB backup bug in which field names were not being escaped.
+-  Fixed a DB Active Record caching bug in which multiple calls to
+   cached data were not being honored.
+-  Fixed a bug in the Session class that was disallowing slashes in the
+   serialized array.
+-  Fixed a Form Validation bug in which the "isset" error message was
+   being trigged by the "required" rule.
+-  Fixed a spelling error in a Loader error message.
+-  Fixed a bug (5050) with IP validation with empty segments.
+-  Fixed a bug in which the parser was being greedy if multiple
+   identical sets of tags were encountered.
+
+Version 1.6.3
+=============
+
+Release Date: June 26, 2008
+Hg Tag: v1.6.3
+
+Version 1.6.3 is a security and maintenance release and is recommended
+for all users.
+
+-  Database
+
+   -  Modified MySQL/MySQLi Forge class to give explicit names to keys
+   -  Added ability to set multiple column non-primary keys to the
+      :doc:`Forge class <database/forge>`
+   -  Added ability to set additional database config values in :doc:`DSN
+      connections <database/connecting>` via the query string.
+
+-  Libraries
+
+   -  Set the mime type check in the :doc:`Upload
+      class <libraries/file_uploading>` to reference the global
+      mimes variable.
+   -  Added support for query strings to the :doc:`Pagination
+      class <libraries/pagination>`, automatically detected or
+      explicitly declared.
+   -  Added get_post() to the :doc:`Input class <libraries/input>`.
+   -  Documented get() in the :doc:`Input class <libraries/input>`.
+   -  Added the ability to automatically output language items as form
+      labels in the :doc:`Language class <libraries/language>`.
+
+-  Helpers
+
+   -  Added a :doc:`Language helper <helpers/language_helper>`.
+   -  Added a :doc:`Number helper <helpers/number_helper>`.
+   -  :doc:`Form helper <helpers/form_helper>` refactored to allow
+      form_open() and form_fieldset() to accept arrays or strings as
+      arguments.
+
+-  Other changes
+
+   -  Improved security in xss_clean().
+   -  Removed an unused Router reference in _display_cache().
+   -  Added ability to :doc:`use xss_clean() to test
+      images <libraries/input>` for XSS, useful for upload
+      security.
+   -  Considerably expanded list of mobile user-agents in
+      config/user_agents.php.
+   -  Charset information in the userguide has been moved above title
+      for internationalization purposes (#4614).
+   -  Added "Using Associative Arrays In a Request Parameter" example to
+      the :doc:`XMLRPC userguide page <libraries/xmlrpc>`.
+   -  Removed maxlength and size as automatically added attributes of
+      form_input() in the :doc:`form helper <helpers/form_helper>`.
+   -  Documented the language file use of byte_format() in the :doc:`number
+      helper <helpers/number_helper>`.
+
+Bug fixes for 1.6.3
+-------------------
+
+-  Added a language key for valid_emails in validation_lang.php.
+-  Amended fixes for bug (#3419) with parsing DSN database connections.
+-  Moved the _has_operators() function (#4535) into DB_driver from
+   DB_active_rec.
+-  Fixed a syntax error in upload_lang.php.
+-  Fixed a bug (#4542) with a regular expression in the Image library.
+-  Fixed a bug (#4561) where orhaving() wasn't properly passing values.
+-  Removed some unused variables from the code (#4563).
+-  Fixed a bug where having() was not adding an = into the statement
+   (#4568).
+-  Fixed assorted user guide typos or examples (#4574, #4706).
+-  Added quoted-printable headers to Email class when the multi-part
+   override is used.
+-  Fixed a double opening <p> tag in the index pages of each system
+   directory.
+
+Version 1.6.2
+=============
+
+Release Date: May 13, 2008
+Hg Tag: 1.6.2
+
+-  Active Record
+
+   -  Added the ability to prevent escaping in having() clauses.
+   -  Added rename_table() into :doc:`DBForge <./database/forge>`.
+   -  Fixed a bug that wasn't allowing escaping to be turned off if the
+      value of a query was NULL.
+   -  DB Forge is now assigned to any models that exist after loading
+      (#3457).
+
+-  Database
+
+   -  Added :doc:`Strict Mode <./database/transactions>` to database
+      transactions.
+   -  Escape behaviour in where() clauses has changed; values in those
+      with the "FALSE" argument are no longer escaped (ie: quoted).
+
+-  Config
+
+   -  Added 'application/vnd.ms-powerpoint' to list of mime types.
+   -  Added 'audio/mpg' to list of mime types.
+   -  Added new user-modifiable file constants.php containing file mode
+      and fopen constants.
+   -  Added the ability to set CRLF settings via config in the
+      :doc:`Email <libraries/email>` class.
+
+-  Libraries
+
+   -  Added increased security for filename handling in the Upload
+      library.
+   -  Added increased security for sessions for client-side data
+      tampering.
+   -  The MySQLi forge class is now in sync with MySQL forge.
+   -  Added the ability to set CRLF settings via config in the
+      :doc:`Email <libraries/email>` class.
+   -  :doc:`Unit Testing <libraries/unit_testing>` results are now
+      colour coded, and a change was made to the default template of
+      results.
+   -  Added a valid_emails rule to the Validation class.
+   -  The :doc:`Zip class <libraries/zip>` now exits within download().
+   -  The :doc:`Zip class <libraries/zip>` has undergone a substantial
+      re-write for speed and clarity (thanks stanleyxu for the hard work
+      and code contribution in bug report #3425!)
+
+-  Helpers
+
+   -  Added a Compatibility
+      Helper for using some common
+      PHP 5 functions safely in applications that might run on PHP 4
+      servers (thanks Seppo for the hard work and code contribution!)
+   -  Added form_button() in the :doc:`Form
+      helper <helpers/form_helper>`.
+   -  Changed the radio() and checkbox() functions to default to not
+      checked by default.
+   -  Added the ability to include an optional HTTP Response Code in the
+      redirect() function of the :doc:`URL
+      Helper <helpers/url_helper>`.
+   -  Modified img() in the :doc:`HTML Helper <helpers/html_helper>` to
+      remove an unneeded space (#4208).
+   -  Modified anchor() in the :doc:`URL helper <helpers/url_helper>`
+      to no longer add a default title= attribute (#4209).
+   -  The :doc:`Download helper <helpers/download_helper>` now exits
+      within force_download().
+   -  Added get_dir_file_info(), get_file_info(), and
+      get_mime_by_extension() to the :doc:`File
+      Helper <helpers/file_helper>`.
+   -  Added symbolic_permissions() and octal_permissions() to the
+      :doc:`File helper <helpers/file_helper>`.
+
+-  Plugins
+
+   -  Modified captcha generation to first look for the function
+      imagecreatetruecolor, and fallback to imagecreate if it isn't
+      available (#4226).
+
+-  Other Changes
+
+   -  Added ability for :doc:`xss_clean() <libraries/input>` to accept
+      arrays.
+   -  Removed closing PHP tags from all PHP files to avoid accidental
+      output and potential 'cannot modify headers' errors.
+   -  Removed "scripts" from the auto-load search path. Scripts were
+      deprecated in Version 1.4.1 (September 21, 2006). If you still
+      need to use them for legacy reasons, they must now be manually
+      loaded in each Controller.
+   -  Added a :doc:`Reserved Names <general/reserved_names>` page to
+      the userguide, and migrated reserved controller names into it.
+   -  Added a :doc:`Common Functions <general/common_functions>` page
+      to the userguide for globally available functions.
+   -  Improved security and performance of xss_clean().
+
+Bugfixes for 1.6.2
+------------------
+
+-  Fixed a bug where SET queries were not being handled as "write"
+   queries.
+-  Fixed a bug (#3191) with ORIG_PATH_INFO URI parsing.
+-  Fixed a bug in DB Forge, when inserting an id field (#3456).
+-  Fixed a bug in the table library that could cause identically
+   constructed rows to be dropped (#3459).
+-  Fixed DB Driver and MySQLi result driver checking for resources
+   instead of objects (#3461).
+-  Fixed an AR_caching error where it wasn't tracking table aliases
+   (#3463).
+-  Fixed a bug in AR compiling, where select statements with arguments
+   got incorrectly escaped (#3478).
+-  Fixed an incorrect documentation of $this->load->language (#3520).
+-  Fixed bugs (#3523, #4350) in get_filenames() with recursion and
+   problems with Windows when $include_path is used.
+-  Fixed a bug (#4153) in the XML-RPC class preventing dateTime.iso8601
+   from being used.
+-  Fixed an AR bug with or_where_not_in() (#4171).
+-  Fixed a bug with :doc:`xss_clean() <libraries/input>` that would
+   add semicolons to GET URI variable strings.
+-  Fixed a bug (#4206) in the Directory Helper where the directory
+   resource was not being closed, and minor improvements.
+-  Fixed a bug in the FTP library where delete_dir() was not working
+   recursively (#4215).
+-  Fixed a Validation bug when set_rules() is used with a non-array
+   field name and rule (#4220).
+-  Fixed a bug (#4223) where DB caching would not work for returned DB
+   objects or multiple DB connections.
+-  Fixed a bug in the Upload library that might output the same error
+   twice (#4390).
+-  Fixed an AR bug when joining with a table alias and table prefix
+   (#4400).
+-  Fixed a bug in the DB class testing the $params argument.
+-  Fixed a bug in the Table library where the integer 0 in cell data
+   would be displayed as a blank cell.
+-  Fixed a bug in link_tag() of the :doc:`URL
+   helper <helpers/url_helper>` where a key was passed instead of
+   a value.
+-  Fixed a bug in DB_result::row() that prevented it from returning
+   individual fields with MySQL NULL values.
+-  Fixed a bug where SMTP emails were not having dot transformation
+   performed on lines that begin with a dot.
+-  Fixed a bug in display_error() in the DB driver that was
+   instantiating new Language and Exception objects, and not using the
+   error heading.
+-  Fixed a bug (#4413) where a URI containing slashes only e.g.
+   'http://example.com/index.php?//' would result in PHP errors
+-  Fixed an array to string conversion error in the Validation library
+   (#4425)
+-  Fixed bug (#4451, #4299, #4339) where failed transactions will not
+   rollback when debug mode is enabled.
+-  Fixed a bug (#4506) with overlay_watermark() in the Image library
+   preventing support for PNG-24s with alpha transparency
+-  Fixed assorted user guide typos (#3453, #4364, #4379, #4399, #4408,
+   #4412, #4448, #4488).
+
+Version 1.6.1
+=============
+
+Release Date: February 12, 2008
+Hg Tag: 1.6.1
+
+-  Active Record
+
+   -  Added :ref:`Active Record
+      Caching <ar-caching>`.
+   -  Made Active Record fully database-prefix aware.
+
+-  Database drivers
+
+   -  Added support for setting client character set and collation for
+      MySQLi.
+
+-  Core Changes
+
+   -  Modified xss_clean() to be more intelligent with its handling of
+      URL encoded strings.
+   -  Added $_SERVER, $_FILES, $_ENV, and $_SESSION to sanitization
+      of globals.
+   -  Added a `Path Helper <./helpers/path_helper>`.
+   -  Simplified _reindex_segments() in the URI class.
+   -  Escaped the '-' in the default 'permitted_uri_chars' config
+      item, to prevent errors if developers just try to add additional
+      characters to the end of the default expression.
+   -  Modified method calling to controllers to show a 404 when a
+      private or protected method is accessed via a URL.
+   -  Modified framework initiated 404s to log the controller and method
+      for invalid requests.
+
+-  Helpers
+
+   -  Modified get_filenames() in the File Helper to return FALSE if
+      the $source_dir is not readable.
+
+Bugfixes for 1.6.1
+------------------
+
+-  Deprecated is_numeric as a validation rule. Use of numeric and
+   integer are preferred.
+-  Fixed bug (#3379) in DBForge with SQLite for table creation.
+-  Made Active Record fully database prefix aware (#3384).
+-  Fixed a bug where DBForge was outputting invalid SQL in Postgres by
+   adding brackets around the tables in FROM.
+-  Changed the behaviour of Active Record's update() to make the WHERE
+   clause optional (#3395).
+-  Fixed a bug (#3396) where certain POST variables would cause a PHP
+   warning.
+-  Fixed a bug in query binding (#3402).
+-  Changed order of SQL keywords in the Profiler $highlight array so OR
+   would not be highlighted before ORDER BY.
+-  Fixed a bug (#3404) where the MySQLi driver was testing if
+   $this->conn_id was a resource instead of an object.
+-  Fixed a bug (#3419) connecting to a database via a DSN string.
+-  Fixed a bug (#3445) where the routed segment array was not re-indexed
+   to begin with 1 when the default controller is used.
+-  Fixed assorted user guide typos.
+
+Version 1.6.0
+=============
+
+Release Date: January 30, 2008
+
+-  DBForge
+
+   -  Added :doc:`DBForge <./database/forge>` to the database tools.
+   -  Moved create_database() and drop_database() into
+      :doc:`DBForge <./database/forge>`.
+   -  Added add_field(), add_key(), create_table(), drop_table(),
+      add_column(), drop_column(), modify_column() into
+      :doc:`DBForge <./database/forge>`.
+
+-  Active Record
+
+   -  Added protect_identifiers() in :doc:`Active
+      Record <./database/active_record>`.
+   -  All AR queries are backticked if appropriate to the database.
+   -  Added where_in(), or_where_in(), where_not_in(),
+      or_where_not_in(), not_like() and or_not_like() to :doc:`Active
+      Record <./database/active_record>`.
+   -  Added support for limit() into update() and delete() statements in
+      :doc:`Active Record <./database/active_record>`.
+   -  Added empty_table() and truncate_table() to :doc:`Active
+      Record <./database/active_record>`.
+   -  Added the ability to pass an array of tables to the delete()
+      statement in :doc:`Active Record <./database/active_record>`.
+   -  Added count_all_results() function to :doc:`Active
+      Record <./database/active_record>`.
+   -  Added select_max(), select_min(), select_avg() and
+      select_sum() to :doc:`Active Record <./database/active_record>`.
+   -  Added the ability to use aliases with joins in :doc:`Active
+      Record <./database/active_record>`.
+   -  Added a third parameter to Active Record's like() clause to
+      control where the wildcard goes.
+   -  Added a third parameter to set() in :doc:`Active
+      Record <./database/active_record>` that withholds escaping
+      data.
+   -  Changed the behaviour of variables submitted to the where() clause
+      with no values to auto set "IS NULL"
+
+-  Other Database Related
+
+   -  MySQL driver now requires MySQL 4.1+
+   -  Added $this->DB->save_queries variable to DB driver, enabling
+      queries to get saved or not. Previously they were always saved.
+   -  Added $this->db->dbprefix() to manually add database prefixes.
+   -  Added 'random' as an order_by() option , and removed "rand()" as
+      a listed option as it was MySQL only.
+   -  Added a check for NULL fields in the MySQL database backup
+      utility.
+   -  Added "constrain_by_prefix" parameter to db->list_table()
+      function. If set to TRUE it will limit the result to only table
+      names with the current prefix.
+   -  Deprecated from Active Record; getwhere() for get_where();
+      groupby() for group_by(); havingor() for having_or(); orderby()
+      for order_by; orwhere() for or_where(); and orlike() for
+      or_like().
+   -  Modified csv_from_result() to output CSV data more in the spirit
+      of basic rules of RFC 4180.
+   -  Added 'char_set' and 'dbcollat' database configuration settings,
+      to explicitly set the client communication properly.
+   -  Removed 'active_r' configuration setting and replaced with a
+      global $active_record setting, which is more in harmony with the
+      global nature of the behavior (#1834).
+
+-  Core changes
+
+   -  Added ability to load multiple views, whose content will be
+      appended to the output in the order loaded.
+   -  Added the ability to :doc:`auto-load <./general/autoloader>`
+      :doc:`Models <./general/models>`.
+   -  Reorganized the URI and Routes classes for better clarity.
+   -  Added Compat.php to allow function overrides for older versions of
+      PHP or PHP environments missing certain extensions / libraries
+   -  Added memory usage, GET, URI string data, and individual query
+      execution time to Profiler output.
+   -  Deprecated Scaffolding.
+   -  Added is_really_writable() to Common.php to provide a
+      cross-platform reliable method of testing file/folder writability.
+
+-  Libraries
+
+   -  Changed the load protocol of Models to allow for extension.
+   -  Strengthened the Encryption library to help protect against man in
+      the middle attacks when MCRYPT_MODE_CBC mode is used.
+   -  Added Flashdata variables, session_id regeneration and
+      configurable session update times to the :doc:`Session
+      class. <./libraries/sessions>`
+   -  Removed 'last_visit' from the Session class.
+   -  Added a language entry for valid_ip validation error.
+   -  Modified prep_for_form() in the Validation class to accept
+      arrays, adding support for POST array validation (via callbacks
+      only)
+   -  Added an "integer" rule into the Validation library.
+   -  Added valid_base64() to the Validation library.
+   -  Documented clear() in the :doc:`Image
+      Processing <../libraries/image_lib>` library.
+   -  Changed the behaviour of custom callbacks so that they no longer
+      trigger the "required" rule.
+   -  Modified Upload class $_FILES error messages to be more precise.
+   -  Moved the safe mode and auth checks for the Email library into the
+      constructor.
+   -  Modified variable names in _ci_load() method of Loader class to
+      avoid conflicts with view variables.
+   -  Added a few additional mime type variations for CSV.
+   -  Enabled the 'system' methods for the XML-RPC Server library,
+      except for 'system.multicall' which is still disabled.
+
+-  Helpers & Plugins
+
+   -  Added link_tag() to the :doc:`HTML
+      helper. <./helpers/html_helper>`
+   -  Added img() to the :doc:`HTML helper. <./helpers/html_helper>`
+   -  Added ability to :doc:`"extend" Helpers <./general/helpers>`.
+   -  Added an :doc:`email helper <./helpers/email_helper>` into core
+      helpers.
+   -  Added strip_quotes() function to :doc:`string
+      helper <./helpers/string_helper>`.
+   -  Added reduce_multiples() function to :doc:`string
+      helper <./helpers/string_helper>`.
+   -  Added quotes_to_entities() function to :doc:`string
+      helper <./helpers/string_helper>`.
+   -  Added form_fieldset(), form_fieldset_close(), form_label(),
+      and form_reset() function to :doc:`form
+      helper <./helpers/form_helper>`.
+   -  Added support for external urls in form_open().
+   -  Removed support for db_backup in MySQLi due to incompatible
+      functions.
+   -  Javascript Calendar plugin now uses the months and days from the
+      calendar language file, instead of hard-coded values,
+      internationalizing it.
+
+-  Documentation Changes
+
+   -  Added Writing Documentation section
+      for the community to use in writing their own documentation.
+   -  Added titles to all user manual pages.
+   -  Added attributes into <html> of userguide for valid html.
+   -  Added `Zip Encoding
+      Class <http://codeigniter.com/user_guide/libraries/zip>`_ to
+      the table of contents of the userguide.
+   -  Moved part of the userguide menu javascript to an external file.
+   -  Documented distinct() in :doc:`Active
+      Record <./database/active_record>`.
+   -  Documented the timezones() function in the :doc:`Date
+      Helper <./helpers/date_helper>`.
+   -  Documented unset_userdata in the :doc:`Session
+      class <./libraries/sessions>`.
+   -  Documented 2 config options to the :doc:`Database
+      configuration <./database/configuration>` page.
+
+Bug fixes for Version 1.6.0
+---------------------------
+
+-  Fixed a bug (#1813) preventing using $CI->db in the same application
+   with returned database objects.
+-  Fixed a bug (#1842) where the $this->uri->rsegments array would not
+   include the 'index' method if routed to the controller without an
+   implicit method.
+-  Fixed a bug (#1872) where word_limiter() was not retaining
+   whitespace.
+-  Fixed a bug (#1890) in csv_from_result() where content that
+   included the delimiter would break the file.
+-  Fixed a bug (#2542)in the clean_email() method of the Email class to
+   allow for non-numeric / non-sequential array keys.
+-  Fixed a bug (#2545) in _html_entity_decode_callback() when
+   'global_xss_filtering' is enabled.
+-  Fixed a bug (#2668) in the :doc:`parser class <./libraries/parser>`
+   where numeric data was ignored.
+-  Fixed a bug (#2679) where the "previous" pagination link would get
+   drawn on the first page.
+-  Fixed a bug (#2702) in _object_to_array that broke some types of
+   inserts and updates.
+-  Fixed a bug (#2732) in the SQLite driver for PHP 4.
+-  Fixed a bug (#2754) in Pagination to scan for non-positive
+   num_links.
+-  Fixed a bug (#2762) in the :doc:`Session
+   library <./libraries/sessions>` where user agent matching would
+   fail on user agents ending with a space.
+-  Fixed a bug (#2784) $field_names[] vs $Ffield_names[] in postgres
+   and sqlite drivers.
+-  Fixed a bug (#2810) in the typography helper causing extraneous
+   paragraph tags when string contains tags.
+-  Fixed a bug (#2849) where arguments passed to a subfolder controller
+   method would be incorrectly shifted, dropping the 3rd segment value.
+-  Fixed a bug (#2858) which referenced a wrong variable in the Image
+   class.
+-  Fixed a bug (#2875)when loading plugin files as _plugin. and not
+   _pi.
+-  Fixed a bug (#2912) in get_filenames() in the :doc:`File
+   Helper <helpers/file_helper>` where the array wasn't cleared
+   after each call.
+-  Fixed a bug (#2974) in highlight_phrase() that caused an error with
+   slashes.
+-  Fixed a bug (#3003) in the Encryption Library to support modes other
+   than MCRYPT_MODE_ECB
+-  Fixed a bug (#3015) in the :doc:`User Agent
+   library <./libraries/user_agent>` where more then 2 languages
+   where not reported with languages().
+-  Fixed a bug (#3017) in the :doc:`Email <./libraries/email>` library
+   where some timezones were calculated incorrectly.
+-  Fixed a bug (#3024) in which master_dim wasn't getting reset by
+   clear() in the Image library.
+-  Fixed a bug (#3156) in Text Helper highlight_code() causing PHP tags
+   to be handled incorrectly.
+-  Fixed a bug (#3166) that prevented num_rows from working in Oracle.
+-  Fixed a bug (#3175) preventing certain libraries from working
+   properly when autoloaded in PHP 4.
+-  Fixed a bug (#3267) in the Typography Helper where unordered list was
+   listed "un.
+-  Fixed a bug (#3268) where the Router could leave '/' as the path.
+-  Fixed a bug (#3279) where the Email class was sending the wrong
+   Content-Transfer-Encoding for some character sets.
+-  Fixed a bug (#3284) where the rsegment array would not be set
+   properly if the requested URI contained more segments than the routed
+   URI.
+-  Removed extraneous load of $CFG in _display_cache() of the Output
+   class (#3285).
+-  Removed an extraneous call to loading models (#3286).
+-  Fixed a bug (#3310) with sanitization of globals in the Input class
+   that could unset CI's global variables.
+-  Fixed a bug (#3314) which would cause the top level path to be
+   deleted in delete_files() of the File helper.
+-  Fixed a bug (#3328) where the smiley helper might return an undefined
+   variable.
+-  Fixed a bug (#3330) in the FTP class where a comparison wasn't
+   getting made.
+-  Removed an unused parameter from Profiler (#3332).
+-  Fixed a bug in database driver where num_rows property wasn't
+   getting updated.
+-  Fixed a bug in the :doc:`upload
+   library <./libraries/file_uploading>` when allowed_files
+   wasn't defined.
+-  Fixed a bug in word_wrap() of the Text Helper that incorrectly
+   referenced an object.
+-  Fixed a bug in Validation where valid_ip() wasn't called properly.
+-  Fixed a bug in Validation where individual error messages for
+   checkboxes wasn't supported.
+-  Fixed a bug in captcha calling an invalid PHP function.
+-  Fixed a bug in the cookie helper "set_cookie" function. It was not
+   honoring the config settings.
+-  Fixed a bug that was making validation callbacks required even when
+   not set as such.
+-  Fixed a bug in the XML-RPC library so if a type is specified, a more
+   intelligent decision is made as to the default type.
+-  Fixed an example of comma-separated emails in the email library
+   documentation.
+-  Fixed an example in the Calendar library for Showing Next/Previous
+   Month Links.
+-  Fixed a typo in the database language file.
+-  Fixed a typo in the image language file "suppor" to "support".
+-  Fixed an example for XML RPC.
+-  Fixed an example of accept_charset() in the :doc:`User Agent
+   Library <./libraries/user_agent>`.
+-  Fixed a typo in the docblock comments that had CodeIgniter spelled
+   CodeIgnitor.
+-  Fixed a typo in the :doc:`String Helper <./helpers/string_helper>`
+   (uniquid changed to uniqid).
+-  Fixed typos in the email Language class
+   (email_attachment_unredable, email_filed_smtp_login), and FTP
+   Class (ftp_unable_to_remame).
+-  Added a stripslashes() into the Upload Library.
+-  Fixed a series of grammatical and spelling errors in the language
+   files.
+-  Fixed assorted user guide typos.
+
+Version 1.5.4
+=============
+
+Release Date: July 12, 2007
+
+-  Added :doc:`custom Language files <./libraries/language>` to the
+   :doc:`autoload <./general/autoloader>` options.
+-  Added stripslashes() to the _clean_input_data() function in the
+   :doc:`Input class <./libraries/input>` when magic quotes is on so
+   that data will always be un-slashed within the framework.
+-  Added array to string into the :doc:`profiler <general/profiling>`.
+-  Added some additional mime types in application/config/mimes.php.
+-  Added filename_security() method to :doc:`Input
+   library <./libraries/input>`.
+-  Added some additional arguments to the :doc:`Inflection
+   helper <./helpers/inflector_helper>` singular() to compensate
+   for words ending in "s". Also added a force parameter to pluralize().
+-  Added $config['charset'] to the config file. Default value is
+   'UTF-8', used in some string handling functions.
+-  Fixed MSSQL insert_id().
+-  Fixed a logic error in the DB trans_status() function. It was
+   incorrectly returning TRUE on failure and FALSE on success.
+-  Fixed a bug that was allowing multiple load attempts on extended
+   classes.
+-  Fixed a bug in the bootstrap file that was incorrectly attempting to
+   discern the full server path even when it was explicity set by the
+   user.
+-  Fixed a bug in the escape_str() function in the MySQL driver.
+-  Fixed a typo in the :doc:`Calendar library <./libraries/calendar>`
+-  Fixed a typo in rpcs.php library
+-  Fixed a bug in the :doc:`Zip library <./libraries/zip>`, providing
+   PC Zip file compatibility with Mac OS X
+-  Fixed a bug in router that was ignoring the scaffolding route for
+   optimization
+-  Fixed an IP validation bug.
+-  Fixed a bug in display of POST keys in the
+   :doc:`Profiler <./general/profiling>` output
+-  Fixed a bug in display of queries with characters that would be
+   interpreted as HTML in the :doc:`Profiler <./general/profiling>`
+   output
+-  Fixed a bug in display of Email class print debugger with characters
+   that would be interpreted as HTML in the debugging output
+-  Fixed a bug in the Content-Transfer-Encoding of HTML emails with the
+   quoted-printable MIME type
+-  Fixed a bug where one could unset certain PHP superglobals by setting
+   them via GET or POST data
+-  Fixed an undefined function error in the insert_id() function of the
+   PostgreSQL driver
+-  Fixed various doc typos.
+-  Documented two functions from the :doc:`String
+   helper <./helpers/string_helper>` that were missing from the
+   user guide: trim_slashes() and reduce_double_slashes().
+-  Docs now validate to XHTML 1 transitional
+-  Updated the XSS Filtering to take into account the IE expression()
+   ability and improved certain deletions to prevent possible exploits
+-  Modified the Router so that when Query Strings are Enabled, the
+   controller trigger and function trigger values are sanitized for
+   filename include security.
+-  Modified the is_image() method in the Upload library to take into
+   account Windows IE 6/7 eccentricities when dealing with MIMEs
+-  Modified XSS Cleaning routine to be more performance friendly and
+   compatible with PHP 5.2's new PCRE backtrack and recursion limits.
+-  Modified the :doc:`URL Helper <./helpers/url_helper>` to type cast
+   the $title as a string in case a numeric value is supplied
+-  Modified Form Helper form_dropdown() to type cast the keys and
+   values of the options array as strings, allowing numeric values to be
+   properly set as 'selected'
+-  Deprecated the use if is_numeric() in various places since it allows
+   periods. Due to compatibility problems with ctype_digit(), making it
+   unreliable in some installations, the following regular expression
+   was used instead: preg_match("/[^0-9]/", $n)
+-  Deprecated: APPVER has been deprecated and replaced with CI_VERSION
+   for clarity.
+
+Version 1.5.3
+=============
+
+Release Date: April 15, 2007
+
+-  Added array to string into the profiler
+-  Code Igniter references updated to CodeIgniter
+-  pMachine references updated to EllisLab
+-  Fixed a bug in the repeater function of :doc:`string
+   helper <./helpers/string_helper>`.
+-  Fixed a bug in ODBC driver
+-  Fixed a bug in result_array() that was returning an empty array when
+   no result is produced.
+-  Fixed a bug in the redirect function of the :doc:`url
+   helper <./helpers/url_helper>`.
+-  Fixed an undefined variable in Loader
+-  Fixed a version bug in the Postgres driver
+-  Fixed a bug in the textarea function of the form helper for use with
+   strings
+-  Fixed doc typos.
+
+Version 1.5.2
+=============
+
+Release Date: February 13, 2007
+
+-  Added subversion information
+   to the `downloads <installation/downloads>` page.
+-  Added support for captions in the :doc:`Table
+   Library <./libraries/table>`
+-  Fixed a bug in the
+   :doc:`download_helper <helpers/download_helper>` that was causing
+   Internet Explorer to load rather than download
+-  Fixed a bug in the Active Record Join function that was not taking
+   table prefixes into consideration.
+-  Removed unescaped variables in error messages of Input and Router
+   classes
+-  Fixed a bug in the Loader that was causing errors on Libraries loaded
+   twice. A debug message is now silently made in the log.
+-  Fixed a bug in the :doc:`form helper <helpers/form_helper>` that
+   gave textarea a value attribute
+-  Fixed a bug in the :doc:`Image Library <libraries/image_lib>` that
+   was ignoring resizing the same size image
+-  Fixed some doc typos.
+
+Version 1.5.1
+=============
+
+Release Date: November 23, 2006
+
+-  Added support for submitting arrays of libraries in the
+   $this->load->library function.
+-  Added support for naming custom library files in lower or uppercase.
+-  Fixed a bug related to output buffering.
+-  Fixed a bug in the active record class that was not resetting query
+   data after a completed query.
+-  Fixed a bug that was suppressing errors in controllers.
+-  Fixed a problem that can cause a loop to occur when the config file
+   is missing.
+-  Fixed a bug that occurred when multiple models were loaded with the
+   third parameter set to TRUE.
+-  Fixed an oversight that was not unsetting globals properly in the
+   input sanitize function.
+-  Fixed some bugs in the Oracle DB driver.
+-  Fixed an incorrectly named variable in the MySQLi result driver.
+-  Fixed some doc typos.
+
+Version 1.5.0.1
+===============
+
+Release Date: October 31, 2006
+
+-  Fixed a problem in which duplicate attempts to load helpers and
+   classes were not being stopped.
+-  Fixed a bug in the word_wrap() helper function.
+-  Fixed an invalid color Hex number in the Profiler class.
+-  Fixed a corrupted image in the user guide.
+
+Version 1.5.0
+=============
+
+Release Date: October 30, 2006
+
+-  Added `DB utility class <./database/utilities>`, permitting DB
+   backups, CVS or XML files from DB results, and various other
+   functions.
+-  Added :doc:`Database Caching Class <./database/caching>`.
+-  Added :doc:`transaction support <./database/transactions>` to the
+   database classes.
+-  Added :doc:`Profiler Class <./general/profiling>` which generates a
+   report of Benchmark execution times, queries, and POST data at the
+   bottom of your pages.
+-  Added :doc:`User Agent Library <./libraries/user_agent>` which
+   allows browsers, robots, and mobile devises to be identified.
+-  Added :doc:`HTML Table Class <./libraries/table>` , enabling tables
+   to be generated from arrays or database results.
+-  Added :doc:`Zip Encoding Library <./libraries/zip>`.
+-  Added :doc:`FTP Library <./libraries/ftp>`.
+-  Added the ability to :doc:`extend
+   libraries <./general/creating_libraries>` and :doc:`extend core
+   classes <./general/core_classes>`, in addition to being able to
+   replace them.
+-  Added support for storing :doc:`models within
+   sub-folders <./general/models>`.
+-  Added :doc:`Download Helper <./helpers/download_helper>`.
+-  Added :doc:`simple_query() <./database/queries>` function to the
+   database classes
+-  Added :doc:`standard_date() <./helpers/date_helper>` function to
+   the Date Helper.
+-  Added :doc:`$query->free_result() <./database/results>` to database
+   class.
+-  Added :doc:`$query->list_fields() <./database/fields>` function to
+   database class
+-  Added :doc:`$this->db->platform() <./database/helpers>` function
+-  Added new :doc:`File Helper <./helpers/file_helper>`:
+   get_filenames()
+-  Added new helper: :doc:`Smiley Helper <./helpers/smiley_helper>`
+-  Added support for <ul> and <ol> lists in the :doc:`HTML
+   Helper <./helpers/html_helper>`
+-  Added the ability to rewrite :doc:`short
+   tags <./general/alternative_php>` on-the-fly, converting them
+   to standard PHP statements, for those servers that do not support
+   short tags. This allows the cleaner syntax to be used regardless of
+   whether it's supported by the server.
+-  Added the ability to :doc:`rename or relocate the "application"
+   folder <./general/managing_apps>`.
+-  Added more thorough initialization in the upload class so that all
+   class variables are reset.
+-  Added "is_numeric" to validation, which uses the native PHP
+   is_numeric function.
+-  Improved the URI handler to make it more reliable when the
+   $config['uri_protocol'] item is set to AUTO.
+-  Moved most of the functions in the Controller class into the Loader
+   class, allowing fewer reserved function names for controllers when
+   running under PHP 5.
+-  Updated the DB Result class to return an empty array when
+   $query->result() doesn't produce a result.
+-  Updated the input->cookie() and input->post() functions in :doc:`Input
+   Class <./libraries/input>` to permit arrays contained cookies
+   that are arrays to be run through the XSS filter.
+-  Documented three functions from the Validation
+   class that were missing from the user
+   guide: set_select(), set_radio(), and set_checkbox().
+-  Fixed a bug in the Email class related to SMTP Helo data.
+-  Fixed a bug in the word wrapping helper and function in the email
+   class.
+-  Fixed a bug in the validation class.
+-  Fixed a bug in the typography helper that was incorrectly wrapping
+   block level elements in paragraph tags.
+-  Fixed a problem in the form_prep() function that was double encoding
+   entities.
+-  Fixed a bug that affects some versions of PHP when output buffering
+   is nested.
+-  Fixed a bug that caused CI to stop working when the PHP magic
+   __get() or __set() functions were used within models or
+   controllers.
+-  Fixed a pagination bug that was permitting negative values in the
+   URL.
+-  Fixed an oversight in which the Loader class was not allowed to be
+   extended.
+-  Changed _get_config() to get_config() since the function is not a
+   private one.
+-  **Deprecated "init" folder**. Initialization happens automatically
+   now. :doc:`Please see documentation <./general/creating_libraries>`.
+-  **Deprecated** $this->db->field_names() USE
+   $this->db->list_fields()
+-  **Deprecated** the $config['log_errors'] item from the config.php
+   file. Instead, $config['log_threshold'] can be set to "0" to turn it
+   off.
+
+Version 1.4.1
+=============
+
+Release Date: September 21, 2006
+
+-  Added a new feature that passes URI segments directly to your
+   function calls as parameters. See the
+   :doc:`Controllers <general/controllers>` page for more info.
+-  Added support for a function named _output(), which when used in
+   your controllers will received the final rendered output from the
+   output class. More info in the :doc:`Controllers <general/controllers>`
+   page.
+-  Added several new functions in the :doc:`URI
+   Class <./libraries/uri>` to let you retrieve and manipulate URI
+   segments that have been re-routed using the :doc:`URI
+   Routing <general/routing>` feature. Previously, the URI class did not
+   permit you to access any re-routed URI segments, but now it does.
+-  Added :doc:`$this->output->set_header() <./libraries/output>`
+   function, which allows you to set server headers.
+-  Updated plugins, helpers, and language classes to allow your
+   application folder to contain its own plugins, helpers, and language
+   folders. Previously they were always treated as global for your
+   entire installation. If your application folder contains any of these
+   resources they will be used *instead* the global ones.
+-  Added :doc:`Inflector helper <./helpers/inflector_helper>`.
+-  Added element() function in the :doc:`array
+   helper <./helpers/array_helper>`.
+-  Added RAND() to active record orderby() function.
+-  Added delete_cookie() and get_cookie() to :doc:`Cookie
+   helper <./helpers/cookie_helper>`, even though the input class
+   has a cookie fetching function.
+-  Added Oracle database driver (still undergoing testing so it might
+   have some bugs).
+-  Added the ability to combine pseudo-variables and php variables in
+   the template parser class.
+-  Added output compression option to the config file.
+-  Removed the is_numeric test from the db->escape() function.
+-  Fixed a MySQLi bug that was causing error messages not to contain
+   proper error data.
+-  Fixed a bug in the email class which was causing it to ignore
+   explicitly set alternative headers.
+-  Fixed a bug that was causing a PHP error when the Exceptions class
+   was called within the get_config() function since it was causing
+   problems.
+-  Fixed an oversight in the cookie helper in which the config file
+   cookie settings were not being honored.
+-  Fixed an oversight in the upload class. An item mentioned in the 1.4
+   changelog was missing.
+-  Added some code to allow email attachments to be reset when sending
+   batches of email.
+-  Deprecated the application/scripts folder. It will continue to work
+   for legacy users, but it is recommended that you create your own
+   :doc:`libraries <./general/libraries>` or
+   :doc:`models <./general/models>` instead. It was originally added
+   before CI had user libraries or models, but it's not needed anymore.
+-  Deprecated the $autoload['core'] item from the autoload.php file.
+   Instead, please now use: $autoload['libraries']
+-  Deprecated the following database functions:
+   $this->db->smart_escape_str() and $this->db->fields().
+
+Version 1.4.0
+=============
+
+Release Date: September 17, 2006
+
+-  Added :doc:`Hooks <./general/hooks>` feature, enabling you to tap
+   into and modify the inner workings of the framework without hacking
+   the core files.
+-  Added the ability to organize controller files :doc:`into
+   sub-folders <general/controllers>`. Kudos to Marco for
+   `suggesting <http://codeigniter.com/forums/viewthread/627/>`_ this
+   (and the next two) feature.
+-  Added regular expressions support for `routing
+   rules <./general/routing>`.
+-  Added the ability to :doc:`remap function
+   calls <./general/controllers>` within your controllers.
+-  Added the ability to :doc:`replace core system
+   classes <./general/core_classes>` with your own classes.
+-  Added support for % character in URL.
+-  Added the ability to supply full URLs using the
+   :doc:`anchor() <./helpers/url_helper>` helper function.
+-  Added mode parameter to :doc:`file_write() <./helpers/file_helper>`
+   helper.
+-  Added support for changing the port number in the :doc:`Postgres
+   driver <./database/configuration>`.
+-  Moved the list of "allowed URI characters" out of the Router class
+   and into the config file.
+-  Moved the MIME type array out of the Upload class and into its own
+   file in the applications/config/ folder.
+-  Updated the Upload class to allow the upload field name to be set
+   when calling :doc:`do_upload() <./libraries/file_uploading>`.
+-  Updated the :doc:`Config Library <./libraries/config>` to be able to
+   load config files silently, and to be able to assign config files to
+   their own index (to avoid collisions if you use multiple config
+   files).
+-  Updated the URI Protocol code to allow more options so that URLs will
+   work more reliably in different environments.
+-  Updated the form_open() helper to allow the GET method to be used.
+-  Updated the MySQLi execute() function with some code to help prevent
+   lost connection errors.
+-  Updated the SQLite Driver to check for object support before
+   attempting to return results as objects. If unsupported it returns an
+   array.
+-  Updated the Models loader function to allow multiple loads of the
+   same model.
+-  Updated the MS SQL driver so that single quotes are escaped.
+-  Updated the Postgres and ODBC drivers for better compatibility.
+-  Removed a strtolower() call that was changing URL segments to lower
+   case.
+-  Removed some references that were interfering with PHP 4.4.1
+   compatibility.
+-  Removed backticks from Postgres class since these are not needed.
+-  Renamed display() to _display() in the Output class to make it clear
+   that it's a private function.
+-  Deprecated the hash() function due to a naming conflict with a native
+   PHP function with the same name. Please use dohash() instead.
+-  Fixed an bug that was preventing the input class from unsetting GET
+   variables.
+-  Fixed a router bug that was making it too greedy when matching end
+   segments.
+-  Fixed a bug that was preventing multiple discrete database calls.
+-  Fixed a bug in which loading a language file was producing a "file
+   contains no data" message.
+-  Fixed a session bug caused by the XSS Filtering feature inadvertently
+   changing the case of certain words.
+-  Fixed some missing prefixes when using the database prefix feature.
+-  Fixed a typo in the Calendar class (cal_november).
+-  Fixed a bug in the form_checkbox() helper.
+-  Fixed a bug that was allowing the second segment of the URI to be
+   identical to the class name.
+-  Fixed an evaluation bug in the database initialization function.
+-  Fixed a minor bug in one of the error messages in the language class.
+-  Fixed a bug in the date helper timespan function.
+-  Fixed an undefined variable in the DB Driver class.
+-  Fixed a bug in which dollar signs used as binding replacement values
+   in the DB class would be treated as RegEx back-references.
+-  Fixed a bug in the set_hash() function which was preventing MD5 from
+   being used.
+-  Fixed a couple bugs in the Unit Testing class.
+-  Fixed an incorrectly named variable in the Validation class.
+-  Fixed an incorrectly named variable in the URI class.
+-  Fixed a bug in the config class that was preventing the base URL from
+   being called properly.
+-  Fixed a bug in the validation class that was not permitting callbacks
+   if the form field was empty.
+-  Fixed a problem that was preventing scaffolding from working properly
+   with MySQLi.
+-  Fixed some MS SQL bugs.
+-  Fixed some doc typos.
+
+Version 1.3.3
+=============
+
+Release Date: June 1, 2006
+
+-  Models do **not** connect automatically to the database as of this
+   version. :doc:`More info here <./general/models>`.
+-  Updated the Sessions class to utilize the active record class when
+   running session related queries. Previously the queries assumed MySQL
+   syntax.
+-  Updated alternator() function to re-initialize when called with no
+   arguments, allowing multiple calls.
+-  Fixed a bug in the active record "having" function.
+-  Fixed a problem in the validation class which was making checkboxes
+   be ignored when required.
+-  Fixed a bug in the word_limiter() helper function. It was cutting
+   off the fist word.
+-  Fixed a bug in the xss_clean function due to a PHP bug that affects
+   some versions of html_entity_decode.
+-  Fixed a validation bug that was preventing rules from being set twice
+   in one controller.
+-  Fixed a calendar bug that was not letting it use dynamically loaded
+   languages.
+-  Fixed a bug in the active record class when using WHERE clauses with
+   LIKE
+-  Fixed a bug in the hash() security helper.
+-  Fixed some typos.
+
+Version 1.3.2
+=============
+
+Release Date: April 17, 2006
+
+-  Changed the behavior of the validation class such that if a
+   "required" rule is NOT explicitly stated for a field then all other
+   tests get ignored.
+-  Fixed a bug in the Controller class that was causing it to look in
+   the local "init" folder instead of the main system one.
+-  Fixed a bug in the init_pagination file. The $config item was not
+   being set correctly.
+-  Fixed a bug in the auto typography helper that was causing
+   inconsistent behavior.
+-  Fixed a couple bugs in the Model class.
+-  Fixed some documentation typos and errata.
+
+Version 1.3.1
+=============
+
+Release Date: April 11, 2006
+
+-  Added a :doc:`Unit Testing Library <./libraries/unit_testing>`.
+-  Added the ability to pass objects to the **insert()** and
+   **update()** database functions. This feature enables you to (among
+   other things) use your :doc:`Model class <./general/models>`
+   variables to run queries with. See the Models page for details.
+-  Added the ability to pass objects to the :doc:`view loading
+   function <./general/views>`: $this->load->view('my_view',
+   $object);
+-  Added getwhere function to :doc:`Active Record
+   class <./database/active_record>`.
+-  Added count_all function to :doc:`Active Record
+   class <./database/active_record>`.
+-  Added language file for scaffolding and fixed a scaffolding bug that
+   occurs when there are no rows in the specified table.
+-  Added :doc:`$this->db->last_query() <./database/queries>`, which
+   allows you to view your last query that was run.
+-  Added a new mime type to the upload class for better compatibility.
+-  Changed how cache files are read to prevent PHP errors if the cache
+   file contains an XML tag, which PHP wants to interpret as a short
+   tag.
+-  Fixed a bug in a couple of the active record functions (where and
+   orderby).
+-  Fixed a bug in the image library when realpath() returns false.
+-  Fixed a bug in the Models that was preventing libraries from being
+   used within them.
+-  Fixed a bug in the "exact_length" function of the validation class.
+-  Fixed some typos in the user guide
+
+Version 1.3
+===========
+
+Release Date: April 3, 2006
+
+-  Added support for :doc:`Models <general/models>`.
+-  Redesigned the database libraries to support additional RDBMs
+   (Postgres, MySQLi, etc.).
+-  Redesigned the :doc:`Active Record class <./database/active_record>`
+   to enable more varied types of queries with simpler syntax, and
+   advanced features like JOINs.
+-  Added a feature to the database class that lets you run :doc:`custom
+   function calls <./database/call_function>`.
+-  Added support for :doc:`private functions <general/controllers>` in your
+   controllers. Any controller function name that starts with an
+   underscore will not be served by a URI request.
+-  Added the ability to pass your own initialization parameters to your
+   :doc:`custom core libraries <general/creating_libraries>` when using
+   $this->load->library()
+-  Added support for running standard :doc:`query string URLs <general/urls>`.
+   These can be optionally enabled in your config file.
+-  Added the ability to :doc:`specify a "suffix" <general/urls>`, which will be
+   appended to your URLs. For example, you could add .html to your URLs,
+   making them appear static. This feature is enabled in your config
+   file.
+-  Added a new error template for use with native PHP errors.
+-  Added "alternator" function in the :doc:`string
+   helpers <./helpers/string_helper>`.
+-  Removed slashing from the input class. After much debate we decided
+   to kill this feature.
+-  Change the commenting style in the scripts to the PEAR standard so
+   that IDEs and tools like phpDocumenter can harvest the comments.
+-  Added better class and function name-spacing to avoid collisions with
+   user developed classes. All CodeIgniter classes are now prefixed with
+   CI\_ and all controller methods are prefixed with _ci to avoid
+   controller collisions. A list of reserved function names can be
+   :doc:`found here <general/controllers>`.
+-  Redesigned how the "CI" super object is referenced, depending on
+   whether PHP 4 or 5 is being run, since PHP 5 allows a more graceful
+   way to manage objects that utilizes a bit less resources.
+-  Deprecated: $this->db->use_table() has been deprecated. Please read
+   the :doc:`Active Record <./database/active_record>` page for
+   information.
+-  Deprecated: $this->db->smart_escape_str() has been deprecated.
+   Please use this instead: $this->db->escape()
+-  Fixed a bug in the exception handler which was preventing some PHP
+   errors from showing up.
+-  Fixed a typo in the URI class. $this->total_segment() should be
+   plural: $this->total_segments()
+-  Fixed some typos in the default calendar template
+-  Fixed some typos in the user guide
+
+Version 1.2
+===========
+
+Release Date: March 21, 2006
+
+-  Redesigned some internal aspects of the framework to resolve scoping
+   problems that surfaced during the beta tests. The problem was most
+   notable when instantiating classes in your constructors, particularly
+   if those classes in turn did work in their constructors.
+-  Added a global function named
+   :doc:`get_instance() <general/ancillary_classes>` allowing the main
+   CodeIgniter object to be accessible throughout your own classes.
+-  Added new :doc:`File Helper <./helpers/file_helper>`:
+   delete_files()
+-  Added new :doc:`URL Helpers <./helpers/url_helper>`: base_url(),
+   index_page()
+-  Added the ability to create your own :doc:`core
+   libraries <general/creating_libraries>` and store them in your local
+   application directory.
+-  Added an overwrite option to the :doc:`Upload
+   class <./libraries/file_uploading>`, enabling files to be
+   overwritten rather than having the file name appended.
+-  Added Javascript Calendar plugin.
+-  Added search feature to user guide. Note: This is done using Google,
+   which at the time of this writing has not crawled all the pages of
+   the docs.
+-  Updated the parser class so that it allows tag pars within other tag
+   pairs.
+-  Fixed a bug in the DB "where" function.
+-  Fixed a bug that was preventing custom config files to be
+   auto-loaded.
+-  Fixed a bug in the mysql class bind feature that prevented question
+   marks in the replacement data.
+-  Fixed some bugs in the xss_clean function
+
+Version Beta 1.1
+================
+
+Release Date: March 10, 2006
+
+-  Added a :doc:`Calendaring class <./libraries/calendar>`.
+-  Added support for running :doc:`multiple
+   applications <general/managing_apps>` that share a common CodeIgniter
+   backend.
+-  Moved the "uri protocol" variable from the index.php file into the
+   config.php file
+-  Fixed a problem that was preventing certain function calls from
+   working within constructors.
+-  Fixed a problem that was preventing the $this->load->library function
+   from working in constructors.
+-  Fixed a bug that occurred when the session class was loaded using the
+   auto-load routine.
+-  Fixed a bug that can happen with PHP versions that do not support the
+   E_STRICT constant
+-  Fixed a data type error in the form_radio function (form helper)
+-  Fixed a bug that was preventing the xss_clean function from being
+   called from the validation class.
+-  Fixed the cookie related config names, which were incorrectly
+   specified as $conf rather than $config
+-  Fixed a pagination problem in the scaffolding.
+-  Fixed a bug in the mysql class "where" function.
+-  Fixed a regex problem in some code that trimmed duplicate slashes.
+-  Fixed a bug in the br() function in the HTML helper
+-  Fixed a syntax mistake in the form_dropdown function in the Form
+   Helper.
+-  Removed the "style" attributes form the form helpers.
+-  Updated the documentation. Added "next/previous" links to each page
+   and fixed various typos.
+
+Version Beta 1.0
+================
+
+Release Date: February 28, 2006
+
+First publicly released version.