-----------------------------------
Jifty 1.10228 - February 28th, 2011
-----------------------------------
BUGFIXES
========
 * brief_description now always works by returning ->name, or failing that,
   ->id.
 * jifty adopt: Don't bother forking before invoking $EDITOR

DOCUMENTATION
=============
 * Document the models method of Jifty::Schema

TESTS
=====
 * Avoid loading author test modules unless -d inc/.author
 * Author tests for no tabs

-----------------------------------
Jifty 1.10214 - February 14th, 2011
-----------------------------------
CORE
====
 * Monkeypatch Mouse to silence misleading warnings
 * Add a timestamp type
 * Add a default timezone configuration
 * Add support for cc and bcc in Jifty::Notification
 * Let JIFTY_LOG_LEVEL override LogLevel from the config
 * Notify the record when we're about to begin running through an Update

VIEW
====
 * render_title_inpage expects to be passed the title
 * Correct an image URL in CSS to point to /static/
 * __page is only relevant for SPA, which isn't the default configuration
 * Revert "* Upgrade a region error from a debug to a warning."
 * Add the id and class attributes to Forms, aliasing id and name
 * Make sure the submenu <ul> has the submenu class
 * Add a deep_active option to render active menu items all the way down
 * Add an option to kill the JS expand spans
 * Test the count of children, not just the truth
 * Switch to an HTML5 doctype from XHTML

BUGFIXES
========
 * Don't automatically upgrade the schema when running jifty schema --print
 * Add some newlines to our warnings to kill the line numbers
 * Fix jifty schema --setup when AutoUpgrade is off
 * Compiled condition cache should depend on cwd, as well
 * Revert "Remove the unused drop-column logic from jifty schema --setup,
   since ->columns returns only active cols"

DOCS
====
 * Point users to perldoc Jifty::Config in the new app config file
   [rt.cpan.org #24787]
 * Grammar fix and strengthen the "don't use this for new deployments"
 * Since plackup -s FCGI doesn't work, don't recommend it

TESTS
=====
 * Fix a test that wants the old-style html tag

-----------------------------------
Jifty 1.01209 - December 9th, 2010
-----------------------------------
  ____  _        _    ____ _  __  _ 
 |  _ \| |      / \  / ___| |/ / | |
 | |_) | |     / _ \| |   | ' /  | |
 |  __/| |___ / ___ \ |___| . \  |_|
 |_|   |_____/_/   \_\____|_|\_\ (_)

 The biggest change since the last release is Jifty's move to Plack.  Please
 be sure to read the INCOMPATIBILITIES section below.

INCOMPATABILITIES
=================
 Jifty is ported to PSGI using Plack.  This changed much of the request and
 response handling code, but hopefully in ways that don't hurt existing apps
 too much.

 * The following methods are removed:
   - Jifty->handler->apache
   - Jifty->handler->cgi
   Most methods for ->apache and ->cgi are provided by the Compat plugin,
   which is automatically loaded for older jifty apps.  Use corresponding
   header methods of Jifty->web->request and Jifty->web->response.

 * Printing to STDOUT deprecated.  Use outs, outs_raw, or
   Jifty->web->response->body() instead.

 * Munging and using the %ENV hash is deprecated.  Use
   Jifty->web->request->env instead.

 * Jifty::Server::* no longer exist, but you probably weren't using them
   directly anyway

POSSIBLE INCOMPATIBILITIES
==========================
 * template_exists and render_template now live in Jifty::Web instead of
   Jifty::Dispatcher
 * Jifty::JSON updated to use modern JSON.pm (2.xx): This removes the
   "singlequote" option. Instead, HTML escape the entire blob of JSON if you
   plan to put it in an HTML attribute.  Jifty::JSON will croak if you attempt
   to use the "singlequote" option.

CORE
====
 * Uploads are promoted to Jifty::Web::FileUpload objects for easier handling
   in actions. They should be backwards compatible with CGI.pm's lightweight Fh
   objects.
 * Pass the intended action (create, update) to canonicalizers
 * Pass the current state of other parameters/attributes to validators,
   canonicaliers, and autocompleters
 * Update actions set the record's ID in the result (imitating Create actions)
 * Jifty::Web::Menu improvements, including YUI menu support and easier
   subclassing
 * CRUD: New sort headers
 * CRUD: Allow subclasses to customize which search fields are rendered
 * Revert a bunch of incorrect HTML escaping of <script> content
 * Be helpful and Warn if a keybinding won't work because of a missing element ID
 * CAS: Add a memcached backed store
 * Refactor Jifty::Web::Session to extract the Jifty::DBI-based store
 * Add an OrderedList form field widget
 * Add an Uploads (plural!) form field widget
 * Add a tool (utils/un-serial.pl) to standardize Jifty->serial values in
   output files, for easier diff'ing
 * Add an AboutMe action for dumping the CurrentUser -- useful for REST apps
 * Add a way to explicitly create a new session
 * Inspect callers to default to http URLs for notifications instead of the
   scheme of the current user
 * View: Make it possible to override the page class per page
 * Add an after_include_css trigger

PLUGINS
=======
 * Config: nav menu munging can be disabled
 * Halo: HideHalos config setting enables turning off Halos even in DevelMode
 * SQLQueries: Add an option to EXPLAIN all queries
 * RequestInspector: Support display only on a certain cookie value
 * RequestInspector: Add a persistent storage option
 * RequestInspector: Add an aggregate rendering view
 * CompressedCSSandJS: Support early generation of CSS/JS at server start
   rather than first request
 * CompressedCSSandJS: Move CAS serving methods into Jifty::CAS (and PSGI-ize
   them)
 * CompressedCSSandJS: Rewritten as Plack middleware rather than a Jifty
   dispatcher
 * REST: Add __not/<column>/<value> syntax for /=/search URLs
 * REST: Support serialization of refers_to model columns
 * REST: Cache bust before returning a 302 Found to avoid returning an invalid
   Location: header
 * REST: Expand valid_values when describing an action's params
 * Authentication::Password: Fix a bug where a user can't read their own email
   address
 * Authentication::Password: Make the login and signup links tangent

I18N
====
 * User language preference in the database is now respected

JAVASCRIPT
==========
 * Update json.js
 * Move functions in bps_utils.js to the Jifty.Utils namespace
 * Replace JSAN libs with jQuery calls
 * Remove unused formatDate.js
 * Replace autocomplete implementation with a modified version of jQuery's
   Autocomplete plugin.  Note that this is different than and predates the
   jQuery UI autocomplete module.
 * Update jQuery to 1.4.1
 * Add jQuery UI 1.7.2 with the sortable module
 * Add a region update helper Jifty.updateRegion
 * Remove thickbox's unused and problematic CSS

BUGFIXES
========
 * Only cache the current_user object if the session is loaded
 * Don't modify the form value in-place when checking placeholder text to
   workaround a bug in IE7 and 8
 * Various for Jifty::Web::Menu
 * Various Javascript syntax fixes for IE
 * Various and sundry encoding fixes
 * Lots more tiny fixes here and there

DOCS
====
 * Update app_behaviour.js doc for the jQuery implementation
 * Fix example lighttpd config and doc its quirks
 * Various small improvements
 * Spellchecked all the POD :)

TESTS
=====
 * Many new and updated tests
 * Tests should now be (and hopefully stay!) warnings free
 * LogLevel now defaults to FATAL (instead of WARN) so expected errors don't
   confuse users. This is overridable by setting JIFTY_TEST_LOGLEVEL in your
   environment.


-----------------------------------
Jifty 0.91117 - November 17th, 2009
-----------------------------------

POSSIBLE INCOMPATABILITIES
==========================
 * Don't call App->start if we're running with no handle (i.e., `jifty schema`)
 * Render PKs as read-only in update actions.  If you do not specify
   which parameters to render for update actions, this will begin
   rendering id as a read-only field.
 * Replace AdminUI's CRUD with Jifty::View::Declare::CRUD.  You may
   need to run something like:

     perl -MFile::ShareDir=dist_dir -e 'print dist_dir("Jifty")' \
      | xargs sudo rm -ir

   ...to make sure the old CRUD is gone so the new CRUD can take its
   place.

CORE FEATURES
=============
 * Page region preloading (see Jifty::Manual::Preload)
 * Optimize magic curent_user intuition a bit
 * Add expired_update/create helper method to session collection.
 * Bump JDBI dep to 0.58 for SetupWizard's available_databases queries
 * Warn about next_page 'url'
 * Add DBI as an explicit dependency
 * Allow underscore in time_zone for set_current_user_time_zone
 * by-pass additional column attributes of models to corresponding
   form fields of model actions.
 * add a "raw_html" option to Jifty::Web::Menu items

CRUD
====
 * Warn about missing object_type
 * Don't pass the update action to display_columns
 * Pass on extra arguments to render_param from CRUD
 * Popout CRUD update forms
 * CRUD: Prefer the column's label to its name when available
 * Make CRUD search a lightbox instead of the horrific splat it is now
 * Use paging for CRUD listings

DOC
===
 * Cookbook: how to use postgresql database instead of sqlite
 * Cookbook: file upload code snippet
 * Cookbook: how to catch action results and POST data
 * Clarify the signature of render_param
 * Fix pod of Jifty::LetMe; productse "path", not "token"
 * Jifty::Web::Link doesn't exist. Jifty::Web::Form::Link does.
 * Minor tutorial improvements

I18N
====
 * zhtw: note translator
 * zhtw: Add Jifty::Manual::JavaScript_zhtw
 * zhtw: Add Jifty::Manual::Actions_zhtw

PLUGINS
=======
 * SinglePage: link test
 * SinglePage: add hr between test links
 * SinglePage: fix spa for link with parameters
 * Authentication::Password: missing email field in login_widget when we don't use login_by: username
 * SetupWizard: Change "Save" to "Next"
 * SetupWizard: Skeleton of the SetupWizard tests
 * SetupWizard: Basic tests to make sure stepping through the wizard works
 * SetupWizard: Make sure we update the site_config correctly for each step of the process
 * CompressedCSSandJS: add skipped_js; some js does *not* work if compressed
 * I18N: specify jquery asynchronous by option async.

REFACTOR
========
 * Stub out Field->preload_javascript
 * Factor javascript_attrs into a second method for building up an
   inspectable data structure
 * Break up $update into $update_json
 * Improve clarity of _values_for_field
 * Refactor Select's render_widget so it can be extended
 * Refactor handle_comp so that we can reuse its setup

TEST
====
 * Add @post_chdir to Jifty::Test::Dist for tests that need to do stuff
   between chdir and Jifty load
 * Provide strict mode to require no warnings (from test server for now) during tests.
 * Workaround the problem plan() only ignores unknown arguments if it sees known ones.
 * strip jifty-specific test import options in import_extra
 * appropriate test config tweaks for coverage run.
 * utility for running tests with coverage.
 * find uncovered mason files.
 * Handle use Jifty::Test 'no_plan' more gracefully than exploding
 * Refactor most of action_field_value into action_field_input
 * Only run Jifty::Test's teardown code if it setup
 * Use Test::Script::Run's get_perl_cmd instead of reinventing it
 * Use get_perl_cmd for restart.t too

VIEW
====
 * Improve debug information by including the servicing view handler in message
 * Add a css file for CRUD
 * Integrate facebox into jifty
 * Hide elements with the jshide class
 * fix a lot of missing escapes in ::Field::Collection and some other
   obvious problems, probably it never been used
 * List of checkboxes for multiple-choice selection
 * If we are in https, then stay in https
 * mason_scomp helper function in Jifty::View::Declare
 * Support for an "all" link in /_elements/paging


------------------------------
Jifty 0.90701 - July 1st, 2009
------------------------------

BUGFIX
======
 * Fix a bug in jifty.js when extracting ordering information for
   actions submitted via AJAX

I18N
====
 * Updated zh_tw translation

-------------------------------
Jifty 0.90630 - June 30th, 2009
-------------------------------

POSSIBLE INCOMPATIBILITIES
==========================
 * Modules which 'use Jifty::Dispatcher -base' and 'use
   Jifty::View::Declare -base' will have strict and warnings
   automatically turned on in them.

CORE FEATURES
=============
 * Factor out available_values into a method
 * Support plain strings in available_values
 * In mandatory fields, tell the user which fields failed validation

REFACTOR
========
 * Add a Jifty->admin_mode method; this should be used in place of
   Jifty->config->framework('AdminMode')

BUGFIX
======
 * Don't rely on cwd for creating and reading PID files
 * Automatically create the pid dir if it's not existent
 * Even admin users couldn't access the online docs
 * jifty_root returned a wrong path (actually a wrong volume) if we're
   not in the same volume as we installed Jifty
 * Extract ordering information for actions submitted via AJAX
 * Fix SPA history event on page load and page reload

CRUD
====
 * Don't show new item widget unless current user can create
 * Make display_columns fall back to the record's readable columns

I18N
====
 * Updated zh_tw translation

PLUGINS
=======
 * REST: Run more of the dispatcher tests
 * REST: Support .html format
 * REST: 403 if the record is unreadable
 * REST: Display actions valid_values
 * SQLQueries: Display query time in each query's summary
 * SetupWizard: Plugin to make it easy for end-users to set up your
   app
 * Config: Plugin to add configuration editor

DOC
===
 * Updated zhtw tutorial
 * Provide a Template::Declare page region example

TEST
====
 * Per-test Test::Builder object, for compat with new nested TAP
   support in Test::More

VIEW
====
 * Add extra css selectors, allowing arbitrary growl updates

------------------------------
Jifty 0.90519 - May 19th, 2009
------------------------------

POSSIBLE INCOMPATIBILITIES
==========================
 * Jifty::Mason::Halo has been demoted into into
   Jifty::View::Mason::Halo; if your wrapper scripts invoked methods
   in Jifty::Mason::Halo, they may need to be changed.

CORE FEATURES
=============
 * Add a Jifty->web->qualified_parent_region for munging your sibling
   regions
 * Basic background process support via Jifty->background
 * Add and use the display_length attribute on columns
 * Make Jifty::DateTime->from_epoch(100) dwim
 * Server script immediately forks, so it can be restarted
 * Flush and close the client connection before running after {}
   blocks

CRUD
====
 * When we delete an item in CRUD, don't refresh the parent, because
   that closes open editing forms. Just replace the current region
   with empty
 * Make no_items_found a region
 * When you use CRUD to create a new element, clear any existing "No
   items found" notice
 * Hooks for overriding the display of a particular form field
 * Factor out page_title for CRUD

I18N
====
 * Apply maketext perl plugin to pl,pm files, to grep more kinds of
   i18n string formats.
 * Fix localization js typo

BUGFIX
======
 * Call to _page_class needs parens to not get parsed as a package
 * Avoid use of "packge HTML::Mason::Exception", which causes PAUSE to
   hate us
 * Fixes for plugin share paths when running Jifty out of @INC
 * Comment the warning when ApplicationClass::Config is not a
   sub-class of Jifty::Config
 * Move pubsub activation to being on document ready, just in case
 * Fix a function call name
 * Give an actual error message when there's no current user
 * Set the InactiveDestroy on the dbh when backgrounding
 * In forking servers, disconnect the database before stalling on accept
 * Fix another shared database handle between tests and test servers
 * There is no utf8 in this file, thus no need for "use utf8"
 * Always specify _which_ file had errors opening when you die

DOC
===
 * Begin making POD coverage a little happier with TD templates
 * RequestInspector API doc
 * Pod coverage for script classes
 * POD coverage for SQLQueries
 * Fix POD warnings find by lintian tool from debian packaging
 * Better POD coverage
 * New entry in Manual::Cookbook: Render model refers_to field as a
   select widget with meaningful display name
 * Fix cookbook "brief_description" section
 * Update Manual index
 * Updated japanese tutorial
 * Updated zhtw tutorial
 * add Deploying_zhtw, AccessControl_zhtw

INSTALL
=======
 * Update to Module::Install 0.85
 * Depend on JDBI 0.57 because of display_length and
   rename_table/rename_column
 * Bump WWW::Mechanize dep for working ->back method

PLUGINS
=======
 * allow plugins to return more than one static_root.
 * Add a RequestInspector plugin, which any per-request debugging aids
   use
 * Reimplement SQLQueries as a RequestInspector consumer; LeakTracker,
   Gladiator, and NYTProf now also use RequestInspector
 * Include sum of query time in the SQLQueries summary
 * Try harder to avoid loading a prereq_plugin multiple times
 * Refactor SQLQueries to use a real view
 * SQLQueries further display: bind parameters and stack traces
 * Don't display bind parameters if there are none
 * Add a Config plugin, for adjusting Jifty configuration from the
   application; can restart the standalone server to take changes,
   additionally.
 * Remove custom page {} sub from Password's View class.  The page {}
   in Password's View class simply delegated to the application's View
   class' page {} -- no other part of the TD page code uses this
   codepath.  This _may_ break backwards compatibility in some
   applications, however.

PUBSUB
======
 * Every 10 seconds, have PubSub send a whitespace character as a
   keep-alive.  Without this, Pubsub children under a Forking server
   stick around forever after the client has left the page.  This does
   not address the problem of FastCGI clients, which have a similar
   problem.

REFACTOR
========
 * Split Jifty::CAS::Blob out, and document
 * Migrate to new rename_table/rename_column in JDBI
 * Factor out the actual record creation in JARC into a create_record
   method
 * Refactor away duplication in Jifty->web->link
 * Change all calls from Template::Declare->(new|end)_buffer_frame to
   new API

TEST
====
 * Improve clarity and correctness of moniker_for
 * Add a test for restarting the server
 * Fix a non-deterministic test which failed when load was too high
 * Silence TODO warnings
 * Avoid undef warning
 * Squelch debug message unless running verbosely

VIEW
====
 * Pass $self to page's meta so method dispatch still works
 * Apps can now include app-late.css for restyling YUI and jQuery and
   whatnot
 * Give timepicker buttons a label of "Pick time"

-------------------------------
Jifty 0.90409 - April 9th, 2009
-------------------------------

POSSIBLE INCOMPATIBILITIES
==========================
 * Mason's dhandler is no longer in charge of generating 404's;
   instead, the dispatcher catches when no views can handle a request.
   The 'mason_internal_error' page has also been renamed to the more
   straightforward '/errors/500'.

 * Actions found under Jifty::Plugin::SomePlugin::Action are now
   denied.  As these actions are always mirrored under the
   application's YourApp::Action class, this provides a single point
   of extensibility and access control.

   As long as plugins and applications always refer to the
   application's mirrored action class -- which they should be doing
   already for extensibility -- this change does not affect backwards
   compatibility.

 * AppClass::Action is now a mixin, and does not inherit from
   Jifty::Action.  This removes a diamond inheritance pattern from
   autogenerated jifty actions, and those made by `./bin/jifty
   action`.  This is additionally needed in order to allow `jifty
   action`-generated UpdateWidget actions to inherit from a consistent
   and correct set of parents.

   This _will_ break existing actions which only inherit from
   YourApp::Action but not Jifty::Action as well.

 * The div with id 'jifty-wait-message' has changed CSS, and now
   includes an animated 'spinner.'  Applications which customized the
   CSS of this element may need to adjust their CSS.

 * Jifty no longer uses the 'prototype' javascript library by default,
   instead relying on 'jQuery'.  Applications running config file
   version 3 and below will have the 'Prototypism' plugin added
   automatically, which enables compatibility with the 'prototype'
   javascript library.  This plugin can be safely removed if your
   application makes no use of 'prototype'.

 * URI unescaping is now consistent between FastCGI and standalone


SECURITY
========
 * Fix a security hole in the REST plugin which let you call any
   method on the model.  We were checking the load by column with
   valid_column instead of the display field.  This would not be done
   with any elevated privileges, but still might have allowed
   unexpected access.
 * Requests to /=/subs how return immediately if PubSub is turned off,
   instead of consuming a thread on the server


CORE FEATURES
=============
 * Jifty::Datetime has been retooled to be more generic
 * Allow subclassing of Jifty::Config into YourApp::Config
 * Store the request method on the request object.  This is so a POST
   request with an action, which is redirected to a new URL in a
   before {} block, doesn't show the user an obscure 'Action denied'
   message.  Since the original request with the action was a POST
   request, it is _not_ a cross-site scripting vulnerability.
 * YAML configuration file merging is now slightly smarter for
   specific listrefs: MailerArgs and View.Handlers arguments now
   replace earlier settings, rather than appending to them.
 * Overload stringification of ClassLoaders, so warning messages with
   @INC are a bit more educational
 * The configuration setting FallbackViewHandler has been removed, as
   it is no different from the last Handler in the View section.  For
   backwards compatibility, Jifty::Handler still adds it to the set if
   it exists in your config file, though.
 * In the DateTime filter, use the application's DateTime class if
   they have one
 * Handle Jifty->web->new_action('CreateFoo', moniker => 'create_foo')
   (makes "class" optional)
 * Move Mason-specific methods out of Jifty::Handler
 * Add an "explain" method to Jifty::API, to trace action deny/allow
 * Deny and hide autogenerated application action abstract base
   classes.
 * Make Net::Server subclasses use Log4perl infrastructure
 * Move log messages, whenever possible, to $self->log rather than
   Jifty->log
 * The code that walks the calls stack to find the correct
   current_user has been refactored.
 * Split out Jifty::View::Mason::Request (renamed from
   HTML::Mason::Request::Jifty) into its own file.


ACTIONS
=======
 * Obviate the need for the really short sub record_class {...} in
   most cases of YourApp::Action::UpdateFoo (and SearchFoo, DeleteFoo,
   and CreateFoo)
 * Added an Execute virtual action for help building general "do
   something to a record" actions.
 * Updated the Create, Execute, and Update actions to make them easier
   to extend via Jifty::Param::Schema
 * Extract the validation of valid_values into a method which is
   overridable
 * Whenever we can (on any action and on record ->creates), pass in
   the other field values so a validator can base its validation on
   those as well.
 * Add an option for force ajax validation failures on empty form fields
 * Allow earlier fields to set validation failures on later fields
 * "ajax validates" on a column should actually activate it, with an
   action validator
 * Add a Time and DateTime renderer
 * Add a Bulk update action
 * Add report_detailed_messages option in Jifty::Action::Record
 * Allow literal region names in qualified_region
 * Allow action parameter renderers with :: in their name
 * Make Jifty::Action::Record::Search skip container columns.
 * In Jifty::Action::Record::Search actions, "contains" conditions
   should not kick in if its length is 0.
 * Don't push Jifty::Action onto @ISA if the class is already a
   Jifty::Action


