Revision history for YATT::Lite 0.101_101 2020-10-17 * GH-202 - fixed some test failures 0.101_100 2020-10-15 * Security fixes - GH-197 - fix relative path traversal in path_info mode (which is not normally used until recently) * (Possibly breaking) API changes - GH-191 - EXPERIMENTAL SYNTAX CHANGE. `:` is no longer key-pair separator in hash literals - GH-173 - Change default encoding to utf-8 - GH-171 - subpath '/' should be silently ignored (if no match rule is defined) - GH-166 - `ydo` filename extensions should be omissible as like `yatt` is. - GH-158 - Change Session2 to State::Cookie only for better cookie support - GH-150 - Treat request sigils in query_string of POST as default choice - GH-139 - Entpath `:value:name` should be interpreted as `$value->name` rather than `$value->{name}`, at least by default - GH-121 - Change default app_ns from MyApp to MyYATT - GH-95 - Introduce new session API (Session2) - GH-45 - YATT::Lite::Factory->render() now returns decoded string - GH-19 - Change YATT::Lite::Util::find_value_in() - Simplify HASH case behavior - GH-1 - Automatic reloading of *.ytmpl, .htyattrc.pl is now enabled by default * New/changed YATT site-wide features/options - GH-155 - New option: use_sibling_config_dir to put config files outside of app_root - GH-126 - app.site_config.yml support - GH-114 - Session::ExpiryFriendly support - GH-109 - Alternative store for dir_config() - GH-103, GH-18 - Filter out and/or gather (unknown) request parameters to `$env->{yatt.unknown_params}` - GH-97 - Accept `config/$ENV{PLACK_ENV}.pl` as an alternative config script * New/changed YATT Declarations - GH-185 - Allow AppPath like `@ytmpl/foo.yatt` in `` - GH-192 - var="delegate" should be allowed too. - GH-179 - Allow yatt:action to be default handler in .yatt files - GH-167 - Error diags for 'Too many arguments' - GH-128, GH-14 - Fix broken auto mapping of yatt:action parameters - GH-125 - `!yatt:entity` in yatt templates - GH-120 - html type argument now behaves as "html?" by default * New/changed YATT Widgets - GH-195 - yatt:foreach line number problem - GH-193 - better syntax error reporting for garbage before CLO - GH-170 - yatt:if now detects more syntax errors - GH-153 - better error reporting for foreach list=xxx typo - GH-145 - newline after `` should be omitted from template outputs - GH-107 - change YATT::Lite::Util::escape() to use indentation. - GH-105 - Add destructuring bind and split operator - GH-104 - New tag(macro): ... - GH-101 - Each arm of yatt:if should create separate scope for yatt:my * New/changed YATT Entities - GH-174 - &yatt:localtime(); raises error - GH-190 - :query_string({merge,...}) should not currupt original query parameters - GH-186 - Add merge option for `:query_string()` - GH-189 - Add :session_middleware and :session_csrf_token - GH-175 - Add :with_ignoring_die() entmacro, with suppress __DIE__ and __WARN__ handlers - GH-163 - Add :scalar() entmacro - GH-162 - Fix :file_location() to include dirapp name. - GH-152 - Change :mkhidden() to return all params by default. - GH-156 - :psgix_session() should call session_start() - GH-147 - :abspath(); and :absrequest(); - GH-142 - New entity macro - :not(), :and(), :or(), :undef(expr) - GH-141 - :show_expr(..expr..) entmacro. - GH-140 - :__WIDGET__ entmacro. - GH-137 - :query_string(of,:hash_or_request,ignore,:name_list_or_hash,separator,:str) - GH-108 :redirect() should set http status to 400 (Bad Request) for unexpected external URI - GH-100 - :raise_dump(any_object,...) for debugging aid. - GH-92 - :script_name() - reliable entity for path abstraction. - GH-78 - Allow :name (without ()) as entmacro when option entity_prefer_call_over_hashref GH-139 is on. * New/changed CLI - GH-194 - expose %ENV from yatt.render (but how about query_string?) - GH-160 - Add request sigil support for yatt render CLI. - GH-168 - yatt.lint dies when it gets `$cgen->generror($msg)` - GH-134 - yatt info list_widgets - GH-115 - WIP: `yatt call` to emulate PSGI offline. * Emacs/IDE support - GH-188 - Add eglot support and use it as default. - GH-180 - Explicitly disable perl-minlint-mode for `*ydo` files - GH-161 (wip) - LSP(Language Server Protocol) support - GH-146 - yatt:action section is not handled as perl-mode with recent sgml-mode + mmm-mode - GH-143 - fix yatt-lint-any-mode to support tramp-version >= 2.3.2 - GH-136 - tolerate yatt-mode-file-coding to nil by default. - GH-102 - fix yatt-mode yatt:action detection bug * Miscellaneous helper functions/methods. - GH-200 - Add YATT::Lite::Util::permissive_require($modName) - GH-196 - Add `$factory->invoke_sub_in($loc, $args, $sub)` - GH-177 - Add `$site->get_entity_symbol($entns, $entity_name)` - GH-159 - `$YATT->render()` - add support for deep:widget:path - GH-138 - Port Rack::Utils.build_nested_query for serialization - GH-131 Add `YATT::Lite::Util::dumpout()` with default export. - GH-106 - Change YATT::Lite::XHF->read_file_xhf to use `read_all` instead of `read` by default - GH-82 - Introduce Connection->raise_response($psgi) * Internal Enhancement - GH-182 - Add support for HTTP_X_FORWARDED_PROTO to `$CON->mkurl` - GH-164 - alternative representation for internal node tree - GH-122 - Now $vfs->find_file($fn) accepts "index.html.yatt" like multiple extension (to cooperate well with Mojolicious, Dancer2) - GH-119 - New option body_argument, body_argument_type to customize `body` argument (to cooperate with Mojolicious and Dancer2). - GH-117 - (wip) Overhaul `action` handling - GH-111 - Merge debug_allowed_ip and allow_debug_from - GH-110 - Add support for REDIRECT_STATUS - GH-98 - Make terse_dump HASH output stable with Sortkeys. - GH-96 - `use ... -as_base` should set c3 mro. - GH-26 - Make "use ... -as_base" behavior consistent * Other Bug fixes - GH-201 - prepare for error during flush_headers - GH-199 - DBSchema::DBIC - Add is_auto_increment if -autoincrement is specified. - GH-198 - "package cl is deprecated" in emacs27. - GH-184 - show better error diag when POST parameters and QUERY_STRING conflicts - GH-181 - Remove forgotten DB::single - GH-172 - Unreadable error diag "ARRAY(0x5609f9891f70)BEGIN failed--compilation aborted" - GH-169 - fix xhf dump for empty arrays/hashes orz... - GH-165 - Add dump_strict_xhf() (xhf dump should not trim trailing newlines) - GH-157 - Replace CGI::Cookie with Cookie::Baker - GH-151 - mount_static was broken after GH-124 - GH-148 - ErrorReporter should care error string with malformed utf8 - GH-144 - fix libdir.pl to care symlinked lib/YATT - GH-135 - session3 cookie - GH-133 - fix broken tests - GH-132 - yattup now works again. - GH-130 - YATT::Lite->render() should not emit header. - GH-129 - YATT::Lite->render() should behave consistently with YATT::Lite::Factory->render() - GH-124 - Fix mount_psgi - GH-118 - fix lack of `SUPER::after_new()` calls. - GH-113 - Fix tests for CGI mode - GH-112 - BUG: `index.html` is passed to action_handler instead of yatt_handler when ext_public = `html` - GH-99 - Now just plackup is enough for session2 example. 0.101_001 2017-06-17 * (Possibly breaking) API changes - [GH #84] Now yatt:args "/URL/{PATTERN}" is tested in written order. - [GH #64] Use c3 mro for widget search by default. * New/changed YATT Declarations - [GH #54] - [GH #14] * New/changed YATT Entities - [GH #92] &yatt:script_name(); now respects Apache's Action+AddHandler - [GH #74] &yatt:param(); is now equiv of &yatt:CON:param();. - [GH #73] &yatt:coalesce(); now behaves like SQL's coalesce(). - [GH #70] &yatt:file_location(); and &yatt:is_current_page(page) * Enhancement - [GH #91] Better error reporting for XHF parser - [GH #82] Add support for bufferedstreaming in raised response. - [GH #80] Allow declaring types for routed args - [GH #79] Site-wide special_entities - [GH #71] Now delegate type can have argument list. - [GH #69] YATT::Lite::Macro is now visible from subclasses. - [GH #63] `Action NAME => SUB` support in `.htyattrc.pl` * Miscellaneous helper functions. - [GH #94] YATT::Lite::XHF->read_all() - [GH #90] WebMVC0::Connection->delete_param - [GH #82] Lite::Connection->raise_response($psgi_response). - [GH #68] YATT::Lite::Factory->wrapped_by($outer_app) for Plack::Middleware. * Bug fixes - [GH #93] yatt:action arg detection should care DOS crlf too. - [GH #83] Fix for bug "Safety level may not be changed inside a transaction" - [GH #77] :CON:mkquery() now encode utf8 correctly. - [GH #76] yatt:my code works for wide chars. - [GH #75] Avoid use of error.ytmpl until code-generator becomes ready. - [GH #74] Now yatt.render sets :CON:param() too. - [GH #72] BUG: "Inconsistent hierarchy during C3 merge" occurs for complex inheritance. - [GH #61] Adapt sprintf redundant arg warnings(5.22) 0.101 2016-05-24 * Just tagged 0.101 (from 0.100_003) 0.100_003 2015-11-05 * Bug fix for [RT #108427] [GH #62] Undeclared dependency on Test::Kantan 0.100_002 2015-10-31 * New features - [GH #57] `yattup` - `plackup` alike command for `*.yatt` files. - [GH #54] - !yatt:base "file_or_dir" to inherit templates. * Enhancement (Potentially breaking) - [GH #51] Add experimental `per_role_docroot` feature. - [GH #56] Install psgi_fallback by default (to make `yattup` useful). - Add new option `always_refresh_deps` to fix [GH #1] partially. - [GH #60] Set HTTP Status for "Not found" and "Bad request" errors. To revert old behavior, set `overwrite_status_code_for_errors_as` to 200. - YATT::Lite::Error now exports type alias 'Error' by default. - New method: `($yatt|$con)->error_with_status($code, $msg, @args)` * Misc changes: - [GH #59] yatt, yattup should resolve symlink once and only once. - [GH #58] c3 mro support in `use YATT::Lite::Factory -as_base`. * BUG fixes: - [GH #61] no warnings 'redundant' for sprintf. (partially) - [GH #55] *base* templates accidentally inherit their *user* directory bug - [GH #53] - Allow setting dont_map_args in SiteApp. 0.100_001 2015-09-03 * Enhanement (API Change) for unicode handling: - [GH #48] decode input params by default. Add new option `no_unicode` for backward compatibility. - [GH #45] YATT::Lite::Factory->render now returns decoded string by default. * Enhanement to help testing: - [GH #47] $site->mount_action($location => $action_sub)) and $dir->set_action_handler($filename => sub ($this, $con)) - [GH #16] $site->mount_psgi($location => $psgi_app) * Fixes - [GH #50] [RT #106776] Test failure (caused by SQLite). - [GH #49] use safer fatalized warnings. - [GH #46] convert_array_param(parse_nested_query) conflicts with Plack::Request->upload. 0.100 2015-04-28 * Docs - Better docs for YATT::Lite::LRXML::Syntax * Enhanement - [GH #43] - allow use of ".html" instead of ".yatt" * Fixes - Add Locale::PO to cpanfile 0.0.9_002 2015-04-09 * fixes - [GH #42] [RT#103406] Test suite fails if LANG environment variable is unset (0.0.9_001) - [GH #41] [RT #103393] - YATT::Lite::Util::define_const - [GH #35] CGI->multi_param adaption - [GH #40] yatt.render / yatt.genperl relative path problems - [GH #38] - Add $CON->raw_body .. without tests(><) - [GH #37] - Fix test failures on LC_ALL=C - [GH #36] - to adapt recent mmm-mode - [GH #34] - Just added $this->SITE, $this->DIR. no tests. - [GH #32] - DirApp should inherit SiteApp - [GH #31] - samples/sess_backed/1 :att_value_of(radio,:name,:value,{in,:dict}) bug. - [GH #30] - to detect TAG mismatch for attribute element. - [GH #29] - to make error messages shorter for entity path syntax errors. 0.0.9 2014-05-26 * To revert $app_root/.htdebug_env feature. * Not to invoke yatt-lint-any-mode unless yatt-lint-any-mode 0.0_9 2014-05-14 * Mainly fix for perl 5.20 RC * Also, YATT::Lite::Types pod and tests. * YATT::Lite::Types now correctly handles fields inheritance. 0.0.8 2014-05-13 Major changes: * GH#20 - New type "bool" is introduced for yatt:widget arguments. * GH#23 - Detect cyclic inheritance error. Also minor fixes: * GH#7 - Wrong line number is reported for element-attribute errors. * GH#22 - CGI related tests didn't work. * GH#27 - RT#95388 t/lite_xhf.t fails with non-UTF-8 locale. 0.0_8 2013-08-25 * Mainly for README.md polishment * As its side effect, YATT::Lite::Factory now supports render() method;-) 0.0.7 2013-06-20 * GH#19 PHP/RoR like hash-and-array parameters. * GH#2 support for .htyattconfig.yml * SiteApp psgi_fallback, for 404 not found handler. * better backtrace in ytmpl/error.ytmpl * escape($array_or_hash) behavior change. This is still experimental. * yatt:foreach nth * ylpodview more for alt_lang link. * To pass/skip safely more tests on MSWin. 0.0.6 2013-05-18 * To make sure all tests are runnable for cpantesters (except on perl-5.17) 0.0_4 2013-05-15 * First CPAN release 0.0.3_4 2012-05-04 * Directory layout is totally changed. Previous runyatt.lib/YATT is current top directory. * Also, massive internal changes. class Web::* namespace is renamed to WebMVC0::*. Some options (eg. appns and baseclass) are changed. 0.0.3 2011-11-16 * PSGI Adaption. It is usable, but I'm not enough satisfied though. In next release, to adapt more for psgi, massive internal change will occur. 0.0.1 2010-10-18 * Initial release.