| application | by dg | removed compatibility for old class names - inteface Nette\Application\IRouter replaced by Nette\Routing\Router | | | |
| application | by dg | compatibility with nette/component-model 4 | | | |
| application | by dg | composer: increased dependencies versions | | | |
| application | by dg | requires PHP 8.3 | | | |
| application | by dg | opened 3.3-dev | | | |
| application | by dg | phpstan fixes | | | |
| forms | by dg | netteForms: restructured package, includes UMD and ESM (BC break) | | | |
| forms | by dg | netteForms: removed distribution files (BC break) | | | |
| forms | by dg | Latte: {formContext}, {formContainer}, {formPrint} & {formClassPrint) are deprecated | | | |
| forms | by dg | BaseControl::$disabled is bool, added $disabledChoices | | | |
| forms | by dg | Container::getControls() returns list instead of iterator with names (BC break) | | | |
| forms | by dg | Container: only Control/Container can be added to form (BC break) | | | |
| forms | by dg | added type hints (BC break) | | | |
| forms | by dg | removed deprecated CsrfProtection control and related code Deleted CsrfProtection class, its tests, ProtectorId constant, and validation message. The addProtection() method now only triggers a deprecation warning. | | | |
| forms | by dg | added #[\Deprecated] attributes and trigger_error() to deprecated members | | | |
| forms | by dg | composer: increased dependencies versions | | | |
| forms | by dg | removed compatibility for old class names | | | |
| forms | by dg | opened 4.0-dev | | | |
| forms | by dg | added CLAUDE.md | | | |
| forms | by dg | FormNode: {form detached name} for layouts that nest other forms HTML forbids nested <form> tags, so a layout embedding a component that renders its own <form> can't wrap its controls in another <form>. The detached keyword emits an empty <form>...</form> at the opening position and links every control back to it via the HTML5 form= attribute (applied in Runtime::item()), so inputs submit correctly wherever they sit in the DOM. Controls in nested containers and {form scope} inherit the same link. Unlike {form scope}/{formContext}, detached does render a <form>, so it still accepts arguments, which apply to that tag. Throws InvalidStateException when detached is used with a non-Form Container or a form without an id. | | | |
| forms | by dg | FormNode: {form scope name} as an alternative to {formContext name} The scope keyword before the form name makes {form} skip the <form> tag while still pushing the form on the stack, so {input}/{label}/ {inputError} resolve against it. When nested inside another form, scope resolves the name relatively to it (like {formContainer}); at the top level it looks the name up in the registry. {formContext} keeps its legacy behavior of always resolving from the registry. Passing arguments to {form scope} or {formContext} now throws, since neither renders a <form> tag to apply them to. | | | |
| forms | by dg | FormNode: deprecate missing comma before {form} arguments The {form name attr=val} syntax (no comma between the name and the attributes) was tolerated. Trigger E_USER_DEPRECATED when a token follows the name without a comma, pointing to the offending column. The form still compiles — this only nudges users toward the canonical {form name, attr=val} so future syntax extensions can use bare keywords next to the name unambiguously. | | | |
| forms | by dg | addSubmit() added $onSubmit parameter | | | |
| forms | by dg | RadioList, CheckboxList: getControlPart() and getLabelPart() throw exception for invalid key - ChoiceControl, MultiChoiceControl: extracted getItem() method | | | |
| forms | by dg | Container::setValues() and setDefaults() accepts iterable|stdClass (BC break) | | | |
| forms | by dg | deprecated protection using CSRF token Protection using Sec-Fetch and Origin headers is comprehensive, as they cannot be spoofed even if there is an XSS vulnerability on the server | | | |
| forms | by dg | better protection against CSRF by checking same-origin via Sec-Fetch-Site header instead of SameSite | | | |
| forms | by dg | Latte: rewritten Runtime as non-static class | | | |
| forms | by dg | requires Latte 3.1 | | | |
| forms | by dg | removed support for Latte 2 | | | |
| forms | by dg | compatibility with nette/component-model 4 | | | |
| forms | by dg | removed deprecated stuff | | | |