COMMAND LINE
=============
 * `jifty console` has been removed in favor of `jifty repl`, which is
   provided by Jifty::Plugin::REPL.
 * `jifty deps` has been removed in favor of Shipwright.
 * Added `jifty version` command
 * Add a --no-bootstrap option for `jifty schema` command
 * Quiet down warnings about missing application root when creating a
   new application with `jifty app`
 * If someone creates an app with a Foo::Bar name, make it Foo-Name
   for them.
 * Add control of running user, group, and host in standalone server


PUBSUB
======
 * Multiple regions can be subscribed to the same PubSub channel
 * Coalesce region updates in PubSub.
 * PubSub updates can now have effects on removal and addition.
 * Support for Jifty->subs->update_on( class => 'SomeEvent' ) as a
   shortcut.
 * Add an Jifty::Event::Log, and a Jifty::Logger::EventAppender, so
   you can cause arbitrary log messages to send events, based on your
   log4perl config.
 * Don't connect to PubSub during cleanup, and disconnect PubSub after
   initialization


I18N
====
 * Locale::Maketext::Lexicon is not smart about seeing the same path
   more than once.  This is a problem if the app uses multiple
   plugins, which all point to the Jifty share directory for their po
   files.
 * Updated fr, ru, zh_tw, ja translations
 * Added `jifty po` script to manage po and pot files


BUGFIXES
========
 * Delay view setup for as long as possible; this prevents
   command-line scripts from creating Mason cache directories.
 * Better warning-proofing for 5.10, which gets picky about lc called
   with undef, like render_as sometimes is.
 * Let Jifty::JSON export objToJson and jsonToObj if the user requests
   it
 * Log an error on invalid display_from or value_from in Jifty::Action
   valid_values
 * In void context, Jifty->web->link renders the link or button
   automatically.
 * Fix memory leaks due to weak reference in Jifty::Web::Menu,
   Jifty::Web::Form::Field, and Jifty::Web::Menu.
 * Check that a valid_values collection has a ->count before calling
   ->first on it
 * The "get" function of Jifty::Dispatcher contained a bug that made
   it return '' whenever the actual value was '0'.  Additionally,
   show(0) did not work, and set(foo => 0) and default(foo => 0) would
   print '' instead of 0 in debug log.
 * Do not attempt to create sqlite databases with colons in the
   filename, as win32 does not allow them.
 * When setting the continuation request's path in a redirect, we need
   to unescape it to be consistent with Apache, lighttpd, and
   HTTP::Server::Simple
 * Split the _current_ continuation from the continuation we're
   returning or calling into.  This means you can return from a
   continuation you're not in, and it does the right thing if actions
   fail to validate, and the call doesn't go through.
 * Force Net::Server to not duplicate filehandles when it forks
 * When we set up database connections, first purge the memcache
   connections, if any; reusing memcache filehandles leads to broken
   connections.  After we fork in the server, we re-set up the
   database connections.
 * Fix potential connection problems after forking in the server
 * Intuit https better in Jifty->web->path
 * LWP::UserAgent explodes unless ENV{http_proxy} looks like a URI,
   and '' doesn't cut it.
 * Stop Jifty actions from loading by primary key if you pass in blank
   primary keys.
 * Don't try to drop the DB if we know it doesn't exist
 * Fix multiple loops which looped on $_, and called functions which
   implicitly modified $_
 * Include all css_files when not using compressed css
 * Clean up "action denied" warnings a bit, such that they give useful
   backtraces, and only give additional cross-site scripting warnings
   if the request method is GET.
 * Work around a bug in 5.10 where nested loops trigger "Attempt to
   free unreferenced scalar"
 * Don't reset keybindings when we display the keybinding div, or we
   never have any to display.


CRUD
====
 * Updated POD
 * Add support for predefined searches, and sort headers
 * If create from new_item_controls fails, don't show an empty row in
   the CRUD UI that goes away later.
 * 'id' column is not editable (though if you really demand it you can
   have it)


DOCUMENTATION
=============
 * Tutorial has been updated to use Template::Declare instead of Mason
 * Jifty::Manual::Javascript describes programming techniques for
   javascript in Jifty.
 * Jifty::Manual::jQueryMigrationGuide describes the steps in
   migrating from Prototype to jQuery.
 * Update copyright year to 2009
 * Updated documentation for `jifty` command
 * Added zh_tw translation of the tutorial


PERFORMANCE
===========
 * Don't call ->plugins _twice_, since Module::Pluggable doesn't cache
   at all, and stat is expensive
 * Subrequests should never need to run actions; this should speed up
   regions
 * Having a local $Request saves thousands of method calls to
   Class::Accessor per request
 * In Jifty::Web::Menu, cache ordering of children, and url value,
   more aggressively; also remove unnecessary _parent accessor
 * Cheat, in Jifty::CurrentUser, and walk around Class::Accessor
   methods in a hotspot
 * Install a faster Jifty::Web->out in the handler once we have output
   headers.
 * Remove uses of a Class::Accessor where we don't need one
 * In certain hotspots, walk around Class::Accessor calls and access
   the object hash directly.
 * When outputting links and buttons, only iterate over javascript
   attributes that have been set, rather than _all_ attributes.


PLUGINS
=======
 * In plugins, add support for "after app => run {...}" instead of
   just "after plugin Jifty::Plugin::Something => run {...}" in
   dispatcher.  This allows plugins to provide dispatcher rules which
   the application can override.
 * The following plugins, previously distributed as part of Jifty
   core, have been moved into their own distributions:
    - Attributes
    - Authentication-CAS
    - Authentication-Facebook
    - Authentication-Ldap
    - AutoReference
    - Chart
    - Comment
    - Feedback
    - Gladiator
    - GoogleMap
    - LeakTracker
    - Monitoring
    - OpenID
    - Quota
    - Recorder
    - SiteNews
    - TabView
    - Userpic
    - UUID
    - Yullio
 * The following plugins, previously distributed under plugins/ as
   part of core, but not installed by default, have been moved into
   their own distributions:
    - AuthzLDAP
    - CodePress
    - DumpDispatcher
    - EmailErrors
    - ExtJS
    - ProfileBehaviour
    - WikiToolbar
    - WyzzEditor
 * Added ViewDeclarePage plugin, for more advanced Template::Declare
   pages.
 * Several deprecated plugins have been removed:
    - AuthCAS (replaced by Authentication::CAS)
    - AuthLDAP (replaced by Authentication::LDAP)
    - EditInPlace
    - Debug (replaced by AccessLog)
    - Nothing
 * Authentication::Password: Extend Login action so people can use
   username to login, though email takes precedence of username
 * OnlineDocs: Cleanup and dispatcher-ize
 * OnlineDocs: Link to local application pod directly
 * OnlineDocs: Allow linking to specific page within documentation
   using /__jifty/online_docs/?n=Jifty::Manual
 * REST: Include the "by" column attribute in the REST interface for
   Net::Jifty
 * REST: Some doc for extending your REST interface's object dump
 * REST: Propagate output format across REST redirection
 * REST: Give help under /= as well
 * REST: Better errors from the REST API for hidden/denied actions
 * SinglePage: Added history support for links; we use the "Really
   Simple History" javascript library to make the magic work.
   (http://code.google.com/p/reallysimplehistory/)
 * SinglePage: Add a temporary variable for disabling spa in runtime.
 * SQLQueries: Also clear slow/halo queries on "clear queries"
 * SQLQueries: Avoid undef warnings from undef bindings
 * User: Since it is internally used as a flag to store if one has
   valid email address, the column "email_confirmed" should never be
   rendered.


TESTING
=======
 * Move a skip_all from compile time to runtime. some cpantesters
   failed a test file with no actual tests :(
 * Move t/lib/Jifty/SubTest.pm to lib/Jifty/Test/Dist.pm Additionally,
   make it descend from Jifty::Test, so you don't need to use both
 * Add test app from Peter Mottram to uncover this valid_values bug
 * TODOify some tests that need some virtual-column discussion
 * Depend on the $$ for ports, not on random numbers.  This reduces
   the likelihood of port conflict.
 * Add a test helper module for matching notification email sent
   during a test.
 * Fixes for updated LWP, WWW::Mechanize; ->get and ->post are not
   ->get_ok and ->post_ok
 * Add a TestServerWarnings plugin during tests, which allows us to
   have a warnings_like test, which checks warnings on the server
   side.
 * Bail early with exit value, if database drop or create fails
 * Do not load po files by default anymore.  You can provide l10n => 1
   for tests requiring po loading.


VIEW
====
 * Better integration between views, using a common
   String::BufferStack.  This allows cross-calling between
   Template::Declare and HTML::Mason templates.
 * Kill our custom popup notifications in favor of jGrowl.
   Additionally, use Behavior to change full-page action messages into
   sticky jGrowl messages.
 * Added a 'multiple' flag for select form field
 * Make the default "Loading..." display as an animated gif spinner
 * Support for "loading" fragments for lazy regions.
 * Add, and respect, the calendar-starts-monday element class for
   calendar javascript.
 * Add a render_hidden to Jifty::View::Declare::Helpers



-------------------------------
Jifty 0.80408 - April 8th, 2008
-------------------------------

I18N
====

 * Make account confirmation error message translatable - alech

 * r4925 removed loc.js from jifty::web, which should have been added to the
   i18n plguin. - clkao

 * random l10n. - clkao

 * typo in zh_tw.po. - clkao

 * updated zh_cn po - sunnavy

BACKWARD-COMPATIBILITY-PROBLEM
==============================

 * THE FOLLOWING CHANGE BREAKS BACK COMPATABILITY:
 * 'set' in T::D templates and the dispatcher no longer alters the
   values in the request itself.  It alters values that are not stored
   if the request is saved as a continuation.  This saves us from
   contiuation bloat due to objects getting stored in the
   continuation.  This does not lose us much, because any arguments
   set via 'set' will get a chance to be set again when the
   continuation is called.
   Due to the implementation, however, 'set' cannot be used any more
   to alter or add actions, state variables, or the like.  Some might
   view this new restriction as a feature, though, given how much of a
   kludge it felt like before. - alexmv

 * Complain loudly about back-compat when an action is denied. Changelog the
   Jifty::API changes. - sartak

 * Update YUI from 2.2.1 to 2.4.1 *** Please check your apps for
   incompatibilities as there have been *** many changes between these YUI
   versions. - trs

BUGFIX
======

 * add a check for the op to the dispatcher condition cache because on and the
   other ops generate different regexps - falcone

 * Check validity of PID in the lock file - alexmv

 * Delay things which call Jifty::Util::require; Jifty::Util is often in *mid-
   require* when Jifty::Everything is loaded, thus causing calls to
   Jifty::Util::require to silently fail. - alexmv

 * Don't single-quote our JSON output, since JSON technically only has double
   quotes. - alexmv

 * Fix for autogenerated modules. Since sticking a method into them can cause
   things to "inherit" being autogenerated(!), we instead keep a global hash
   of them. - alexmv

 * Fix schema code, which checked the wrong class for plugins overriding the
   app. - alexmv

 * Fix typo causing the CSSQuery plugin to fail - trs

 * Force time zone update on current_user change - alexmv

 * Jifty::Util->_require can muck up $1, $2 so save those before using
it. - sterling

 * Added an additional guard on actions to keep from short-circuiting
   record actions built from plugins that are overridden. - sterling

 * Jifty::Util::app_root - File::Spec::Win32's catdir() just got much more
   strict in PathTools 3.27, such that catdir('C:', 'perl') now returns
   'C:perl' instead of 'C:\perl'. - audreyt

 * Jifty::Web::Session::ClientSide - Unbreak this module by conforming to the
   latest ::Session API (with _cookie_name) as well as Base-64 encoding the
   cookie itself. - audreyt

 * Misc current_user cleanups to deal with issues unmasked by RT on
   Jifty - jesse

 * Now with more running under "use strict" - alexmv

 * Old requests from continuations may not have template_arguments set -
   alexmv

 * Jifty::Web::Session->continuations returns a hash, not a hashref. - alexmv

 * Revert r4829 -- it registers all actions in the *form*, which is
   wrong. - alexmv

 * Redirects during continuation return should catch dispatcher ABORTs -
   alexmv

 * Refactoring around the fact that Scalar::Defer::defer'd variables will
   never return undef until they're forced. - jesse

 * Revert r5120 for now; it breaks on page region updates, when regions don't
   know if they were in a form. A more correct fix (which will put this logic
   back) will be forthcoming. - alexmv

 * Static handler and CAS handler spit out same headers now - alexmv

 * Work around bug in Devel::InnerPackage - alexmv

 * Wrong column type. - alexmv

 * Warnings avoidance for undef valid_values in actions - alexmv

 * catpath wants a file, or File::Spec::Unix carps about undef values - alexmv

 * lockfile error-proofing - alexmv

 * A fix for a time zone bug exposed by Doxory: copy the time_zone from
   JDBI::Filter, but allow for overriding it - sartak

 * Actually, no, don't bless the result of Jifty::Result->as_hash - sartak

 * Backing out the previous commit as this has been moved up into Jifty::DBI.
   - sterling

 * Better error reporting if `jifty app` can't create directories (due to
e.g. perms) - nelhage

 * Bulletproof Jifty::Util->make_path - sartak

 * Bypass ACLs to check - trs

 * Check the database connection before handling requests. - sterling

 * Copying a reference unweakens it, so a small fix for that in JWFF-
>_action. But that isn't our leak, I think - sartak

 * DateTime->new is pretty strict, so use DateTime->now - sartak

 * Don't call _handler_setup unless the normalising accessor is used as
   mutator. - clkao

 * Don't try to make undef urls absolute - trs

 * Enforce uniqueness on (object_id, object_class, type) - trs

 * Fix a typo in r5217. - clkao

 * ID is sometimes passed into Jifty::Action::Record::Update, we want to
   ignore it if it doesn't change, to avoid spurious permission errors. This
   codepath could use some more thought - sartak

 * Improve Jifty::DateTime->new_from_string so that it can handle time zones
   properly, and add Jifty::DateTime->get_tz_offset. - sartak

 * In Action::Record::Delete and ::Update, don't require that error messages
   be returned from set_field and delete. This is to facilitate before_$crud
   JDBI::Record triggers - sartak

 * Make Jifty::DateTime->current_user_has_timezone work (ie without requiring
   a blessed reference) - sartak

 * Minor typo fix - jasonmay

 * Precedence - trs

 * Removing <!-- and --> from scripts because when evalScript() is called
   during Ajax loads, IE7 complains about syntax errors. - sterling

 * Rename $pkg to $file in Jifty::Util->_require, and don't append .pm if it's
   already there - sartak

 * Revert 4649 js memoization which caused .error div problems - sartak

 * Revert 4650 (cssquery change) because ".error is no longer hidden for the
   region being replaced with ajax" in some browsers - sartak

 * Revert 4746 because it's actually not evil at all - sartak

 * Tiny fixes in the new Jifty::Script::Script (hanenkamp++) - sartak

 * Two small fixes for Jifty::Result changes: missed two fields and for
   backcompat we need to bless the resulting hash into Jifty::Result - sartak

 * Use the cssQuery-jquery back-compat script, and have the CSSQuery plugin
   remove it. This way the jifty.js cssQuery call actually works. Which fixes
   the admin CRUD. Woo hoo - sartak

 * change only for readability. thank jesse san. - bokutin

 * fix Jifty->web->session->continuations. change accessor from $_->key to $_-
   >data_key - bokutin

 * fixed a wrong regex - sunnavy

 * for mysql varchar must be explicit (255 should be enough) - yves

 * move fakeapache lexwrap into after_listener_setup so other fakeapache
   instances won't be affected by jifty::server. - clkao

 * oops, revert accidental changes in the deferred sub. - clkao

 * revert load_or_create canonicalization and move discussion on jifty-
   devel - dpavlin

 * run canonicalization before load in load_or_create - dpavlin

 * schema upgrade error when creating new tables - ssinyagin

 * seems varchar(255) won't work, have to set max_length - sunnavy

 * tiny fix, sometimes options are undef - sunnavy

 * utf8 on $path cause garbage characters in Mason. This problem line in
   HTML::Mason::Compiler::raw_block() is $comment = "#line $line $file\n" if
   $self->use_source_line_numbers; If utf8 on $path was pass UTF8_ON = "#line
   UTF8_OFF UTF8_ON" ( $file is $path ) - bokutin

CORE
====

 * Added a JIFTY_APP_ROOT environment variable for forcing an app root even if
   we're in another directory - jesse

 * Code to actually fully remove a session - alexmv

 * J::Web::Session::ClientSide - Switch to Storable because we really want to
   serialize all kinds of things. - audreyt

 * Jifty::Web::Session::ApacheSession, a session backend that bridges to
   Apache::Session. - audreyt

 * Lockfile support - alexmv

 * Protected and private columns and models - alexmv

 * defer default value until we really care about it - jesse

 * Add 'jifty repl' which uses the awesome Devel::REPL - sartak

 * Add support for application overridden models which gives us:
(1) References from plugins to app models with less pain.
(2) An easier implementation path in cases where mixins are just extra work.
(3) Allows application flexibility to modify plugin models.
(4) Consistency with the way apps may override actions an notifications. - sterling

 * Add the continuation debugging tool from hiveminder - nelhage

 * Adding a CLI thingy to generate stubs for command-line scripts. - sterling

 * Allowing actions also shows them. Fix the defaults so that "weird" actions
   (such as Jifty::Action) are hidden. - sartak

 * Accept user_object->timezone for intuiting the user's time zone. - sartak

 * Force result->success to be 0 or 1, for the benefit of REST users - sartak

 * If the user runs "jifty server" before the first "jifty schema -- setup",
   create the database for them - sartak

 * Jifty::DateTime::is_date method, which tells whether the given J:DT is only
   a date - sartak

 * Let Jifty::Param::Schema actions define documentation for paramters. -
   sartak

 * Make Jifty::DateTime dates Jifty::Util->stringify to just yyyy-mm-dd, no
   00:00:00 - sartak

 * Make sure actions still fail when you set columns you can't update (or
   read) to undef - sartak

 * Make the json and yaml webservices use Result->from_hash - sartak

 * Move the REST object walking into Jifty::Result so that it may be
   reused - sartak

 * add an utility summarizing js file sizes and minified sizes. - clkao

CRUD
====

 * Don't explicitly register the delete action in CRUD - alexmv

 * new_item doesn't use an id -- don't try to get() it - alexmv

 * Small cleanups to CRUD views to help make RT work - jesse

 * unfubarring the admin CRUD step 1: give each item a form, instead of one
   form containing everything (which saddened Firefox) - sartak

DOC
===

 * Clean out un-necessary files from examples/ - alexmv

 * Deployment manual updates from Stanislav Sinyagin - jesse

 * Jifty::Dispatcher: Extremely trivial POD typo cleanup - audreyt

 * Jifty::Dispatcher: Trivial minimal POD fix for correct vim highlighting
   (avoiding "package" at the beginning of the line.) - audreyt

 * Make POD coverage happy - alexmv

 * POD nit in Jifty::Web::Session (no whitespace on line before POD
   command) - alexmv

 * Perltidy - alexmv

 * Port the chat demo to Template::Declare - jesse

 * Add myself to AUTHORS - bokutin

 * Fix POD coverage failures for the Comment plugin. - sterling

 * Fix part about re-use of actions outside Jifty app by creating request and
   response just like Jifty::Test->web does. - dpavlin

 * Halo pod coverage - sartak

 * Steal documentation from the model class in Jifty::Action::Record - sartak

 * added mod_perl and file permissions info - ssinyagin

 * appended myself - ssinyagin

 * fix pod. - bokutin

INSTALL
=======

 * Update JSON::Syck dependency to 0.29 because previous versions contains a
   bug that would deserialize "foo:bar" to "foo: bar" when SingleQuote is set
   to true. - audreyt

 * Add ApacheSession to MANIFEST. - audreyt

 * Bump JDBI dep - alexmv

 * Bump Scalar::Defer dependency, for great lack-of-memory-leak justice -
   alexmv

 * Don't pull in another dep for something trivial - alexmv

 * Email::MIME and Email::Simple went through a period of not talking to each
   other, throwing crokery around, and generally making life miserable for
   each other. Force versions of things which are at least on speaking terms
   again. - alexmv

 * Regen MANIFEST since it's been a while... - audreyt

 * Updated Module::Install - alexmv

 * Upgrade Class::Inspector dependency so Win32 won't break with File::Spec
   3.16. - audreyt

 * Add Devel::Gladiator to Makefile.PL, other little fixes in here - sartak

 * Depend on Regexp::Common itself - sartak

 * Dependency on URI::Escape (which we're already using, probably pulled in by
   Mason) - sartak

 * More Makefile.PL tweaks - sartak

 * Typo fix in Makefile.PL - sartak

 * Update MANIFEST and META.yml - sartak

 * Use "recommends" instead of "requires" for optional dependencies. Comments
   requires Regexp::Common::Email::Address - sartak

 * debian packaging - yves

MISC
====

 * Refacotring/cleanup - jesse

 * Munging @INC isn't necessary in new scripts, Jifty does that for you
   now - sartak

 * We haven't needed File::Basename in bin/jifty for a long time - sartak

PERFORMANCE
===========

 * Add an ->enumerable method to record classes, so we don't try to create
   huge valid_values lists for record classes which are known-huge. - alexmv

 * Attempt to weaken another reference to the current action that may be
   leaking - jesse

 * Cache triggers for session and metadata - alexmv

 * Compressed CSS and JS caching backout - jesse

 * We somehow had dropped caching headers when we compressed css and
   js. - jesse

 * Don't load up the column object on create widgets unless we need it. -
   jesse

 * Beginning some serious refactoring of Jifty::Action::Record-
   >arguments - jesse

 * starting to split out current values of things - jesse

 * store the base 'arguments' hash and merge in default values on the fly.
   This should result in a healthy performance boost. But is also the first
   place to look if things start acting funny any time soon. - jesse

 * If we have a user object already, use it to fetch the email address when
   generating a LetMe - jesse

 * Fix menus to properly weaken "parent" relationships (and normalize _parent
   and parent) - jesse

 * Terrifyingly, the added /s causes escape_html (2% of hiveminder's runtime)
   to benchmark 200% faster. - jesse

 * There's no need to compile Dispatcher rules to regexes every time they're
   evaluated. Cache them. - jesse

 * nope - I'm wrong. bad benchmarking made me believe that the thing I am
   reverting was faster - jesse

 * Another JS speedup: cache the results of selectAll. it's called only 8
   times for /todo, but caching saves ~80ms. - sartak

 * Another copied weakref in Jifty::Web::Form::Field, though this code was
   just changed so I don't think it explains our white whale - sartak

 * Cache the log handle so the file isn't opened every hit - sartak

 * Compare old/new values for updating _before_ checking if we can update it
   (no point in saying permission denied for a column we don't want to
   actually change). However, only do the comparison if we can read the field
   so that we don't get bogus undefs. Everybody's happy now. Bonus: make
   references X by Y work when comparing old/new values - trs

 * Fix a real memory leak in Jifty::Web::Menu due to copying a weak reference.
   Woo! - sartak

 * Fix a validation bug where we'd get a lot of "extend=function (object) {
   return Object.extend.apply(this, [this, object]); }" arguments. This is
   because prototype.js overcomplicates form element serialization. - sartak

 * In deferred sub called from arguments, we need to use weakself. - clkao

 * use Jifty::YAML, not YAML - jesse

 * Shave off another 100ms by special casing the beastly 40% function - sartak

 * Speed up selection by class by using indexOf with space padding instead of
   regex - sartak

 * cssquery.js: thisElement is being called 11000 times for hiveminder's
   /todo. It includes an IE workaround. Use the workaround only if we're
   actually using IE. This cuts its runtime on /todo from ~220ms to
   ~100ms - sartak

