== 1.2.1

* Fix that literals of array and hash can't be parsed in definition files.


== 1.2.0 (2004/4/15)

This version supports only Ruby 1.8.0 or later.

=== New Features

* Enable validation of values for CKText and CKTextField.

* Add WEBrick and Template adapters.
  The Template adapter returns HTTP response objects instead of displaying HTML string.

=== Changed Elements

* Enable all elements to set optional HTML attributes.

* Enable omitting semicolon as term in definition files.

* Change to raise error if definitions of elements are repeated.

* Disable checking undefined attributes of elements.

* Remove "action" attribute of CKForm.

=== New and Changed APIs

* Refactor process to check session.

* Change CKErrorPage to be loaded by default.

* Remove CKStringScanner class.

* Change using Enumerable#each_with_index
  when setting instance variables of "item" attribute of CKRepetition.

* Change setting nil for session ID and session after deleting session
  with CKApplication#clear_session().

* Change cookie header into the lead of response header.

=== Fixes

* Fix that order of setting form data to instance variables in component is not ordered.

* Fix that session is not enabled indefinite if timeout is setted to 0.

* Fix that to enable no session IDs in URLs and cookies.

* Fix that CKCheckbox in CKRepetition do not work with sessions.

* Fix that authorization of sessions do not work correctly.

* Fix that raising error if log files is not existed with max_file_size of log option.

* Fix that "enabled" attribute of CKGenericElement cannot be false.

* Fix that value of "value" attribute of CKTextField is not be escaped.


== 1.1.0 (2003/11/4)

=== New Features

* Correspond to ruby 1.8.0.

* Add CKResourceManager class that manages resources like image files, etc.

* Enable specifying expire time of cookie used for record session IDs.
  You can set the time with session_cookie_expire attribute of CKApplication.

* Abolish defining accessors of attributes to use with elements.
  Elements use instance variable directly if you don't define accessors.

* Enable using adapters automatically whether CGI or mod_ruby.

* Attach cgikit.el development tool for Emacs by rubikitch.

=== Changed Elements

* Add "maxlength" attribute to CKTextField.

* Add "height", "width", "data" and "mime" attributes to CKImage.

* Add "fileupload" attribute to CKForm.

* Change class of data excepted uploaded file to String
  at sending multipart form data with CKForm.

=== New and Changed APIs

* Change to display name of HTML file occured parse error.

* Change to output errors that CGIKit can trap to a log filed
   if log outputer is setted to  the file.

* Add CKKeyValueCoding module.

* Change CKUtilities class to module.

* Add hook methods the following.

  CKComponent#post_action:: This is called after invoked actions.

* Change methods the following.

  Change method names

  CKApplication#pre_run:: -> pre_action
  CKComponent#pre_run::   -> pre_action

=== Fixes

* Fix that "escape" attribute of CKBrowser is always setted to true.

* Fix that HTML control characters don't be escaped at displaying
  value of "value" attribute of CKText.

* Fix using CKFileUpload with setting character code occurs error.

* Fix that an application name can't be displayed correctly
  in path of the application with directories included periods at error page.


== 1.0.1 (2003/7/22)

=== New and Changed APIs

* Add a hook method CKApplication#pre_run().
  This is called before generating specified component.
  When calling the method, objects of request and session are already setted.

=== Fixes

* Fix "values" attribute of CKPopUpButton that didn't work.

* Fix that "Content-Dispostion" header can't be setted for CKResponse object.


== 1.0.0 (2003/7/15)

Official release.
Switch licence from GPL licence to Ruby licence.

=== Experimental Feature

* Enable using with mod_ruby.

=== New Features

* Add "values" attribute to CKBrowser and CKPopUpButton.

* Enhance logging feature of CKLog.

* Support specifying character code of form data.
  By default, Japanese character codes only.

* Support interpreting locale with language preference of browser.

=== New and Changed APIs

* Add comment format for <CGIKIT> in template files.

* Add CKAdapter::ModRuby.

* Delete "default" attribute of CKBrowser.

* Change CKCheckbox to always display content of "value" attribute along 
  HTML 4.01 specification.

* Add session() to CKComponent. It is alias method for CKApplication#session.

* Change CKCookie#new to receive arguments for all attributes.

* Change exclusive_lock() and shared_lock() of CKFileLock  to receive arguments
  the same with arguments of open().

* Change to raise CKError when clearing session with incorrect methods.
  Use CKSession#clear in automatic session management, or CKApplication#clear_session.

* Change to raise SessionTimeoutError when accessing with session IDs not existed.

* Add languages() to CKRequest. The method returns an array of languages.

* Add hook methods the following.

  CKApplication#pre_respond::     It is called before sending HTTP response to browser.
  CKComponent#post_run::          It is called after setting form data for instance
                                  variables and run action.
  CKComponent#convert_char_code:: It is called before setting form data for instance
                                  variables. The form data is converted to specified
                                  character code in the method.

