%#--
%# Copyright protects this work.
%# See LICENSE file for details.
%#++


%|chapter "History"


  %|history


    %|section "Version 1.1.1 (2009-10-03)"

      This release improves Ruby 1.9 support and upgrades gem dependencies.

      %|paragraph "Bug fixes"

        * `require()` was unable to find project library in Ruby 1.9.2dev.

        * Ruby 1.9 warning about "shadowing outer variable".

        * Ruby 1.9 error about "incompatible encoding regexp match".


      %|paragraph "Housekeeping"

        * The "spicycode-rcov" project was officially renamed to "relevance-rcov".

        * Upgrade to RubyForge 2.x library for publishing gems.


    %|section "Version 1.1.0 (2009-09-06)"

      This release improves the user manual and scaffold generator output, injects more metadata into gems, adds support for Microsoft web browsers, and fixes some bugs.


      %|paragraph "New features"

        * Add <%= xref "Build a RubyGem without #{$project} as runtime dependency", "instructions for building gems without Inochi" %> as a runtime dependency.

        * Put release notes in "description" field of gemspec, as [suggested by Eric Hodel](http://www.ruby-forum.com/topic/190220#830072), so that subscribers of [the RubyForge gems feed](http://gems.rubyforge.org/index.rss) are aware of the changes in a published gem.

        * Set the "date" field in gemspec to project release date.

        * Change file extension of generated user manuals from <tt>.xhtml</tt> to <tt>.html</tt> to accomodate Microsoft web browsers' inability to process the <tt>application/xhtml+xml</tt> mime type.


      %|paragraph "Bug fixes"

        * The sdoc library was necessary to run 'rake test'.

        * Forgot to add `:develop` option to scaffold generator output.

        * Make "rake lang:dump" unconditionally overwrite the dump file.

        * Fix gem not being built and prevent Maruku errors for the dummy "WordCount" project in the user manual.

        * Use <tt>/usr/bin/env</tt> instead of <tt>/usr/bin/ruby</tt> to launch Ruby for better portability.


      %|paragraph "Housekeeping"

        * Use simpler Copyright reminder at the top of every file.

        * Open source is for fun, so [be nice](http://loiclemeur.com/english/2009/03/never-criticize-your-competitors.html): speak of "related works" instead of "competitors".

        * Rename "Tutorial" to "General walkthrough" in user manual and add a "Specific topics" section for housing uncommon use cases.

        * Remove "logistics" section and redistribute its contents in more suitable locations in the user manual.


    %|section "Version 1.0.0 (2009-05-03)"

      This release <%= xref "Build a RubyGem without #{$project} as runtime dependency", "allows your gems to not depend on #{$project}" %>, lets you choose which unit testing library to use, adds new utility libraries and rake tasks, and fixes some bugs.


      %|paragraph "Incompatible changes"

        * Your program is no longer halted by `Inochi.init()` and `Inochi.rake()` if gem dependencies are not satified.  A warning is issued instead.

        * The `project_summary` and `project_history` nodes, which are provided by `Inochi.book()` to the user manual, have been renamed to `project` and `history` respectively.

        * ERBook 7.1.0 is now used for generating the user manual.  This is a major step up from the previous version, and so it has incompatible changes.  See its release notes for details.

        * [SDoc](http://github.com/voloko/sdoc/tree/master) is now used to generate API documentation instead of [YARD](http://yard.rubyforge.org).  If you link to particular classes or methods in the generated API documentation, be sure to update your link addresses!

        * Minitest is no longer the default testing library.  You must specify which testing library you want to use via the `:test_with` option of the `Inochi.rake()` method.  See <%= xref "Test execution" %> for details.

        * The "pak" rake task, which is provided by `Inochi.rake()`, has been renamed to "gem".


      %|paragraph "New features"

        * Add `:inochi_consumer` and `:inochi_producer` options to `Inochi.rake()` which allows you to *avoid* having Inochi as a runtime and development dependency, respectively, for your project's gem.

          This is useful if you just want to use Inochi facilities for building a gem for a pure Ruby library that does not have any need for Inochi's runtime convenience facilities.

        * Add `:develop` option for `Inochi.init()` which lets you specify RubyGems as development dependencies in the same way as the `:require` option.

        * Add "lint" rake task which reports [code quality statistics](http://www.infoq.com/news/2008/11/static-analysis-tool-roundup).

        * Add "test:cov" rake task which reports code coverage statistics.

        * Add "test:ruby" task which runs all tests with [multiruby](http://www.infoq.com/news/2008/02/multiruby-testing).

        * Add 'rake opts=' environment variable, which lets you specify command-line arguments directly to the Ruby interpreter, for all test* rake tasks.

        * Add <tt>inochi/util/combo</tt> combinatorics library for enumerations, permutations, and combinations which are all useful in exhaustive brute-force unit testing.

        * Add <tt>inochi/util/tempdir</tt> library which really should be in the Ruby standard library.


      %|paragraph "Bug fixes"

        * The "enable email notification" checkbox was not activated properly when posting announcement to ruby-talk mailing list via Ruby-Forum.

        * Mark gems needed by `Inochi.rake()` as *development* dependencies.

          A user would now have to install Inochi using <pre>gem install --development</pre> to install all these gems.  This also solves the recursive dependency problem between Inochi and ERBook.

        * Set executable in gem specification only if it exists.

        * Fix parsing of stack trace in Ruby 1.9.


      %|paragraph "Housekeeping"

        * Write contributor names in <tt>CREDITS</tt> file instead of in the user manual.

        * Use completely lowercase name for <tt>Rakefile</tt>.

        * Add copyright statement at the top of every source file.


    %|section "Version 0.3.0 (2009-02-12)"

      This release adds support for <%= xref "Translate your project", "language translations / internationalization / multilingualization" %>, improves the user interface, and fixes a show-stopper bug for Windows users.


      %|paragraph "New features"

        * Add support for <%= xref "Translate your project", "language translations" %> of phrases used in a project.

          * Add "lang:dump" Rake task for extracting language phrases from project.

          * Add "lang:conv" Rake task for translating dumped phrases into various languages using the BabelFish translation service.

          * Add <tt>--locale</tt> option to a project's main executable for setting user's preferred language in spite of the user's locale environment.

        * Notify user when attempting to publish announcements in the "pub" Rake tasks.


      %|paragraph "Bug fixes"

        * In Windows, `ENV['USERPROFILE']` gives the path to the user's home directory and `ENV['HOME']` is not defined.

        * The only real solution to the circular gem dependency problem is:

              gem install --force

          You should update <%= xref "Setup" %> in your projects' user manuals accordingly.


      %|paragraph "Housekeeping"

        * Break the huge <tt>lib/inochi/inochi.rb</tt> library into smaller files.

        * Instead of adding methods to singleton classes directly, define modules and extend to them so that YARDoc documents the methods appropriately.

        * List all project contributors globally in the "Credits" section.

        * Remove "Contributor kudos" paragraph in release notes in favor of crediting contributors inline with each item in the release notes.

        * Mention that the project license is ISC for the reader's convenience.


    %|section "Version 0.2.0 (2009-01-25)"

      This release adds support for unit testing, improves the portability of **Inochi** and configurability of your projects, adds new content to the user manual, and fixes some bugs.


      %|paragraph "New features"

        * Added <%= xref "Test your project", "support for unit testing" %> via the [minitest](http://rubyforge.org/projects/bfts/) library.

          * The scaffold generator now emits a default unit test for the main project library.

        * Added optional ProgramName parameter to the scaffold generator.  This allows you to specify reasonable program names when your project module has a strange capitalization:

              # inochi ERBook
                create  er_book/LICENSE

              # inochi ERBook erbook
                create  erbook/LICENSE

              # inochi ERBook foobar
                create  foobar/LICENSE

        * Allow project authors to be specified via

          `Inochi.init :YourProject, :authors => [['name', 'mail']]`

          (Florian Gilcher)


      %|paragraph "Bug fixes"

        * Run on both JRuby and normal Ruby in multiple versions and with different executable names on Windows. (Florian Gilcher)

        * Use `Gem::RubyGemsVersion` instead of a shell command to determine rubygems version for generation of <tt>setup.erb</tt>. (Florian Gilcher)

        * Add blank lines between all list items, not just multi-line ones, in the plain-text version of the release announcement for improved readability.

        * Omit LaTeX-style heading numbers from release announcements.  They caused confusion, especially in plain-text announcements, when trying to determine which version of a project was released.


      %|paragraph "Housekeeping"

        * Added unit tests for utility methods provided by the **Inochi** module: project name calculation and CamelCase to snake\_case conversion.


    %|section "Version 0.1.0 (2009-01-13)"

      This release reattempts to fix the [circular dependency problem](http://www.ruby-forum.com/topic/176173#771281) that occurred when installing either **Inochi** or **ERBook**.


      %|paragraph "New features"

        * `Inochi.init()` now adds `#major()`, `#series()`, and `#requirement()` instance methods to a project's `VERSION` constant.


      %|paragraph "Bug fixes"

        * Solved circular dependency problem by making inochi gem not dependent on erbook gem.  However, ERBook is still required during runtime and is supplied on the `gem install` command for **Inochi**.

          <%= xref "Installation" %> has been updated accordingly.

        * Add forgotten Rake dependency for **Inochi** gem.


    %|section "Version 0.0.1 (2009-01-13)"

      This release fixes some show-stopper bugs.


      %|paragraph "Bug fixes"

        * The name of the project library was [being determined incorrectly](http://www.ruby-forum.com/topic/176173#771351). (Florian Gilcher)

        * There was a [circular dependency problem](http://www.ruby-forum.com/topic/176173#771281) when installing the **Inochi** gem. (Florian Gilcher)

          The solution is to specify the <tt>--force</tt> option when installing the gem.  <%= xref "Installation" %> has been updated accordingly.

        * Generated project scaffolds now check against the major version of the **Inochi** gem, to avoid runtime version conflicts.


      %|paragraph "Housekeeping"

        * Only add project libraries to `$LOAD_PATH` if not already there.


    %|section "Version 0.0.0 (2009-01-13)"

      This is the first release of **Inochi**.

      Happy birthday!