PLUGIN
======

 * 'unexpected dispatch on REST' fixed - Patch from bokutin - jesse

 * A first pass attempt at a Devel::Gladiator plugin for Jifty. Doesn't seem
   to work very well - jesse

 * Autocompleter: Allow keyboard navigation in IE7 by hooking keyDown instead
   of keyPress. This fix arguably belongs to upstream (scriptaculous), but for
   now it resides in jifty.js. - audreyt

 * Check and upgrade plugin versions - alexmv

 * In authenticate::password plugin, do the password check on creation and
   prevent empty password. - clkao

 * It turns out that the keyDown navigation fix in Autocompleter applies to
   MSIE, not only MSIE7. Reported by: Stephen Lee - audreyt

 * Less spastic logging for the monitoring plugin - alexmv

 * Made Password Auth plugin able to work with attributes other than 'email
   address' for autoloading - jesse

 * Monitoring plugin - alexmv

 * Add a Jifty->web->current_user->is_oauthed - sartak

 * Force values in REST handler, so we get real values - alexmv

 * bugfix for 'new' classloader - yves

 * chg name column filter by ldapfilter - yves

 * made not changing your password no longer a criminal offense - jesse

 * fixed a bug someone introduced that mistakenly set password to
   varchar(255) - jesse

 * don't prepend http:// on https:// openid urls. - clkao

 * on verification failure, call continuation if there's one, rather than
   always redirect to /openid/login. - clkao

 * previous() method for doing diffs to the last value - alexmv

 * A few more OAuth tests I had left uncommitted, tired of 's'ing them
   :) - sartak

 * Add /=/search/ModelName/c1/v1/c2/v2/c3/v3/... for REST - sartak

 * Add Jifty::Plugin::Recorder::Command::Playback with some serious
   caveats - sartak

 * Add __limit/N to /=/search/ for when you really only want N results -- such
   as when displaying them in a dashboard widget O:) - sartak

 * Add a Queries plugin for examining the db queries made by your app - sartak

 * Add a Quota plugin which provides a framework for managing quotas in
   Jifty - trs

 * Add blog-style comments to just about any model. - sterling

 * Add pid to request log name so having multiple fcgi procs won't have a
   cow - sartak

 * Add query logging to halos - sartak

 * Add some "downgrade the info link if there's no information" logic - sartak

 * Add some support for dumping the Perl code of templates. For now, only
   for TD. And DDS is currently giving us a lot of extraneous bits (oh
   well) - sartak

 * Allow AuthenticateOpenID and VerifyOpenID for some pages - sartak

 * Allow playback of multiple files in one command, get rid of -f
   switch - sartak

 * Allow plugins to add new jifty commands. This requires an unreleased
   version of App::CLI, but otherwise works. Features usually come with a
   cost, and this one's cost is .02s on app startup. Worth it, IMO :) - sartak

 * Attributes: When we delete a record, delete any attributes it may
   have - sartak

 * Awright! Plugins can now fiddle with (TD) halos as they wish. As an
   example, query logging is activated only if you use the SQLQueries plugin.
   Which also fixes a bug where any queries caught by the Halo plugin would be
   lost to SQLQueries. - sartak

 * Checkpoint in the new Attributes plugin, a port of RT::Attribute - sartak

 * Content-addressable storage (in memory) facility for jifty. Port CCJS
   plugin to use CAS. - clkao

 * Don't 404 on a search with no results - sartak

 * Fix the current_user_can call - sartak

 * Fix the isa check in REST's _resolve. We instead want to fail if the class
   we check isn't a $base. - sartak

 * Fixing HTML dumping so that the HTML is more correct and easier to read
   when debugging. - sterling

 * Clean up the return values of the attribute mixin methods - sartak

 * Freeze and thaw the CGI object, because it can be a glob that upsets
   YAML - sartak

 * Wrap the YAML generation in eval {} too, because it is upsettable :) -
   sartak

 * Generalize __limit to __per_page and __page - sartak

 * Get rid of the warn select_query on adminui search - sartak

 * Display "1 entry" instead of "1 entries" - sartak

 * Give each OAuth page an OAuth title and subtitle - sartak

 * Give response code 405 (invalid method) on GET
   /oauth/{request,access}_token - sartak

 * Give the interesting classes jifty_serialize_format instead of hardcoding
   in recurse_object_to_data (obra++) - sartak

 * Halo refactor to allow arbitrary plugins to add their data to be
   displayed - sartak

 * Halos now display arguments - sartak

 * Have OAuth use our shiny new boolean type so that it works on multiple
   databases - sartak

 * I am Jifty::Plugin::GoogleMap::Widget user. Since rev.5170, no render
   google widget. I am not sure if this change is right. - bokutin

 * Instead of sticking 1 into is_oauthed, stick in the access token - sartak

 * Fix a bug in updating a consumer's timestamp - sartak

 * Keep track of whether we are OAuthed in the stash (this may move in the
   future, since current_user_can will probably want it) More tests,
   especially "don't let consumers oauth tokens while oauthed" - sartak

 * LeakTracker: complain if Devel::Events::Generator::ObjectTracker isn't
   loaded in time (nothingmuch++) - sartak

 * LeakTracker: log how much memory we're using at each request if
   Proc::ProcessTable is installed - sartak

 * Have the REST dispatcher use "documentation" meta-attribute in models and
   columns - sartak

 * Log successful OAuths - sartak

 * Make TD halos show up only if DevelMode is on, consistent with Mason
   halos - sartak

 * Make the OAuth models root-only - sartak

 * Make the default log path log/requests, and make the path if needed -
   sartak

 * More Recorder doc - sartak

 * More tests for, and cleanups of, OAuth - sartak

 * Move LeakTracker's reports into /__jifty/admin/ as well - sartak

 * Move the query reports into /__jifty/admin/ - sartak

 * Now each halo has a proper header. You can now toggle between rendered
   output and HTML source. It's ugly as sin, but it works. Other misc
   cleanups. - sartak

 * User has some choice how long to grant access (instead of only 1
   hour) - sartak

 * User may now choose to deny the consumer write access (the current_user_can
   check isn't working just yet) - sartak

 * Add CurrentUser->oauth_token - sartak

 * OAuth is now its own dist, Jifty-Plugin-OAuth - sartak

 * OAuth should set temporary_current_user, not current_user - sartak

 * OAuth: Better allow/deny notifications - sartak

 * OAuth: Better debugging output, small fixes - sartak

 * OAuth: Support for Authorization header - sartak

 * OAuth: hyperlink fixes, make deny come before allow so it's the default
   (when the user mashes enter) - sartak

 * OAuth: test that delete fails when the access token forbids write access We
   need to hook into JDBI::Record's before_$crud triggers because
   current_user_can may just say "yes the owner can delete" and we want to
   prevent that - sartak

 * OAuth: use 0 and 1 for booleans instead of '' and 't' to satisfy
   all(sqlite, postgres, perl). argh. Render allow/deny as a selectbox in
   REST - sartak

 * Old REST code was creating screwy hashes, use the new
   jifty_serialize_format instead - sartak

 * Punt the design issue by making SQLQueries and LeakTracker use your app's
   layout :) - sartak

 * Queries: begin renaming to SQLQueries because Queries is vague - sartak

 * REST's _resolve needs to take into account that we use :: as a seperator,
   but we give . as the separator - sartak

 * REST: Add /=/version, which only includes Jifty and REST versions. Bump
   REST to 1.00. - sartak

 * REST: Add __order_by, __order_by_asc, and __order_by_desc to
   /=/search - sartak

 * REST: Canonicalize search arguments - sartak

 * REST: Include a REST URL in Jifty::Record links. The HTTP_ACCEPT logic
   should be made smarter - sartak

 * REST: More documentation for /=/search - sartak

 * REST: Qualifying the entire model/action name will fail because it will
   have no leading :: - sartak

 * REST: We don't need the temporary hack any more for .js, since
   jifty_serialize_format already explicitly stringifies things - sartak

 * REST: bug in some old code: if (ref $x eq 'ARRAY') { %$x } - sartak

 * Recorder plugin: record and playback accurate HTTP requests. So far the
   record part is done. - sartak

 * Recorder: Defer loghandle creation until first hit, so not all commands are
   creating request logs - sartak

 * Recorder: Don't install the trigger if creating the loghandle failed -
   sartak

 * Recorder: Log all HTTP output from playback. This required a small API
   change to get unique filenames - sartak

 * Recorder: Rename handle attribute to loghandle due to a possible
   conflict - sartak

 * Recorder: Update Playback doc - sartak

 * Recorder: autoflush logfile just in case the server goes splat - sartak

 * Recorder: log how much memory we're using at each request if memory_usage
   is set. - sartak

 * Recorder: log when we started and ended each request in absolute
   time - sartak

 * Recorder: record the current user ID so we can still playback (to some
   degree) without the sessions table - sartak

 * Remove a bunch of code duplication between
   Jifty::{Mason,Plugin}::Halo - sartak

 * Rewrite the Gladiator plugin so that it now works, and do the log/view
   thing (which really wants to be generalized.. later) - sartak

 * Run delete_all_attributes _after_ deleting the original record, in case
   that fails - sartak

 * SPA is not compatible with letme's across clicks/submit for obvious
   reasons. So disable it when we got temporary_current_user. - clkao

 * SQLQueries: Finish renaming from Queries - sartak

 * SQLQueries: Hide the stack trace behind a more/less JS thinger - sartak

 * SQLQueries: Log queries as soon as they're made, instead of after the
   request - sartak

 * SQLQueries: keep track of the ten slowest queries and display them. The
   query page could use a bit of visual design. :) - sartak

 * Small OAuth doc improvements - sartak

 * Small fixes for newer OAuth spec - sartak

 * Some SQLQueries fixes - sartak

 * Some refactoring of Jifty::Mason::Halo. Now it too can support plugins
   munging the halo data. And its query logging is now off unless the
   SQLQueries plugin is used - sartak

 * Split between "Draw halos" and "Page info". Make halos look less offensive
   as well. - sartak

 * Style changes, flip between "draw halos" and "hide halos" - sartak

 * Template::Declare halos! (you'll need a bleeding edge TD though) - sartak

 * Test corrections, and depend on Net::OAuth 0.05 - sartak

 * The jQuery plugin is now obsolete since jQuery is no included in Jifty's
   core JavaScript files. - sterling

 * Updating the REST plugin to use PUTDATA added in CGI.pm 3.30. - sterling

 * Upgrade plugins before application so that application upgrades can depend
   on plugin upgrades - trs

 * Use Jifty::Util->absolute_path on the recorder log path - sartak

 * Use add_order_by for REST's __order_by, except the first time when we do
   want to wipe out the default ordering - sartak

 * Use record->jifty_serialize_format instead of the old result-
>_record_to_data - sartak

 * User-specific documentation at /oauth - sartak

 * add missing continuation in CAS login plugin - yves

 * allow authentication by mail or cas login and domain - yves

 * first cut of the iefixes plugin. no css yet. This includes
   javascript libraries from http://ie7-js.googlecode.com/, which is
   MIT-licensed. - clkao

 * mixin ldap authentication by email - yves

 * r4991 broke SPA redirect, since webservice_redirect is supposed to set
   things into request. Do that explicitly now. - clkao

SECURITY
========

 * BEHAVIOR CHANGE: REST will now list visible actions, not just runnable
   actions. This is because you generally want to disable actions during GET,
   but that breaks GET /=/action/ So if you have actions you really mean to
   hide, then you'll need to update your application. - sartak

 * Distinguish between *runnable* actions and *visible* actions in Jifty::API.
   This distinction will be used in the REST interface shortly. You should
   hide an action if the user will never be able to run it. You should deny
   actions if conditions aren't right for this request (such as during a GET).
   For example: Only administrators should be able to see a PublishNews
   action. Jifty->api->hide('PublishNews') unless Jifty->web->current_user-
   >is_admin Only users can run CreateGame (though nonusers can still inspect
   the action). Jifty->api->deny('CreateGame') unless Jifty->web->current_user-
   >user_object - sartak

 * Never send a cookie with cached content. Misbehaving proxies cause terrific
   problems. - sartak

 * Security fix: Deny all actions (except Autocomplete and Redirect) on GET.
   You must whitelist actions known to be safe, such as with: before '*' =>
   run { Jifty->api->allow('CustomSearch') }; - sartak

TESTING
=======

 * 01-version_checks.t: Avoid warnings. - audreyt

 * Fix tests for new region styling - alexmv

 * Add todo tests for validate_password to be run on set_password, which isn't
   currently the case. - clkao

 * Jifty::Test::WWW::Declare doesn't call import_extra, so move 'requires' and
   plan into ->setup - alexmv

 * We have to use Jifty::Util in Jifty::Test, alas. :/ - alexmv

 * Remove bogus svn:keywords from a test file - alexmv

 * Only clobber ::plan if we actually output a plan already - alexmv

 * Output a plan before loading modules - alexmv

 * Prune the test subdirectories - alexmv

 * Purely pedantic/cosmetics fix to all Makefile.PL under t/TestApp-*/ so
   their "name" instruction contains properly formatted distribution name such
   as "TestApp-JiftyJS", instead of the incorrect module name such as
   "TestApp::JiftyJS". - audreyt

 * Run tests against an apache httpd - alexmv

 * Test fixes for there being one more arg to JS Region.new - alexmv

 * Update test for the new world order where empty labels are not
   output - alexmv

 * small fixes to make the tests run from the main harness - jesse

 * t/TestApp/t/06-validator.t fails with an older HTTP::Server::Simple -
   falcone

 * AJAX canonicalization tests submitted by Peter Mottram - sartak

 * Add a "Play" action with various argument schema, and a test to test
   javascript behaviour based on the schema. The first test is to test if ajax
   canonicalized setting works. - gugod

 * Add a simple tangent/return test file, this is to protect the behaviour
   that, clicking on a "return" link should return to previous tangent point,
   or default location if none. - gugod

 * Add a simple test to test Action object initialization. - gugod

 * Add a test to test the link that updates multiple regions at once, and also
   showing an alert(). - gugod

 * Add canonicalization tests. - gugod

 * Add t/Mapper/lib/Mapper/Dispatcher.pm which whitelists the GetGrail and
   CrossBridge actions - sartak

 * Adda another URL that shows the same form as /c/page1/ to test if the
   form_return really return to the tangent point. - gugod

 * Better diagnostics from OAuth - notify user when we have Net- OAuth <
   0.05 - sartak

 * Don't run Comment plugin test if a prerequisite is missing. - sterling

 * Ensure that giving OAuth consumers write access works - sartak

 * Finish two sets of selenium tests for testing continuation. The goal is to
   see if form_return actually returned to where it begins. The entry point
   can be either '/c/page1', or '/c/page_another_one'. - gugod

 * Fix dependency test failures from the comment plugin. - sterling

 * Fix some test failures caused by halo output in TD generated images. Anyone
   have any better ideas? - sartak

 * Fix test that was requiring search to return 404 for no matches - sartak

 * Fix the comment view test page. - sterling

 * For testing continuation, add a "AddTwoNumber" wizard like the one in
   Jifty::Manual::Continuations, only it's written with TD rather then mason
   template. To manually test it, goto /c/page1 first. Type some number and
   hit enter. You sholud then visit /c/page2. Type some other number and hit
   enter. You should return to /c/page1 with the result of AddTwoNumber action
   shown in the message box. - gugod

 * Forgot to commit TestApp::Plugin::Attributes::Model::Song - sartak

 * Get rid of the JQuery plugin tests hanging around from a now gone JQuery
   plugin - trs

 * Have t/01-dependencies.t report the entire dir+filename, not just the
   filename - sartak

 * Import a Test.More (the jsan module) -based js test to test behavour.js.
   Including a .t wrapper that launches a selenium server pointing to the
   harness test. - gugod

 * Improve tests, the basic protected resource request works, yay. PLAINTEXT
   fixes. - sartak

 * Jifty::TestServer: explicitly ignore ClassLoader objects in @INC while
   stringifying - ishigaki

 * Make Crypt::OpenSSL::RSA optional for OAuth, and fix the tests to not
   require it - sartak

 * Missing $server in a test? I doubt this is intentional, so fixing - sartak

 * Test fixes so that http methods other than GET and POST work - sartak

 * TestApp::OAuth::User->current_user_can - sartak

 * Prepare a TestApp just for testing jifty.js javascript functions. The goal
   is to test javascript code, not just perl code, so using selenium is a
   must. Pretty much like this test suit should be the counter-part of mech-
   based tests under TestApp/. Provide a simple test file to test
   Jifty.update() function, both with and without argument. - gugod

 * Replace "is $html, ..." with $self->wait_for_text_present_ok Isolate
   current tests in a bare block, so we can put more tests in this file
   easily. - gugod

 * When we fail to connect to the selenium rc, skip the rest of the
   tests - sartak

 * force TestApp-JiftyJS to use en on server side, otherwise the browser
   launched by selenium might be trying to use other languages we have
   translation for, causing the expected error output being localized. - clkao

 * ignore TestApp-Plugin-Attributes' var and log - sartak

 * jQuery: Fix our one test failure (caused by a broken test) - sartak

VIEW
====

 * onclick => { submit => { action => $a, arguments => { a => "b" }}} now
   propagates the action arguments to the non-JS click as well. - alexmv

 * 'mandatory' columns are not mandatory if they have a default and didn't
   appear in the form. - alexmv

 * Allow onclick, etc, handlers on arbitrary elements - alexmv

 * Possibly making region inclusion display-neutral - jesse

 * Check that forms that are opened are closed - alexmv

 * Perltidy to fix indentation in Jifty::Web - alexmv

 * Don't output an empty label element - alexmv

 * Failing test for error pages - alexmv

 * Finish pulling out html comments, and the now-unnecessary newlines as
   well - alexmv

 * Fix error pages. This is a perltidy; the only semantic change is to replace
   Jifty->web->return with form_return - alexmv

 * Fix setting of class attribute for calendars (className is only for
   element.className) - trs

 * Fixes for region updates in the wake of r5216 - alexmv

 * Lazy page regions (only work with JS) - alexmv

 * Lazy pageregions can't be done using behavior, as the JS which defined the
   region might not have been run yet if it itself came from a region load
   (for fragments responses, behavior is applied immediately, scripts are run
   after some settle time). Thus, put the region-updating code into the page
   directly. - alexmv

 * Make view handler classes configurable. - jesse

 * One-character fix to get lazy regions actually working - alexmv

 * The correct logic (putting the registration on the button) was already in
   the $action->button method; move it into Clickable. - alexmv

 * Regions need to know if they started with the form open - alexmv

 * Skip ajax canonicalization on checkboxes - alexmv

 * Template arguments override normal args, when talking to templates - alexmv

 * Template arguments don't propagate down into pageregion calls - alexmv

 * Warn about template_argument change side-effects - alexmv

 * We should skip registering it on the button if it has made any appearance
   in the form - alexmv

 * When doing new region creation, make sure we get the new value of the
   element that we're applying Behavior, etc, to. - alexmv

 * YUI classes weren't getting properly attached because $class changed to
   $args{class} (why didn't strict/warnings catch this?) - trs

 * Attach the proper yuimenu(bar)?itemlabel class to links - trs

 * You no longer have to manually register an action if the only place it's
   used in a form is in a submit. exception: if you use a moniker rather than
   an action object, we don't have a way to convert that into the action, so
   that still requires a manual registration - jesse

 * _current_collection shouldn't ever be able to get an object passed as
   search_collection - alexmv

 * app_behaviour.js was not enable in IE6. jQuery less than 1.2.2 has problem
   in .ready() (We have 1.2.1). - bokutin

 * cleaning up some old templates - jesse

- Merge /bps/jifty/jifty/branches/cssquery-refactor to
  /bps/jifty/jifty/trunk - clkao

- When form_field() are called with render_as in cached mode, Make sure it
  requires the widget class. - clkao

- Refactor and put all the Form::Field blessing logic into one place. - clkao

 * A prototype.js fix for IE6 throwing object errors on Hiveminder task
   creation - sartak

 * Add a canonicalize_value to Jifty::Web::Form::Field. Override it in Date to
   output just the YMD part. - sartak

 * Add a class to read mode spans to allow them to be selected separately.
   - sterling

 * Convert clickable tooltip to button title and make sure buttonToLink()
   passes on the title attribute. - sterling

 * Don't auto register field's action unless we are in an open form. This
   fixes the case where actions aren't properly registered to the correct
   form: my $foo = $action->form_field('foo')->element_id; form {
   render_action($action); form_submit; } - clkao

 * Fix a bug that if you use $action->form_field('foo'); $action-
   >form_field('foo', render_as => 'hidden') you get a ::hidden object which
   is useless, as opposed to normal Hidden object which returns from the
   following without cache: $action->form_field('foo', render_as =>
   'hidden') - clkao

 * Fix menu activation for menu items which are defined with link instead of
   url/label - trs

 * Fix title handling in Web::Form::Field::Select - sartak

 * Fixed missing HTML escaping on option value attributes in select form
   fields. - sterling

 * Inserted the missing jifty-result-popup DIV on the Mason page wrapper.
   - sterling

 * Jifty::Web: removed long-gone loc.js (deleted at #4324) from
   javascript_libs - ishigaki

 * Make dropdown/context menus a reasonable fixed width - trs

 * Make the YUI menu.css usable - trs

 * Move our own Form.Element.* methods to Jifty.Form.Element.* and mark the
   old ones as deprecated. This is a forward-compatible change in preparation
   for the jquery branch merge. After the merge, the old methods will no
   longer exists, and the Jifty.Form.Element.* ones will be provided by the
   Prototypism plugin. Patch by hlb. - clkao

 * Normalize placeholder text because sometimes one has \r\n and the other has
   \n. Ugh. - sartak

 * Only call ->url on link if it supports it - trs

 * Some style changes and minor fixes (that damn quote in onclick.. !) -
   sartak

 * Support group headings for YUI menubar rendering - trs

 * Support menu grouping for YUI - trs

 * Totally redo menu grouping. The way it works now is you build up menus and
   submenus as normal and then for submenus that you want inline, you set
   render_children_inline => 1 for the parent. - trs

 * Turns out turning off ajax canonicalization for a single form field was
   just ignored. We need more JS tests. :( - sartak

 * Updated the chart image behaviour JavaScript since it broke with the
   Prototype 1.6 update. - sterling

 * Updating so that simple bars work again (broke with Prototype 1.6) and also
   ported to use jQuery. - sterling

 * jifty.js: Work around placeholders not being properly cleared and causing
   (small) data loss - sartak

 * re-merge r5120 given now regions know if they are in a opened form. - clkao

 * refactor handlers Jifty::Web::Form::Element to use our
   mk_normalising_accessor. - clkao


Jifty 0.71129

I18N
====

 * Delay i18n handle init until we have session. SkeletonApp dispatcher rule
   to set language in session. - clkao

 * I18N plugin: log when user is somehow able to pass in disallowed lang.
   inline the initial dictionary json. - clkao

 * I18N: load json dict from absolute path. - clkao

 * I18N::Action::SetLang: scalar::defer is trigger some oddness, rewrite
   available languages as normal runtime code, and cached. - clkao

 * I18n: fix json dictionary fallback. - clkao

 * Jifty::I18N - POD fixup. - audreyt

 * Jifty::I18N: Implement the L10N.AllowedLang key to limit the set of
   languages available to the user. Use case: ja.po is incomplete and we wish
   to hide it from users. Requested by: clkao - audreyt

 * Jifty::I18N: provide available_languages method. - clkao

 * Jifty::I18N::promote_encoding - r4286 by yours truly broke auto- decoding
   for POST requests. This is a better fix to avoid the "Unquoted / not
   allowed in Content-Type" warning (which arugably is a
   Email::MIME::ContentType glitch), by scanning the Content- Type header for
   the substring "charset" before parsing it. This way, when "charset" is not
   found in that header, we still fallback to Encode::Guess, regardless of
   whether the request was of type "multipart/form-data". - audreyt

 * Jifty::I18N::promote_encoding: Multi-part form data have no notion of
   charsets, so we return the string verbatim here, to avoid the "Unquoted /
   not allowed in Content-Type" warnings when the Base64- encoded MIME
   boundary string contains "/". Prompted by this Content- Type header found
   in real world: multipart/form-data; boundary=----
   WebKitFormBoundaryRqXyEnBQ/5VSsexe which triggered this error: --
   2007/10/22 04:19:30 WARN> Carp.pm:46 Carp::carp Unquoted / not allowed in
   Content-Type! at /usr/local/lib/perl5/site_perl/5.9.5/Jifty/I18N.pm line
   226 -- 2007/10/22 04:19:30 WARN> Carp.pm:46 Carp::carp Illegal Content-
   Type parameter /5VSsexe at
   /usr/local/lib/perl5/site_perl/5.9.5/Jifty/I18N.pm line 226 - audreyt

 * Jifty::Plugin::I18N: provides SetLang action. provides loc.js and other
   facilities to l10n your javascript along with po. - clkao

 * Provide get_current language method in Jifty::I18N. - clkao

 * Support serving json version of po and localization in javascript
   space. - clkao

 * Update zh-tw po to include translations for authentication::password
   plugin. - clkao

 * allow switching current language for Localization. - clkao

 * bin/jifty po now takes two more options: --dir for additional directories
   to look at so javascript files can be scanned. --js for generating json
   dictionaries for messages appeared in javascript files declared with
   Jifty::Web. - clkao

 * loc.js cleanups. - clkao

 * updated ja.po - ishigaki

 * zh_tw l10n for Authenication::Password plugin. - clkao

BUGFIX
======

 * A temporary fix for rico.js, which is defining the obsoleted (in
   Prototype) Object.prototype.extend which and then breaks all calls
   to jQuery.fn.extend.  That means all methods with jQuery.fn.extend
   were simply not there. For instance, jQuery("div.secret").show() - gugod

 * Added missing jifty-result-popup div to the page detritus section of
   Jifty::View::Declare::Page. - sterling

 * Allow users to name their apps in lowercase (as pragmas ?!). Reported by
   SteveH++ - jesse

 * Bring the default back, but at 0.0.0 to prevent uninitialized complaints.
   - sterling

 * Class::Accessor::Fast cleanups - jesse

 * Clean up Jifty::Web initialization a bit. - jesse

 * Clean up the masonXXXXXXXXXX temp directory after each test run. - sterling

 * Do not do clever & broken input_name for buttons when preserve_state is
   false. - clkao

 * Don't do weird things with loading model subclasses - jesse

 * Don't send cookies for static files. We suspect that doing so was screwing up
   non-compliant proxies that were caching the cookie and causing.. "amusing"
   security problems - sartak

 * Fix compatibility with Test::WWW::Mechanize - jesse

 * Fix mismerge.. - sartak

 * Fixes to several of my fixes for
   Jifty::Request::load_from_data_structure - jesse

 * Fixing a bug that prevents any but the first plugin being checked for
   schema updates. - sterling

 * Fixing a typo in the plugin DB version metadata key affecting upgrades.
   - sterling

 * Horrible Hash::Merge workaround, part 2 - alexmv

 * Improving schema setup for plugins that are turned on after the application
   is initially deployed. - sterling

 * Jifty::Request::Mapper - Avoid uninitialized warnings when
   $args{destination} ends up undefined. - audreyt

 * Make sure Jifty::Filter::DateTime doesn't disturb Floating datetimes
   Otherwise, dates would get set to the current_user's timezone, throwing a
   wrench in the works - sartak

 * Menu class is undef by default; fall back to the empty string - alexmv

 * Minor edit: fixing reference to Jifty::Request::Action to Jifty::Action
   - sterling

 * Pg wants to connect to template1, but CREATE DATABASE foo TEMPLATE
   template0 - alexmv

 * Plugin upgrade incorrectly assumes a DB version of 0.0.1 when none is
   found. - sterling

 * Rather than helpfully failing to load model classes that have
   compiletime errors, actually die with the error that caused the class
   not to load. - jesse

 * Remove debug info. - clkao

 * Remove debugging statement - alexmv

 * Removing the display style from the jifty-result-popup, which is breaking
   it. - sterling

 * Revert clkao's fixes for now because they break apps :/ - sartak

 * Revert r4117 as the element readiness state is not compatible with what it
   was. - clkao

 * Revert r4435 because it breaks Safari 3.0.4 - sartak

 * Reverting the addition of these files which were added by a push error.
   - sterling

 * Some databases have schema creation single-threadedness. If they block,
   wait and retry for up to a minute - jesse

 * Some parts of that last commit to use only one Module::Pluggable weren't as
   hot as they appeared to be; - jesse

 * The JIFTY_SITE_CONFIG environment variable was silently ignored. - audreyt

 * Undoing 4302. There is such a class. Thanks to chmrr. - sterling

 * Undoing previous accidental patch to Jifty::Continuation because I have not
   finished proofing it. - sterling

 * Use ->clone on DateTime objects to avoid possible DST issues, etc - sartak

 * Use blessed() instead of ref() to keep an if statement from tripping on
   ->isa(). - sterling

 * We depend on the bugfix that
   File::Spec->rel2abs("/foo","/foo") eq "." - alexmv

 * When it's a ::Create action, $event_info won't have a record_id there,
   cause a fatal error when it's published latter. - gugod

 * When loading a web request from a data structure, don't totally throw away
   the path it was requested at. - jesse

 * Work around a "feature" in Hash::Merge < 0.10 - alexmv

 * carp, don't warn, for a "title" Mason/TD warning - sartak

 * collection generator may be called when we're loading models and not all
   models have been loaded to the moment, so we have to try to require the
   model before testing if it esists. - ruz

 * don't gen a collection class if there is no model - ruz

 * don't warn if database doesn't exist when dropping database - sunnavy

 * friendly_date should be relative to the user, not floating - sartak

 * make a looser check for Content-Type since firefox 3 will append charset
   stuff to it sometimes - sunnavy

 * merged prototpe-1.6 to trunk again, wish it's all right this time :) -
   sunnavy

 * no need to print STDERR, we can warn in $SIG{__WARN__} - sunnavy

 * oops, should look for js files under js. - clkao

 * our version of prototype can't deal with synchronous request. - clkao

 * revert changes to ClassLoader. Collection classes are failing to be
   generated in some TD views - falcone

 * rollback r4242 which cached the gzipped js/css even through develmode
   reload. - clkao

 * tabview shouldn't force absolute paths to relative ones - jesse

 * warnings should be to STDERR - sunnavy

 * we want to compute UUIDs every time. really. it's not useful to always have
   the same uuid - jesse

 * webservices_rediret: don't redirect if there's any failed action. - clkao

CORE
====

 * Add Jifty::DateTime::from_epoch which does our usual timezone magic, use
   set_current_user_timezone more, too - sartak

 * Add Jifty::Util->is_app_root to determine whether a path looks enough like
   the app root - sartak

 * Add a 'now' method to Jifty::DateTime which sets the timezone to the
   current user's timezone. DateTime::now passes time_zone => UTC to
   Jifty::DateTime::now, which caused it to skip over the currentuser/timezone
   magic. - sartak

 * Add a ForwardCompatible config in Database section. The usecase is that
   when you switch your checkout to something with older version of app
   schema, you can declare it is compatiable with the future version that is
   currently in db. - clkao

 * Add a Jifty::DateTime set_current_user_timezone method - sartak

 * Add an 'as_user' method and have 'as_superuser' use it - sartak

 * Add the ability for apps to have very fine-grained testing (such as
   overriding config for a subdir of t/, or even a particular test file).
   Still needs tests and I suppose some more doc :) - sartak

 * Added a new 'AutoUpgrade' option for Jifty and Application schemas,   so you
   don't need to manually upgrade every time jifty or your app version bumps -
   jesse

 * Added the ability to craft a Jifty button with a "submit" link which
   submits hardcoded arguments. - jesse

 * Change how plugin is initialized so _pre_init is actually noted. - clkao

 * Don't require recipients in Jifty::Notificaiton be objects. - clkao

 * Finalize triggers if possible (supported in forthcoming Class::Trigger
   release). Override JDBI's default of having refers_to null return undef,
   instead of object with no id. RightsFrom 'foo_id' should work like
   RightsFrom 'foo' - alexmv

 * Fix the problem of tests having both config and a correctly-relative $0
   Jifty::SubTest now makes available the old Cwd (which as 03-nosubtest
   demonstrates doesn't break apps that don't use Jifty::SubTest) Also a bit
   of doc in Jifty::Config The Feature is Done. :) - sartak

 * Fixes to not cache compressed css+js while in devel mode. Refactoring js
   compression code into the plugin where it belongs. - jesse

 * Get rid of another place where we had a custom accessor that meant
   'arguments' - for great consistency - jesse

 * In Jifty::DateTime->new, set the timezone to floating if it looks like just
   a date - sartak

 * Initial implementation of Jifty::Test::WWW::Declare, with basic tests in
   TestApp - sartak

 * Just a perltidy - alexmv

 * Make action_arguments effective from js update() - clkao

 * Making the as_*_action() methods accept a paramhash for additional
   new_action() parameters. - sterling

 * New as_string method for Jifty::Web::Form::Link. - clkao

 * Override T:W:D's get with ours which prepends the server's URL Start
   documentation - sartak

 * Recursively transform content structures. Set a flag when we change the
   method, in case apps care - alexmv

 * Remove the unused drop-column logic from jifty schema --setup, since
   ->columns returns only active cols - sartak

 * Ripping out new_record_action() from Jifty::Web. Re-implementing it as
   as_create_action(), as_update_action(), as_delete_action, and
   as_search_action() in Jifty::Record and Jifty::Collection. - sterling

 * Test config loading is now complete code-wise :) And it has tests now too!
   Just need to doc it in manual or Jifty::Config - sartak

 * Untabify - alexmv

 * Updated the JSON and YAML transports for web service requests to allow
   complex data structures in actions - jesse

 * Updating the Jifty web menu component to respect classes added by
   users - jesse

 * added "rel" attribute to Jifty::Web::Form::Link/Element, to allow
   <a rel="nofollow"...> or <a rel="next"...> - ishikaga

 * allow onsubmit in form to include custom javascript. - clkao

 * if refers_to is not mandatory field then add 'no_value' option to
   select box - ruz

 * merged prototype-1.6 to trunk - sunnavy

 * use object calls instead of instance calls. use better handling of roots
   so server relative paths work as expected unless you're bind to a
   location - ruz

 * working toward onclick => { submit => { action => $action, arguments
   => { foo => 'value', bar => 'other value'} }} Jifty's js still needs
   help - jesse

