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