* Change classes and methods the following.

  Delete a class

  CKLock

  Move methods

  CKUtilities.parse_query_string:: -> CKRequest.parse_query_string
  CKUtilities.parse_cookie::       -> CKCookie.parse_raw_cookie

  Delete a method

  CKApp#debug

=== Fixes

* Fix warning in verbose mode.

* Fix infinite loop at using automatic session management with cookie.

* Fix CKByteData#write_to_file couldn't work.

* Fix "empty" attribute of CKString couldn't work.

* Fix "enabled" attribute of elements to not display.

* Fix error page couldn't be display at raising errors about attributes of elements.

=== Examples

* Add "HelloWorldModRuby" for mod_ruby.

* Add Japanese locale to "Examples".

* Add example code for logging to "ErrorScreen".


== 1.0b7 (2003/4/17)

Last beta version.

=== New Features

* Add file uploading element CKFileUpload and generating HTML tags element
  CKGenericElement.

* Enable form elements in CKRepetition elements.

* Enable literals of Array and Hash in binding files.

* Add "FileUpload", "AddressBook" to samples. And add "RepetitionTablePage"
  and "GeneratingElementPage" to "Examples".

=== New and Changed APIs

* Change "disabled" attributes for CKHyperlink and form elements to
  "enabled" attributes. The attributes enables the elements when setted true,
  disables when setted false.

* Add "method" attrubute to CKForm.

* Add "enabled" attribute to CKResetButton.

* Add managing byte string class CKByteData.

* Add element id class CKElementID. Displayed components and invoked actions
  are managed by the objects.

* Add managing elements' attributes module CKElement::ElementAttribute.
  The module checks attributes and adds HTML common attributes to all elements
  displaying HTML tags.

* Add managing state of elements module CKElemenet::ElementState.
  The module manages state of CKConditional.

* Add handling session errors handle_session_error() to CKApplication.

* Add managing session database CKSessionStore.

* Implement multipart had not been implemented.

* Delete searching accessors of components.

* Add send_redirect() to CKApplication.

* Change CKAdapter#run's arguments to get HTTP request and response objects.

* Add template_file(), definition_string(), definition_file() and  variable?()
  to CKComponent.

* Change classes and methods the following.

  Change names of methods

  CKApplication#attributes_check:: -> check_attributes
  CKElement#init_element::         -> init
  CKElement#oid::                  -> element_id
  CKComponent#html_string::        -> template_string
  CKRequest#single_param::         -> form_value
  CKRequest#multiple_params::      -> form_values
  CKResponse#send_redirect::       -> set_redirect

  Move methods

  CKElement.parse_ckd_value:: -> CKComponent#parse_ckd_value
  CKBinding.bind::            -> CKComponent#bind
  CKSession#save::            -> CKApplication#save_session
  CKSession#restore::         -> CKApplication#restore_session
  CKSession#clear::           -> CKApplication#clear_session
  CKURL#url::                 -> CKApplication#url

  Move classes

  CKAdaptee::CGI::                       -> CKAdapter::CGI
  CKSession::SessionTimeoutError::       -> CKApplication::SessionTimeoutError
  CKSession::SessionAuthorizationError:: -> CKApplication::SessionAuthorizationError

  Delete classes

  CKURL, CKAdaptee, CKBinding

=== Fixes

* Change a character for splitting query string in URL to ';'.

* Change default value to true for CKApplication's "debug" attribute.

* Fix a part of HTML text for CKErrorPage.

* Fix "string" attribute of CKHyperlink can't be set Integer objects.

* Fix CKHyperlink to parse <CGIKIT> elements in enclosed the elements.

* Fix processing concurrently "list" and "count" attributes of CKRepetition.

* Fix "escape" attribute of CKString can't be set false.

* Fix a spell miss of "columns" attribute of CKText.


== 1.0b6 (2003/2/22)

=== New Features

* Introduce session management.

* Reimplements parsers that makes performance up.

* Add "SessionTest" to samples.

=== New APIs

* Add "query" attribute to CKForm.

* Add "error_page" attribute to CKApplication.

* Add http_version_line() to CKMessage.

* Add status_line() to CKResponse.

* Add send_redirect() that redirects to specified URLs to CKResponse.

=== Fixes

* Change naming rule for "name" attribute of CKForm that created automatically.

* Change return value of CKApplication#handle_error() to CKComponent objects.

* Change the default value for "status" attribute of CKResponse to 
  status code 200 ( OK ).

* Fix type for "status" attribute of CKResponse to Integer from String.

* Fix CKUtilities#escape_html() that don't escape single quotations.

* Fix that "string" attribute is disabled if "disabled" attribute is true
  in CKHyperlink.

* Change resource directory is traced recursively when searching image files
  in CKImage.

* Change the default value for "escape" attribute of CKPopUpButton and CKBrowser
  to true.