CRUD
====

 * A bit of refactoring to expose some more overridable templates in CRUD view
   - jesse

 * Adding another CRUD setup example to the synopsis. - sterling

 * Assume the page is "1" if no value for page is given to the pager in CRUD.
   - sterling

 * Don't override object_type if the CRUD view package already defines
   object_type. - sterling

 * Simplifying the CRUD code for generating the record_class and making it
   more flexible. Adding a stub for CRUD testing. - sterling

 * added a bit more semantic markup to the crud view - jesse

DOC
===

 * A lot of POD for OAuth, and some tiny fixes elsewhere - sartak

 * Add a Jifty::Manual which lists each of the manuals with a short
   description. Secret confession: I was tired of perldoc Jifty::Manual::<tab>
   failing :) - sartak

 * Add Jason May to AUTHORS - sartak

 * Added a synopsis and license section to docs. - sterling

 * Adding SYNOPSIS, LICENSE, and code comments. - sterling

 * Adding a description to Jifty::Everything docs. - sterling

 * Adding documentation for Action and Static attributes to resolve POD
   coverage test failures. - sterling

 * Another example app: ShrinkURL, which is basically (surprise!)
   tinyurl - sartak

 * Clean up the Pod, added a Synopsis, added a Why? section, added code
   comments, and some code tidying. - sterling

 * Cleaning up documentation to fix pod coverage test failures. - sterling

 * Doc - sartak

 * Fix Jifty::Server::Prefork's document so it mentions Net::Server::PreFork,
   instead of Net::Server::Prefork. (Yes this is very confusing.) - audreyt

 * Fix package names, add copyright notices - sartak

 * Fixing POD coverage errors in the AutoReference plugin. - sterling

 * Fixing pod coverage problems with the jQuery plugin. - sterling

 * Improving POD and minor tidying. - sterling

 * Include the http method (GET, POST, etc) in the debug message - sartak

 * Jifty::Notification - Minor doc fix - The html_body method was misspelled
   as html-body. - audreyt

 * More comments - sartak

 * POD clean-up, some code commenting, and minor tidying. - sterling

 * POD for LeakTracker's subs - sartak

 * POD re-wrapping. perltidy. Use Jifty::DBI's new ->_new_record_args and
   _new_collection_args. Bump the JDBI dep accordingly - alexmv

 * SendFeedback.pm: Take away the phrase "hiveminder" from the
   documentation. - audreyt

 * a tiny change and typo fix - sunnavy

 * doc fixes - sunnavy

 * pod fixes - jesse

 * tiny typo fix - sunnavy

 * typo fix - sunnavy

 * updated my email address in AUTHORS to agentzh@agentzh.org - agentz

INSTALL
=======

 * mention Net::LDAP because of the new Plugin so we don't fail
   01-dependencies - falcone

 * Add changelogger dependencies - sartak

 * Added requirement for URI 1.31, which adds uri_escape_utf8(). - sterling

 * Adding File::Temp 0.15 requirement for cleanup(). - sterling

 * Bump JDBI dep to 0.45 (Filter::DateTime changes) - sartak

 * Force a clone which doesn't have as many bugs - alexmv

 * Jifty::DBI now uses Class::Trigger instead of Jifty::DBi::Class::Trigger
   (since rev3968) - ishigaki

 * Make Test::WWW::Declare an optional dep for now - sartak

 * Modules other than Net::OAuth::Request in Net-OAuth distro don't have
   version - ishigaki

 * Move memleak deps into its own Makefile.PL section - sartak

 * Removing Test::Log4perl. It isn't used anywhere anymore. - sterling

 * Require Net::OAuth 0.04 because 0.03 needs my patch. Don't run tests if
   Net::OAuth is uninstalled - sartak

 * added Test::Log4perl dep again; it is surely used at t/TestApp/t/02-dispatch-show-rule-in-wrong-
   ruleset.t - ishigaki

 * clean dependency test since changelogger has been moved out - sunnavy

 * older Email::LocalDelivery is buggy. - clkao

 * require CSS::Squish 0.07, no need to call _resolve_file any more - sunnavy

 * we need DateTime::Locale - sunnavy

