Revision history for YATT::Lite
0.101_103 2023-12-05
* GH-214 - Drop use of deprecated `given` syntax
* GH-211 - Allow `*.ydo` to reurn PSGI tuple directly
* GH-209 - Fix incorrect error of dynamic module loading while rendering
* GH-207 - Fix error_response handling for per_role_docroot mode
* GH-206 - Fix is_index mis-detection
* GH-205 - `&yatt:script_uri;` now cares HTTP_X_FORWARDED_PROTO
* GH-204 - (Emacs) fix yatt-mode background face
* GH-203 - Allow loading multiple app.psgi in a process
* Drop perl 5.10
0.101_102 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 `<!yatt:base>`
- 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 `<yatt:foreach>` 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): <yatt:return if="cond">...</yatt:return>
- 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] <!yatt:base "file_or_directory">
- [GH #14] <!yatt:action "/URL/{PATTERN}">
* 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.