* Change name for "selection" attribute of CKPopUpButton to "selected".

* Fix raising error if "list" attribute is nil in CKPopUpButton, CKBrowser
  and CKRepetition.

* Fix disabled "escape" attribute of CKBrowser.

* Fix that radio buttons don't work if definition names differ from
  values of "name" attribute in CKRadioButton.

* Change CKURL#url() to add a session ID and query string for URL.


== 1.0b5 (2002/12/13)

=== New Features

* Write RDoc documents.

* Introduce error showing page. An error page will be shown a reason with
  stacktraces when exception occurred.

* Introduce directories for extention elements and components.
  Files in the directories will be searched and required
  in creating elements or components.

  $LOAD_PATH/cgikit/elements::   For extention elements
  $LOAD_PATH/cgikit/components:: For extention components
 	
* Introduce checking attributes of elements. Set false for
  CKApplication#attributes_check to stop checking.

* Combine library files. The file will make performance up more than
  the splitted files in Ruby 1.6.x.

* Add "ErrorScreen" to samples.

=== New APIs

* Introduce CKPartsMaker. If you access an including CKPartsMaker
  component directly,
  you will be redirected to a substitution component ( default is "MainPage" ).

* Add logging class CKLog.

* Add locking file class CKFileLock.

* Add methods getting form parameters and cookies to CKRequest.

* Add page() method that creates new components to CKApplication.

* Add add_cookie() method CKComponent and CKMessage.

=== Fixes

* Delete "item" attribute of CKBrowser and CKPopUpButton.

* Change the class name from "CKExceptionPage" to "CKErrorPage".

* Fix a problem that CKConditional parses HTML in spite of conditional.

* Change name of "selected" attribute for CKPopUpButton to "selection".

* Fix a problem that CKString occurs error if "value" attribute is nil
  when "escape" attribute is true.

* Fix CKRequest#from returns HTTP header "HTTP_FROM".

* Fix "enctype" attribute of CKForm has "POST" when set value but
  "POST, GET, HEAD".

* Delete CKCookieManager.

* Fix a key name of "master_locale" that is appended to a query string in CKURL#url().

== 1.0b4 (2002/10/17)
Fix bugs and refactoring source code.

* Fix reading components in CKApplication#component_path ( the former #path ).

* Fix sending component data in CKURL#_parse.
  Accodingly delete CKComponent#fetch, #_fetch_from_request.

* Fix html parser cuts a part of string in repeating parsing.

* Fix CKCheckbox element shows the "value" attribute in spite of non setting it.

* Fix CKForm element can't run without setting CKApplition#baseurl
  ( the former #application ).
  Change using SCRIPT_NAME of the environment
  variable when #baseurl has no value.

* Fix CKText element ignores the "value" attribute.

* Fix CKImage element searches for only CKApplication#resource.
  Change searching CKApplication#baseurl when #resouce has no value.

* Fix CKString element ignores "true" value not string
  enclosed quatation in "escape" attribute.

* Add some attributes to CKApplication.
  path::           The file system path of the program.
  component_path:: The relative file system path of the components.
  baseurl::        The program URL relative to the server's
                   document root. ( the former #application ).
  name::           The name of the program minused extension.

* Add the '' delimiter can perform string in binding file.

* Add the # comment delimiter can comment out binding file.

* Support the <cgikit/> concluded CGIKit tag in HTML file.

* Define the exception class CKError.

* Define cookie class. You don't have to use cookie with cgi.rb.

* Define CKUtilities module has escaping, etc. methods.
  CKMessage#escape::        -> escape_html
  CKMessage#unescape::      -> unescape_html
  CKMessage#date::          -> date
  CKMessage#_cookies::      -> cookies
  CKAdaptee::CGI#escape::   -> escape_url
  CKAdaptee::CGI#unescape:: -> unescape_url
  CKAdaptee::CGI#parse::    -> parse_query_string

* Change the names of many methods according to Ruby coding style.

* Change the single instance method to class method
  in CKBinding, CKDefinition.

* Add new "Cookie Counter" and "Reqest Shower" samples.


== 1.0b3 (2002/10/9)
Change initializing logic.

* Use install.rb to install CGIKit.

* Divide the library into separate files.

* Change initializing Logic by adding CKAdapter.

* Replace source code with cgi.rb by CKRequest and CKResponse.

* Add a method CKElement#init_element that can initialize
  a component without arguments and overriding #initialize.

* Change singleton CKApplication to not singleton.

* Change initialize methods for CKElement and CKHTMLParser.

* Move CKElement#_fetchFromRequest to CKComponent.


== 1.0b2 (2002/9/13)
Fix some codes.

* Edit comments for RDoc.

* Delete "autoload".

* Delete $CKApp of global variable.

* Change default application path using Dir.pwd.

== 1.0b (2002/9/3)
First release.