MISC
====

 * A command line completion script is added into contrib/ - c9s

 * Add 'performance' tag to sort-changelog - sartak

 * Add another changelog sorting program, this one I think works a bit better
   :) - sartak

 * Remove bin/*-changelog, as they've been moved into their own dist, App-
   Changelogger - sartak
 
 * Remove some debugging statements - sartak

 * Sort change groups by header, typo fix - sartak

 * Stripping off the execute flag in SVN. - sterling

 * add a bug tag - falcone

 * add an exclude command for logs you don't need to ship - falcone

 * fix so we don't try to print to a bogus filehandle - falcone

 * make format_entry return text rather than printing. use the returned
   message to generate the changelog rather than printing to STDOUT - falcone

 * remove doubled loop over log messages. explicitly loop over
   uncategorized first, then offer the user to review all the changes
   again. reformatting - falcone

 * talk about how to do iterative editing - falcone

 * update fr.po and debian control - yves

 * upgraded request logging from DEBUG to INFO - jesse

 * usage documentation - falcone

 * use existing t-discard tag. don't autoskip things, just group them together
   and you can delete them - falcone

PERFORMANCE
===========

 * The cache was actually a huge performance problem - jesse

 * Use much less UNIVERSAL::require (to shave a second or two off start
   times) - jesse

 * When replacing a region, use the technique described in
   http://blog.stevenlevithan.com/archives/faster-than-innerhtml to improve
   performance. - clkao

 * Cache gzipped output from the compressedcssandjs plugin - jesse

 * Fix a bug that after you access a static css file, it breaks the compressed
   css by not actually squishing main.css, hence requests static css files
   under __jifty/css. - clkao

 * In Jifty::Model::Session: Turn session_id, data_key, key_type into
   case_sensitive, so we don't do useless tolower on loading sessions. index
   session_id by default. - clkao

 * Switch to a single call to Module::Pluggable to help improve startup
   performance. - jesse

 * More trying to force caching of static content. - jesse

PLUGIN
======

 * Add a trigger to Jifty.pm to be run after all initialization (so plugins can
   use the database handle, or anything else) - sartak

 * Add an additional trigger in Clickable for SinglePage to filter out state
   variables for region-__page. - clkao

 * Add better support for dates in the REST plugin, rewrite a somewhat hairy
   method - sartak

 * Add cdn option to CompressedCSSandJS plugin. - clkao

 * Add new LeakDetector plugin. It kinda sorta works :) - sartak

 * Added a new plugin that provides an autocomplete widget specially for
   record references. Helpful in cases when a select is just be too big to
   contemplate. - sterling

 * Adding missing JavaScript file and cleaning up a method left-over from
   testing. - sterling

 * Don't set action defaults in REST. Actions can take care of themselves. -
   sartak

 * Expanded the previous fix to cover sticky values and the initial value in
   the input tag. - sterling

 * Fix it so that AutoReference fields show the _brief_description rather than
   the id in read mode. - sterling

 * Fixed AutoReference so that it is possible to set the field to empty if not
   mandatory. - sterling

 * Fixed a problem where AutoReference breaks in Search actions. - sterling

 * Fixed the feedback plugin so it works even if the current user doesn't have
   permission to read their own email. - chapman

 * Fixing the data fetcher on the AutoReference box so that it sends the text
   being typed rather than the current value in the hidden field. - sterling

 * Get rid of spurious warning in Auth::Password plugin - sartak

 * Handle region redirect with continuation return (for spa). - clkao

 * Implement callback URLs and test them - sartak

 * Include the list of object types leaked in the request report - sartak

 * Make find_plugins() sensitive to wantarray. - sterling

 * Many improvements, including some pages - sartak

 * Modified the JS to ignore the [id:1] text at the end of the references.
   - sterling

 * More cleanup, hide zero-leak requests by default - sartak

 * More fixes to get protected resource requests going. We might need a
   WWW::Mechanize::OAuth subclass, so that each get/post will be properly
   wrapped as an OAuth request - sartak

 * Move files from LeakDetector to LeakTracker (because that's the term Cat
   uses) - sartak

 * Name the first Jifty->new during test 'pre_init', and tell plugins not to
   register triggers just yet to avoid duplicated triggers. - clkao

 * Now we send responses to token requests (and test them) What's left:
   Authorizing request tokens is coded, but it's slightly flawed somehow
   Getting access tokens is coded, but not tested No code yet for the actual
   accessing of resources - sartak

 * Patch by Alex to make sp_submit_form to be happier with J:V vars. - clkao

 * Provide an after_include_javascript for plugins to do javascript
   initialisation. - clkao

 * Rename 'ready' to 'post_init'. 'ready' and 'server_ready' are somewhat
   misleading because the plugins fire during other jifty commands - sartak

 * Refactor timestamp and nonce out of tokens and into consumers. Thanks to
   hannesty for discussing how it should work - sartak

 * Some cleanups in LeakDetector - sartak

 * Some more fleshing out of the OAuth plugin - sartak

 * Somehow this file got duplicated. I might've done it. shrug - sartak

 * Start adding an OAuth plugin - sartak

 * Start writing tests Change timestamp to (ugh) time_stamp, because timestamp
   is a reserved word in a few SQL apps - sartak

 * The REST dispatcher should warn $@ if an error occurs - sartak

 * Turns out we can't (so easily) have the URLs be configurable. Not too much
   of a problem though Other fixes - sartak

 * Unbreak OpenID plugin with new Jifty::API implementation.  Give
   fully-qualified action class name here because Jifty::API does not resolve
   action class names to those ones provided by plugins (those under
   Jifty::Plugin::*::Action namespace) This is maybe a bug, but need further
   discussion. - gugod

 * Users can now authorize/deny request tokens - sartak

 * Various improvements of try_oauth so it gets further (but not all the way)
   in the correct codepath - sartak

 * Various refactors and cleanups Request tokens are now properly set to
   "used" Life of a request token lengthened on authorize Fixed duplicate
   timestamp/nonce check (and test) - sartak

 * Whoops, committed in a subdirectory - sartak

 * Whoops, the consumer and user were using the same mech. But fixing that
   didn't break anything :) - sartak

 * actormetadata: provide a current_user_is_owner method. - clkao

 * add Jasig CAS plugin with mixin model user - yves

 * default not to preserve state when spa is replacing __page - clkao

 * first release for an experimental mixin ldap release - yves

 * r4534 belongs to trunk. In ClassLoader, if an action matches Create* that
   isn't about creating a model, don't just return but continue to see if
   there's any matching actions from plugins.  This solves CreateOpenIDUser in
   particular.  - jesse

 * revert its previous revision for it's fixed earler in classloader. - gugod

 * simplify ccjs plugin with static handler method call. - clkao

 * spa: don't translate javascript: links. - clkao

 * tabview: fix the logic for defered tabs. - clkao

TESTING
=======

 * Add (grr, passing) tests for setting columns in the test app - sartak

 * Add TestMode: 1 to the default test config - sartak

 * Add some more tests for Jifty::DateTime in the TestApp - sartak

 * Begin adding tests for protected resource requests - sartak

 * Clearing out old new_record_action() tests. - sterling

 * Correctly skip OAuth tests in the absence of Net::OAuth - sartak

 * Dispatcher and config fixes, start adding a new test file - sartak

 * Expand the tests, now they actually test something real! So right now the
   OAuth plugin is rejecting a few kinds of bad requests (e.g. unknown
   consumer) while accepting a good request. Now to make more requests of each
   type :) - sartak

 * First cut of Selenium testing support in Jifty. - clkao

 * Fix test count - alexmv

 * Fixing long-broken support for the "JIFTY_FASTTEST" env variable - jesse

 * Mailboxes need to have unique names for parallel testing - alexmv

 * More tests, start implementing callbacks, but failing :) - sartak

 * Most AccessToken tests done :) first implementation was right on - sartak

 * Refactor the tests - sartak

 * Skip OAuth tests if Crypt::OpenSSL::RSA is unavailable RSA should be
   optional, will fix later - sartak

 * The first few test scripts are now complete, and uncovered many bugs.
   Yay. - sartak

 * When testing, don't just use a single global test database. Instead, use
   one per testfile. This allows some measure of parallelization - jesse

 * Wrote most of the authorization tests - sartak

 * added TestApp-Plugin-OnClick, initially for the update of
   prototype.js - sunnavy

 * clean dependency test since changelogger has been moved out - sunnavy

 * first cut of tests for singlepage app plugin. - clkao

 * my computer is slow. be more patient about selenium rc startup. - clkao

 * not dep test for bin/sort-changelog - sunnavy

 * only run pod coverage tests if you're a developer - jesse

 * refactor Jifty::Test a bit - sunnavy

 * support SELENIUM_RC_TEST_AGAINST and SELENIUM_RC_BROWSER environment
   variable, and allow args to be passed into selenium rc invoker. - clkao

VIEW
====

 * <embed> isn't a tag which gets a close on it - alexmv

 * Add a hook to change a menu item's label - sartak

 * Add support for "title" attribute on elements, which shows tooltips -
   sartak

 * Added an app_page_footer page call to jifty view declare page - jesse

 * Additional selector to make sure that autocomplete hides .hidden_value on
   .inline forms. - sterling

 * In TD View handler, don't just return without printing headers if the
   response content is empty, as when you access /__jifty/empty. - clkao

 * Making Jifty::Web::Menu more extensible. - sterling

 * Upgrade a region error from a debug to a warning. - jesse





Jifty 0.70824

INSTALL
=======

 * WWW::Mechanize versions before 1.30 had broken gzip behaviour which broke
   tests - jesse

 * properly skip client side td test if new B is not found. - clkao

 * GD is not mandatory requirement. Skip chart test if not found. - clkao

 * require Class::Trigger 0.12 for abortable triggers used by css/js
   compression plugin. - clkao

 * debian packaging - yves

 * Makefile.PL - Jifty now depends on TD 0.26 - agentz

 * r1254@agentz-office: agentz | 2007-08-10 17:08:14 +0800 Makefile.PL - do
   NOT skip any tests under t/ unintentionally ;) - agentz

 * Updated the module recommendations for the Chart plugin. - sterling

 * Adding Image::Info dependency used during testing of Jifty::Plugin::Chart
   - sterling

 * add missing Test::Log4perl dep and update the Jifty::DBI requirement -
   falcone

 * Changing the Jifty console requirement back to default => 0. - sterling

 * debian dependancies
* T::D 0.21 needed to pass tests - yves

 * add IPC::Run3 to dependency. - clkao

 * Update dep to include version of Module::Pluggable that is patched so that
   compile errors are caught - trs

 * Add dependency on Class::Trigger - alexmv

 * here sunnavy comes, ;-) - sunnavy

 * typo in recommends - falcone

 * Add myself to AUTHORS - andk

 * Better diagnostic messages in the dependency checking script. Thanks to
   Andreas Koenig - jesse

 * don't index plugins' test directories - jesse


TESTING
=======

 * Add failing tests for load_by_kv with chr(0) - sartak

 * clean up load_by_kv - jesse

 * The warnings come from the server code after the fork. Test::Log4Perl isn't
   going to catch them. - jesse

 - Fix our test mech to not choke on non-default cookie names
 - Clean up page headers
 - Remove unecessary var - trs

 * Fix the template subclassing tests. - clkao

 * Helper method for mounting crud view. - clkao

 * Add a little pod coverage - sartak

 * Make sure there's always a stash during testing since we don't always go
   through the web - sartak

 * Pass defaults to render_region in test. - clkao

 * the actual templates for the 16- test.t/TestApp - clkao

 * failing tests for region and show inconsistency. - clkao

 * make a chdir conform to the rest of the test suite and use Jifty::SubTest
   chdir noticed by Andreas Koenig during his cleanups - falcone

 * add tests for UTF-8 related things - ruz

 * a failing test about utf8 when using T::D - yves

*                 we need bytes in escape_uri then 'use bytes'
* resulting string is always valid ascii string,
  so we shouldn't forcibly set utf flag - ruz

 * fast test support: truncate tables rather than recreating database when
   JIFTY_FAST_TEST is specified. - clkao

VIEW
====

 * update tabview plugin to use new relative path syntax for td show(). -
   clkao

 * don't use pager to determine items as list_items might be called directly
   and no pager has been set on the collection. - clkao

 * Jifty::Plugin::SkeletonApp::Dispatcher - Do not override the 'Home' menu
   item if the app had set it already. - audreyt

 * Jifty::View::Declare::CRUD - I18N. - audreyt

 * Fixed a problem where some disabled elements weren't re-enabled after a
   submission when the disabled elements were outside of the fragment being
   refreshed. - efunneko

 * Added a new helper, new_record_action(), that wraps new_action() with
   additional help creating Create, Update, Delete, and Search actions for
   models. - sterling

 * Fixes to use_mason_wrapper():
  * Added a test to make sure use_mason_wrapper() works.
  * Added $jifty_internal_request to note whether a Mason request is internal or not.
  * Altered the autohandler to use $jifty_internal_request when blocking access to /_elements/
  * Fixed error handling in the autohandler to redirect to /__jifty/error/requested_private_component rather than /errors/requested_private_component - sterling

 * Give the browser (particularly Safari) some more "settle time" - trs

 * Added support for more javascript triggers for most form elements: onclick
   onchange ondblclick onmousedown onmouseup onmouseover onmousemove
   onmouseout onfocus onblur onkeypress onkeydown onkeyup onselect - efunneko

 * Fix to a JavaScript bug performing the rerendering of IMG graphs. -
   sterling

 * Without the conditional we'll hide errors as soon as we display them - trs

 * Add explicit hide/show for the error, warning, and canonicalization note
   divs. This solves some long time ugliness on IE. However, it is not perfect
   as I am still getting some rendering issues on IE. Does not seem to break
   anything on FF. - sterling

 * Fix a fragment update regression caused by the trimclient merge. - clkao

*              Make enter key submit in the address search popup.
* Fix the close link in ambigious address popup. - clkao

 * Add some classes - trs

 - CRUD view: Minor refactoring for easy wording change
 - Provide the D in CRUD - trs

 * CRUD: Don't bother showing edit link if current user can't - clkao

 - Plugin CSS and JS (which should be put in
   share/plugin/Jifty/Plugin/Foo/web/static/{css,js}) is now compressed by
   CCJS
 - CCJS can compress more than just main.css by calling Jifty->web->add_css("file.css") - trs

 * in REST record_to_data, skip container columns. - clkao

 * r60264@102: jesse | 2007-07-08 21:52:09 -0700
  * Template::Declare behaviour change for "show 'foo'" to now show foo at the current template depth. - jesse

 * r24794@zot: tom | 2007-06-21 02:46:02 -0400 Restore and update the OOM
   patch to the YUI calendar - trs

 * Convert to using the form of declaring titles that works when using the
   mason wrapper with TD - trs

 * CRUD plugin cleanup and refactoring - jesse

 * CRUD View: Also export display_columns so it's not required to
   override it - trs

*       New Template::Declare page syntax for additional code block run
         before wrapper, and have the returned value passed to wrapper:

template foo => 
  page { title => 'this is title', other => 'foo' }
  content {
    h1 { 'blah }
  }; - clkao

 * Fix jifty->web->out from without td used with mason wrapper. - clkao

 * try not to interfere when a user clicks on a link with a modifier key
   pressed - jesse

 * YourApp::View->use_mason_wrapper now lets your write page {} in TD but uses
   your mason wrapper. - clkao

 * Do not call update() when ctrl-clicked - clkao

 * Fix javascript emission when CompressedCSSandJS plugin is not loaded
   noticed by dpavlin++. - clkao

 * Refactor the CRUD view to make it easier to customize the output - jesse

 * when rendering the keybindings div, reset Jifty.KeyBindings. Ideally we
   might want to keep the state with the div so it resets itself when
   replaced. - clkao

 * For post fragment update script evaluation, use YUI OnAvailable rather than
   hardcoded setTimeout. - clkao

 * switch url from an attribute to a child node for ajax redirects. (The old
   behaviour didn't work in safari) - jesse

 * add_javascript method to simplify adding JS libs and updated doc - trs

 * Fix update() called from non-form. - clkao

 * Implement "submit => undef" in onclick hook where it should submit all
   actions. - clkao

 * Let the code calling the wrapper specify a page class to use to support
   multiple page types - trs

 * Make redirect inside region work. - clkao

 * Make Jifty->web->out work during the dispatch rule stage. - clkao

 * Optionally use app's View::Page class for wrapper. - clkao

 * refactor the TD wrapper into a class. - clkao

 * Abstract render_footer.
* Header is always considered done when sending out nontoplevel wrapper in spa. - clkao

 * r57907@pinglin: jesse | 2007-06-03 16:59:42 -0400
  * The SPA templates no longer include css and js twice - jesse

 * Template::DEeclare now gets a hashref of all the arguments set() in the
   dispatcher. - jesse

 * Fix search collection for CRUD. - clkao

 * Better factored CRUD library, ready for local overriding - jesse

 * Calendar: Our default canonicalizer is yyyy-mm-dd, while the calendar
   generates single-character months and dates sometimes. Standardize on the
   two-digit form. - alexmv

 * CRUD view and a working example (sitenews) - jesse

 * Always use an application's 'wrapper' in preference to the Jifty default
  - jesse

 * clean url for submenu - yves

 * add a render_as_classical_menu to have the same menu with T::D view than
   older mason _elements/nav. - yves

 * Stop a certain class of validator error that causes an infinite loop in
   IE - jesse

 * CRUD builder search works
  - jesse

 * Jifty::View::Declare::CRUD lifted from BabelBee
  - jesse

 * add the ability to have some code before a javascript click : onclick => [
   { beforeclick => "<somecode>;" }, { args => ... - yves

 * More refactoring in support of adding new view handlers. - jesse

U-PUBSUB
========

 * Jifty.Subs needs outs_raw. - clkao

DOC
===

 * Minor pod additions. removing unneeded wrappers - jesse

 * Adding documentation for Action and Static attributes to resolve POD
   coverage test failures. - sterling

 * Adding tangent and return to the glossary. - sterling

 * Updating Pod and source comments for Jifty::Config. Performed some Perl
   tidying and added a new section describing why Jifty uses three levels of
   configuration files (may need additional editting). - sterling

 * Cleaning up the Pod and adding a few code comments to Jifty::Collection.
   - sterling

 * Added myself to AUTHORS - efunneko

 * Updating Pod and adding code comments to Jifty::Client. - sterling

 * Major Pod improvement to the class loader, many more helpful code comments,
   and some tidying for the class loader. Phew. - sterling

 * Cleaning up the Pod for Jifty::Bootstrap - sterling

 * Improved code comments and minor perl tidy. - sterling

 * Added more POD to fix coverage issues and added a description to the
   client_cacheable and client_cache_content methods of PageRegion. - sterling

 * Additional fix to POD coverage for the CRUDView attribute. - sterling

 * Fixing POD issues in CRUD, adding some code comments, and minor perl
   tidying. - sterling

 * Fixing error that occurred during previous push. - sterling

 * Improving some of the Pod, code comments, and minor perl tidying. -
   sterling

 * Improved code comments and minor perl tidy. - sterling

 * Added more POD to fix coverage issues and added a description to the
   client_cacheable and client_cache_content methods of PageRegion. - sterling

 * Additional fix to POD coverage for the CRUDView attribute. - sterling

 * Fixing POD issues in CRUD, adding some code comments, and minor perl
   tidying. - sterling

 * Improving some of the Pod, code comments, and minor perl tidying. -
   sterling

 * add myself to AUTHORS :) - sartak

 * added some pod to help make pod tests pass - jesse

 * Added a recipe for using "result_of" to fetch information about actions for
   use in appends. - sterling

 * Added NAME sections and short descriptions for the CPAN module summary.
   - sterling

 * Adding documentation to Jifty::Plugin::Debug to fix POD coverage failures.
   - sterling

 * Added an additional see also to Jifty::Manual::AccessControl to the User
   and Authentication::Password plugins. - sterling

 * The true return value of the module needs to not be part of the POD
  * Fix a POD nitpick - alexmv

 * word-wrapping some POD - nelhage

 * Fleshing out and cleaning up the documentation for
   Jifty::Plugin::Authentication::Password. - sterling

 * Fleshing out and cleaning up the documentation for Jifty::Plugin::User.
   - sterling

 * Added a many-to-many relationship recipe to the cookbook. - sterling

 * added see also section to Jifty::Upgrade - bartb

 * Now with more POD! (and passing POD tests) - trs

 * Extracting talks from the jifty dist - jesse

*              r58374@pinglin: jesse | 2007-06-14 20:17:33 -0400
  * Full doc for the existing CRUD templates - jesse

 * Cleaning up and improving some of the view documentation. - sterling

 * Yada Sample application: Example::Todo is too hard to type. Yada! - clkao

 * The cookbook was wrong about the auth recipe - jesse

 * More comment about the JAFF handling special case from update(). - clkao

 * Clarifying comments about the plugins lists - trs

 * document why the validate hack exists. - clkao

 * exceedingly minor POD fixes. - diakopter

 * fix some pod bugs in Jifty/API.pm - sunnavy

 * update zh_cn.po - sunnavy

 * documentation fix that seems to have been forgotten when length was renamed
   max_length - andk

 * add 'Login on demand' section to Cookbook - ruz

 * Added section on dynamically created binary content in the cookbook - alech

 * add docs to pass the pod-coverage tests - falcone

 * small update to ru.po - ruz

 * add docs to escape_uri
* fix it in the way need it to work, it's escape_uri_utf8. there is no
  way to escape binary and text scalars in one sub, we need the latter. - ruz

 * ru.po - ruz

 * linked POD++ - ruz

PLUGINS
=======
 * Plugins may now have regular models. These are deployed after
  the schema is setup after adding the plugin to installation. 
  Plugins can bootstrap and upgrade their schema with their own 
  version numbers just like applications (though with slightly 
  different details). - sterling


 * Adding a plugin for using the jQuery Javascript library with Jifty.
   - sterling

 * Fixing the chart plugin tests to match up with changes that have happened
   to the API since they were written. - sterling

 * Chart plugin configuration updates:
  * Deprecating the renderer option.
  * Adding the DefaultRenderer option to replace renderer.
  * Adding the PreloadRenderers option to allow additional renderers to be preloaded.
  * Updated the documentation.
  * Made sure that the configuration is always passed to the renderer constructor, even if they are loaded late. - sterling

 * Chart Plugin: Removing extra comma from JavaScript list. - sterling

 * Chart Plugin: Whoops. Forgot to check in the actual XML SWF library. This
   is version 4.6. - trs

 - Chart Plugin: Treat the width and height appropriately
 - Chart Plugin:  Add the XML::Simple dep - trs

 * Bunch of updates to the chart plugin
 
     - Refactored dispatcher
     - Added XML SWF renderer
     - Renderers are now passed the configuration hash when init'd
  - trs

 * Chart Plugin: Use PlotKit.Base.map explicitly - trs

 * Chart Plugin: Render onAvailable instead of on window load so that we work
   in regions - trs

 * Chart Plugin: Make sure we do not attempt to render 0 pixel values no
   matter what.
  - sterling

 * Chart Plugin: Adding the SimpleBars renderer as a decent, dead-simple HTML-
   based renderer for HorizontalBars and a prototype for using tables for client-
   side chart configuration. - sterling

 * Chart Plugin: Removed some redundant code from the PlotKit renderer and
   added support for options to the GD::Graph and Chart renderers.
  - sterling

 * Chart Plugin: Improved the way the DIV tag is generated for PlotKit.
  - sterling

 * Chart Plugin: Added better error handling on renderer require.
  - sterling

 * Chart Plugin: Standardizing the chart types across the three current
   renderers. - sterling

 * Chart Plugin: Updated the behaviour script used by IMG chart renderers to
   make it more URI aware. - sterling

 * Chart Plugin: Fix failing dependency test because Chart uses GD to fix
   testing. - sterling

 * Chart Plugin: Added a renderer parameter to the chart() method and add per-
   renderer initialization. - sterling

 * Chart Plugin: Making the IMG-based chart renderers capable of handling CSS
   styling with some added behaviour. - sterling

 * Chart Plugin: Don't mess with the data structure if it's already what
   plotkit expects - trs

 * Chart Plugin: *Very* custom packed PlotKit (from svn) that no longer
   depends on MochiKit exporting functions into the global namespace. Still
   need to solve the issue of why MochiKit blows up when included in our
   honkin' JS file... - trs

 * Chart Plugin: Uncomment neccessary require. Make sure to handle undefined
   stuff - trs

 * Basic PlotKit renderer for Chart plugin - trs

 * Made the chart plugin test smarter and added one for the GD::Graph
   renderer. - sterling

 * Fixed an eensy POD bug. - sterling

 * Fixed POD coverage issue. - sterling

 * Updated POD and removed an unnecessary extra subroutine call. - sterling

 * Added a renderer for GD::Graph - sterling

 * Moved the chart/* dispatch to chart/chart/* to make room for alternate
   charting mechanisms. - sterling

 * Fixed the way arguments are passed to the render() method in
   Jifty::Plugin::Chart::Web. - sterling

 * Added a hack to chart.t (forcing an early load of GD) to avoid the
   segfault that was causing it to fail. Removed the TODO block from the
   test. - sterling

 * Regarding Jifty::Plugin::Chart: Added better comments. Fixed some
   error handling. Switched to using scalar_png(). Switched to using -
   >require rather than an eval to load Chart classes. Eliminated the
   need for IO::String. Moved some processing out of View and into
   Dispatcher. - sterling

 * Adding a test suite for Jifty::Plugin::Chart, but it is having weird
   troubles loading Chart::* because that seems to disconnect the server
   output or something. - sterling

 * Added the Chart::Base recommendation for the Chart plugin. - sterling

 * Added documentation to the experimental Chart plugin. - sterling

 * Adding a plugin for rendering charts of data. - sterling

 * Updated tabview plugin to work when it's not already inside a region
  - jesse

 * Fix IE issues with search div. - clkao

 * i18n for feedback plugin. - clkao

 * Incredibly naive "image column" userpic plugin.  - jesse

 * ActorMetadata plugin: Asset renamed to ActorMetadata
  - jesse

 * First cut of GoogleMap plugin. - clkao

 * Facebook plugin: Provide a way to link existing users with a Facebook
   account - trs

 * Facebook plugin: More pod, forceable login - trs

 * Basic Facebook auth plugin - trs

 * OpenID Plugin: Add a "next" parameter so one can specify the next page to
   go after openid login. - gugod

 * debug plugin for logging dispatched rules and current user. - clkao

 * Password Auth: Plugin view class should respect app page. - clkao

 * Got the tabview plugin working with non-CRUD code.
 * got the tabview plugin preloading the first tab, even if it's marked as a region rather than a static tab - jesse

 * Single Page App: Unbreak nojs form submitting when SPA is enabled. - clkao

 * CompressedCSSandJS: support optional javascript minifier. - clkao

 * Move the javascript concatenating logic from Jifty::Web to the
   plugin. - clkao

 * CodePress plugin: bump version to 0.02, remove requirement to modify
   submit form button (and in process break next_page after it, because it
   turns normal form submit into Ajax form submit which doesn't handle
   redirects very well -- because it usually redirects to page which isn't
   valid XML) - dpavlin

 * Added a 'feedback' plugin
  - jesse

 * In SinglePage mode, allow Action::Redirect to happen within webservice and
   have the client js accepts it. - clkao

 * CodePress plugin; add language accessor to select syntax highlight language
   (instead of default generic), example of usage, replace onload with
   DOM.Events - dpavlin

 * CodePress plugin for web-based source code editor with syntax
   highlighting - dpavlin

 * Make SinglePage plugin configurable. - clkao

 * First draft of SinglePage plugin. - clkao

 * Make CompressCSSandJS optional.
* always refresh css & js if in devel mode. - clkao

 * OpenId Plugin: Fix has_alternative_auth. - clkao

 * Authentication::Password plugin: The (unused) resend_confirmation template
   was missing. - clkao

 * User model mixin for OpenID plugin.
* Make Authenticate::Password aware that there can be alternative
  authentication systems.
* Make OpenID plugin work even when Authenticate::Password is
  enabled. - clkao

 * OpenID Plugin: The minimum required OpenID View for your app to
   mixin. - gugod

 * TabView plugin. - clkao

 * Site news plugin - jesse

 * A Jifty console to provide quick diagnostic shell for debugging or
   maintaining purpose.

Yes, it's learnt from RoR, and it's good to have it when developing
applications, or when you just start learning Jifty. - gugod

 * This is the OpenID plugin code. Setting up your app to use OpenID isn't as
   easy as we thought it to be. Will need a receipe to teach people how to
   cook it. - gugod

 * Login plugin: return id of the user from action - ruz

 * REST dispatcher: always use warnings and strict. - jesse

 * REST plugin: render referencing fields in a saner fashion. - clkao

 * plugin to add a wiki toolbar to textarea - yves

 * plugin to use Wyzz online wyziwig editor to render textaera for test and
   comments - yves

CORE
====

 * Remove cargo-culting changing of $0 from Jifty::SubTest. It doesn't affect
   test output but does break things - jesse

 * respect initial PATH in env under fastcgi. - clkao

 * Add friendly_date method to Jifty::DateTime which special-cases
   yesterday/today/tomorrow - sartak

 * Jifty::View::Declare - Work around Perl 5.9.5 bug by avoid punning the
   constant name BaseClass with the subclass name ::BaseClass. - audreyt

 * todo-ify failing tests in t/13-sessions.t - sartak

 * In action argument creation from model, do not assume refers_to always want
   a select based on id which we might not be referring to. Allow user to
   override render_as for refers_to columns. - clkao

 * Correct a crud component path. - clkao

 * Fix view CRUD template's method of getting the record - trs

 * First cut of a UUID column plugin, with a basic test in the user
   model - jesse

 * Add a load_by_kv to Jifty::Web::Session - sartak

 * Resolve import conflicts now that T::D and J::V::D::Helpers have a thingy
   with the same name - jesse

 * Moniker bulletproofing. Suggested by Mikko Lapasti - jesse

 * Push milestone 1 of trimclient to trunk. - clkao

 * Now make sure it's actually UTF-8 - trs

 * Make sure we get UTF-8 - trs

 * Fixing API qualification to make it possible to access actions associated
   with plugins via ->new_class. - sterling

 * Don't mess with the HTML by default. This should likely become configurable
   in the future. - trs

 * Cleaned up the class loader a bit to make all the auto-generated methods
   use the same name, remove an unnecessary elsif, and add a few more
   comments. - sterling

 * Need parens - trs

 * Fixed CRUD view to no longer require you to specify a base_path for the
   plugin's view. It was redundant and we could intuit it. - jesse

 * Refactor CRUD view to be more subclassable - Extract out per_page - trs

 * type can be empty for container columns. - clkao

 * support external javascripts. - clkao

 * Added support for application-specific plugins (i.e., App::Plugin::XXX) and
   plugins named using the fully-qualified Jifty::Plugin::XXX name. - sterling

 * check if current_user->can('user_object') when tring to figure out
   timezone - dpavlin

 * Altered the ClassLoader to create Collections for models deeper under the
   model namespace,like "App::Model::Foo::Bar". These is consistent with the
   handling for actions and other components already in place. - sterling

 * Move pulling action defaults from action in request into the action's new,
   instead of a "private" argument.
  * Remove an extra place where we default the moniker to
    _generate_moniker
  * A bunch of POD (re)wrapping. - alexmv

 * Recent YAML::Syck's get confused by trying to be too smart with
   $test_config, which is a filehandle which *also* stringifies to the path.
   Force stringification to get consistent (working) results. - alexmv

*       No matter what _resurect_current_user is intended for, it ought
          to be spelled _resurrect_current_user instead. :-) - audreyt

 * Mapper edge case failure (when no 'name' was given) - alexmv

 * add {_resurect_current_user} field into user module - ruz

 * protect ourself from circular references between User and CurrentUser

we do it in user_object, so solution is generic should work in any case, but
only if people use the method to set user_object and user model uses _current_user
key to store reference to the CurrentUser - ruz

 * Use Jifty::Util->share_root for finding plugin share roots so that if Jifty
   isn't installed it still DTRT
 * Only calculate static roots once and report on plugins adding roots (like the mason handler does) - trs

 * Allow app changeable cookie names - trs

 * Web::Form::Link - When escape_label was set, the tooltip property was (very
   sillily!) first escaped, then discarded away, displaying the unescaped text
   instead. It now escapes properly.
* Also make tooltips with value '0' display properly. - audreyt

 * Allow scheme to be specified for Jifty->web->url. This functionality was
   taken out during the move from "heuristics" to URI.pm, but for a non-
   apparent reason. - trs

 * HTTPS and HTTP adjectives for dispatcher rules - trs

 * Jifty->web->form->next_page got dropped when you submit only a specific
   action with Jifty->web->form->submit. This commit autoadds next_page if you
   submit only a subset of actions. - jesse

 * _redirect expects a local path, not a fully formed URL. (This only actually
   broke internal redirects) - jesse

 * Always give the dispatcher unescaped path like fastcgi does, from
   standalone, webservice, and region entrance. - clkao

 * work around annoying Module::Pluggable bug - sky

 * Make multiple use base lines into one for readability. - clkao

 * Admin UI: Don't trip over classes we can't require - jesse

 * Quiet a dispatcher warning - jesse

 * misc webservices_redirect cleanup. - clkao

 * Refactor handle_request to extract out methods
  * Only warn about denied actions on validate if they're also actions we want to run
  - jesse

 * Back out a Croak back to a die. (We're using it for exception handling, not
   to-user reporting) - jesse

 * Merge from fragcont branch to include minimum support of continuation in
   webservices requests to make SinglePageApp plugin work. - clkao

 * Only squelch "can't locate" errors relating to the class we're trying to
   require. If it's something else, it's likely a module use'd by the module
   we're requiring. - trs

 * correct en.po charset. - clkao

 * Only call LML->import once ever. - clkao

 * Kill 5% of startup time by not validating during DateTime::Locale. - clkao

 * Disable in-region redirect unless SPA is enabled. - clkao

 * Move methods unrelated to mason to Jifty::View. - clkao

 * Added support for "redirects" on fragment calls (which really just do an
   internal replace) - jesse

 * Really fix the region rewriting logic. - clkao

 * new Jifty->find_plugin method. - clkao

 * add a config file version, so we can change old defaults.
  - jesse

 * Correct app_class usage. - clkao

 * CurrentUser->username now uses brief_description on user_object. - clkao

 * In ClassLoader, be quiet when we are just trying to see if a module
   exists. - clkao

 * When we convert a model into an action, don't deref and then reref the
   array of possible valid values. We lose any attempt at possible magic that
   we might have. - jesse

 * A move to hand on the rendering of JDBI::Collection columns to app
   developers.
    
    We used to just ignore the rendering of any columns that refers to
    a JDBI::Collection, because there's no trivial way to do so. 
    
    However, if the column comes with a "render_as", we can assume that
    the app developer know what he/she is doing.  So we just render it
    as whatever specified.
    
    One scenario is that a collection of tags is rendered as a normal
    text input field, and develoeprs create tags records in their Tag
    model in before_create() method. With ajax canonicalize_tags this
    could be a simple and smart interface, and not difficult to implement
    at all.
    
    I'm sure that it'll open the chance to let developers write their
    own collection rendering modules like I did before. If we keep
    being ignoring, this won't even happend. - gugod
    
 * add data to the result indicating which requested actions were denied and
   mark them failed. Options for a better denied message coming soon - falcone

 * Extract the model list from Script::Schema to Schema - jesse

 * Incremental extraction of schema management from
   Jifty::Script::Schema - jesse

 * Cause more compiliation failures to actually stop the app from running
  - jesse

 * Cause more compiliation failures to actually stop the app from running
  - jesse

 * Cope better with malformed fragment requests - alexmv

 * Push app_root/lib onto @INC when we create a new Jifty object - alexmv

 * Moved the commands for add/drop column to Jifty::Record (they should move
   to JDBI eventually)
 * Added a drop_table to Jifty::Record
  - jesse

 * Added the before_access trigger and a simple test for it. Also updated
   TestApp and the current_user test to make them compatible with the new
   before_access test. - sterling

 * '*' matches only a single level in the dispatcher. '**' matches all level.s
   We want to run the "Home" rule at all dispatcher levels.
 
  - jesse

 * Make compile errors in autorequired modules fatal - jesse

 * FCGI.pm ties our streams and its implementation doesn't have support for
   setting IO layers with binmode, but we can do the same using
   Encode::encode. We just turn on raw mode on STDOUT and convert to octets
   ourself using Encode.pm and charset definition from the content type
   field. - ruz

 * Extensive UTF8 improvement: to sanity through insanity

* control mode of output handles, if content type has charset defined
    then we set :encoding(<charset>) output layer (or :utf8), otherwise
    binary
  * regions are special as we print out them into STDOUT, but sometimes
    need them as a string. We localize STDOUT and get data, however because
    of the above canonicalization we get octets or binary, so we check
    again the current content type. If the type contains charset definition
    then we decode octets back into perl string(in terms of perl unicode support),
    otherwise we leave things as is.
  
  jifty is sane when apps' developers are sane
  * never use 'bytes' pragma
  * avoid using 'encoding' pragma
  * use perl strings in jifty
  ** when you get a text data from external sources then Encode::decode it
  * set output encoding with $r->content_type('type/subtype; charset=XXX')
  ** by default it's UTF-8
  ** you can use cp1251 (or other) and things should work, user will get
     data in cp1251 and browser should display it right
  ** don't Encode::encode things before output
  
  everybody have own critirea of sanity
  * if you think that something is wrong then add tests to jifty 
  
     - ruz

 * we shouldn't silence utf8 warnings - ruz

 * utf8::downgrade converts to octets only if string had been upgraded, what
   is not always true for 'perl strings' - ruz

 * escape_utf8
  * don't use bytes just escape things doesn't matter if it's
    flagged string or not, perl must do the right thing.
  * don't localize ref, use it directly, afaik smaller
    memory footprint - ruz
  
 * utf8::downgrade doesn't like strings as FAIL_OK, only integers, 1 is not
   that cool as 'FAILURE IS OK', but works - ruz

 * initial environment that makes fastcgi work got deleted - jesse

*      This module is for rendering a collection of input fields at once
        as a single widget. The major goal is to let developer say like:
   
     column bars =>
       refers_to "My::Model::BarCollection",
       render as "Collection"
       availables are defer {
           retrieve_some_bars()
       };
   
   in their model class, and it'll just display a nice form to input
   the value for a list of available bars. - gugod
   

 * fixed Jifty::View::Declare::Helpers since we now install tag subs directly
   to the target package instead of using @EXPORT. We now makes use of
   T::D::Tags's @TagSubs struct - agentz



Jifty 0.70422

[Password Authentication plugin]

* Better "password reset" behaviour  
* added regression test for bug fix in Jifty::Plugin::Authentication::Password::Action::Signup
* change manual for access control with user and authentication::password plugins
* Revert the bogus warning silencing in 0.70416 as it kills Doxory example.  
  (reported by semifor++)
 
[Core]

* More debugging info for broken letmes
* Added duck typing to the Jifty::Handle constructor to prevent difficult 
  to trace error messages when the driver name is mispelt or fails to load.
* Jifty::Upgrade - Defensive programming against tables that did
  not have "create table" in its schema for SQLite column renaming.
* Jifty::Module::Pluggable - Silence the @ISA warnings. 
* Doc updates for Jifty::ClassLoader -- David Good <dgood@willingminds.com>
* Created a method that can be over-ridden for custom test database setup
* debian stuff, fr.po update

Jifty 0.70416
 * New ExtJS plugin (For yahoo-ui ext)
 * zh-tw L10N for authen/passwd/user plugins.
 * WWW::Mechanize 1.22 removed the form method.  
   thanks to hdp for noticing/poking
 * render_region should have default empty path.
 * Jifty::Plugin::REST::Dispatcher - Gugod pointed out that we don't need to
   stringify() the object-to-data output, because (esp for nested structures)
   it's far more convenient to have the $accept-specific formatter (e.g.
   YAML or JSON) to render it.
 * Added render_as_yui_menubar in Menu.pm
 * Upgraded YUI to 2.2.1
 * NOTICE: if you are using yui tabview, 
   please use tabview.css instead of tabs.css
 * Added yui/element-beta.js and yui/menu.js in Web.pm
 * Allow '->superuser' to be both an object and class method.
 * added audreyt's Doxory demo app from doc/talks/yapcasia2007-doxory.pdf
 *  Add doc and prefork dependency so the doc and dep tests pass
 * Preforking server support for Jifty::Server
 * Refactoring to support more template engines 
 * fix "open" class in menu - active menu item doesn't imply current open item
 * Jifty::Plugin - Authentication::Password now auto-loads LetMe and User.
 * added a "SkipAccessControl" framework directive
 * Doc: Add section on using models/actions outside of a Jifty app
 * fix handling of multi-line data when encoded in JSON -- they should never 
   wrap over multiple lines in generated output
 * helpers improvements for T::D
 * Make CurrentUser->new work as a method on an instance, so that 
   as_superuser works.
 * Added a 'None' session type for when your application doesn't need sessions
 * Can't just check to see if the config exists to decide whether to 
   initialze the Jifty object
 * Make render_region resolve relative template in current context.
 * We load the config on demand now, so it always exists. Test for 
   classloader existence, instead of config existence, to tell whether or 
   not we need to Jifty->new.
 * Refactor the I18N plugin stuff to not fail tests.
 * Make sure test coverage copes with new jifty->config 
 * Better plugin I18N
 * Plugin paths don't need to convert because File::ShareDir::module_dir
   always returns an absolute path. I have added also modification checking
   to the Jifty::I18N::refresh for plugin po files. -- Alexey Grebenschikov 
 * Log::Log4perl::Appender::String (used in tests) was only added in 1.02; 
   require at least that
 * Switch Jifty->config to automatic instantiation
 * Added a basic test stub for Jifty::Test::WWW::Mechanize. -sterling
 * don't require a bunch of unused modules that don't trickle to the templates
 * don't set the Home tab twice
 * use Pod::Simple::HTML where we need it
 * Administration and Online docs tabs are set in Jifty/Plugin/*/Dispatcher.pm
 * When running coverage, don't use Class::Accessor::Named as it uses 
   Hook::LexWrap
 * don't load up PodSimple and other friends unless you've actually enabled 
   AdminMode and brought OnlineDocs into the picture
 * Modified submit_html_ok to make it behave like the documentation says it 
   should.
 * Don't create a new config object every time we look at the db version
 * Added the ability to have a return button that looks like a submit button 
   on a form.
 * When you rest a lost password, email address is implicitly confirmed
 * extracted dump_rules into DumpDispatcher plugin -dpavlin
 * more quieting down of "couldn't drop that database that shouldn't have 
   existed in the first place" warnings
 * keep old LDAP and CAS plugins usable, 
   THIS COULD BREAK APP MODELS NAME 
   LDAPUser and CASUser models are now User -yves
 * Autogenerate Package::Action when we need it
 * Jifty: We now depend on Scalar::Defer 0.10 to not break the *_ 
   localization.
 * Jifty::DBI::Param::Schema - Mention how to use "defer".
 * Remove legacy naming from the Auth::Password plugin #  nelhage++ 
 * The plugin classloader is wrong. it's going away forever
 * LetMes need to deal with user objects as superuser to get their tokens
 * next major round of work on the login plugin. signup now works
   slightly better debug logging from the jifty dispatcher
 * Slightly better mail sending defaults
 * When we use App::Class, actually require the module, to save the user some 
   typing
 * Changes to the dispatching to templates:
 * only add '/index.html' to the path given if there is no template that can 
   handle the given path.
 * template_exists now checks for Template::Declare templates too
 * tests that check that T::D templates are preferred over Mason templates.
 * Set some svn:ignore properties so that generated files don't litter the 
   tree
 * Include the jifty skeleton app by default.
 * make the 'hey! it's admin mode' bit not overwrite the menu
 * TD fragments and unicode needed some massage.
 * Next pass at a login/signup password auth plugin. Now supports login and 
   logout and signup
 * Jifty::CurrentUser now has a default "_init" behaviour.
 * The password auth plugin now works
 * Updated the 'feeds' section in J:M::Cookbook to not lie about the way 
   XML::Feed actually works.  Arguably it /should/ work the way we described
   ("your implementation is showing"), but fixing the docs was easier than 
   submitting a patch to someone else's module.
 * Now we can inherit actions from plugins
 * fixed incorrect documentation of _ and added a SYNOPSIS
 * "final" Mergedown of the Template-Declare branch of Jifty.
  - New Template::Declare based templating system (optional)
  - Significant work on plugins
  - Significant refactoring
  - Many jifty features extracted to 'mandatory' plugin applets. 
    (These should be made optional or removable over time)
 * Doc patch for how to do multiple "onclick" actions - jpollack@gmail.com
 * Log::Log4perl::Appender::String (used in tests) was only added in
    1.02; require at least that
 * add doc to manage a superuser group
 * add doc to emulate updated_on
 * Add note to cookbook showing how to change other fields using ajax 
   canonicalization
 * Basic handler for running Jifty under mod_perl2.  Tested under Unbuntu
   Feisty, with a default Apache2/MP2 install.  Requires a config change,
   explained in the perldoc. -rodi
 * examples/{Chat,Clock,Ping}/: Use Jifty::Server::Fork instead of
   stub ::Server subclasses.
 * Jifty::Server::Fork - New module to conveniently express
   a forking builtin server.
 * Plugin templates should override the core, but not application templates
 * Since we use the schema tool to manage jifty's database, it's important 
   that it be able to be called from running code (including a DESTROY block).   As it was, we were initializing (reinitializing) Jifty from within the 
   DESTROY. That doesn't work so well.
 * Better test for "jifty already initted"
 * Fix adding columns during an upgrade.
 * added a Deploying page to the manual based on the process I have found 
   successful
 * updated the upgrading manual and added a few extra glossary items
 * DBD::pg passes postgres' warnings up, so try to convert their various
   logging levels back to Log4Perl levels.
   Completely heuristic, probably wants more guarding so it doesn't
   reach out and bite someone.
 * This quiets some of the most annoting warns revealed when I removed
   the log-level downing in Script/Schema.pm
 * Added support for schema_version() in records
 * Updated the schema upgrade process to handle renames more nicely
 * Added a simple test for upgrading
 * YAML.pm is currently required even if YAML::Syck is present.
   The Makefile now requires YAML even if you have a C compiler 
   and are installing YAML::Syck.
 * added a CUSTOMIZATION section to the Jifty::Action docs
 * upping require for IPC::PubSub to 0.23 due to use of disconnect
 * Disconnect PubSub before dropping the database
 * Solve copious global destruction warnings
 * send correct HTTP/1.1 headers for caching when running Jifty with 
   DevelMode: 0
 * Support POSTing to /=/model/Foo to create items without specifying a PK
 * lib/Jifty/Manual/TutorialRest.pod - quick overview of REST plugin
 * don't double warn.  Now that we stopped schema creation from suppressing 
   warnings this *shouldn't* be necesary
 * stop hiding messages/warns from the database during tests
 * default to only showing WARN and higher when running tests 
   (rather than our more normal INFO)
 * Added the ability to force arguments and path when rengering a region. 
   This lets developers force override something passed in via ajax or a 
   "sticky" value from a previous request.
 * Jifty::Script - Assume "jifty fastcgi" when we are running under cgi.
 * I18N and zh-* L10N for menu and halo.
 * fix JScript conditional compilation bug. Jifty.Utils.isMSIE works now.
 * strict, warnings, and redefinition warning avoidance for 
   J::Module::Pluggable.
 * Alternate implementation of Module::Pluggable::Object's _require method to 
   avoid a useless string eval.
 * Actually carp from within our log warning handler, to not swallow critical 
   debugging into
 * Jifty::Logger - Properly respect previous $SIG{__WARN__} handler
   if Log4Perl isn't yet initialized; that means we won't silently
   discard compile-time errors from our model classes, though they
   are still demoted as warnings.
 * Refactored Jifty::Script::Schema to use extracted column, table and db 
   manipulation routines
 * Extract the "load model related classes" logic in the class loader to its 
   own function
 * A new method provides a tantalizing glimpse of jifty's forthcoming "load 
   models from the database" support
 * Added table and column schema generation methods to Jifty::Record, based on   an extraction of Jifty::Script::Schema
 * Added "create db" and "drop db" methods to Jifty::Handle
 * Added the 'bootstrap' option to vanilla Jifty::CurrentUser. Now there's one   fewer cases where you need a custom CurrentUser class
 * Jifty::Util - Add a generate_uuid method and use it to generate 
   ApplicationUUID.
 * Jifty::Script::App - Make the generated Makefile.PL more canonical.
 * Jifty::Util - only requires ExtUtils::MM at request.
 * Jifty::Util - fixed the broken Win32 logic:
  - use ExtUtils::MM before calling MM->maybe_command
  - ignore the case of letters when comparing file names
 * Change all tests for the literal Driver string "SQLite"
   to a regex match to /SQLite/, in anticipation of fancy
   drivers such as SVK::SQLite.
 * enable UTF-8 flag awarness in JSON libraries to fix problem in validation
   of values during creating a record via the admin interface when column has
   valid values with unicode chars.
 * include iepngfix 1.0
 * add MIME type text/x-component for .htc file
 * howto document for iepngfix
 * Our fallback I18N handle needs to specify that it should autocreate keys 
   if they're not found
 * Jifty::I18N: Provide a default fallback lexicon class for "en"
   so Locale::Maketext won't clobber our $@ stack.
 * Jifty::I18N - Avoid naked eval{} that clobbers $@.
 * Jifty::Web - Add private accessor for _state_variables to
   avoid typo-prone ->{'state_variables'}.
 * REST: Implementation for PUT and DELETE on model items
 * Canonicalize/validate after typing and blurring, too
 * Modernization of model declarations for compatibility with new 
   Object::Declare based Jifty::DBI
 * updating to  'max_length' name for the parameter formerly known as 'length'
 * Jifty: Deprecate ->length in web form and param fields;
    write ->max_length instead.
 * Allow create, load_or_create and load_by_cols to be used as class methods.
 * REST: Show an action HTML form when rendering /=/action/App.Action.Foo as 
   HTML
 * Fix running actions (checking for allowed-ness was done wrong)
 * Cut down on a lot of the crap that we outputed and fix up structure
 * Make it possible to request XML from the URL like the other data formats
 * Show action params in any data format instead of just an HTML form
 * Only allow method calls if the "field" is actually a column
 * Force stringification so that we don't segfault trying to output blessed 
   references and what not
 * added the update method which reconstructs the locale
   handle (used by Jifty::Handler::handle_request) [Jifty::I18N]
 * &_(loc) now uses the global locale handle instead of
   the one set up during Jifty::I18N->new().  [Jifty::I18N]
 * Audrey's refresh method now always calls C<update>
  either directly or indirectly (via C<new>) [Jifty::I18N]
 * C<handle_request> now always calls
  Jifty::I18N->update directly or indirectly
  (via C<< Jifty::I18N->refresh >>) [Jifty::Handler]
 * Misc minor startup-time performance improvements
 * Only run onsubmit() if we have an onsubmit property
 * Support for controlling browser-based autocomplete on form fields
 * Fix how fake buttons submit forms -trs
 * Gotta double-quote keybinding labels if they have embedded newlines.
 * Warnings when a developer puts a "show" into a "before" or "after" 
   dispatcher rule.
 


