# Revision history for MVC::Neaf
0.2901 Wed Aug 02 2023 - [bug] Fix path-dependent tests on windows
0.29 Fri Jul 28 2023
- Calculate template & static content paths relative to the calling file,
- not current directory.
- Allow to put get/post/... handler after, not before other options.
0.28 Mon Oct 21 2019
- TST Increase test coverage + some refactoring
0.2701 Thu May 30 2019
- BUG Fix regex type check on perls <= 5.010
0.27 Thu May 30 2019
- API call load_resources(\*DATA) upon run() automatically
- API Add body_json(), body_raw(), body_text(), and content_type() calls to request
- API custom error handlers (neaf 404) can be configure per-path
- API BREAK Replace a JSON default error page with a HTML one
- API Add magic(bool) switch
- API Add regexp check for headers
0.2603 Sat Nov 24 2018
- BUG Fix Apache2 test warning
0.2602 Sat Nov 24 2018
- BUG Fix (?) failing test
0.2601 Fri Jun 22 2018
- BUG Skip empty parameters in strict mode
0.26 Sun Jun 10 2018
- API BREAK rework load_resources, @@ foo.tpl view=TT now supported
- TST Improve coverage, add tests, refactor things
0.2501 Sun Jun 3 2018
- API BREAK Restrict characters for path, in particular ":" (a warning only)
- BUG Understand double slashes in URLs
- BUG Fix routing bug - was treating /pathogen as /path
0.25 Sat Jun 2 2018
- API Add 'strict' flag that makes controller emit error 422 if params/cookies pass validation
- API Add overridable log_message, make_id to Request class
- API BREAK Remove deprecated error_template, set_default, server_stat
- API BREAK Remove Request->upload (use utf8/raw), Request->set_full_path (use set_path)
- REF Use base64url instead of base64 everywhere
- NET BREAK Deprecate Apache2 backend in favor of Plack::Handler::Apache2
- MOD BREAK Remove ServerStat
0.24 Sat May 26 2018
- API Add 'helper' subs - user-defined, path-restricted $req methods
- API BREAK Rename -serial => -payload in app response
- API set_path_defaults can be restricetd on path + method
- REF Rename MVC::Neaf::Route::{Recursive=>Main}
- REF Util::Container - path&method based container util
- REF Add Route::PreRoute stub class for hooks & helpers
0.23 Wed May 23 2018
- API Add Route class, add $req->route() call for showing current route
- API add prefix(), postfix(), and splat() for URI path components
- API Make :sugar keyword optional, export get+post & neaf by default
- API BREAK deprecate MVC::Neaf->something() (expect new() of course)
- API BREAK Kill deprecated neaf->pre_route for good
- API Add -headers support to exception
- REF A giant refactoring of the core
- BUG A lot of bugs introduced & then fixed
0.2203 Thu Jan 25 2018
- AUX Add github links to Makefile.PL
0.2202 Fri Jan 19 2018
- TST Fix tests under Plack < 1.043 https://rt.cpan.org/Ticket/Display.html?id=124124
0.2201 Thu Jan 18 2018
- DOC Fix escaping in docs
0.22 Thu Jan 18 2018
- DOC Rearrange core doc sections
- DOC Deprecate X::Stat module, say replacement pending
- API BREAK Deprecate server_stat method
- API BREAK Reprecate req->header_in_keys
- BUG Work around HTTP::XSHeaders not providing flatten* methods
- TST Add a performance statistics example
- TST Fix(?) tests on older perls
0.21 Thu Dec 7 2017
- API Add any, put, patch, and del for DELETE to sugar
- API route(): Add 'public', 'tentative', 'override' flags
- MOD static '/path' => [ "content" ] to serve in-memory files
- TPL Add View::TT->preload for in-memory templates
- API Experimental load_resources for Mojo-like @@ files in __DATA__
- TPL Minor fixes in View::JS, add want_pretty and want_sorted options
- DEV Add callback(\%, path, method) to get_routes
- REF unify die 404 with MVC::Neaf::Exception
- REF Use HTTP::Headers::Fast everywhere
- BUG Tighten dependencies, add more workarounds for failing deps
- BUG Fix error reporting in diamond upload test
- TST Improve test suite somewhat
0.2002 Fri Dec 1 2017
- BUG Fixed escapes in POD
0.2001 Fri Dec 1 2017
- Version bump NOCODE
0.20 Fri Dec 1 2017
- API Add 'neaf form => name => {...}' for kosher input validation
- MOD Add X::Form::Wildcard module to handle unforeknown request params
- API Add public log_error() method to Request, use it for all errors
- API BREAK Split upload() into upload_utf8() and upload_raw()
- API BREAK Remove req->set,get_default for good
- REF Replace JSON dependency with JSON::MaybeXS
- REF Replace concatenation with md5 in req->id generator (todo SHA3)
- DOC Improve Neaf documentation NOCODE
- BUG Multiple bugs fixed, new ones added
0.1901 Tue Nov 28 2017
- BUG Fix local $SIG{__WARN__} in BEGIN section
0.19 Fri Nov 24 2017
- CLI Add --listen option to CLI interface
- API Add exp. path_info_split method to fetch regex capture groups
- API BREAK default error = json + logged err_id
- API BREAK Deprecate foo => bar => baz => sub {}-style paths in route()
- API BREAK Remove CGI driver for good, remove CGI.pm dependency
- BUG Add hack to prevent tests from failing on older perls
0.18 Mon Nov 20 2017
- TST Rework examples to use the new declarative get+post syntax
- API BREAK Use -view=>JS by default; switch to TT & issue warning if -template seen
- API Add experimental predefined param_regex to route
- TPL Add non-hash response support to JS view via -serial return key
- DEV Add req->endpoint_origin method for file:line where current handler was defined
- API BREAK Deprecate set_full_path() for good
- DEV run_test(): add support for body, hash cookies, https
- CLI More details in --list output
- REF A BIG refactoring of core, handle_request() broken down
- BUG Lots of bug fixes
0.17 Fri Apr 28 2017
- API Add postmodern sugar: get + post '/path' => sub { ... }.
- API Add put(), head() prototyped sugar.
- API Add -headers => [...] to handler return hash
- API BREAK Kill get_form_as_hash, undeprecate get_form_as_list for now
- API BREAK Finally removed path_info w/o path_info_regex
- API Add get_url_base, get_url_rel, and get_url_full with override capabilities
- API Added session engine auto-load to sugar api
- API Add deprecated warning for Req->set_default
- MOD Add directory listing to static aka X::Files
- MOD Add fine-grained serve_file method to X::Files (thx @akuklev)
- DOC Add hook flow diagram NOCODE
0.16 Mon Mar 27 2017
- API Add implicit HEAD handler whenever GET is defined
- API MINOR Add dash-prefixed defaults to route()
- MOD Add cookie-based session backend (X::Session::Cookie)
- MOD Add SQL-based session backend (X::Session::SQL)
- MOD Add session backend DIY class (X::Session::Base)
- BUG Make Neaf::CLI work with given Neaf object and not global one
- DEV Add some crude options to run_test()
0.15 Wed Mar 22 2017
- API BREAK Kill session deprecated warning
- BUG Allow utf8 path-info
- MOD Add form->as_url, form->sign to form data object
- BUG Fix binmode in static file serving
- API add pre_route, pre_render hook phases, add hook prepend, fixup docs
0.14 Sun Dec 18 2016
- API add_hook() method, hooks: pre_logic, pre_content, pre_reply, pre_cleanup
- API set_path_defaults( '/path' => { foo => ... } )
- API Add Request->stash(), Request->reply() for hook intercommunication
- API Add experimental prototyped sugar: get /foo, post /bar, neaf error 404 ...;
0.1302 Thu Dec 1 2016
- BUG Fix locale-dependent dates, create MVC::Neaf::Util class
0.13 Thu Dec 1 2016
- API BREAK Add path_info_regex => qr/.../ parameter to route() & path_info()
- API BREAK static() no .dotfiles by default, add allow_dots => 1 to overcome
- NET Add Expires: header controlled by cache_ttl in static() and route()
- NET Append Allow: header to a 405 error as per HTTP/1.1 spec
0.1201 Sun Nov 13 2016
- BUG Fixed File::Session fail under Windows OS
0.12 Fri Nov 11 2016
- BROKE API! Incompatibilities were gently introduced with a nice
- DEPRECATED warning to account for early design mistakes.
- The warnings will NOT become errors until at least 0.15
- API BREAK Remove pre_route callback return check
- API BREAK Change session engine return format
- API BREAK path_info now requires validation regexp, just like param() and get_cookie()
- API BREAK Remove implicit default empty value in Request->param
- API BREAK Add set_error_handler (CODEREF || HASH), deprecate error_template(HASH)
- NET Add Request->body() for raw request data
- API Add multi_param() feature
- API Remove GET params from POST request, add url_param() for fetching them
- MOD Add file-based session engine
- MOD ServerStat can be subclassed with a do_write method instead of on_write callback
- MOD Make JSON view faster and more tolerant
- BUG Fix foo|bar regexps defeating RE quoting
0.1101 Fri Oct 28 2016
- TST Fix tests
- BUG Fix Request->session vs view_as behaviour
0.11 Sun Oct 23 2016
- API Deprecated old form() substitutes
- API Allow different handlers per (method, path) combo; default allowed methods = [GET, POST, HEAD]
- DOC Update readme & checklist, write style guide
- DOC Improve CORE docs, add example snippets there
0.10 Tue Oct 18 2016
- API Add cache_ttl to cache static files, move static to X::Files
- DEV Make MVC::Neaf call cli-debug if CGI detected w/nonempty @ARGV
- API add is_post shorthand for method() eq POST
- BUG Fix X::Session sloppy pack() and double base64
0.09 Sat Oct 01 2016
- MOD Add form validator with resubmission, redo LIVR support completely
- DEV Add CLI debugging module
- API Add delete_cookie to Request, add more stuff to dump()
- API Move neaf_err $@; function into core
- API Add set_header, push_header and remove_header to Request
- TST Reach 100% coverage on Neaf.pm & Request.pm
- BUG Replace md5 with sha1+sha224 in session generation
- BUG Bugs fixed, even more added
- DOC Better documentation on the main module
0.08 Mon Sep 26 2016
- BUG Bugfix in session, content type detection, and static files
- BUG Fix content type autodetection, enforce utf8 more rigorously
- NET Add Content-Disposition header to static mode
- API Allow passing session to view 'as is' if needed
- REF Rewrite session mechanism in a more reasonable way
0.07 Thu Sep 22 2016
- API Add X::Session for session storage, add Req->session
- API Add Validation::LIVR-based form validation
- API Add MVC::Neaf->static( uri => localdir ) for serving static content
- API Add MVC::Neaf->alias( newpath, oldpath ) for creating, well, aliases
- DEV Add Request->dump() for debugging
- DEV Add MVC::Neaf->get_routes() for introspection, fixup docs for route()
- TPL TT view now passes its args to Template engine
- TST Make ALL examples run together under CGI, PSGI, or mod_perl
- REF Use HTTP::Headers throughout the code instead of homegrown hash
- REF Rename -callback => -jsonp, callback(in view) => on_render
- BUG Bugs fixed, even more added
0.06 Tue Sep 6 2016
- API Add async content serving via -continue, write(), close()
- API Add per-route view defaults, add MVC::Neaf::View
- API Add fancy foo=>bar=>baz paths in MVC::Neaf->route
- API Add MVC::Neaf::Exception signalling, add neaf_err
- TST Increase cover -t to 70%, add autotest to load ALL modules
- BUG Bugs fixed, even more added
0.05 Sun Sep 4 2016
- API Add method => [GET, POST] restrictions to MVC::Neaf->route
- API Add fancy error templates via MVC::Neaf->error_template
- DEV Add custom error handler via MVC::Neaf->on_error
- DEV Add MVC::Neaf->server_stat and MVC::Neaf::X::ServerStat plugin
- API Add req->postpone(CODEREF) method to delay execution
- API Add a ton of getters to Request.
- TST Add examples: http request breakdown and a tiny 200-line wiki
- BUG Bugs fixed, even more introduced
- Semireal PSGI app actually released to the net, using Neaf now
0.04 Fri Sep 2 2016
- NET HEAD request handled, Content-Length served
- API Add multiparameter form validation EXPERIMENTAL
- API Add global and per-request set_default() methods
- DEV Add MVC::Neaf::View::Dumper - just dump raw reply from controller
- BUG Bugs fixed, even more introduced
- Semireal psgi app migrated from ad-hoc framework
0.03 Thu Sep 01 2016
- API Add Apache2/mod_perl2 support
- DOC Update MVC::Neaf documentation
- API Cookie now requires regexp validation
- API Add MVC::Neaf->pre_route( CODE ) for mangling initial request
- API add request->set_param( name : value )
- API Everything in utf-8 now by default
- BUG Bugs fixed, even more introduced
0.02 Wed Aug 31 2016
- API Now -content can be used to return raw content, e.g. images
- API Add uploads
- TST Add apache2 tempdir auxiliary script to test under apache
- API Add cookies, add redirects, add referer
- API Add View::JS with jsonp support
- API Add View::TT with basic Template support
0.01 Somewhere in the August
- First version, released on an unsuspecting world.