Jifty 0.70117
   Dependencies: 
     * Bumped the minimum required version of Jifty::DBI to 0.30

Jifty 0.70116

   New authors
     * Add yves in authors, for localisation, debian packaging -yves
     * Added PJF to AUTHORS file. -pjf
     * Added evdb as a new author -evdb
     * agentz
     * pmurias

   PubSub (audreyt, clkao, jesse)
     * Audrey, Jesse and CL hacked out a PubSub message bus and a
       preliminary Comet implementation.
     * Doc for how subscription stuff works. a bit of refactoring toward
       a second transport
     * Added sample apps and design docs from the PubSub/Comet hackathon
     * upgrade schema to work on mysql -jesse

   Database
     * Initial support for prefetched collections. -jesse
     * Added support for SQL::ReservedWords to the schema tool, to stop
       me from building applications for Postgres on SQLite and hurting
       myself later -jesse
     * Add a CheckSchema option to the config file to govern the SQL
       Schema keyword checking -jesse
     * Classify databases failing an SQL::ReservedWords check for nicer
       output -gaal
     * Better debugging information when running actions -jesse

   Documentation
     * Updated tutorial to remove mention of the deprecated download
       area. -pjf
     * Provided extra tips on how to install Jifty using Perl's standard
       CPAN module on both Unix-like and Win32 systems. -pjf
     * Documented PageRegions usage -wolfgang
     * Show an example of a canonicalizer (lifted from the jifty
       presentations). -falcone
     * Document the ability to frob other pieces of the action from a
       canonicalizer -falcone
     * Jifty::Manual::UsingCSSandJS - Fix the misspelled "app.css" to the
       correct "app.js"; minor reformatting. -audreyt
     * Jifty::Manual::Models - It mentions <> as the SQL inequality
       operator, but all internal code uses != instead; change the doc to
       match reality. -audreyt
     * Jifty::Manual::Cookbook - Trivial typo. -audreyt
     * Jifty::Manual::AccessControl, Jifty::Manual::RequestHandling -
       Change C< objEmeth > to the more readable C<< obj->meth >> POD
       syntax. -audreyt
     * expanded AccessControl.pod to reflect changes in Login plugin
       -wolfgang
     * added a pod describing Jifty's request handling process -wolfgang
     * added a german translation for Tutorial.pod -wolfgang
     * Minor fixes to pod -evdb
     * added explanations about Login Plugin to AccessControl.pod
       -wolfgang
     * updated Models.pod to reflect recent changes -wolfgang
     * added a section on 'limit' to 'Models.pod' -wolfgang
     * Supply documentation for all of the methods which had been missing
       it -jesse
     * Jifty::Param::Schema merge algorithm rescued from the obscurity of
       commit logs. -jesse
     * Corrected Jifty::Record::current_user_can: The right is 'update',
       not 'edit' -jesse
     * Jifty::Record::current_user_can: "admin" should have been "delete"
       -jesse
     * Added the time and date filters to the cookbook. -nelhage
     * Improved docs for Jifty::RightsFrom -jesse
     * Improved docs for Jifty::Record (Access control related
       functionality) -jesse
     * Added a documentation fileon CSS and JS -wolfgang
     * Jifty::Param::Schema - Trivial doc fix to s/Wifty/MyApp/. -audreyt
     * Jifty::Action - add documentation for the automatic moniker
       generation algorithm. -audreyt
     * Minor documentation updates -gaal
     * Jifty::Script::FastCGI doc - it's share/web/ not web/ nowadays.
       -audreyt
     * Two simple POD typos, one spotted by Gaal Yahas. -audreyt
     * Minor spelling corrections. -jpeacock
     * Fixed a cookbook typo, and add some sentences describing an issue
       when defer{} failed to dwim. -gugod
     * A cookbook recipe to do ajax canonicalization. -gugod
     * Jifty::Action POD: Copy-n-paste the synopsis from
       Jifty::Param::Schema and correctly L<> there. -audreyt
     * Tell people where the docs for Jifty::Action::button really live -jesse
     * [Manual/Actions.pod] added more explanation for the "return values" of Actions
       made the $id args optional in the sample code.
       added internal links to L</monikers>.
       a few additions to the explanation
       a few cleanups in the sample code -agentz
     * Manual/Cookbook.pod: typo fixes, code cleanup -agentz
     * document Jifty::Web::Form::Field::preamble -agentz
     * Jifty::Manual::(Upgrading|RequestHandling|AccessControl|UsingCSSandJS|Actions|Continuations) 
       typo and wording fixes -agentz
     * Jifty::Manual::PageRegions examples and cleanup -agentz
     * Jifty::Manual::Models - mentioned the build_select_query method,
       paging, and Jifty::Manual::Upgrading. -agentz
     * Added a note about the fact that mason needs to be flush left to the
       tutorial -jesse
     * add full MyWeblog example -jesse
     * limit handling corrected in Jifty::Manual::Models -wolfgang
     * Cookbook typo fixed. thanks to tokuhirom -jesse
     * Jifty::Manual::Cookbook - applied the "edit" link patch from Peter Wise. -agentz
     * plugin and declarative test design docs -nelhage
     * ldap autocomplete example -yves
     * Tutorial_de retitled to not conflict with the english one. -jesse

   Plugins
     * First release for plugins AuthLDAPOnly and AuthLDAPLogin, all
       comments are welcome -yves
     * Login plugin : Add missing Notification::ConfirmLostPassword,
       dispatcher for passwordreminder, let to reset lost password -yves
     * Added an action to let the user change his/her password in the
       login plugin -yves
     * AuthLDAP plugins: minor doc and debian rules fix -yves
     * You can now run actions and get back arbitrary data formats from
       the REST dispatcher -nelhage
     * REST dispatcher cleanups. -jesse
     * First cut at XML webservices in the REST plugin -jesse
     * The first bit of major refactoring of the REST plugin. -jesse
     * we loves our ACLs, we do. The REST plugin was violating too much
       encapsuplation -jesse
     * Added Module::Install files for plugins EditInPlace and Login;
       some of them were in the MANIFEST but not the repository, so we
       were getting false warnings of missing files when running 'make
       distclean'. -jpeacock
     * Add license to Login plugin's Makefile.PL. NOTE: remember to
       increment the plugin's $VERSION strings before releasing to CPAN
       (else updates won't get installed). -jpeacock
     * test and debian updates for the LDAP plugin -yves
     * Usable AuthzLDAP Plugin, see man Jifty::Plugin::AuthzLDAP
       while thinking on new more generic Jifty::Plugin::Authz::XYZ , 
       Jifty::Plugin::Authentication:XYZ -yves
     * Login: Don't delete arguments that you don't know about /a priori/.  
       Don't display fields that shouldn't be displayed 
       (using the Unrendered attribute). -jpeacock
     * Duplicate code removed from the plugin classloader -jesse
     * Better handling of autocreated modules from plugins.
       Print debug statements when autogenerating packages. -jpeacock
     * reworking of Login plugin -jpeacock
     * Some CAS authentification plugins -yves

   Internals
     * Jifty.pm: Load I18N after plugins, but before the main
       classloader, so the main classes has access to _(). - audreyt
     * Removed support for Devel::Gladiator. It was very, very beta and
       caused server processes to end up as zombies -jesse
     * qw'' is just weird. Change all instances to qw(). -schwern
     * Jifty::Action::Record 'use'd DateManip but never uses it. -schwern
     * It also used UNIVERSAL::require but did all of its requires via
       Jifty::Util. -schwern
     * Yet another fix to the URI-from-env feature, fixes a failing test
       (reported by alexmv++). -gaal
     * Guessing request schemes from the environment is fragile, so make
       the fallback on BaseURL more reliable. -gaal
     * when inferring a scheme for the application, look at REQUEST_URI
       instead of assuming http://. Fixes tangent() on non-http:// apps.
       -gaal
     * Use Jifty->app_class whenever possible -alexmv
     * Code cleanups in Jifty/Subs.pm -alexmv
     * Fix for when Jifty->web->url is called with query parameters
       -alexmv
     * Added a Module::Pluggable subclass to get our own (somewhat
       improved) require behaviour -jesse
     * We were not properly removing blank values on record create -jesse
     * Better handling of current_user when used as a class method -jesse
     * use ApplicationClass, not Application Name in the login plugin
       -clkao
     * Add _is_readable in Jifty::Record, which means the record should
       bypass current_user_can in check_read_rights. -clkao
     * Add results_are_readable argument to collection to mark records
       with _is_readable. -clkao
     * Minor refactoring to enable non-cookie based session storage
       -jesse
     * Use Jifty->app_class to construct app-space class names. -clkao
     * Jifty::JSON - Turn on $ImplicitUnicode so unicode strings
       can be reliably serialized into .js and back.
       (This is crucial for e.g. JavaScript confirm hooks.) -audreyt
     * avoid warnings in LetMe -jesse
     * DateTime: DateManip can get confused if someone else calls Date_Init 
       earlier in the process.  Tell it "no, really, GMT please" -falcone
     * DateTime: we're always setting the timezone to the user's timezone, even if
       new is explicitly called with a timezone.  This breaks DateTime->from_epoch
       which wants data back in UTC -falcone
     * provide json webservices -audreyt && pmurias
     * Jifty::ClassLoader - Defining MyApp::Action::Record::* now works. -audreyt
     * Jifty.pm: Before we call Data::UUID->new, be sure to load it. -audreyt
     * Jifty::Param::Schema allows "hints are 'type stuff'" but our Model syntax
       uses 'are' to build an arrayref, so "hints are 'type stuff'" in a model would
       result in displaying ARRAY(0x123456).   -falcone
     * implement if-modified-since for static view handler. -clkao
     * Module::Pluggable does't include empty intermediate classes now -alexmv

   Web UI
     * Links and Form titles needed to be better escaped -jesse
     * Add delete option in admin view (for Jamalle - private joke) -yves
     * Jifty::Param - It's no longer a Jifty::Web::Form::Field subclass.
       -audreyt
     * Add the ability to send "notes" to users from your canonicalizer.
       This is separate from the warning and error spans used by the
       validator -falcone
     * validator.xml - allow us to update action data just by changing
       it. Without this you had to set ajax_canonicalizes on a field in
       order to change it and have it propagated back. --falcone
     * Some refactoring of form field rendering, and adding a focus =>
       argument to form fields to focus them on page load. -nelhage
     * Switch our implementation of autofocus to use behavior, rather
       than a custom onload event -jesse
     * Fix calendar div & IE select box problem -ishigaki
     * Do a slightly more generic dereferencing on the user object's
       friendly name in the sidebar -jesse
     * Fixing autocomplete so we render the autocomplete div *before
     * the javascript, so the JS can hook it. -nelhage
     * Remove useless check in buttonToLink to get a javascript
       performance boost. -hlb
     * Make render_messages sort on result moniker as well. -audreyt
     * Jifty::Response: Ensure consistent ordering from monikers.
       -audreyt
     * Hacked the yui calendar component to allow selection of out-of-month
       dates -jesse
     * Even more I18N+L10N, this time for admin crud pages and calendar.html -audreyt
     * adjusted the output format of render_preamble by removing a redundant space. -agentz
     * The "length" attribute Web::Form::Field now also means HTML "maxlength"
       in addition to "size". -audreyt
     * calendar.js - Fire off canonicalization/validation methods upon clicking a
       date. -audreyt
     * Update YUI to 0.12 and port local changes -trs
     * Administration manage model : 
       add sortable capabilities in header table
       bug fix in delete item
       begining of modularity
       other cosmetic changes
       silk icons, wai tags thanks to Jamalle -yves
     * Jifty::Web::Form::Field and ::Select - Label display was rendered using
       the latin1-biased escaping in HTML::Entities; switch to the proper UTF-8
       escaping in Jifty->web->escape. -audreyt
     * This helps passing xhtml validation.
       <input> cannot be direclty under <form>, there should be a
       block-level element in-between. -gugod
     * made wait-message look consistent in both firefox and IE -agentz
     * admin/model/dhandler: localization hooks added, page title added -agentz
     * add yui/tabview and its assets -hlb
     * Indicate mandatory fields visually -trs
     * Only emit mandatory field warnings with Ajax when the field starts with
       data. -trs
     * Close <li>s we open in the admin interface -alexmv
     * remove extra </div>s -gugod
     * upgrade yui library & add yui/container.js -hlb
     * Fix broken Jifty.Utils.isMSIE -trs
     * Fix buttonToLink to deal with normal, non-ajaxy buttons that we want to turn
       into links -trs
     * Use Jifty::JSON::objToJson to properly escape JS values (in particular
       single quotes in button labels were causing problems) -trs
     * Add a key_binding_label attribute so that key binding labels can be set
       independently of the normal label -trs

   Jifty Actions
     * Jifty::Action: Generate stable auto-monikers for actions based on
       the caller stack. -audreyt
     * Negative searching for Search actions -jesse
     * Added an option to search the contents of any text field to jifty
       search actions -nelhage
     * Jifty::Action::Record: Allow the same for user-generated param vs
       CRUD actions. -audreyt
     * Jifty::Action - Autoincrement the per-request stash counter for
       the case of looped action creation. -audreyt
     * Fixed 'mandatory' validation misbehavior -- 'mandatory' now
       handled correctly -wolftang
     * Jifty::Param::Schema: Allow partial override of superclass's
       PARAMS by simply declaring a sub "param" and fill them with the
       fields you'd override. -audreyt
     * Jifty::Web / Jifty::Action: Stickiness now works on autogenerated
       monikers. -audreyt
     * Modified Jifty::Action::Record::Update so that empty strings for integer and
       boolean columns will be interpreted as NULLs. This may break apps that
       assume that an empty value string will be a no-op. -jesse
     * Jifty::Action::Record::Search - Consider "float" and "double" fields
       as numeric for comparison.  Also consider "char" as textual. -audreyt
     * Allow a canonicalization note to be set, even if you don't change the 
       value of the action parameter - falcone
     * L10N for Action::Record::Search -audreyt
     * Jifty::Manual::Actions include example with available are defer { ... }
       syntax which doesn't work because ref on variables deferred with Scalar::Defer
       return 0 instead of ARRAY -dpavlin
     * Add an "(any)" label to Action::Record::Search when render as radio. -audreyt
     * Jifty::Action::Record - Support for "is autocompleted" annotation. -audreyt
     * Jifty::Action::Record::Search - "numeric" and "decimal" fields are also
       numeric. -audreyt
     * Jifty::Action::Record - "is autocompleted" choices should not consider
       null/empty fields. -audreyt
     * Action::Record::Search - When there is just one choice, don't bother
       displaying '(any)' for Radio. -audreyt
     * Jifty::Action::Record::Search - First cut at a _dwim field for numeric
       fields that supports > >= < <= == = != ! <> operators. -audreyt
     * Jifty::Action::Record - Autocompletion now lists only the parts
       that matches the user-input as prefix. -audreyt
     * Jifty::Action::Record::Search - Add _before/_since for dates, as well as
       the equivalent _ge and _le for numbers. -audreyt
     * Jifty::Action::Record::Search - Add hints to _dwim. -audreyt
     * Adding a note about canonicalizers being idempotent -nelhage
     * add max_length alias to fix Object::Declare and Jifty::Param::Schema
       not handling length properly -alexmv

   bin/jifty
     * Change Jifty::Util's probe of bin/jifty from -x to -r for poor
       people on filesystems that does not have a executable bit. (The
       maybe_command is still needed for the .bat case.) -audrety
     * Fix the bin/jifty detection logick: The .bat extension exists for
       MSWin32, cygwin and os2, so use MM->maybe_command for those three
       platforms. -audreyt
     * Also, the -e check is redundant after -x, and in Win32 we can use
       bin/jifty.bat alone without bin/jifty, so make the check respect
       that case. Reported by: Stephen@s-team -audreyt
     * bin/jifty covered sigterm in a way that could cause zombie processes
       under fastcgi -jesse
     * Be explicit about the paths we're creating -alexmv
     * Jifty::Script::Server - Remedy for the edge error case where var/
       is missing, which used to cause mysterious error messages. -audreyt

   Building apps
     * Small error string change to suggest looking for missing use lines
       in models where refer_to is used -bartb
     * Ongoing work to pass through Class::ReturnValue errors all the way
       from Jifty::DBI to the view layer -jesse
     * create scaffolding actions with the new Jifty::Param::Schema
       syntax --falcone
     * Jifty::Manual::Upgrading - Remove the now-obsoleted claim that one has
       to "use" model classes before renaming it. -audreyt
     * Jifty::Upgrade - rename() now works with SQLite too, woot! -audreyt

   Dependencies and installation
     * Makefile.PL typo. Spotted by David Adler -jesse
     * Files for debian packaging, now rather for actual cpan release
       than for svn. -yves
     * Update MANIFEST.SKIP and run 'make manifest' to ensure that new
       files get added properly. -jpeacock
     * Added a dependency on libextutils-command-perl to debian control
       file -bartb
     * Older DBI versions didn't provide the API we're using. (0.22 is
       known bad) -jesse
     * Remove PerlIO::gzip as a Jifty dependency. -audreyt
     * Older XML::Writer versions failed tests. Dependency bumped -
       Thanks to Jonathan Stowe -jesse
     * Reverting to dumping using YAML.pm *again*, because YAML::Syck
       generates XML that makes YAML segfault :/ -nelhage
     * Fixed missing dependency on Module::CoreList -- Thanks to Henry
       Baragar -jesse
     * Makefile.PL - Add dependency on Test::Base and Module::Refresh.
       Reported by: Andreas Koenig -audreyt
     * Makefile.PL - Bump JSON::Syck dependency to 0.15 to handle
       single quote + unicode strings. -audreyt
     * SQLite is required to test properly -jesse
     * debian packaging updates -yves
     * Skip html files when looking for dependencies. This may cause us to
       miss some modules used only from within mason, but it will stop falsely
       detecting lines that start with the word "use" in docs. -jesse
     * add Test::MockModule and Test::MockObject for J::W::F::F testing -agentz
     * made Test::MockModule and Test::MockObject optional by
       putting them into development dependency list -agentz
     * Makefile.PL: remove Test::HTTP::Server::Simple dependency when $^O eq
       'MSWin32' -ishigaki
     * debian packages : add libtest-mockobject-perl libtest-mockmodule-perl in
       recommands packages (for new snapshot on jiftysvn repository) -yves
     * cleaned up debian readme -bartb
     * Clean up MANIFEST (mostly sqlite files) -alexmv
     * hlb++ reported that we really want HTTP::Server::Simple 0.26+,
       not 0.20+, as 0.20 and 0.21's critical URI-path-processing
       bug makes us non utf8 friendly. -audreyt
     * Added Data::UUID to the Makefile.PL and made sure we use'd it in 
       Jifty.pm -kevinr

   Internationalization
     * The ubiquitous "There was an error completing the request. Please
       try again later.") error message should be localised. -audreyt
     * We now default the location of the jifty siteconfig file -jesse
     * For some reason, loc('') started spewing out PO metadata. This
       seems to be b0rkeness on the Locale::Maketext layer, but for now
       generalize the undef detection logic in Jifty::I18N to recognize
       that case. -audreyt
     * "You need to fill in this field" needs to be localized. -audreyt
     * Stopped the internationalization system from exploding if a plugin
       doesn't have a module_dir -alexmv
     * The internationalization system now extracts messages from
       TemplateRoot, not share. -clkao
     * Plugin internationalization and french po files -yves
     * Jifty::I18N: New ->refresh method so .po files are reloaded
       properly when DevelMode is on. -audreyt
     * Even more l10n on Jifty::Action::Record. -audreyt
     * jifty po shouldn't check/update files under .svn directories -ishigaki
     * zh_cn and zh_tw translations -audreyt
     * "jifty po": Ignore _svn/ directories (Win32), as well as foo~ files. -audreyt
     * L10N for the new Search action fields. -audreyt
     * update fr.po -yves
     * update zh_cn and zh_tw and use traditional characters in zh_tw -agentz
     * update german J::Manual::Tutorial_de to match english version's 
       changes -wolfgang
     * Jifty::Script::Po: shouldn't update other catalogs if we specify target
       language with -l -ishigaki

   Testing
     * Jifty::Test: canonpath-ed for Win32 -ishigaki
     * make sure to skip 04memcached.t if you don't have Cache::Memcached
       -ishigaki
     * skip all the live tests (that call 'start_ok') on Win32 -ishigaki
     * shut up warnings when tests have no plan (t/Continuations/03-gc.t)
       -ishigaki
     * Added Jifty::Test->web to allow using Jifty->web in tests without
       a bunch of scaffolding.
     * Converted search tests to using Jifty::Test->web -schwern
     * Basic compile and startup tests for the Chat sample -schwern
     * add tests for Jifty::Web::Form::Field's render methods -agentz
     * adjusted t/06-forms.t to skip related tests when
       these two modules are not installed. -agentz
     * fix t/TestApp-Plugin-REST/t/02-basic-use.t because ClassLoader
       creates 4 new actions -falcone
     * add tests for Jifty::Param::Schema -agentz
     * TODO tests attempting to test if we get ajax validation errors for
       mandatory values after the sticky_value has been deleted -trs

   Email notifications
     * When sending email notifications, encode the message body -clkao
     * MIME-encode notification subjects. -clkao
     * Content-transfer-encoding needs to be 8bit. -clkao
     * Don't set notification transfer_encoding to 8bit if it's actually
       multipart. -clkao

   Dispatcher
     * avoid undef warnings in the Dispatcher -jesse
     * Jifty::Dispatcher - Alternation in extended shell globbing syntax
       now admits zero characters as well:
       on 'foo{,.zip}'     # matches 'foo' and 'foo.zip' -audreyt
     * Jifty::Dispatcher - NUMBER SIGN (#) now captures one or more digit
       characters in the extended shellglob condition syntax.
       Suggested by: Sebastian Riedel -audreyt

Jifty 0.60912

Testing

 * force to use Jifty::TestServer on Win32, though both JTS and THSS doesn't work properly at the moment. 
 * Give a description for get_html_ok so that you know what URLs fail/succeed in test output
 * Small stylistic cleanup to t/01-dependencies
 * Honour coverage options.
 * make sure to remove remnant test db before we test (Jifty on Win32 fails to unlink them right now)
 * Add Jifty::Test->test_in_isolation
 * Document Jifty::Test->is_done.
 * Added Jifty::Test->is_passing and is_done
 * Basic SYNOPSIS for Jifty::Test as well as mentioning the Test::More passthrough.
 * Add Jifty::Test->teardown_mailbox to mirror setup_mailbox
 * use safer File::Spec->rel2abs for SubTest
 * TestServer: use File::Spec->rel2abs; it's safer than Cwd::abs_path which croaks
 * Jifty::Test->test_file() accepting and returning a list causes problems
   because people will try to do:  my $file = Jifty::Test->test_file($file) and
   it ain't gonna DWIM.
 * Mention Shell::Command and Jifty::Test->temp_file in the style guide.
 * Add Jifty::Test->test_file() to declare files created only for testing and
   which should be cleaned up.
 * Fixing tests when using JDBI::Record::Memcached and setting things in the database from test scripts
 * Added explicit tests for Jifty::Action::Redirect
 * Script for running client and server side combined code coverage.
 * Give a description for get_html_ok so that you know what URLs fail/succeed in test output
 * Ignore "fluff" errors in HTML validation since they cause non-W3C attributes like "autocomplete" to be warned about
 * Add html_ok method for checking the mech's current content so tests can use it while we retain control over Test::HTML::Lint

Models

 * jifty model --name now uses the new schema {} sub.
 * Made the display of a friendly string for picking a record from a list a lot more flexible. 
 * canonicalization wasn't being properly run on models before validation
 * Added Jifty::Filter::DateTime, a JDBI filter that promotes DateTime
   objects to Jifty::DateTime objects on read, setting the time zone
   appropriately.
 * Added a concept of "virtual" arguments to actions. These won't be passed on to Record classes, even if they're sumbitted. We use this for Password confirmation arguments, so that we don't pass password_confirm on to the database, which is kinda useless (and breaks the db ;)
 * Added a as_superuser method to Jifty::Record to make it easier for
 * code to briefly dodge around ACLs when needed.


Admin UI

 * __jifty/admin: use ->models reflection to build the nav bar.
 * Integer C<gt> or C<lt> searching.
 * Added substring search and date comparison to J::A::R::Search
 * Basic search in admin mode using Jifty::Action::Record::Search. Still buggy, especially UI-wise, but functional.
 * Initial version of Jifty::Action::Record::Search. It only supports
 * exact positive searches on fields at the moment.
 * There's no point in rendering confirm fields for passwords when we're
   viewing records in admin mode.
 * Don't create _gt and _lt search fields for magic _id refers_to fields.
 * Make the admin UI look slightly less crappy.
 * Make admin mode DTRT with columns that end in _id and refer to another model.

REST

 * REST Dispatcher: model list reflection
 * Basic placeholder for REST plugin tests
 * REST Dispatcher skeleton that actually works
* Jifty::Plugin::REST::Dispatcher - /=/action/ now works across HTML+HTTP.
* J::P::REST::Dispatcher - all GET model URLs work, with 404s.
* Jifty::Plugin::REST::Dispatcher - model fetch actually works!


Actions

 * No longer generating arguments on C<Jifty::Action::Record> for fields
   that C<refer_to> C<Jifty::DBI::Collection>s, since we can't do
   anything useful with them right now anyways.
 * Get the _confirm items on passwords to respect sort ordering
 * Debugging improvements to stop stupid developer mistakes like passing the wrong sort of object to a Jifty::Action::Record. 
 * Now we do proper escaping of values in select-one lists.
 * Canonicalise {onclick}{submit} using the accessor wrapper.
 * Only call moniker when {onclick}{submit} isa Jifty::Action.

Documentation

 * Wolfgang Kinkeldei: added a pod on models 
 * Patch from Todd Chapman to fix tutorial
 * The beginnings of a Jifty code style guide.
 * Jifty::Manual::Continuations: reflect tangent() in the manual.
 * Developer documentation for the Jifty::Web::Form::Field::* hierarchy.
 * Add "How do I Add Atom/RSS Feeds" to Cookbook.
 * Add a recipe about running fastcgi server, which, in fact, only points
   to 'jifty help fastcgi'.
 * lib/Jifty/Manual/FAQ.pod - a start on an FAQ
 * Standardizing on referring to share/web everywhere in the tutorial.
 * Todd Chapman noticed a typo in the docs about autocompleters
 * Tutorial patch from rindolf++
 * documented logger_component argument
 * Add a small bit of doc about creating your own classes that are normally created by J::ClassLoader
 * A start at some docs on upgrading, needs reviewing and some more examples
 

Perfomance and optimization

 * Don't try to lowercase session information on postgres
 * Don't bother with session when serving static files.
 * Don't need ExtUtils::MakeMaker in Jifty::Util.  This is about 7% of total compile time loading jifty.
 * Kill Jifty::Web::Menu circular references.
 * Transform actions in {onclick}{submit} to their monikers, to avoid
   circular references.

Javascript and HTML

 * Fix AJAX canonicalization of date fields
 * Some browsers don't like trailing commas in JS arrays and hashes.
 * You can now pass confirm => 'question?' to javascript hooks (i.e. onclick) and get a confirm dialog in the browser. This doesn't work without javascript yet.
 * Use a local copy of the icons in our calendar widget, rather than the version that yahoo points to on akamai
 * fix the unexpected behavior in context menu for IE users.
 * Fix bug that didn't allow calendar months to be changed
 * Show calendar widget on focus and hide it on blur
 * If we don't have XMLHttpRequest, fall back on page loads
 * More thorough normalization of the submit parameter to Javascript handlers
 * Accesskey support added to buttons and links. It just uses the same keys as our javascript key bindings.
 * A little more Element/Clickable refactoring, and implementing a
   C<disable> option to onclick handlers that toggles whether or not to
   disable form fields for an action.
 * We now write out state variables at the start of forms, instead of at the end. 
 * Moved "Dismiss" buttons on messages and errors into Behaviour, so they only show up in javascripty contexts where they'd be useful
 * Added the ability to support target attributes in menu items and clickables
 * IE doesn't support element.setAttribute("class", "foo"), so use element.className instead
 * Explicitly specify a radix of 10 (decimal) for the parseInt calls used in Yahoo's calendar widget when parsing the date to initially display
 * Don't attempt to disable hidden inputs, since this sometimes causes IE to die
 * Use our own "enter" handler to select the button to click, since Safari sometimes gets it wrong with complex fields
 * The setAttribute call doesn't work for "class" in IE
 * Fixing the calendar widget to create a new calendar every time, so
   that the calendar reflects any changes the user makes in the text
   field.
 * Support turning off autocomplete on a per-form basis.  We still need per-field, but that's for later.

Distribution

 * debian packaging files for jifty
 * Removed duplicated share/web (it was copied to lib/auto/Jifty)
 * CGI.pm 3.17 (and possibly earier) had a bug where regex metacharacters in
   the PATH_INFO would cause it to puke.  We now depend on CGI 3.19 which fixed
   that bug.
 * Update Module::Install to 0.64.  The important thing here is it gets us
   a fixed Module::AutoInstall which works when you run Makefile.PL from the
   command line without CPANPLUS installed.
 * Don't index the t directory
 * add "use Jifty::YAML" before all uses.
 * Moved some modules to feature sections in Makefile.PL, updated 01-dependencies.t to recognise recommends sections as well as requires
 * Win32 requires File::ShareDir 0.04
 * Removed Text::Autoformat dependency and usage.

Dispatcher

 * Dispatcher: Support tangent($url) as sugar for Jifty->web->tangent(url=>$url).
 * Dispatcher: Allow "**" in glob pattern to mean anychar including slash.
 * Dispatcher did not have a ->{cgi}, so ->method certainly could not
   work.  Use the env variable for now.
 * Jifty::Dispatcher: abort(404) now works as the doc promised.

Internals

 * Jifty->web->return in void context is now an immediate return.
 * Jifty::ClassLoader - Make Jifty::Handle a CL'ed module as well,
   so MyApp::Handle can implement scary magick of its own.
 * Don't blow up when trying to check if action mixins are autogenerated
 * Let's be better about not redirect-looping when calling continuations
   to paths that contain multibyte characters. This solution is a hack,
   but it's better than looping.
 * Fix placeholders on browser forward/back
 * Replace hard tabs with spaces for consistency
 * Jifty::Web::state_variables no longer prefixes keys with J:V- before
   returning them, and Clickables now serialize the *outgoing* state
   vars, instead of the previous request's.
 * When rendering a page region, mark actions as inactive, don't remove
   them, so that their arguments are available inside fragments.
 * If we receive an action's arguments, but it's not in J:ACTIONS, or
   we don't run it for some other reason, don't consider it to have
   failed for the purposes of stickiness.
 * moniker_for and action_form now behave more cleanly with forms which
   have no non-continuation fields other than their submit buttons.
 * No longer lose if you do a Jifty::Action::Redirect to the same page
   you're already on. Also, add the ability to force Web to redirect,
   even if it's to the current page.
 * Jifty.pm: Change all __PACKAGE__ to Jifty.
 * Jifty::ClassLoader: provide ->models accessor to list the model classes.
 * added Jifty::Request::clear_state_variables
 * Form::Clickable: Don't mix self accessors and args.
 * Refactor the constructors for Jifty::Web::Form::*, which takes initial
   hash and values to be overridden with accessors.
 
Internationalization

 * LetMes' escaping should be utf8 aware
 * Email addresses probably shouldn't ever be utf8, but using the utf8 escaper is more Right(tm)
 * Properly UTF-safeing Jifty::LetMe
 Sean E. Millichamp and clkao both pointed out that Locale::Maketext could choke on overloaded objects like DateTimes. This change makes sure that doesn't happen any more.
 * Locale::Maketext doesn't always do the right thing with user-generated strings. So let's do that for it.
 * Properly encode arguments when generating LetMe URLs.

Email

 * add UTF-8 charset to message body on notifications
 * added infrastructure to do mime mails
 * make Jifty notifications be UTF-8

Plugins

 * Jifty::Web::Session::ClientSide - Client-side sessions.
 * Added a ProfileBehaviour plugin to aid profiling Javascript
   Behaviours (see app_behaviour.js in the Jifty source for some more
   information)
 * Some Behaviour profiling UI fixes.
 * Removing profiling code from behaviour.js
 * Get the signup form in the login plugin to respect locally defined schema for the user class
 * Added information about the environment to the EmailErrors plugin
 * Making the Login plugin play nice with admin mode.
 * Plugin static roots should take precendence over jifty's


Win32

 * Win32 complains when you try to unlink open DB
0.60722

* Dispatcher fixes to deal with the better canonicalization we started doing in
   0.60707
* changed all instances of '/usr/bin/perl' to '/usr/bin/env perl'
* added a path option to Jifty::Web->url
* added url tests
* Jifty::Manual::Actions -- update the worldview to reflect the
  parameters/arguments concept split.
* Introduce aliases.  See Jifty::Param::Schema for the table.
* Declarative Jifty Parameters.
* See Jifty::Param and Jifty::Param::Schema for the new syntax.
* Also added dependencies for Jifty::Script::Deps and declarative parameters.
* Also updated test applications to use declarative parameters. 
* Adding the CSS browser selector trick from http://rafael.adm.br/css_browser_selector/ to Jifty
* After autocomplete, trigger a validation.
* Upping JSON::Syck version dependency. 0.14 fixes escaping in single-quoted strings.
* Add a tooltip to the dismiss link and hide the dotted border
* Trailing commas are not good for JS in Safari
* Let's not blow up if we have placeholders on an input without a form
* Don't fade autocomplete in and out, just show and hide it
* Not submitting placeholder values when we submit forms or AJAX
* Add the class before we set the text, so that it appears grayed-out, rather than appearing and *then* graying out
* Support multi-line placeholders
* textareas can have placeholders, too; Style them appropriately as well
* Adding support for placeholders, grayed-out text in form fields that is written in with JS and vanishes on focus
* Auto-accept cpan's wisdom about prompts (Jifty::Deps)
* 0th sketch at "jifty deps"
* packaging plan updates
* J::Web::redirect can take a Clickable as arg, so make goto do that, instead of passing a URL with parameters, which doesn't work right
* Proper port support on urls. Thanks to jpeacock.
*  Resolve inconsistent filenames vs packages (Plugins)
* Switched Jifty::Web::url to use uri.pm rather than "heuristics"
* Let's not blow up if an action has a result that's an unblessed reference.
* Don't upgrade the database versions with schema --print. I'm not sure
  if there's a good way to persuade JDBI to give us the SQL to print, so
  we're just spitting out a warning for now, but that's better than the
  old behavior.
* Stop notification from flipping out if you use a scalar as the To:
* basic smoke test for jifty's notifications 
* Only set active child on create if we have a request
* More serious failure message, and don't imply that it's necessarily the server's fault.
* update .po files
* Jifty::Dispatcher - there's no call_next, remove it from POD, fnord.
* Refactoring message rendering slightly
* Fix Jifty-Win32 by having canonicalize_path always returning
  /-separated paths, never \-separated paths.
* Let classes be set on menu items
* Adding a warning about our slow Rico.Corner.round
* Documenting how to write sane Behaviours that don't leak memory (leak
  less memory, probably) in IE and aren't dog-slow.
* Fix JS memory leak in IE
* Make jifty tests respect the current given @INC, so it doesn't
  use lib when you are supposed to use blib during make test.
* Make the subtest system less painful.
* Use Jifty::Script to invoke test server, so it doesn't depend on
  bin/jifty.
* Fix a Safari display bug
* Fix calendar positioning bug and make sure it works when the date field is within a relative or absolutely positioned element
* Test file for Jifty::Client
* First pass at a Jifty client module.
*  English orthography fixes.
* Trailing commas in Perl are good.  In Javascript, they aren't, and sometimes cause IE to barf (like this one).
*  Hide focus border
* Lowering the autocomplete delay
* first-pass editorial run over Continuations.pod.
* Sketchy sketchy handwavy descriptions of page region backend.
  Ramblings totally not expected to be interpretable.
* Wrap the popup notification div in dropshadow wrapper hooks
* Mention webservices in Actions doc
* Double fallback goes the way of the dodo
* Continuation manual
* Set up the output API for mapping of request parameters (input API
  already existed)
* Change method of getting results out of response on continuation RETURN
* Fewer calls to ->arguments, though they might be cached already.
* Not all CurrentUser classes may have a "nobody"
* Jifty::Web::Form:Clickable - provide a bit more info on how to use
  the "returns" field.
* jifty-dispatcher.graffle that shows the dispatch chain.
* Nicer "server down" message
* Re-enable form inputs after failure
* toggleable page region clickables weren't doing the right thing when used in non-ajax mode
* Fix the validation and autocomplete race condition
* Skip nobody and superuser when we do notifications


060707

  * Minor build fixes

060706
  * SECURITY UPDATE: Previous versions of Jifty did not 
  protect users against a class of remote data access vulnerability. If an
  attacker knew the structure of your local filesystem and you were using 
  the "standalone" webserver in production, the attacker could gain read
  only access to local files. 
  
  We found this vulnerability on 6 July 2006 during an internal Security 
  scan. We've added new tests to ensure that these and other similar
  vulnerabilities don't recur.

  We recommend that ALL users of Jifty UPGRADE to 0.60706 IMMEDIATELY.


060616
  * The last CPAN release was broken. No real changes.

060615 (15 June 2006)

The following incompatible changes were made to Jifty. For a complete changelog,
please see the "Changes" file.

 * Removed the ActionBasePath and CurrentUserClass configuration
   variables.  This breaks backwards compatibility.

 * If you've overridden /_elements/javascript in your app, you'll want to 
   take a look at the new stock version to see what has changed.

 * The JS method document.getElementsBySelector() no longer exists.  Use 
   cssQuery() instead.

 * Jifty::Record now returns empty objects for related objects that can't be 
   loaded, rather than undef


 * The keybinding JS code is now a more proper library 
   (Jifty.KeyBindings) and less intrusive.  If you've overridden the 
   default /_elements/wrapper in your app, you'll want to make sure you get 
   rid of the keybinding javascript (see the stock wrapper).  Just include 
   <& /_elements/keybindings &> wherever you want the keybindings for a 
   page to appear.

 * This shouldn't be the cause of breakage, but the included rico.js is 
   no longer a stock Rico build.  See the comments at the top of the file 
   if you're interested.

 * 'last_rule' now aborts only the current stage -- thus, last_rule                         
   from a 'before' block will *NOT* prevent the RUN stage from happening!
   This is a *BACKWARDS-INCOMPATIBILE CHANGE*, but fixes the dispatcher
   to agree with its docs.
 * 'abort' is the correct call to skip straight to the cleanup block.                       
 * This allows the edit in place plugin to 'claim' its path and                             
   protect it from access control in the app's 'before' blocks                                                                                                                              



0.60507 (7 May 2006)

  * Pod fixes from Eric Wilhelm
    lib/Jifty/Object.pm - removed incorrect '=for' directive
    lib/Jifty/Web/Form/Field.pm - removed incorrect '=for' directive
    lib/Jifty/Web/Form.pm - removed incorrect '=for' directive

  * Better failure messages on when schema upgrades with SQLite fail
    from Alex Vandiver

  * Be a little more explicit about SQLite's limitation, and a possible
    (painful) workaround

  * Update the inc tree to 0.62 for various fixes,
    in particular improved share_dir compatibility. --Audrey Tang

  * We were inconsistently using Jifty::Util::make_path as a
    subroutine. It's a class method.  This could break the stub
    generators and tutorial.  Thanks to Sean E. Millichamp

0.60505 - Cinco de Jifty! (5 May 2006)

  * Native support for times and timezones.

  * Bug fixes (Many contributors)

  * Documentation updates (Many contributors)

  * Win32 Support (Audrey Tang)

  * New Session layer based on Jifty instead of Apache::Session.
    Designed for AJAX and Continations (alexmv)

  * Jifty internal metadata store (The begining of an internal configuration
    management system (alexmv)

  * Form fields no longer automatically insert the field name by itself
    as a class.  Instead, the class has changed to "argument-<fieldname>"
	to avoid conflicts with generic class names (such as date).

  * Move allow and deny'ing of actions into Jifty::API; this breaks
    backwards compatibility.

  * Don't allow applications to be named "Jifty" by default.  They are
    forced to be named "JiftyApp" now, for namespace reasons.

  * Remove Jifty->web->actions method; you should be using
    Jifty::Form's actions method.

  * Beginning of localization support.

  * Notifications can now take a user object or an email address

  * "sort order for arguments" patch, as suggested by miyagawa.  This
    makes use of sort_order column property of Jifty::DBI

  * YAML -> Jifty::YAML

  * Switch from Time::ParseDate to Date::Manip, since the former isn't
    win32 compatible

  * Shuffle the Mason and static handlers into Jifty::View namespace

  * Jifty no longer attempts to AJAX submit file upload fields

  * We no longer write DefaultStaticRoot and DefaultTemplateRoot into
    config files

  * Added a "LogLevel" option to the Jifty config file, so you can
    more easily enable debug logging.


0.60321

  * 'return if already_run' in after rules so they run only once

  * Overhauled the static server to try really hard to force caching
    by clients.  It also gzips its content, if possible.

  * More stylish forms

  * Allow Jifty->web->return( to => "..default path..", ...)

  * Actually accept region names to refresh

  * Halo improvements

  * chromatic supplied a patch to switch from UNIVERSAL::isa to ->isa.

  * Trivial webservices hack

  * It's now possible to override Jifty::Record's baseclass in your
    app


0.60221

  * Use Jifty::Util->require to log require errors

  * Auto-generate Bootstrap class

  * Give us a way to get the CurrentUser from a Mech object during
    testing

  * When calling a continuation, try to make sure that the urls are
    really different, not just differently canonicalized, lest we get
    an infinite loop

  * Default to not showing debug logs

  * Fragments in JS land now know about their parents, and pass their
    superstructure in the fragment request.  This lets $region->parent
    have full information.

  * 'refresh => region' mode for replacement

  * Better docs on region replacement

  * add_* calls on Jifty::Request now return the object added, not the
    request


0.60213

  * Jifty::Dispatcher written

  * Jifty::Handler is now an object, not a utility. It has the power
    to "run" a request.

  * Call chain is now Handler to Dispatcher, which calls Jifty::Web
    and Mason, instead of the other way around.

  * Better Documentation coverage.

  * Paint on some really bitchin 'go faster' stripes on the server.

  * Refactored the dispatcher to use exceptions rather than LABELS: so
    that Devel::DProf doesn't fall over

  * Added a new "DevelMode" flag, to toggle the peformance-killing
    development aids.

  * Only drop tables if the tests all succeeded

  * Fragments now go through the dispatcher

  * `jifty schema` overhaul

  * Mandatory form fields now have a css marker.

  * Do away with setup_actions mason method

  * Stop using mason notes

  * Jifty::Script::Schema support for basic mysql love

  * lighttpd support.

  * Move autocomplete.xml and validator.xml to __jifty/.

  * Upgrade to Scriptaculous 1.5.1.

  * Delete is its own action now, instead of being part of Update.


0.51228

 * Jifty::Action->argument_names should sort keys lexographically, not
   random hash-ordering.

 * Remove last vestiges of ::Delete from ::Update

 * Refactored Jifty::Config to allow the application class to be
   specified when calling Config->guess

 * Refactored Jifty::Script::App into bite-sized morsels

 * Made Jifty::Script::App generate a config file

 * Made Jifty::Script::App and Jifty::Config::Guess happy with
   multi-level package names


0.51225 - Initial release
