Release Notes

Tester
v2.5.4

23. 10. 2024

  • supports PHP 8.4
  • TestHandler: improve cache file uniqueness (#454)
  • DataProvider: parses INI files using INI_SCANNER_TYPED mode (BC break)
Forms
v3.2.5

22. 10. 2024

  • Container::addEmail(): added $maxLength=255 #303
  • ChoiceControl, MultiChoiceControl: disabled items are processed in getValue() instead of loadHttpData()
  • removed return type from __call() nette/utils#315
  • SelectBox: fixed 2edbd6c
  • netteForms: uses the submitter property
Latte
v3.0.19

6. 10. 2024

  • {default} is evaluated lazily
  • |localDate respects the time zone set in PHP #380
  • FileLoader: fixed path normalization for phar and absolute paths #378
  • TagParser: allow trailing comma in |filter(...)
  • CachingIterator::__get() does not return a reference
Latte
v3.0.20

6. 10. 2024

  • {default} is evaluated lazily
  • |localDate respects the time zone set in PHP #380
  • added |filter
  • FileLoader: fixed path normalization for phar and absolute paths #378
  • TagParser: allow trailing comma in |filter(...)
  • TranslatorExtension: translate() can return \Stringable #372
  • CachingIterator::__get() does not return a reference
Di
v3.2.3

5. 10. 2024

  • support for PHP 8.4
  • md5 replaced with xxHash
  • fixed ReflectionParameter::getDefaultValue() error #315
Schema
v1.3.1

5. 10. 2024

  • support for PHP 8.4
  • added Structure::extend() #66
  • added Structure::getShape() #35
Schema
v1.3.2

5. 10. 2024

  • support for PHP 8.4
  • added Structure::extend() #66
  • added Structure::getShape() #35
  • Expect::array(shape) returns Structure
  • Structure::merge() without otherItems it merges by overwriting
Mail
v4.0.3

4. 10. 2024

  • SendmailMailer: the use of -f option in the mail command can be disabled (#98)
  • support for PHP 8.4
Component Model
v3.1.1

4. 10. 2024

  • support for PHP 8.4
  • improved phpDoc
Neon
v3.4.4

4. 10. 2024

  • support for PHP 8.4
  • Encoder: fixed encoding of control characters #72
Neon
v3.3.4

4. 10. 2024

  • support for PHP 8.4
  • Encoder: fixed encoding of control characters #72
  • Neon::decodeFile() is atomic
Application
v3.2.6

10. 9. 2024

  • LatteExtension: added option 'locale'
  • LatteExtension: automatically passes translator to Latte\Essential\TranslatorExtension
  • support for PHP 8.4
Php Generator
v4.1.6

10. 9. 2024

  • added ClassManipulator
  • Parameter & Property: isNullable() returns true when default value is null (possible BC break)
  • added TraitsAware::hasTrait method (#163)
  • support for PHP 8.4
Database
v3.2.3

19. 8. 2024

  • tests: added more tests
  • MySQL: supportBooleans renamed to convertBoolean
  • SqlLiteral: added getSql()
  • tests: added connectToDB()
  • marked readonly properties
  • PDO: error mode is ERRMODE_EXCEPTION by default
  • drivers: improved getting db structure
  • MySqlDriver::initialize() removed support for 'utf8' charset before 5.5.3
  • Selection: fixed type error on empty aggregations #309
  • SqlsrvDriver::applyLimit() removed support for SQL Server < 2012
  • Selection: support for generics
  • normalizeRow(): removed extra float handling #307
  • tests: added tests for Reflection
  • Reflection::getTable() can access unlisted table
  • Reflection: removed $schema
  • PascalCase constants
  • ResultSet, Selection: fetchPairs() accepts callback
  • Helpers::detectType() supports 'INT UNSIGNED'
  • md5 replaced with xxHash
  • removed return type 'never' to allow inheritance #303
Database
v3.2.4

19. 8. 2024

  • ResultSet, Selection: fetchPairs() accepts callback
  • Selection: support for generics
  • drivers: improved getting db structure
  • Reflection improvements
  • normalizeRow(): removed extra float handling #307
  • Helpers::detectType() supports 'INT UNSIGNED'
  • md5 replaced with xxHash
  • removed return type 'never' to allow inheritance #303
  • MySQL: supportBooleans renamed to convertBoolean
  • PascalCase constants
  • MySqlDriver::initialize() removed support for 'utf8' charset before 5.5.3
  • Selection: fixed type error on empty aggregations #309
  • SqlsrvDriver::applyLimit() removed support for SQL Server < 2012
  • support for PHP 8.4
Database
v3.2.2

9. 8. 2024

  • ResultSet, Selection: fetchPairs() accepts callback
  • Selection: support for generics
  • Reflection improvements
  • normalizeRow(): removed extra float handling #307
  • renamed IStructure::FIELD_* to Type::*
  • Helpers::detectType() supports 'INT UNSIGNED'
  • md5 replaced with xxHash
  • removed return type 'never' to allow inheritance #303
  • PascalCase constants
  • support for PHP 8.4
Utils
v4.0.5

7. 8. 2024

  • added Cast
  • Strings::matchAll(): added option 'lazy'
  • added Arrays::mapWithKeys() & Iterables::mapWithKeys()
  • added Iterables::memoize() & toIterator()
  • Image: GD extension detection added
  • support for PHP 8.4
Tracy
v2.10.8

7. 8. 2024

  • bar.js: initializes Tabs (#580)
  • refactoring
  • support for PHP 8.4
Bootstrap
v3.2.4

7. 8. 2024

  • support for PHP 8.4
  • fixed rootDir detection in older Composer
Caching
v3.3.1

7. 8. 2024

  • added PSR-16 adapter (#77)
  • support for PHP 8.4
Latte
v3.0.18

6. 8. 2024

  • added support for locale, affects |localDate, |number, |bytes and |sort filters
  • {import} supports arguments
  • unquoted strings can contain +
  • coreParentFinder is called only for main template (BC break)
  • support for PHP 8.4
Forms
v3.2.4

5. 8. 2024

  • Container::getValue() supports conversion to enums [Close #337]
  • UploadControl: added setNullable()
  • netteForms: rewritten to TypeScript
  • Button: is omitted from values #330
  • DefaultFormRenderer: fixed cummulate instances of Nette\HtmlStringable #335
  • Helpers::getSupportedTypes() returns array #332
  • support for PHP 8.4
Latte
v3.0.17

9. 7. 2024

  • added support for locale, affects |date, |number, |bytes and |sort filters
  • {import} supports arguments
  • coreParentFinder is called only for main template (BC break)
  • support for PHP 8.4
Neon
v3.4.2

18. 6. 2024

  • Decoder: fixed JSON parsing with \n before comma
  • Decoder: big integers are decoded as strings #9
Neon
v3.4.3

18. 6. 2024

  • Decoder: fixed JSON parsing with \n before comma
  • Decoder: big integers are decoded as strings #9
Robot Loader
v4.0.2

18. 6. 2024

  • md5 replaced with xxHash
  • checks whether temp directory is absolute
Tester
v2.5.3

18. 6. 2024

  • Add testcase method's name to the test's title. (#451)
  • TestCase: removed NULL byte from class names, thx @smuuf #450 #449
  • added DomQuery::matches()
  • code coverage: fix compatibility with PHP 8.3 #446
  • test(): checks count of arguments
Di
v3.2.2

16. 5. 2024

  • Container: refactoring
  • NeonAdapter: resolving of constants and enums moved here from filterArguments() (BC break)
  • Container::getServiceType() ignores dynamically added services (BC break)
  • Container::getByType() fixed cooperation with dynamic factory #314
  • Resolver: better exception when normalizeEntity() fails due to service replacement
  • Revert "LocatorDefinition: deprecated support for create($name) method (BC break)"
Application
v3.2.4

12. 5. 2024

  • ApplicationExtension: checks the correct usage of attributes
  • Component::tryCall() throws BadRequestException
  • PresenterFactoryCallback: refreshes page instead of creating presenters dynamically
  • Multiplier::createComponent() allow to return a null (#327)
  • LatteExtension: fixed v3.2.3
Application
v3.2.5

12. 5. 2024

  • ApplicationExtension: checks the correct usage of attributes
  • Component::tryCall() throws BadRequestException
  • PresenterFactoryCallback: refreshes page instead of creating presenters dynamically
  • Multiplier::createComponent() allow to return a null (#327)
  • LatteExtension: fixed v3.2.3
Application
v3.1.15

12. 5. 2024

  • Component::tryCall() throws BadRequestException
  • AbortException & BadRequestException extends LogicException
  • Latte: sets Tag::$node
  • composer: relaxed dependencies
Php Generator
v4.1.5

12. 5. 2024

  • added PhpNamespace::getClass() & getFunction()
  • added CommentAware::removeComment()
  • added PhpFile::removeNamespace()
  • Factory, Extractor: sets flag readonly for promoted properties #158 (reverts "Factory: properties in readonly classes are not readonly")
  • ClassType: cloning includes attributes and parameters
  • GlobalFunction, Method: from() accepts first-class callables
Database
v3.2.1

7. 5. 2024

  • added reflection for Table, Column, Index, ForeignKey
  • returns date-time as immutable Nette\Database\DateTime (when 'newDateTime' is enabled) #270
Forms
v3.2.3

5. 5. 2024

  • netteForms: modernized code
  • netteForms: reimplemented compact transmission mode via formdata event
  • netteForms: processes only elements with 'data-nette-rules'
  • netteForms: added typehints to jsDoc
  • netteForms: improved badInput reporting
  • netteForms: rule 'length' works with numbers #329
  • Form: does not show 'no associated handlers' error if the form is not submitted by the button
  • RadioList: added setItemAttribute() & setItemLabelAttribute()
  • Blueprint: fixed nullable types detection
  • TextBase, HiddenField: added isNullable()
Latte
v3.0.15

29. 4. 2024

  • added filter |group
  • filter |sort accepts iterable
  • Filters::first() accepts iterable
  • Engine: cache-key divided into key and signature, that is stored in a lock file
  • Engine: added underscore to template class name
  • Loader::isExpired() deprecated
  • Blueprint::printClass() rewritten (BC break)
Latte
v3.0.16

29. 4. 2024

  • added filter |group & function group()
  • filter |sort accepts iterable
  • filter |sort: added by & byKey
  • Filters::first() accepts iterable
  • Engine: cache-key divided into key and signature, that is stored in a lock file
  • Engine: added underscore to template class name
  • Loader::isExpired() deprecated
  • Blueprint::printClass() rewritten (BC break)
Tracy
v2.10.7

29. 4. 2024

  • bluescreen: added php://input preview
  • bluescreen: allows to create classes with two-letter namespace
  • bluescreen: stack trace is reduced before analysis
  • bar: label 'Errors' => 'Warnings'
Bootstrap
v3.2.3

19. 4. 2024

  • added variable %rootDir%
Application
v3.2.2

15. 4. 2024

  • added feature "link aliases"
  • added attributes #[Requires] and #[Deprecated]
  • Presenter: support for templates without /template folder
  • PresenterFactory: support for location Foo/FooPresenter via **
  • Component: createComponent<name> methods are checked by checkRequirements()
  • Component::checkRequirements() delegated to Presenter
  • Latte: CacheExtension & FormExtension are added before user extensions #320
  • Latte: UIExtension is added before user extensions if $control is passed to LatteFactory::create()
  • RoutingPanel: show presenter class even if it doesn't exist
  • Revert "ApplicationExtension: $catchExceptions can be '4xx' in addition to bool"
  • Control::flashMessage() enhanced type hint
Application
v3.2.3

15. 4. 2024

  • added feature "link aliases"
  • added attributes #[Requires] and #[Deprecated]
  • Presenter: added switch()
  • PresenterFactory: support for location Foo/FooPresenter via **
  • Presenter: support for templates without /template folder
  • LinkGenerator: unified with link generation in presenters
  • added ComponentReflection::getActionRenderMethod() & getSignalMethod()
  • Latte: CacheExtension & FormExtension are added before user extensions #320
  • Latte: UIExtension is added before user extensions if $control is passed to LatteFactory::create()
  • RoutingPanel: show presenter class even if it doesn't exist
  • Revert "ApplicationExtension: $catchExceptions can be '4xx' in addition to bool"
Forms
v3.2.2

1. 4. 2024

  • SelectBox: prompt <option> is hidden
  • SelectBox: prompt key is always unique
  • typos
Tracy
v2.10.6

31. 3. 2024

  • info panel: added TS indicator & xdebug modes
  • Helpers::improveException() improved
  • js: unload replaced with pagehide #576
Latte
v3.0.14

19. 3. 2024

  • hasBlock() fixed template retrieval #357
  • {contentType}: fixed behavior when used inside <script> #356
  • n:syntax: restores syntax after </ #358
  • added FunctionExecutor for template functions
  • n:syntax must not have a prefix
  • fixed positions of FilterNode
  • TagLexer: typo in regexp nette/application#321
  • Filters::safeUrl(): widened supported types
  • PHP 8.4 compatibility
  • refactoring
Application
v3.2.1

11. 3. 2024

  • added Application::$error4xxPresenter & DI option
  • ApplicationExtension: option 'mapping' can be string
  • ApplicationExtension: $catchExceptions can be '4xx' in addition to bool
  • Application::$catchExceptions is silently deprecated
  • Presenter & others: injected services are readonly
  • Presenter: $payload access refactoring
Bootstrap
v3.2.2

10. 3. 2024

  • CacheExtension: complete path is passed since nette/caching 3.3.0
Caching
v3.3.0

10. 3. 2024

  • Bulk write implementation (#73)
  • CacheExtension: accepts complete path (BC break)
  • CacheExtension, FileStorage: checks whether directory is absolute
  • removed Nette\SmartObject
Php Generator
v4.1.4

7. 3. 2024

  • PsrPrinter: opening bracket on the correct line #155
  • Make ClassLike::from return type assert the subclass type (BC break) (#154)
  • Dumper::dumpArray(), dumpArguments() optimization
  • Dumper: simplified list with negative keys
  • added parameter $overwrite to addMember(), addMethod(), addProperty(), addConstant(), addCase() #152
  • Factory: parameters 'int $foo = null' are parsed as '?int'
Forms
v3.2.1

6. 3. 2024

  • netteForms: converts float & int to numbers #313
  • partially revert "some classes marked as final (BC break)"
  • SubmitButton::setValidationScope() accepts strings
  • Container::getUntrustedValues() has default value
Di
v3.2.1

4. 3. 2024

  • PhpGenerator: DTO and DateTime are not suspicious objects #306 #308
  • NeonAdapter: fixed to string conversion #307
  • Compiler::loadDefinitionsFromConfig() expands parameters (after 3399312)
Di
v3.2.0

6. 2. 2024

  • requires PHP 8.1
  • uses PHP 8.1 features
  • Sensitive parameters are put in markers /sensitive{/ and /}/
  • added support for first-class callable syntax in NEON
  • SearchExtension: added 'exclude -> files'
  • ServicesExtension: locator supports Statement (#294)

changes

  • Resolver: only optional parameters are autowired with default value (BC break)
  • generated accessors/factories must have defined return type (BC break)
  • %parameters% is deprecated (BC break)
  • LocatorDefinition: deprecated support for create($name) method (BC break)
  • PhpGenerator: warns about suspicious dumping of objects
Di
v3.1.9

4. 2. 2024

  • ParametersExtension: exports both statements and dynamic parameters, preloads only the latter
  • allowed %foo.bar% expansion of Statement
  • SearchExtension: also searches for accessors
  • Resolver::autowireArgument() fixed handling of new-initializer with typehint #302
  • InjectExtension: added type checking
  • NeonAdapter::removeUnderscoreVisitor() checks if key doesn't exist
Http
v3.2.4

30. 1. 2024

  • FileUpload: added getSuggestedExtension()
  • RequestFactory: unify and fix host parsing (#229)
Component Model
v3.1.0

21. 1. 2024

  • requires PHP 8.1
  • uses PHP 8.1 features
  • added Container::getComponentTree()
  • Container::getComponents() parameters are silently deprecated, returns array when $deep is false (BC break)
Forms
v3.2.0

21. 1. 2024

  • requires PHP 8.1
  • uses PHP 8.1 features
  • Latte: {inputError} must have argument
  • BaseControl, ControlGroup::getOption() parameter $default is deprecated
  • Container: getValues(true) is deprecated (BC break)
Forms
v3.1.15

21. 1. 2024

  • added Blueprint, replaces LatteRenderer, DataClassGenerator, {formPrint}, {formClassPrint}
  • DateTimeControl: default date for 'time' is 0001-01-01
  • examples: updated bootstrap examples
  • Latte: sets Tag::$node
  • Latte: fixed rendering of empty <label> for CheckboxList/RadioList items
Http
v3.3.0

21. 1. 2024

  • requires PHP 8.1
  • uses PHP 8.1 features
Routing
v3.1.0

21. 1. 2024

  • requires PHP 8.1
  • uses PHP 8.1 features
Security
v3.2.0

21. 1. 2024

  • requires PHP 8.1
  • uses PHP 8.1 features
  • removed deprecated IUserStorage (BC break)
Schema
v1.3.0

21. 1. 2024

  • requires PHP 8.1
  • uses PHP 8.1 features
Schema
v1.2.5

21. 1. 2024

  • added transform() #52
  • castTo() allows you to create objects #44 #47 #58 #46
  • refactoring
  • added path to Context::$dynamics
  • Base: removed DynamicParameter from error message
Tester
v2.5.2

21. 1. 2024

  • Implemented console-lines mode which prints each test on separate line. (#443)
  • DomQuery: searches starting from current node
  • Environment::setupFunctions() creates global functions testException()
Php Generator
v4.1.3

18. 1. 2024

  • Extractor: supports PHP-Parser 5.0 (#150)
  • Extractor: fix escaping quotes when converting to double quoted string #151
  • Extractor: NOWDOC/HEREDOC are not converted to single line strings
  • Dumper: added $customObjects
  • Dumper: refactoring, added dumpCustomObject()
  • Printer: option $omitEmptyNamespaces is applied by printFile() [Close #147]
Utils
v4.0.4

17. 1. 2024

  • added Iterables
  • added Arrays::firstKey(), lastKey()
  • added Arrays::filter()
  • Arrays::first() & last(): added parameter $else
  • Arrays::first() & last(): added parameter $predicate #305
  • added Image::getSupportedTypes()
  • Arrays: improved phpDoc
  • utilizes Random\Randomizer in PHP 8.3
  • StaticClass: fixed compatibility with PHP 8.3.2
  • Strings::trim() trims unicode spaces and ZWSP (#304)
Latte
v3.0.13

9. 1. 2024

  • added support for application/ld+json (#353)
  • fixed escaping after {contentType xml}
  • Filters & Passes: refactoring
  • removed Filters::$xml
Database
v3.2.0

5. 12. 2023

  • requires PHP 8.1
  • added PHP 8 typehints, uses PHP 8.1 features
  • MySqlDriver: DECIMAL with precision=0 is returned as int (BC break)
  • normalizeRow: converts zero-date 0000-00-00 to NULL (BC break)
  • normalizeRow: time columns resets date to 0001-01-01 (BC break)
  • Numeric/decimal data type is detected as FIELD_DECIMAL
  • MySqlDriver: TINYINT(1) is returned as bool (when 'supportBooleans' is enabled)
Safe Stream
v3.0.1

26. 11. 2023

  • support for PHP 8.3
  • removed error suppression
Latte
v3.0.11

9. 11. 2023

  • added n:else
  • exception handler can throw exception #307
  • JumpNode: correctly closes all HTML elements #340
  • uses AuxiliaryNode to hide usage of internals #347
  • {exitIf} must not be in prepare()

changes:

  • removed variable Tag::$data, Tag::closestTag() finds by class name
  • StaticCallNode renamed to StaticMethodCallNode
  • RegexpException replaced with CompileException & RuntimeException
  • ExpressionBuilder is deprecated
Latte
v3.0.12

9. 11. 2023

  • added n:else
  • exception handler can throw exception #307
  • JumpNode: correctly closes all HTML elements #340
  • uses AuxiliaryNode to hide usage of internals #347
  • {exitIf} must not be in prepare()

changes:

  • removed variable Tag::$data, Tag::closestTag() finds by class name
  • StaticCallNode renamed to StaticMethodCallNode
  • RegexpException replaced with CompileException & RuntimeException
  • ExpressionBuilder is deprecated
Latte
v2.10.10

7. 11. 2023

support for PHP 8.2, 8.3

Database
v3.1.8

2. 11. 2023

  • support for PHP 8.3
  • used PhpStorm Language attribute
Database
v3.1.9

2. 11. 2023

  • support for PHP 8.3
  • used PhpStorm Language attribute
Caching
v3.2.3

2. 11. 2023

  • support for PHP 8.3
Mail
v4.0.2

2. 11. 2023

  • SmtpMailer: fixed problem with empty response with slow SMTP server
Mail
v3.1.11

2. 11. 2023

  • support for PHP 8.3
  • SmtpMailer: fixed problem with empty response with slow SMTP server
Http
v3.2.3

2. 11. 2023

  • support for PHP 8.3
  • FileUpload: detects supported images
  • RequestFactory: fixed port detection when HTTP_HOST & SERVER_PORT are used #223
  • removed fix for IE
Php Generator
v4.1.2

29. 10. 2023

  • Support union type in Type::nullable (#141)
  • Extractor: fixed extracting of special arrays #143
Utils
v4.0.3

29. 10. 2023

  • added ImageColor, replaces Image::rgb()
  • added Image::rectangleWH(), filledRectangleWH(), calculateTextBox()
  • Type: fixed resolving of 'static' nette/di#295
Forms
v3.1.13

29. 10. 2023

  • added addDate(), addTime() & addDateTime()
  • netteForms: min/max/range can compare strings
  • tests: grunt replaced with karma
  • FormsExtension: added getCacheKey() to force refresh cache
Forms
v3.1.14

29. 10. 2023

  • added addDate(), addTime() & addDateTime(), addColor()
  • netteForms: min/max/range can compare strings
  • AVIF image support
  • tests: grunt replaced with karma
  • FormsExtension: added getCacheKey() to force refresh cache
Latte
v2.11.7

18. 10. 2023

  • support for PHP 8.3
Security
v3.1.8

18. 10. 2023

  • support for PHP 8.3
  • constants are PascalCase
  • used #[\SensitiveParameter] to mark sensitive parameters
Php Generator
v4.1.1

17. 10. 2023

  • ClassType: added inheritMethod() & inheritProperty()
  • Printer: added option $omitEmptyNamespaces
  • added ConstantsAware::getConstant()
  • Extractor::extractAll() extracts only top-level classes and functions, fixed file comment parsing
  • Extractor: extracts native PHP values
  • ClassType: getType() is deprecated
  • Printer: fixed falsy Attribute aren't printed (#142)
Di
v3.1.6

15. 10. 2023

  • ParametersExtension, Container: redesigned way of handling dynamic parameters via getParameter() #291 #288
  • more self explanatory message for factory and service mismatch (closes #199) (#284)
  • Support list<Type> syntax for autowiring a collection of services (#293)
  • Resolver: added support for named variadics #289
  • ParametersExtension: better validation exception for dynamic parameters
  • ContainerPanel: refactoring
  • Container: detects circular reference for parameters
  • Option 'class' is allowed again
Di
v3.1.7

15. 10. 2023

  • ParametersExtension, Container: redesigned way of exporting dynamic parameters via getParameter() #291
  • Helpers::expand() allow concatenation of Statements #288
  • more self explanatory message for factory and service mismatch (closes #199) (#284)
  • Support list<Type> syntax for autowiring a collection of services (#293)
  • Resolver: added support for named variadics #289
  • ParametersExtension: better validation exception for dynamic parameters
  • ContainerPanel: refactoring
  • Container: detects circular reference for parameters
  • ServiceDefinition: setup: prepends @self in depth
  • Option 'class' is allowed again
Di
v3.1.8

15. 10. 2023

  • ParametersExtension, Container: redesigned way of exporting dynamic parameters via getParameter() #291
  • Helpers::expand() allow concatenation of Statements #288
  • more self explanatory message for factory and service mismatch (closes #199) (#284)
  • Support list<Type> syntax for autowiring a collection of services (#293)
  • Resolver: added support for named variadics #289
  • ParametersExtension: better validation exception for dynamic parameters
  • ContainerPanel: refactoring
  • Container: detects circular reference for parameters
  • ServiceDefinition: prepends @self to setup immediately
  • Option 'class' is allowed again
Latte
v3.0.10

11. 10. 2023

  • added function hasBlock() #345
  • Filters::safeUrl() accepts Stringable
  • implemented mandatory escaping (cannot be disabled using |noescape)
  • In <script type=unknown> is HTML not escaped
  • Improved escaping in <script type=text/html>
  • Escaper: better detection of type in <script> & <style>
  • FilterExecutor: refactoring, info-aware filter can be dynamic
  • Filters::strLength() uses mbstring, iconv and then utf8_decode
Forms
v3.1.12

10. 10. 2023

  • support for PHP 8.3
  • added addFloat()
  • Container::getValues() respects validation scope #287
  • netteForms: bad numbers are checked at the beginning #289
  • netteForms: the 'number' element value is not available only on badInput error
  • netteForms: resets toggles when form is reset #306
  • Latte: split initialization and form rendering
  • netteForms: showModal uses <dialog> by default
  • removed fix for IE
  • Container: const Array changed to public #301
Application
v3.1.14

9. 10. 2023

  • added attribute #Parameter
  • RoutingPanel: redesigned #285
  • Application: previous presenter is passed to error presenter (#317)
  • SnippetNode, SnippetAreaNode: name can be class constant nette/latte#346
  • Presenter: added PATCH to $allowedMethods
  • MicroPresenter: injects service only for non-builtin types
  • ComponentReflection::convertType() supports true & false
  • Latte: {layout auto} always call Presenter::findLayoutTemplateFile()
Routing
v3.0.5

9. 10. 2023

  • RouteList: match() split into prepareRequest() and completeParameters()
  • RouteList::withPath() trailing slash is optional #11
Tracy
v2.10.4

29. 9. 2023

  • code highlighting moved to CodeHighlighter, implemented own PHP syntax highlighter
  • css: consistent gaps between blocks
  • bluescreen.css: adjusted spacing
  • BlueScreen: fixed highlighted line in CLI
  • is_file may trigger error #572
  • table-sort.js: distinguishes a click from a selection
  • Helprs::utf8Length() uses mbstring, iconv and then utf8_decode
  • constants are PascalCase
Tracy
v2.10.5

29. 9. 2023

  • code highlighting moved to CodeHighlighter, implemented own PHP syntax highlighter
  • css: unified spaces to --tracy-space & top margin
  • Dumper: added WeakMap support, improved SplObjectStorage & ArrayObject dump
  • BlueScreen: fixed highlighted line in CLI
  • is_file may trigger error #572
  • table-sort.js: distinguishes a click from a selection
  • Helprs::utf8Length() uses mbstring, iconv and then utf8_decode
  • constants are PascalCase
Neon
v3.4.1

27. 9. 2023

  • support for PHP 8.3
  • syntax: allowed tab as separator for dashed-blocks
  • INF & NAN encoding throws an exception #69
Robot Loader
v4.0.1

26. 9. 2023

  • support for PHP 8.3
  • fixed parser #28
  • removed Nette\SmartObject
Tracy
v2.9.8

25. 9. 2023

  • BlueScreen: highlightLine() produces extra </code>
  • is_file may trigger error #572
  • table-sort.js: distinguishes a click from a selection
  • Debugger:barDump(): pass Debugger::$maxItems option to Dumper (#563)
  • Dumper: clones Ds\Collection (#561)
  • bluescreen: checks if $_SERVER['argv'] is set (#568)
  • create-phar: attributes are not considered comments in PHP 7 #562
Bootstrap
v3.2.1

23. 9. 2023

  • support for PHP 8.3
  • added config.stub.neon #70
  • PhpExtension: validates options
  • ConstantsExtension: validates options
  • event handlers: changed iterable -> array #71
Mail
v4.0.1

23. 9. 2023

  • support for PHP 8.3
  • SendmailMailer: fixed $commandArgs handling after 0e236e4 #93
  • SmtpMailer: adds 'To: undisclosed-recipients' header when a mail is with only Bcc recipients (#92)
  • used #[\SensitiveParameter] to mark sensitive parameters
Di
v3.0.17

21. 9. 2023

  • Resolver: added support for named variadics #289
  • Resolver: tolerates nullable types when resolving
  • Container: added initialize()
Di
v3.1.4

20. 9. 2023

  • ParametersExtension: parameters containing expressions have static value '* unavailable value *'
  • ParametersExtension: dynamic parameters are evaluated immediately #291
  • option 'class' is allowed again
Utils
v4.0.2

19. 9. 2023

  • Strings::length() uses mbstring, iconv and then utf8_decode #299
  • Finder: getType() replaced with isDir() / isFile()
  • StaticClass: constructor is private nette/di#292
  • Arrays: add generic type declaration for some(), every() and map() (#298)
  • FileSystem: can be used as instance
Latte
v3.0.9

8. 9. 2023

  • improved support for variable tags <{$foo}>
  • Linter: refactoring, added getEngine()
  • TemplateLexer: rewritten that functions are not generators, exceptions are thrown in parsers
Php Generator
v4.1.0

29. 8. 2023

  • ClassType::class(), interface(), traits() & enum() are deprecated
  • removed Nette\SmartObject
  • removed deprecated stuff
Php Generator
v4.0.9

29. 8. 2023

  • Parameters can have comments
  • added Literal::new() #130
  • fixed #135
Application
v3.1.13

27. 8. 2023

  • LatteExtension: added options strictParsing & phpLinter
Application
v3.1.12

27. 8. 2023

  • LatteExtension: added options strictParsing & phpLinter
Latte
v3.0.8

13. 8. 2023

  • added support for magic constants LINE, FILE, DIR
  • added strict parsing mode via Engine::setStrictParsing()
  • added support for variable tags <{$foo}>
  • added constant Template::Source
  • n:tag supports XML
  • in XML are tag names case sensitive
  • content in </foo ...> is not allowed (BC break)
  • TemplateLexer is driven from parser
  • TemplateParserHtml: HTML attribute name can be PrintNode or string (BC break)
  • TokenStream::throwUnexpectedException() reports only single token
Schema
v1.2.4

9. 8. 2023

  • support for PHP 8.3
  • constants are PascalCase
Di
v3.1.3

9. 8. 2023

  • support for PHP 8.3
  • Resolver: tolerates nullable types when resolving
Latte
v3.0.7

7. 8. 2023

  • smarter way to work with HTML attributes (possible BC break)
  • allow {exitIf} in {define} (#334)
  • Engine::enablePhpLinter() allows to lint generated PHP templates
  • ForeachNode, TagParser: added native parser for foreach-variables #342
  • TagParser: support dynamic class constant fetch in PHP 8.3
  • Expression nodes: added some validators
  • ArrayNode, TagParser: distinguish between array() and list() via $kind
  • ArrayNode::fromArguments() rewritten to PrintContext::argumentsAsArray() (BC break)
  • forbidden variable $GLOBALS
Php Generator
v4.0.8

30. 7. 2023

  • support for PHP 8.3
  • Factory: properties in readonly classes are not readonly
  • FunctionLike: added getParameter() & hasParameter()
  • ConstantsAware: added hasConstant() (#133)
Tracy
v2.10.3

30. 7. 2023

  • support for PHP 8.3
  • Debugger:barDump(): pass Debugger::$maxItems option to Dumper (#563)
  • Dumper: clones Ds\Collection (#561)
  • bluescreen: checks if $_SERVER['argv'] is set (#568)
  • MailSender: host is taken from nette/http (#566)
Utils
v4.0.1

30. 7. 2023

  • support for PHP 8.3
  • added Image::isTypeSupported()
  • added enum ImageType
  • Finder: collect() returns list
  • Finder: improved exception when directory is missing
  • Finder: default mask is '*'
  • improved type annotations (#290)
  • Callback::unwrap() returns correct class name for private methods
Tester
v2.5.1

30. 7. 2023

  • support for PHP 8.3
  • fixed accessed property before initialization (#441) (#442)
  • used get_debug_type()
Application
v3.1.11

28. 4. 2023

  • RoutingPanel: URL & link to presenter moved to the top
  • Latte: n:snippet works with <script>
  • Latte: n:href prints line
  • constants are PascalCase
Php Generator
v4.0.7

26. 4. 2023

  • Printer: added $singleParameterOnOneLine (#132)
  • fixed class resolving in trait usages #128
  • Printer: multiline attributes are in own attribute block
  • Printer: attributes on parameters are placed on its own line
  • coding style
Tracy
v2.10.1

28. 3. 2023

  • Exposer: recognizes virtual properties of native classes
  • Fixes native class dumping [Closes #558]
Tracy
v2.10.2

28. 3. 2023

  • Exposer: recognizes virtual properties of native classes
  • Fixes native class dumping [Closes #558]
Http
v3.2.2

18. 3. 2023

  • SessionExtension: don't set readAndClose if null (#213)
  • Improved https recognition behind load balancer (#221)
  • RequestFactory: fix X-Forwarded-Host mixup with remote host (#222)
  • RequestFactory: performance optimization #220
  • RequestFactory: fixed filter detection
  • Url: host can end with dot #198
  • added Session::getSectionNames(), replacement for getIterator()
Http
v3.1.8

18. 3. 2023

  • SessionExtension: don't set readAndClose if null (#213)
  • Improved https recognition behind load balancer (#221)
  • RequestFactory: fix X-Forwarded-Host mixup with remote host (#222)
  • RequestFactory: performance optimization
  • RequestFactory: fixed filter detection
  • Url: host can end with dot #198
Php Generator
v4.0.6

13. 3. 2023

  • Printer: print brace on next line when method/function has typehint
  • Printer: promoted parameters / parameter with attributes are always multiline
  • Printer: printAttributes & printReturnType are protected #123
  • used PhpStorm Language attribute
Di
v3.1.2

13. 3. 2023

  • ContainerPanel: removed padding & word-break for dumps
  • Resolver::autowireArguments() fixed support for variadics
  • fixed exception messages
  • fix Container::getByType() compatibility with PHPStan (#285)
Di
v3.0.16

13. 3. 2023

  • ContainerPanel: removed padding & word-break for dumps
  • Resolver::autowireArguments() fixed support for variadics
  • fixed exception messages

v3.0 maintenance has been ended, please update to v 3.1

Forms
v3.1.11

8. 3. 2023

  • DefaultFormRenderer: new methods for rendering elements (#299)
  • ChoiceControl, MultiChoiceControl, HiddenField: added BackedEnum support (#293)
  • UploadControl: added automatic rule MaxLength
  • UploadControl: refactoring
  • Latte: fixed escaping on button #298
  • constants are PascalCase
Latte
v3.0.6

1. 3. 2023

  • allowed trailing comma in {var} and {parameters}
  • unquoted strings can contain .
  • TemplateParserHtml: correctly catches non-valid tag content #329
  • TagParser: correct concatenation precedence
  • NameNode: updated list of keywords, enumerated magic constants
  • Node: getIterator() is abstract (BC break)
  • renamed Filters::escapeHtmlRawText -> convertJSToHtmlRawText, Expression\ArrayItemNode -> Php\ArrayItemNode, Expression\ClosureUseNode -> Php\ClosureUseNode and EncapsedString* -> InterpolatedString*
Tracy
v2.10.0

28. 2. 2023

  • requires PHP 8.0
  • added PHP 8 typehints
  • BlueScreen: added support for sensitive markers /sensitive{/ and /}/ [Closes #426]
  • BlueScreen: added source to header
  • Dumper: added support for enum/flags properties
  • Debugger::timer: switch from microtime to hrtime
  • CSP: requires 'script-dynamic'
  • removed FireLogger (BC break)
Tracy
v2.9.7

28. 2. 2023

  • bar.js: toggle & dumper now works in panel in new window #554
  • BlueScreen: added 'authorization' to keysToHide #365
  • Dumper: added support for sensitive values in PHP 8.2
  • dumper.js: highlights same instances in whole <tracy-div>
  • bar.js: window.TracyAutoRefresh = false works now
  • Info panel: better responsivity
  • open-editor: slash after action is optional
Tester
v2.5.0

6. 2. 2023

  • requires PHP 8.0
  • added PHP 8 typehints
  • Capture stderr of test via temp file and output it in test results [Closes #420] (#438)
  • Environment::setupFunctions() creates global functions test(), setUp() & tearDown()
  • TestCase: lists the running methods
  • Assert::equal() added flags $matchOrder & $matchIdentity
  • constants are PascalCase
  • Dumper & Assert: dumps true/false/null in lowercase
Tracy
v2.9.6

6. 2. 2023

  • TracyExtension: sets $mailer only to Tracy\Logger #549
  • TracyExtension: compatibility with nette/di
  • added PascalCase constant aliases
  • dumper.js builds elements even if is called via Toggle.toggle()
  • bar.css: removed extra margin/padding for dumps
Database
v3.1.7

2. 2. 2023

  • composer: allows nette/utils 4.0
Security
v3.1.7

2. 2. 2023

  • composer: allows nette/utils 4.0
Utils
v4.0.0

2. 2. 2023

  • uses PHP 8 featurs
  • includes a completely rewritten Finder
  • ArrayHash & ArrayList: support iteration with reference (#289)
  • Finder: completely rewritten
  • Translator: changed interface, accepts and returns string|Stringable [Closes #231]
  • PascalCase constants
  • Strings: added support for UTF-8 offsets in regexp

new methods:

  • Nette\Utils\Json::decodeFile() reads JSON from a file
  • Nette\Utils\FileSystem::unixSlashes() & platformSlashes() converts slashes to Unix slashes
  • Nette\Utils\Strings::ord(), unixNewLines() & platformNewLines()
  • Nette\Utils\Helpers::compare() compare using the operator

new parameters:

  • Nette\Utils\Strings::split() added parameter $limit
  • Nette\Utils\Strings::replace() added parameters $captureOffset, $unmatchedAsNull
  • Nette\Utils\Strings, Nette\Utils\Arrays, Nette\Utils\Json: flags replaced with parameters

removed

  • Reflection: removed obsolete getReturnType(), getParameterType(), getPropertyType() (BC break)
Mail
v3.1.10

18. 1. 2023

  • MailExtension: renamed option 'secure' -> 'encryption'
  • composer: allows nette/utils 4.0
Routing
v3.0.4

18. 1. 2023

  • composer: allows nette/utils & http 4.0
  • cs
Utils
v3.2.9

18. 1. 2023

  • Type: supports Disjunctive Normal Form Types
  • Validators: added isTypeDeclaration(), isBuiltinType(), isClassKeyword()
  • used PhpStorm Language attribute (#277)
  • Types::isSingle() -> isSimple()
Component Model
v3.0.3

17. 1. 2023

  • composer: allows nette/utils 4.0
  • constants are PascalCase
Application
v3.1.9

17. 1. 2023

  • Presenter: fixed InvalidLinkException on detectedCsrf() #300
  • Persistent: added constructor #305
  • composer: allows nette/utils 4.0
  • Latte: uses TracyExtension
  • used PhpStorm Language attribute
Application
v3.1.10

17. 1. 2023

  • Presenter: fixed InvalidLinkException on detectedCsrf() #300
  • Persistent: added constructor #305
  • composer: allows nette/utils 4.0
  • Latte: uses TracyExtension
  • used PhpStorm Language attribute
Di
v3.1.1

17. 1. 2023

  • better exception messages
  • Container: added typehint object
  • composer: accepts nette/utils & robot-loader 4.0
  • removed Adapter::dump() interface method
Di
v3.0.15

17. 1. 2023

  • revert "used generics (#261)" [Closes #274]
  • improved exception messages

v3.0 maintenance has been ended, please update to v 3.1

Mail
v4.0.0

13. 1. 2023

  • requires PHP 8.0
  • SmtpMailer & DkimSigner constructor: $options changed to parameters (BC break)
  • SendmailMailer: uses CRLF for message
  • SendmailMailer: 'From' is passed as cmd argument [Closes #78]
  • constants are PascalCase
  • deprecated magic properties (BC break)
Bootstrap
v3.2.0

13. 1. 2023

  • requires PHP 8.0
  • PhpExtension: simplification, uses only ini_set
Caching
v3.2.0

13. 1. 2023

  • requires PHP 8.0
  • added $dependencies as a Cache::load() 3rd parameter
Caching
v3.2.1

13. 1. 2023

  • requires PHP 8.0
  • added $dependencies as a Cache::load() 3rd parameter
  • Latte: runtime helpers moved to Runtime class
Caching
v3.2.2

13. 1. 2023

  • requires PHP 8.0
  • added $dependencies as a Cache::load() 3rd parameter
  • Latte: runtime helpers moved to Runtime class
Neon
v3.4.0

13. 1. 2023

  • requires PHP 8.0
  • removed deprecated syntax on/off & \x** (BC break)
Robot Loader
v4.0.0

9. 1. 2023

  • requires PHP 8.0
  • renamed getCacheKey() -> generateCacheKey() (BC break)
  • removed support for netterobots.txt (BC break)
Forms
v3.1.9

9. 1. 2023

  • FormNNameNode: $form is created before tag itself #291
  • latte: fixed parsing of {input} & {label} arguments
  • Latte: better error message when form is missing
  • Latte: {inputError ...} should have argument
  • getUnsafeValues() renamed to getUntrustedValues()
Forms
v3.1.10

9. 1. 2023

  • FormNNameNode: $form is created before tag itself #291
  • latte: fixed parsing of {input} & {label} arguments
  • Latte: better error message when form is missing
  • Latte: {inputError ...} should have argument
  • getUnsafeValues() renamed to getUntrustedValues()
  • supports nette/utils 4
Latte
v3.0.5

28. 12. 2022

  • added TracyExtension
  • added {exitIf} #287
  • Node: getIterator() must exists (BC break)
  • improved error messages for reserved keywords
  • safeUrl accepts HtmlStringable
  • fixed caching issue after 38039d8
  • Content type 'text' uses escaping
  • escapeXml() treats HtmlStringable as XML #322
  • Linter: prints filenames during progress
  • Parser: fixed support for dash in n:attributes
  • more accurate checking of {breakIf} {continueIf} {skipIf} parent nodes
  • renamed SkipNode -> JumpNode, InRangeNode to InNode (BC break)
  • TagParser::tryConsumeModifier() renamed to tryConsumeTokenBeforeUnquotedString()
Finder
v3.0.0

14. 12. 2022

The library has been moved to the nette/utils

Finder
v2.6.0

14. 12. 2022

  • Countable is deprecated (BC break)
  • extension method are deprecated (BC break)
Robot Loader
v3.4.2

14. 12. 2022

  • refactoring
  • support for PHP 8.2
Bootstrap
v3.1.4

14. 12. 2022

  • PhpExtension: supports dynamic parameters
  • Configurator: added generateContainerKey()
  • Configurator::createContainer: added $initialize parameter
  • constants are PascalCase
Safe Stream
v3.0.0

12. 12. 2022

  • requires PHP 8.0
  • constants are PascalCase
  • removed old protocol safe://
  • renamed Nette\Utils\SafeStream -> Nette\SafeStream\Wrapper
Safe Stream
v2.5.1

12. 12. 2022

supports PHP 8.2

Di
v3.1.0

5. 12. 2022

Changes:

  • supports PascalCase constants in configuration
  • Resolver: non-optional autowired parameters trigger notice that value is required [Closes #271]
  • constants are PascalCase
  • NeonAdapter: automatically escapes @
  • Compiler: constants are evaluated immediately"

Deprecations:

  • deprecated options 'parameters', 'dynamic', 'class' in configuration
  • Three ... dots are deprecated in configuration
  • Loader::save() is deprecated
  • annotations @return are deprecated
  • PhpExtension & ConstantsExtension are deprecated (have been moved to nette/bootstrap)
Application
v3.1.8

27. 11. 2022

  • support for PHP 8.2
  • Control::templatePrepareFilters() silently deprecated
  • Component::getParameter() $default is silently deprecated
Http
v3.2.0

27. 11. 2022

Changes:

  • RequestFactory: removed HTTP authentication credential from Url to prevent leak it (#211 #215)
  • constants are PascalCase

New features:

  • Request: added getBasicCredentials()
  • Url, UrlImmutable: added getDefaultPort()
  • RequestFactory::getHeaders() recreates Authorization header
  • support for full_path upload (#207 #212)
  • HttpExtension: dynamic options cookiePath, cookieDomain, cookieSecure (#216)

Deprecations:

  • IRequest::getRemoteHost() is silently deprecated (#218)
  • SessionSection: magic accessors & ArrayAccess are silently deprecated
Http
v3.2.1

27. 11. 2022

BC break:

  • RequestFactory: removed HTTP authentication credential from Url to prevent leak it (#211 #215)
$httpRequest->getUrl()->getUser() + getPassword()
// changed to 
[$user, $pass] = $httpRequest->getBasicCredentials();

New features:

  • Request: added getBasicCredentials()
  • Url, UrlImmutable: added getDefaultPort()
  • RequestFactory::getHeaders() recreates Authorization header
  • support for full_path upload (#207 #212)
  • HttpExtension: dynamic options cookiePath, cookieDomain, cookieSecure (#216)
  • constants are PascalCase

Deprecations:

  • IRequest::getRemoteHost() is silently deprecated (#218)
  • SessionSection: magic accessors & ArrayAccess are silently deprecated
  • Session::getIterator() is deprecated
Database
v3.1.6

18. 11. 2022

  • support for PHP 8.2
  • ConnectionPanel: detecting source without filesystem check
  • used #[\SensitiveParameter] to mark sensitive parameters
  • cs
Bootstrap
v3.1.3

18. 11. 2022

  • support for PHP 8.2
  • cs
Forms
v3.1.8

18. 11. 2022

  • support for PHP 8.2
  • Form::initialize() sets 'secure' flag nette/http#217
  • BaseControl, ControlGroup::getOption() parameter $default is silently deprecated
  • cs
Http
v3.1.7

18. 11. 2022

  • support for PHP 8.2
  • Request::getReferer() is deprecated #210
  • cs
Mail
v3.1.9

18. 11. 2022

  • support for PHP 8.2
  • private constants are PascalCase
  • cs
Schema
v1.2.3

18. 11. 2022

  • support for PHP 8.2
  • cs
Tracy
v2.9.5

18. 11. 2022

  • support for PHP 8.2
  • tableSort: sort using a natural order algorithm (#547)
  • BlueScreen: scroll to top when visible
  • BlueScreen: fixed initialization issues, added globalInit()
  • BlueScreen: toggler is visibile in quirks mode
Latte
v3.0.4

4. 11. 2022

  • TemplateLexer: fixed tag parsing & double syntax
  • removed Engine::$probe
  • Extension::beforeRender() changed signature (BC break!!)
  • Extension::beforeRender() is called just before the template is rendered
  • Engine, Template: provides are stored in stdClass
Latte
v2.11.6

4. 11. 2022

  • support for PHP 8.2
  • Blueprint: fixed compatibility with PhpGenerator v4
Di
v3.0.14

2. 11. 2022

  • support for PHP 8.2
  • ExtensionsExtension: removed final #280
  • Revert "ContainerLoader: mutex handling clarification (#270)"
Caching
v3.1.4

18. 10. 2022

  • SQLiteJournal: speed up cache writing, prevent database locked error (#66)
  • CacheExtension: used getProviders()
  • Cache: returned NAMESPACE_SEPARATOR back (don't use it, it's internal) #67
Security
v3.1.6

12. 10. 2022

  • CookieStorage: getState returns the previously set ID #67
  • CookieStorage: fixed SameSite attribute
  • SessionStorage::setExpiration() does not overwrite data in the session
  • SimpleAuthenticator: refactoring, added verifyPassword()
  • strict type fix
  • coding style
Finder
v2.5.4

12. 10. 2022

  • improved phpDoc
  • variadics accepts named parameters
Php Generator
v4.0.4

6. 10. 2022

  • added support for PHP 8.2 features: DNF types, constants in traits, readonly classes, Type::True
  • Type: constants are PascalCase
  • Extractor: keeps the first comment in the method #119
  • Printer: allow customizing comment formatting through protected printDocComment (#118)
  • Helpers::formatDocComment() added option $forceMultiLine
  • Factory: object class contains path from root namespace (#117)
  • Extractor: Fixed extracting enum method body #115 (#116)
Php Generator
v4.0.5

6. 10. 2022

  • added support for PHP 8.2 features: DNF types, constants in traits, readonly classes, Type::True
  • Type: constants are PascalCase
  • Extractor: keeps the first comment in the method #119
  • Printer: allow customizing comment formatting through protected printDocComment (#118)
  • Helpers::formatDocComment() added option $forceMultiLine
  • Factory: object class contains path from root namespace (#117)
  • Extractor: Fixed extracting enum method body #115 (#116)
  • PhpNamespace: better use-statements sorting behavior
Php Generator
v3.6.9

6. 10. 2022

  • Extractor: keeps the first comment in the method #119
  • Factory: object class contains path from root namespace (#117)
  • Extractor: Fixed extracting enum method body #115 (#116)
  • Type: constants are PascalCase
Utils
v3.2.8

12. 9. 2022

  • support for PHP 8.2
  • tests: deprecated GD changed to PNG
  • Image::clone() uses PNG format because GD2 is disabled since libgd 2.3.3
  • Image::detectTypeFromFile & detectTypeFromString returns width & height
  • Image: added extensionToType()
  • private constants are PascalCase
  • ObjectHelpers: fixed parsing static @methods #278
Latte
v3.0.3

12. 9. 2022

  • support for PHP 8.2
  • Blueprint: fixed compatibility with PhpGenerator v4
  • TemplateLexer: fixed unterminated tags handling
  • improved error messages
  • 'on line 1' is printed in exception messages
Php Generator
v4.0.3

12. 9. 2022

  • support for PHP 8.2
  • Dumper::dumpObject() refactoring
  • Printer: added $linesBetweenUseTypes (#114)
Php Generator
v3.6.8

12. 9. 2022

  • support for PHP 8.2
  • Extractor: added support for Readonly promoted parameters (#111)
Tester
v2.4.3

29. 8. 2022

  • PHP 8.2 Support
  • CloverXMLGenerator: reports file name is case of parse error
  • Assert::exception() prints stack of unexpected exception
Tracy
v2.9.4

19. 7. 2022

  • bluescreen: resets <body> display only when is displayed #545 #546
  • reset: uses 'all: unset'
  • bluescreen.css: responsive spacer
Php Generator
v4.0.2

21. 6. 2022

  • Printer: added $bracesOnNextLine #112
  • Extractor: added support for Readonly promoted parameters (#111)
  • Printer: refactoring
  • Dumper: supports __serialize()
  • Dumper, Helpers::formatDocComment(), Printer::printFunction() & etc normalizes whitespace
  • Printer: always prints trailing comma #106
  • TraitType: traits cannot have constants
Latte
v3.0.2

15. 6. 2022

  • improved {syntax} and n:syntax handling
  • TemplateLexer: added $openDelimiter & $closeDelimiter, removed setDelimiters() (BC break)
  • Parser: undefinedsafe nodes parsed as composition of nodes (BC break)
  • Parser: joined normal & nullsafe nodes for MethodCall & PropertyFetch (BC break)
  • Parser: separate nodes for -call and -callable, ie foo() vs foo(...) (BC break)
  • EncapsedStringNode::print() fixed
  • Parser: added support for HEREDOC/NOWDOC
  • TranslatorExtension: {translate} is generator
Application
v3.1.7

1. 6. 2022

  • {link} disables URL checking
  • TranslatorExtension moved to Latte (BC break)
Latte
v3.0.1

1. 6. 2022

  • some fixes
  • added TranslatorExtension, reverts "translate moved to nette/application"
  • {_var} and {translate} can translate values during compile time
  • {translate} accepts parameters
  • SafeUrl is not used for attribute parts
  • Fixed {first} inside n:foreach #298
  • Engine::isExpired() checks filemtime of extensions
  • Linter: accepts file name or mask
  • Linter: initalization moved to class
  • Linter: prints summary
  • ParametersNode & DefineNode parses parameters as ParameterNode[] with full type
Tracy
v2.9.3

30. 5. 2022

  • bluescreen.css: resets <body> display & overflow
  • reset.css: increased specificity
  • bar.js: options can be set after script is loaded #535
  • some fixes
Latte
v2.11.4

30. 5. 2022

  • Notice: deprecated use of ';'
  • Notice: variable $iterations is deprecated
Latte
v3.0.0

17. 5. 2022

Brand new completely rewritten parser and compiler. Parses to AST nodes and then compiles to PHP.

Forms
v3.1.7

17. 5. 2022

  • support for Latte 3
  • FormMacros: optimized code
  • Form::addProtection() fixed error "Argument 3 must be of the type string or null, int given"
  • coding style
  • Runtime: fixed method name
  • improved Latte examples
Caching
v3.1.3

17. 5. 2022

  • support for Latte 3
  • coding style
Application
v3.1.6

17. 5. 2022

  • support for Latte 3
  • added tag {translate}
  • {_var} and {translate} can translate values during compile time
  • RoutingPanel: withPath() fix II.
Latte
v2.11.3

8. 5. 2022

  • SecurityPolicy::allowMacros() is deprecated, use allowTags()
  • Notice: Engine::addFilter(null, ...) is deprecated, use addFilterLoader()
  • PhpWriter::formatWord() accepts PascalCase class constants
  • Notice: missing </script> or </style>
  • Case sensitive filter |checkUrl
  • Linter: add class Latte\Tools\Linter #286
  • BlueScreenPanel: fixed compatibility with Tracy 2.9
Tracy
v2.9.2

27. 4. 2022

- added support for Generator & Fiber

  • BlueScreen: added column highlighting
  • Logs exception if the Content-Length header prevents the Bar from being displayed #255
  • Unlock session file before close #540
  • better detection of HTML mode
  • BlueScreen: closes </code>
  • Dumper: disabled HASH disables "see above/see below"
  • DeferredContent::sendAssets() uses Content-Length to prevent further output
  • Helpers: improved color detection
  • Describer: $maxDepth returned to value 7
  • css tweaks, resets property 'display'
tracy-fibers.mp4
Latte
v2.11.2

20. 4. 2022

  • improved and fixed error message
  • linter: added option --debug
  • linter: added line for notices
  • Revert "Tag name is [a-z][\w-]+"
Routing
v3.0.3

16. 4. 2022

  • SimpleRouter: fix compatibility with non-stringable (e.g. Closure) default parameter values (#9)
  • RouteList: added getDomain() & getPath()
  • Route: ignores multiple /// #6
  • Route: refactoring
  • constants are PascalCase
Latte
v2.11.1

7. 4. 2022

  • Case sensitive filters: notice when case does not match
  • Notice: Filter |noescape should be placed at the very end in modifier
  • sandbox: operator new is forbidden in {var} & {parameters}
  • Notice: Change {include "inc"} to {include file "inc"} for clarity
  • Notice: expressions like {block foo-$var} should be put in double quotes
  • n-ifcontent on empty element in deprecated
  • Template::getParameter() is deprecated
  • added {translate} as pair replacement for {_}
Http
v3.1.6

2. 4. 2022

Tester
v2.4.2

24. 3. 2022

  • interrupt signal is converted to InterruptException and handled by CliTester
  • Dumper::dumpException() added option to change output file name via AssertException::$outputName
  • Environment: improved color detection
  • Dumper: improved encoding of strings, added colors
  • improved coding style
Database
v3.1.5

10. 3. 2022

  • SqlTranslator: convert BackedEnum to scalar (thanks @milo)
  • normalizeRow() don't return small float as string #289
  • drivers: updated getForeignKeys() #281
  • ConnectionPanel::initialize() replaces Helpers::initializeTracy()
  • DatabaseExtension: creates service '.explorer' as alias to '.context'
  • PgSqlDriver: support for partitioned tables (#286)
  • PgSqlDriver: getColumns() for materialized view too
  • coding style
Php Generator
v4.0.1

10. 3. 2022

  • ClassType divided into InterfaceType, TraitType & EnumType
  • Enum: value can be expression
  • Extractor: supports promoted parameters #103
  • Extractor: maintains exact visibility
  • PhpNamespace: added removeUse() #102
  • constants are PascalCase
  • strict fixes
  • ClassType::__clone() clones traits
Php Generator
v3.6.7

10. 3. 2022

  • Extractor: supports promoted parameters #103
  • Extractor: maintains exact visibility
  • PhpNamespace: added removeUse() #102
  • constants are PascalCase
  • ClassType::__clone() clones traits
Di
v3.0.13

10. 3. 2022

  • private constants are PascalCase
  • Resolver: autowiring of collection supports 'array`<int,T>`` annotation #277
  • composer: updated dependencies
  • DefinitionSchema: recognizes Locator with one service #276
Neon
v3.3.3

10. 3. 2022

  • Encoder: uses more readable single quote strings
  • Node::getSubNodes() changed to IteratorAggregate generator,
  • Traverser: added DontTraverseChildren & StopTraversal, $enter and $leave callbacks
  • Node: added $startLine & $endLine
  • Node: startPos & endPos renamed to startTokenPos & endTokenPos
  • cs, constants are PascalCase
Latte
v2.11.0

22. 2. 2022

This version is for easy transition to the upcoming Latte 3. It notes all deprecated things that will be removed in the next version.

  • throws exception when template contains control characters
  • removed support for deprecated optional chaing expressions like $foo->prop? or $foo->call()?
  • empty closing tag {/} is deprecated
  • Colons as argument separator in modifiers are deprecated, ie replace {$foo|filter:1:2:3} with {$foo|filter:1, 2, 3}
  • Auto-empty is deprecated (it affects {label}, must be written as {label /} or pair {label}...{/label}
  • Filters::escapeJS: invalid UTF-8 is replaced with Unicode Replacement Character U+FFFD (instead of throwing exception)
  • Template: removed old accumulators $_l, $_g (deprecated in 2.4, BC break)
  • Tag name cannot start with ?
  • n:tag- & n:inner- is deprecated on void elements
  • deprecated n:inner-snippet
  • {includeblock} is deprecated
  • Auto-empty is deprecated
  • allow use of text/plain for script tag (#282)
Latte
v2.10.9

22. 2. 2022

  • added & improved tests
  • Compiler: checks macro is not in quotes in JS even with |noescape
  • Engine: in sandboxed mode is policy mandatory
  • CompileException: added line number
  • Revert "TokenIterator: fixes, sync with nette/tokenizer"
  • implode() with 2 arguments
  • output buffering uses try/finally
  • PhpHelpers::reformatCode() places elseif/catch/finally after }
  • PhpHelpers::reformatCode() refactoring $next
  • {try} and {else} are not replaced
Php Generator
v4.0.0

20. 2. 2022

This release takes advantage of all the new features of PHP 8 and cleans up some issues in the API.

  • uses PHP 8 typehints & property typehints
  • Dumper: prints comma after last argument

Stricter behaviour:

  • ClassType::add*() throws exception when method/property/etc already exists
  • PhpNamespace::add*() throws exception when class/function already exists

Changes:

  • ClassType::addTrait() returns new class TraitUse instead of $this
  • ClassType::getTraits() returns TraitUse[] instead of string[]
  • Method: body is always string, even for interfaces
  • ClassType::setConstants() and setTraits() accepts array of Constant resp TraitUse objects only

Deprecations:

  • deprecated magic properties (BC break)
  • ClassType::withBodiesFrom() replaced with from(..., withBodies: true)
  • GlobalFunction::withBodyFrom() replaced with from(..., withBody: true)
  • ClassType::from() & Factory::fromClassReflection(): removed parameter $materializeTraits
Php Generator
v3.6.6

20. 2. 2022

  • Extractor: preserves the first comment in the file #100
  • PhpNamespace: added removeClass() & removeFunction()
  • coding style
Tracy
v2.9.1

15. 2. 2022

  • reset.css uses custom tag <tracy-div> to reduce specificity below class specificity
  • BlueScreen: is wrapped in <tracy-div>, uses CSS reset instead of disabling stylesheets and all classes are prefixed with 'tracy-' #533
  • dump() is wrapped in <tracy-div> to use CSS reset
  • Dumper: default $maxDepth increased to 15
  • Debugger, TracyExtension: added $maxItems and option 'maxItems' #531
  • Debugger: enable() calls dispatch() always
  • Bluescreen: sticky footer
  • Dumper: bold class names
  • Debugger: is_dir can trigger warning #527
  • TracyExtension: $editor accepts null
Tracy
v2.7.9

15. 2. 2022

  • Debugger: don't render bar after dispatching assets
  • bluescreen.css: fixed flash of black text
  • Compatibility with psr/log ^2.0 and ^3.0 (#508)
  • BlueScreen: used scrubber for HTTP response headers (#513)
  • BlueScreen: used scrubber for HTTP headers (#498)
  • Revert "Bluescreen: added length limit for exception message (#383)" for $title
Utils
v3.2.7

24. 1. 2022

  • SmartObject: supports property deprecation
  • Image: added support for AVIF
  • Image: distinguishes between fatal errors and warnings
  • Validators: isNumeric support string number '1.' (#276)
  • Json: accepts native JSON_* constants #275
  • Arrays::isList() uses array_is_list() is PHP 8.1

Deprecated properties are written as @property-deprecated, no standard here exists. PhpStorm and static analysis tools do not see them, which is the intention.

Latte
v2.10.8

4. 1. 2022

This is a security release.

  • complex expressions in strings are prohibited in sandbox mode
Latte
v2.9.6

4. 1. 2022

This is a security release. Branch 2.9 is no longer supported

  • complex expressions in strings are prohibited in sandbox mode
  • cs
Latte
v2.8.8

4. 1. 2022

  • complex expressions in strings are prohibited in sandbox mode
  • cs
Safe Stream
v2.5.0

3. 1. 2022

  • Revert "SafeStream: reimplemented to provide real atomicity"
  • simplified implementation only using locks
Application
v3.1.5

21. 12. 2021

  • ApplicationExtension: support for creating presenters via Tracy
  • RoutingPanel: supports withPath(...)
  • Revert "Component::link() & etc uses variadic parameter" #298
  • improved coding standard
Latte
v2.10.7

21. 12. 2021

  • BlueScreenPanel: added source mapping & files creating in Tracy 2.9
  • Filters: better error message for deprecated strftime()
  • improved coding standard
Tracy
v2.9.0

21. 12. 2021

  • BlueScreen redesign:
    • new callstack
    • added tabs to Environment & HTTP
    • added tabs with Latte template (source mapping)
  • works without session
  • TracyExtension: allow to specify error level for scream and strictMode, improve supported error level expressions
  • Debugger: allow to specify error severity in $scream
  • big refactoring
  • Debugger::errorHandler() always returns false to fill-in error_get_last(), 'display_errors' disabled
  • Debugger::dispatch() is not starting session automatically
  • BlueScreen: creates new file with content
tracy.latte.mp4
Tracy
v2.8.10

21. 12. 2021

  • bar.js: fixed manual refreshing via 'X-Tracy-Ajax': Tracy.getAjaxHeader()
  • Debugger: don't render bar after dispatching assets or in CLI
  • bluescreen.css: fixed flash of black text
  • improved coding style
Di
v3.0.12

14. 12. 2021

  • Resolver::resolveEntityType() ignores return types 'object' & 'mixed' #274
  • Resolver::autowireArgument() uses named arguments to skip optional parameters in PHP 8
  • Resolver: forbidden to use extra parameter after optional (for forward compatibility) (BC break)
  • Resolver::autowireArguments() improved support for variadics
  • Resolver: refactoring of autowireArguments()
  • ServicesExtension: improved parameter merging method
  • DependencyChecker: do not serialize object parameters #273
  • PhpGenerator: do not format the statement twice or incorrectly
  • improved exception messages
  • improved coding style
  • ServiceDefinition: added setCreator() & getCreator(), aliases for setFactory() & getFactory()
Finder
v2.5.3

12. 12. 2021

Latte
v2.10.6

26. 11. 2021

This is a security release.

  • Parser: removes all control characters from template [Closes #279]
  • PhpWriter::removeCommentsPass() replaces comment with space to prevent unwanted result
  • isNext() a isPrev() called with SIGNIFICANT
  • linter: warn on BOM and deprecated stuff
  • linter: Add shebang so it can be run directly (#277)
Latte
v2.9.5

26. 11. 2021

This is a security release. Branch 2.9 is no longer supported

  • Parser: removes all control characters from template [Closes #279]
  • PhpWriter::removeCommentsPass() replaces comment with space to prevent unwanted result
  • isNext() a isPrev() called with SIGNIFICANT
Latte
v2.8.7

26. 11. 2021

This is a security release. Branch 2.8 is no longer supported

  • Parser: removes all control characters from template [Closes #279]
  • PhpWriter::removeCommentsPass() replaces comment with space to prevent unwanted result
  • isNext() a isPrev() called with SIGNIFICANT
Neon
v3.3.2

25. 11. 2021

  • ArrayNode::$indentation usage fixed #63
  • ArrayNode split to BlockArrayNode & InlineArrayNode
  • InlineArrayNode: added property $bracket
  • fixed tests
Bootstrap
v3.1.2

24. 11. 2021

  • support for PHP 8.1
Caching
v3.1.2

24. 11. 2021

support for PHP 8.1

Database
v3.1.4

24. 11. 2021

  • support for PHP 8.1
  • Fixed aggregations when group by and having conditions are used (#284)
  • queryArgs() & ResultSet::getConnection() are silently deprecated
Mail
v3.1.8

24. 11. 2021

  • support for PHP 8.1
  • Message::getPriority return type fix (#87)
Php Generator
v3.6.5

24. 11. 2021

  • PhpNamespace: added resolveName()
  • Extractor: fixed extracting attributes #98
  • PhpNamespace::addUse() ignores names in current namespace #96
  • Dumper: improved encoding of strings
Tracy
v2.8.9

24. 11. 2021

  • Helpers::editorLink() improved file name truncation
  • Bridge: compatibility with new Latte & Neon
  • BlueScreen: added output buffer status
  • BlueScreen: added info about sent headers
  • BlueScreen: warning about last muted error
Utils
v3.2.6

24. 11. 2021

  • FileSystem: messages use normalized paths (#250)
  • Strings::indexOf() fixed empty $haystack and negative $nth #271
  • Strings: improved things around flags
  • Callback::unwrap can return non-callable #270
  • used @return never
  • added Helpers::clamp()
  • Validators::isPhpIdentifier(): Value is always string. (#268)
  • Reflection::expandClassName() recognizes 'parent'
  • added Reflection::isClassKeyword(), Type::isClassKeyword()
Forms
v3.1.6

10. 11. 2021

  • compatibility: fixed interfaces
  • added DataClassGenerator & tag {formClassPrint}
  • LatteRenderer: do not send cookie
  • Latte generator moved from Rutime to new class LatteRenderer
  • Latte Blueprint: used code highlighting
Neon
v3.3.1

9. 11. 2021

  • added Neon linter
  • added Neon::decodeFile()
  • Neon::decode() no longer removes BOM (BC break)
  • Neon::encode() $flags replaced with parameters
  • Neon, Encoder: added $indentation
  • Traverser: can return different nodes
Tracy
v2.8.8

8. 11. 2021

  • TracyExtension: added option 'emailSnooze' #515
  • unified detection of CLI mode #516
  • Helpers::encodeString() prints special unicode characters as \u{...}
  • added option Dumper::HASH
  • Debugger: added FireLogger to preload #514
  • BlueScreen: used scrubber for HTTP response headers (#513)
  • Compatibility with psr/log ^2.0 and ^3.0 (#508)
  • BlueScreen: don't create empty 'Variables'
Latte
v2.10.5

27. 10. 2021

  • added Latte linter
  • Filters: compatibility with JS binding II.
  • {ifset block, block} fixed
  • // comment and # comment are forbidden inside tags
  • Blueprint: used syntax highlighter
  • Template::getParameters() skips $_l $_g
Latte
v2.9.4

27. 10. 2021

  • Blueprint: fixed compatibility with PhpGenerator 3.6.2
  • Filters: compatibility with JS binding II.
  • // comment and # comment are forbidden inside tags
Latte
v2.8.6

27. 10. 2021

  • Blueprint: fixed compatibility with PhpGenerator 3.6.2
  • Filters: compatibility with JS binding II.
  • // comment and # comment are forbidden inside tags
  • {capture} creates Html object only in HTML-TEXT context
  • {_translate} & {capture} passes full content-type to FilterInfo
  • {block|filter} passes full content-type to FilterInfo
Latte
v2.7.4

27. 10. 2021

  • Blueprint: fixed compatibility with PhpGenerator 3.6.2
  • Filters: compatibility with JS binding II.
  • // comment and # comment are forbidden inside tags
Latte
v2.6.4

27. 10. 2021

  • Filters: compatibility with JS binding II.
  • // comment and # comment are forbidden inside tags
Latte
v2.5.7

27. 10. 2021

  • Filters: compatibility with JS binding II.
  • // comment and # comment are forbidden inside tags
Php Generator
v3.6.4

26. 10. 2021

  • PhpNamespace::simplifyName() fixed relative path evaluation [Closes #94]
Di
v3.0.11

26. 10. 2021

  • The _ are removed using Neon visitor #264
  • requires neon/neon 3.3
  • ServiceDefinition: type checking removed, because methods have a type defined
  • InjectExtension: warns on non-public, static or readonly properties
  • FactoryDefinition: fixed notice #266
  • Partially reverts "improved phpDoc, used generics (#261)" #263
  • Revert "Resolver::autowireArguments() throws an exception when combining a named and positional parameter" #265
Security
v3.1.5

19. 10. 2021

  • SessionStorage: used new sessionSection API to not start the session unless needed
Neon
v3.3.0

19. 10. 2021

  • completely rewritten parser
  • generates AST
  • added Traverser
  • encoder uses AST
Schema
v1.2.2

15. 10. 2021

  • supports nette/utils 2.5
Component Model
v3.0.2

7. 10. 2021

  • support for PHP 8.1
Forms
v3.1.5

6. 10. 2021

  • {formPrint} calls fireRenderEvents()
  • Container::getValues($obj) mapping to PHP 8 constructor
  • BaseControl: added addFilter()
  • refactoring
  • Container: catches infinite loop in getValue() #277
  • netteForms: improved netteFormsModal CSS for problematic browsers
  • netteForms: visible doc comment
  • improved error messages
  • Button: preserves prototype when caption is null #276
  • Revert "added FormFactory & DI service"
Application
v3.1.4

6. 10. 2021

  • support for PHP 8.1
  • Presenter: support for @deprecated in presenters, action & signals
  • Presenter::run() saves global state on sendRequest()
  • Presenter::canonicalize() uses variadics
  • Component::link() & etc uses variadic parameter
  • UIRuntime: improved {templatePrint}
  • phpstorm.meta: added exitPoint Component::error (#293)
  • Presenter: Add return never typehint. (#291) (#290)
Latte
v2.10.4

2. 10. 2021

  • support for PHP 8.1
  • Blueprint: skips $_l $_g
  • BlockMacros: removed unnecesary $ʟ_nm (after f88777b)
  • BlockMacros: filters are not allowed in {include parent}
  • BlockMacros: fixed {include this} in {block}
  • LattePanel: removed dependency on Nette #274
  • PhpWriter::quotingPass supports 'default =>' syntax #267
  • Filters: flipepd string/array tests
  • CoreMacros: Arguments are not allowed in n:ifcontent
Di
v3.0.10

29. 9. 2021

  • added _ as alias for ... in config
  • FactoryDefinition: added support for syntax $params in definition
  • added 'create' as alias for 'factory'
  • Resolver::autowireArguments() throws an exception when combining a named and positional parameter
  • DefinitionSchema: better exception on empty definition
  • FactoryDefinition::resolveType() checks for type compatibility
  • Resolver::completeException() truncates but does not remove the class name
  • Unified type validation using Helper::ensureClassType()
  • replaced use of Reflection::getReturnTypes() etc
  • uses nette/utils 3.1.6
  • improved phpDoc, used generics (#261)
Php Generator
v3.6.2

24. 9. 2021

  • Printer: added property $wrapLength #55 #56
  • getType(), getReturnType(): added option $asObject that returns Nette\Utils\Type
  • Factory: constant values are tagged for resolving
  • Resolving of names in body & literals #85
  • "use Trait" can have comments #90
  • added TraitUse, represents use-statement
  • PhpNamespace::simplifyType() supports generics like Foo<A, B>
  • PhpNamespace::unresolveName() renamed to simplifyName()
  • Helpers::unindent() fixed when level = 0
  • Dumper::format() placeholder ? must not be followed by \w
  • Dumper: added $indentation
  • Dumper: refactoring
  • Printer: refactoring, added property $dumper
  • Printer: refactoring, added property $namespace
  • Revert "Dumper: dumps Closure as PHP code" (BC break)
  • PhpNamespace::addUse() added validation
  • checks reserved class names
  • added validator for types
  • added Property and Parameter validation
  • improved validation error messages
  • Escapes */ in comments
Utils
v3.2.4

19. 9. 2021

  • support for PHP 8.1
  • added Type
  • Type, Reflection: supports intersection types
  • Reflection::getReturnType() & Type::fromReflection() return tentative type in PHP 8.1
  • Reflection::getUseStatements supports enums
  • Reflection: added 'never' built-in type
  • Reflection: getReturnTypes(), getParameterTypes(), getPropertyTypes() are deprecated
  • improved phpDoc, used generics
  • added ArrayList::from()
Utils
v3.2.5

19. 9. 2021

  • support for PHP 8.1
  • added Type
  • Type, Reflection: supports intersection types
  • Reflection::getReturnType() & Type::fromReflection() return tentative type in PHP 8.1
  • Reflection::getUseStatements supports enums
  • Reflection: added 'never' built-in type
  • Reflection: getReturnTypes(), getParameterTypes(), getPropertyTypes() are deprecated
  • improved phpDoc, used generics
  • added ArrayList::from()
Utils
v3.1.5

19. 9. 2021

  • added Type
  • improved phpDoc, used generics
  • Strings::replace: default replacement is empty string #241
  • Reflection: getReturnTypes(), getParameterTypes(), getPropertyTypes() are deprecated
Php Generator
v3.6.1

17. 9. 2021

  • added ClassType::fromCode() & PhpFile::fromCode() #79
  • Factory::fromClassReflection() added option to materialize traits or not #89
  • PhpFile: added getClasses()
  • Factory: generates trait resolutions
  • ClassType: constants are 'public' by default
  • Dumper: prints closures as func(...) in PHP 8.1
Http
v3.1.3

17. 9. 2021

  • SessionExtension: option 'autoStart=smart' behaves differently and starts session when it is needed (BC break)
  • SessionExtension: added values 'always' & 'never' for option 'autoStart'
  • Session: option 'autoStart' controls auto start on reading or writing (BC break)
  • Session: added autoStart() to prevent session files from being created when the session id is spoofed
  • SessionSection: added methods set(), get(), remove()
  • Session: refactoring
  • Session: cleaning is done in __destruct
  • Session: don't send session cookie twice
  • Session: don't regenerate ID in readAndClose mode
  • Session: added events $onStart & $onBeforeWrite
  • Session: fixed condition in clean()
Http
v3.1.4

17. 9. 2021

  • SessionSection: remove() is not writing operation
  • SessionExtension: added values 'always' & 'never' for option 'autoStart'
  • Session: option 'autoStart' controls auto start on reading or writing (BC break)
  • Session: added autoStart() to prevent session files from being created when the session id is spoofed
  • SessionSection: added methods set(), get(), remove()
  • Session: refactoring
  • Session: cleaning is done in __destruct
  • Session: don't send session cookie twice
  • Session: don't regenerate ID in readAndClose mode
  • Session: added events $onStart & $onBeforeWrite
  • Session: fixed condition in clean()
Http
v3.1.5

17. 9. 2021

  • SessionExtension: added values 'always' & 'never' for option 'autoStart'
  • Session: option 'autoStart' controls auto start on reading or writing (BC break)
  • Session: added autoStart() to prevent session files from being created when the session id is spoofed
  • SessionSection: remove() is not writing operation
  • SessionSection: added methods set(), get(), remove()
  • Session: refactoring
  • Session: cleaning is done in __destruct
  • Session: don't send session cookie twice
  • Session: don't regenerate ID in readAndClose mode
  • Session: added events $onStart & $onBeforeWrite
  • Session: fixed condition in clean()
Http
v3.0.7

17. 9. 2021

  • SessionExtension: default is autoStart = false to avoid creating new session files if the session_id is spoofed (BC break)
  • SessionSection: added methods set(), get(), remove()
  • Session: don't send session cookie twice
  • Session: don't regenerate ID in readAndClose mode
  • Session: fixed condition in clean()
Security
v3.0.6

25. 8. 2021

  • User: added method refreshStorage() to clear identity cache. (#46) (#50)
  • UserPanel: displays 'Session is closed' on closed session #52
Security
v3.1.4

25. 8. 2021

  • support for PHP 8.1
  • User::setExpiration() second argument accept also bool $clearIdentity
  • User: added consts LOGOUT_MANUAL & LOGOUT_INACTIVITY
  • fixed compatibility with Symfony DebugClassLoader
  • compatibility: improved code hinting
Robot Loader
v3.4.1

25. 8. 2021

  • support for PHP 8.1
  • added support for PHP 8.1 enum #23
Http
v3.1.2

25. 8. 2021

  • support for PHP 8.1
  • HttpExtension: added option 'disableNetteCookie' #205
  • Session: fixed option 'readAndClose' #206
  • Session: fixed condition in destroy() (#204)
  • RequestFactory: urlFilters replaces only double // to single
  • RequestFactory: strips trailing . from host
Http
v3.0.6

25. 8. 2021

  • HttpExtension: added option 'disableNetteCookie' #205
  • Session: fixed option 'readAndClose' #206
  • Session: fixed condition in destroy() (#204)
  • RequestFactory: urlFilters replaces only double // to single
  • RequestFactory: strips trailing . from host
  • Helpers: nette-samesite is resent at each request
  • IResponse: added constants SAME_SITE_*
  • ScriptUrl: Fix class extendability (#187) (#188)
Forms
v3.1.4

25. 8. 2021

  • support for PHP 8.1
  • Button: allows change to <button> #273
  • Form::addGroup() loose type (#269)
  • Form: checks the existence of handlers
  • netteForms: uses <dialog> in Opera & mobile Chromium because it loses focus after alert() #275
  • netteForms: added Nette.showModal() method
Di
v3.0.9

25. 8. 2021

  • support for PHP 8.1
  • improved error messages
  • added support for enums in config file
  • support for intersection type
  • Revert "uses nette/utils 3.2" to maintain compatibility with PHP 7.1
Php Generator
v3.6.0

25. 8. 2021

  • support for PHP 8.1
  • added support for enums
  • added support for intersection types foo&bar
  • added support for final constants
  • added support for readonly properties
  • added 'never' built-in type
  • Literal: accepts parameters
  • Dumper: can dump static Closure
  • ClassType: setInterface() & setTrait() replaced with interface() & trait() factories
  • requires PHP 7.2
Tester
v2.4.1

24. 8. 2021

  • support for PHP 8.1
  • TestCase:prepareTestData(): check that every data provider item is array #431
  • added Assert::$expandPatterns to disable patterns expansion
  • TestHandler: mark tests with empty data provider as failed/skipped
  • template.phtml: uses native directory separator
Tracy
v2.8.7

16. 8. 2021

  • supports PHP 8.1
  • solves the circular reference of previous exceptions #499
  • BlueScreen: used scrubber for HTTP headers (#498)
  • Debugger: improved error in CLI
  • class_exists() it won't trigger autoloading because it may not work #497
  • Debugger: updated list of preloaded classes
  • Debugger: render code snipet in CLI on error (#494)(#490)
  • BlueScreen: fixes displaying "\r\n" and "\t" in exception's message #492
  • BlueScreen: fixed header when message is empty (after aff47f2)
  • Dumper: support for enums
  • added Debugger::$keysToHide
Utils
v3.2.3

16. 8. 2021

  • FileSystem: Add method makeWritable() (#244)
  • Paginator: add firstItemOnPage & lastItemOnPage #262 (#263)
  • ObjectHelpers: improved error messages, added scope
Php Generator
v3.5.4

5. 7. 2021

  • Dumper: dumps Closure as PHP code
  • type '?xyz' sets nullable flag
  • Printer: prints fn() without space
Mail
v3.1.7

2. 6. 2021

  • Message::buildText(): Trim each text line. (#84)
  • SendmailMailer: use CRLF endings for php >= 8.0 (#83)
  • typo #85
Tracy
v2.8.5

2. 6. 2021

  • Debugger: shows error message in console (#486)
  • Dumper: added ext-ds support (#484)
  • dumper.js: initializes lazy dumps on click #482
  • Renderer: fixed export of recursive snapshot
Application
v3.1.3

2. 6. 2021

  • UIMacros: supports {control|noescape}
  • LatteExtension: inject interface to be more compatible (#288)
  • LatteExtension: fixed debug panel for custom templates
  • LatteExtension: changed UI\TemplateFactory type to ApplicationLatte\TemplateFactory (#283)
  • Component: persistent parameters does not have to be initialized #286
Safe Stream
v2.4.2

2. 6. 2021

  • fixed fopen mode #10
Database
v3.1.3

31. 5. 2021

  • Connection, ResultSet: added custom row normalizer #138
  • Added support to PostgreSQL identity column (#277)
  • Helpers::initializeTracy() does not create a panel in production mode
Tracy
v2.8.4

27. 4. 2021

  • Dumper: $maxDepth & $maxItems = 0 means no limit
  • Dumper: scrubber checks also non-string keys (#473)
  • Debugger: apply editor mapping for browser from CLI (#477)
  • Helpers::improveException() ignores Nette\MemberAccessException #479
  • bluescreen: removed unused 'object' from callstack #480
  • dumper: fixed first line indentation #475
  • Bluescreen: Add selection color (#471)
  • BlueScreen::formatMessage() don't highlight \n
  • BlueScreen: previous exception messages are formatted
  • open-editor.js: added Visual Studio Code/VS Codium (#464)
  • Bar: fixed [redirect|ajax] css #463
Tracy
v2.7.8

27. 4. 2021

  • Helpers::improveException() ignores Nette\MemberAccessException #479
  • Debugger: apply editor mapping for browser from CLI (#477)
  • Helpers: workaround for PHP 8.0.0 bug #80564
  • Helpers: xdebug_get_function_stack() may trigger warning
  • bluescreen: removed unused 'object' from callstack #480
  • js: prevents double initialization
Database
v3.1.2

22. 4. 2021

  • Connection, Explorer: beginTransaction(), commit() & rollBack() calls are forbidden in transaction()
  • Connection, Explorer::transaction() call can be nested
  • Connection, Explorer::transaction(): pass self as a callback argument
  • Revert "MySqlDriver driver uses subqueries (#265)"
  • SqlPreprocessor: fixed handling 'IN (?)' #273
  • fixed compatibility with Symfony DebugClassLoader #272
  • improved phpDoc
  • readme: updated badge
  • Helpers::initializeTracy() replaces createDebugPanel()
  • compatibility: improved code hinting
Robot Loader
v3.4.0

7. 3. 2021

  • Saves cache only once
  • stores list of empty PHP files
  • uses realpath() for added directories
  • refactoring
Robot Loader
v3.3.2

6. 3. 2021

  • fixed buggy behavior after 788ab3e
Forms
v3.1.3

4. 3. 2021

  • Form::getValues() fixed when in validation scope is container
  • fixed compatibility with Symfony DebugClassLoader
Utils
v3.2.2

3. 3. 2021

  • Arrays: added wrap() method (#180)
  • Arrays::insertAfter() & insertBefore() fixed when $key is null
  • DateTime::fromParts() is non-locale aware #248
  • compatibility: improved code hinting
Di
v3.0.8

2. 3. 2021

  • Resolver: handles nullable or default union|types
  • ContainerPanel: better sorting for human eyes
  • ContainerPanel: shows names of anonymous services
  • uses nette/utils 3.2
Tester
v2.4.0

1. 3. 2021

  • requires PHP 7.2
  • TestCase: added method skip() for skipping tests [Closes #379]
  • DataProvider::load() may return empty data set (BC break)
  • TestHandler: initiateTestCase() caching (#378)
  • TestCase: list all possible TestCase class dependencies (#378)
  • TestCase: list methods in format 'Method:testName' (#378)
  • CliTester: option --log replaced by -o log (#329)
  • CliTester: option -o is repeatable and accepts file name parameter (#329)
  • CommandLine: added NORMALIZER (#329)
  • Test: measure run time duration (#426)
  • Asssert: add hasKey and hasNotKey assertions (#427)
  • code coverage: improved coverage report template (#422)
Neon
v3.2.2

28. 2. 2021

  • uses mb_string when iconv is not available
  • improved PHP doc
Mail
v3.1.6

24. 2. 2021

  • Message: preserves custom Message-ID (#82)
  • SmtpMailer: From can be null. (#77)
  • strict fix
Php Generator
v3.5.3

24. 2. 2021

  • re-fixed [Closes #72]
  • Printer: parameter wrapping counts with function name length [Closes #77]
Latte
v2.9.3

24. 2. 2021

  • {capture} creates Html object only in HTML-TEXT context
  • {_translate} & {capture} passes full content-type to FilterInfo
  • {block|filter} passes full content-type to FilterInfo
  • Policy::createSafePolicy() added new function
  • Filters: escapes JS binding {{ }}
  • allows {else} in {first}, {last}, {sep} #247
  • BlockMacros: removed empty line after {define} #251
  • {embed}: reimplemented, creates new block layers dynamically, uses stack
Latte
v2.7.3

24. 2. 2021

  • {capture} creates Html object only in HTML-TEXT context
  • {_translate} & {capture} passes full content-type to FilterInfo
  • {block|filter} passes full content-type to FilterInfo
  • Filters: escapes JS binding {{ }}

(Release 2.7 is no longer supported)

Latte
v2.6.3

24. 2. 2021

  • {capture} creates Html object only in HTML-TEXT context
  • {_translate} & {capture} passes full content-type to FilterInfo
  • {block|filter} passes full content-type to FilterInfo
  • Filters: escapes JS binding {{ }}

(Release 2.6 is no longer supported)

Latte
v2.5.6

24. 2. 2021

  • {capture} creates Html object only in HTML-TEXT context
  • {_translate} & {capture} passes full content-type to FilterInfo
  • {block|filter} passes full content-type to FilterInfo
  • Filters: escapes JS binding {{ }}

(Release 2.5 is no longer supported)

Latte
v2.10.2

24. 2. 2021

  • utilization of function inlining
  • |replace improved, accepts associative array as $search
  • |sort accepts callback
  • |sort maintains index association
  • added filters & functions: even(), odd(), divisibleBy(), first(), last(), |join, |slice, |round, |floor, |ceil, |explode, |split, |random, |spaceless
  • filter |query accepts with string
  • Filters: escapes JS binding {{ }}
  • improved detection of unexpected assignments {include $var = ...} [Closes #258]
  • added more comments /* line */
Latte
v2.10.3

22. 2. 2021

  • {embed}: outer variables are promoted inside {block}
  • {embed}: reimplemented, creates new block layers dynamically, uses stack
  • Policy::createSafePolicy() added new filters and tags
  • Filters: |sort accepts only Closure for security reasons
  • Template::render() restores output buffer #260
  • LattePanel: added option to disable parameters dumping #259
  • {capture} creates Html object only in HTML-TEXT context (BC break)
  • {_translate} & {capture} passes full content-type to FilterInfo (BC break)
  • {block|filter} passes full content-type to FilterInfo (BC break)
Forms
v3.1.2

10. 2. 2021

  • added Container::getUnsafeValues(), onValidate does not throw warning [Closes #266]
  • fixed validation after 1592cf6 [Closes #268]
  • added Form::initialize() for standalone forms
  • added FormFactory & DI service
Application
v3.1.2

8. 2. 2021

  • Presenter: try to find Template file for each action (#277)
  • Component: Throw exception in case of signal method in Component or Presenter is private #263
  • Presenter, Control: formatTemplateClass() refactoring
  • Presenter: non-final createRequest() #262
  • RoutingPanel: displays one-way flags #274
  • LatteExtension: fix undefined property
  • Form::disableSameSiteProtection() replaced with allowCrossOrigin()
  • UIMacros: added /* line */ comment
  • improved phpDoc
  • composer: accepts routing 3.1
Routing
v3.0.2

6. 2. 2021

  • added RouteList::getFlags()
Forms
v3.1.1

4. 2. 2021

  • phpDoc: fixed event type hints [Closes #265]
  • Revert "Form::onValidate - values are passed only when form is valid"
  • Latte: added more comments /* line */
  • FormMacros: internal variables are prefixed $ʟ_
Tester
v2.3.5

2. 2. 2021

  • Environment::loadData(): --dataprovider arg is exact key, not query (BC break) [Closes #428]
  • CliTester: added missing newline (#429)
  • PhpInterpreter: enables register_argc_argv for info.php
  • Assert::contains() & notContains() check needle type
  • fix Assert::type() failure error when expected $type is object (#425)
  • CodeCoverage: support Xdebug 3 (#424)
Robot Loader
v3.0.5

2. 2. 2021

compatible with PHP 8.0

Robot Loader
v2.4.5

2. 2. 2021

compatible with PHP 8.0

Tracy
v2.8.3

31. 1. 2021

  • Renderer: fixed long rendering time #462
  • strict fix #461
  • toggle.css: fixed new caret in Firefox #460
Http
v3.1.1

27. 1. 2021

  • added Response::sendAsFile()
  • SessionSection: __get() returns reference (#191)(#192)
  • Url: IDN domain automatically convert to UTF-8. (#190)

For the details you can have a look at the diff.

Latte
v2.10.1

26. 1. 2021

  • Fixed |stripHtml (#252)
  • BlueScreenPanel: add check for nullable $e->sourceName (#254)
Application
v3.0.8

25. 1. 2021

  • PresenterFactory: removed case mismatch checks because may work incorrectly
  • MicroPresenter: accepts any callable objects
  • ComponentReflection: type 'NULL' replaced with pseudotype 'scalar'
  • added support for union types in arguments and persistent parameters
  • ComponentReflection: supports type 'mixed'
  • Form::disableSameSiteProtection() replaced with allowCrossOrigin()
  • ApplicationExtension: fixed scanDir merging

For the details you can have a look at the diff.

Application
v3.1.1

25. 1. 2021

  • Component::createComponent() warns on non-presenter components nette/forms#147
  • LatteExtension: option 'xhtml' is deprecated
  • LatteExtension: initializes Latte Panel, added option 'debugger'
  • TemplateFactory::createTemplate() returns Nette\Bridges\ApplicationLatte (BC break)
  • Control::flashMessage: allow HtmlStringable as a message
  • UIMacros: {control} can be used in HTML attribute nette/latte#250

For the details you can have a look at the diff.

Latte
v2.10.0

25. 1. 2021

  • added {iterateWhile}
  • added {trace}
  • added Tracy bridge
  • added filter |query
  • added PHP attributes Latte\Attributes\TemplateFunction & TemplateFilter
  • added n:tag [Closes #248]
  • implemented {embed block}
  • added short array syntax [key: value]
  • Engine: added addFilterLoader(), replacement for addFilter(null)
  • warnings converted to exceptions (BC break)
  • added phpDoc comments to block methods
  • PhpWriter: added placeholder %node.line
Tracy
v2.8.2

21. 1. 2021

  • dumper: prevent escaped sequences from being copied #458
  • Renderer: ini_set may be disabled #457
  • toggle.css: new graphic and animated caret
  • dumper: more conservative expanding of collapsed structures
  • bluescreen: bold class/method/function
  • bluescreen: improved listing of variadics arguments
  • BlueScreen: whole vendor is not added to collapsePaths, only tracy/ nette/ latte/
  • Debugger::$maxDepth changed to 7 (#456)
  • Debugger::dump() fixed return mode in CLI
  • bar.css: synced with dumper.css
  • bluescreen: added REQUEST_METHOD

For the details you can have a look at the diff.

Schema
v1.2.0

21. 1. 2021

  • Structure::skipDefaults() allow to skip defaults per structure
  • AnyOf() must not be empty
  • added AnyOf::firstIsDefault()
  • Ability to define scheme for the key Expert::arrayOf($stringType, $keyType)
Php Generator
v3.5.2

19. 1. 2021

  • Printer: fixed combination nullable + mixed #74
  • Printer: fixed combination nullable + union type #72
  • Property::setValue() automatically turns on initialized state #71

For the details you can have a look at the diff.

Forms
v3.1.0

19. 1. 2021

  • requires PHP 7.2

Features

  • Form: POST form checks Http\Request::isSameSite() as CSRF protection
  • Guess first parameter for event by type hint (#219)
  • Container::getValues($obj) to hydrate object

Changes

  • Form::getValues() triggers warning when form is not valid
  • Form::getValues() returns only controls in scope (BC break)
  • Form::onValidate - values are passed only when form is valid
  • Validator Form::URL autocompletes https:// instead of https:// (BC break)
  • Validator::validateEqual returns false if control value is empty array (BC break) [Closes #257]
  • Validator::formatMessage() added validator name to error message (#263)
  • breaks exporting rules to JS after non-static validator [Closes #259]
  • FormMacros: removed deprecated $_form
  • Container: addImage() renamed to addImageButton()
  • Checkbox: getSeparatorPrototype() renamed to getContainerPrototype()
  • removed deprecated stuff
Security
v3.1.3

18. 1. 2021

  • Revert "SecurityExtension: 'roles' & 'resources' are deprecated"
  • SessionStorage: Fix clearing identity in case of clearAuthentication(true). (#55)
  • User: passes to authenticator all arguments
  • User::logout() steps reorder
  • events: removed magic
  • CookieStorage: added MIN_LENGTH for UID
  • User::inInRole() works with object Role

For the details you can have a look at the diff.

Security
v3.1.0

13. 1. 2021

  • requires PHP 7.2
  • added UserStorage, successor for IUserStorage
  • added IdentityHandler
  • added Authenticator, successor for IAuthenticator
  • added SimpleIdentity, successor for Identity
  • removed I prefixes from IAuthorizator, IResource, IRole
  • SecurityExtension: 'roles' & 'resources' are deprecated
  • User: added method refreshStorage() to clear identity cache. (#46) (#50)
Database
v3.1.1

13. 1. 2021

  • SqlPreprocessor: default array mode is 'set' #268
  • events: added default values & removed magic

For the details you can have a look at the diff.

Utils
v3.2.1

11. 1. 2021

  • added Arrays::first(), last() & contains()
  • added Array::invoke() & invokeMethod()
  • Arrays: some methods accepts iterable
  • Strings::toAscii() fixed to correctly convert german umlauts (BC break) (#240)
  • Strings::replace: default replacement is empty string #241

For the details you can have a look at the diff.

Nette
v2.3.11

5. 1. 2021

security fix

Nette
v3.1.0

5. 1. 2021

requires PHP 7.2

Security
v3.1.2

3. 1. 2021

  • requires PHP 7.2
  • added UserStorage, successor for IUserStorage
  • added IdentityHandler
  • added Authenticator, successor for IAuthenticator
  • added SimpleIdentity, successor for Identity
  • removed I prefixes from IAuthorizator, IResource, IRole
  • SecurityExtension: added section 'authentication'
  • SecurityExtension: 'roles' & 'resources' are deprecated
  • User: added method refreshStorage() to clear identity cache. (#46) (#50)
  • added SessionStorage & CookieStorage (replaced Nette\Http\UserStorage)
Tracy
v2.8.1

1. 1. 2021

  • Toggle: Alt-click to toggle all child nodes recursively
  • Dumper: fixed string coloring in CLI
  • Dumper: added guide lines for multiline strings [Closes #453]
  • Dumper: color differentiation of quotation marks around strings
  • Dumper: added togglers for multiline strings
  • Dumper: indentation lines in arrays are visible when value is multiline strings
  • BlueScreen: changed $maxDepth to 5, added $snapshot to keysToHide
  • Dumper: keysToHide can contain class names, ie 'Class::$proName'
  • Dumper: declaring class name passed to scrubber; also ignores special types
  • Dumper: fixed displaying of too big integers in JS [Closes #454]
  • Dumper: removed last \n from strings
  • Dumper: render tab as 4 spaces
  • Helpers: workaround for PHP 8.0.0 bug #80564
  • Helpers: xdebug_get_function_stack() may trigger warning
  • TracyExtension: added $keyToHide
  • TracyExtension: fixed compatibility with nette/di < 3.0.3
Http
v3.1.0

31. 12. 2020

  • requires PHP 7.2
  • Response::setCookie() default $sameSite is 'Lax' (BC break)
  • Response::setCookie() prevents an inappropriate combination of path and domain
  • Response: deprecated $cookieHttpOnly
  • Request::getFile() accepts array of keys and returns FileUpload|null (BC break)
  • FileUpload::getImageSize() returns only [x, y] values (BC break)
  • UrlImmutable: added withQueryParameter()
  • Url: silently deprecated getBasePath(), getBaseUrl(), getRelativeUrl()
  • UserStorage is deprecated by Nette\Bridges\SecurityHttp\SessionStorage

Session & Cookies

  • Session: default sameSite is 'Lax' (BC break)
  • SessionExtension: option session.cookieSecure is deprecated, http.cookieSecure is used (BC break)
  • SessionExtension: checks that cookieSamesite is Lax|Strict|None (BC break)
  • SessionSection: can read data when session is closed
  • Session: deprecated getCookieParameters() triggers E_USER_DEPRECATED
  • HttpExtension: added options cookiePath & cookieDomain
  • HttpExtension: cookieSecure is by default 'auto' (BC break)
  • cookie nette-samesite renamed to _nss
Bootstrap
v3.1.0

31. 12. 2020

  • requires PHP 7.2
  • renamed Nette\Configurator -> Nette\Bootstrap\Configurator
  • added addStaticParameters(), alias for addParameters()
  • Parameters passed to addParameters() are not %expanded% (BC break)
  • added ConstantsExtension & PhpExtension (moved from nette/di)
Application
v3.1.0

31. 12. 2020

Features

  • Template divided into hierarchy Template > DefaultTemplate
  • DefaultTemplate: added default properites and @methods
  • Template, DefaultTemplate: magic access via __get/__set replaced with object properties
  • Control, Presenter::createTemplate() added parameter $class for custom creation of the Template
  • Control, Presenter::createTemplate() tries to create custom Template according to naming convention
  • Presenter::sendTemplate() added parameter $template
  • Link: added isLinkCurrent() & getComponent() [Closes #229]
  • UIMacros: support named arguments {control x: 1}
  • Control::flashMessage accepts custom flash object
  • Template: passes the template to the latte instead of just parameters.
  • UIMacros: overloaded macro {templatePrint}

Changes

  • requires PHP 7.2
  • RoutingExtension: creates service 'routes' only when routes are defined (BC break)
  • RoutingExtension: removed option 'routeClass' (BC break)
  • Presenter::getContext() & others trigger error message
  • removed prefix I from interfaces (except for IPresenter & IPresenterLoader)
  • ApplicationExtension: option 'scanFilter' changed to pattern, default is '*Presenter'
  • ApplicationExtension: catchExceptions is always true on production mode (BC break)
  • UIMacros: modifiers are deprecated in {control}
  • Route, SimpleRouter: flags is deprecated
Di
v3.0.7

31. 12. 2020

  • Compiler: triggers schema warnings
  • uses nette/schema 1.1
  • DecoratorExtension: throws exception if class not exists
Caching
v3.1.0

30. 12. 2020

  • requires PHP 7.2
  • Cache::save() with closure is deprecated (BC break)
  • Cache::start() renamed to capture()
  • removed prefix I from IStorage, IJournal, IBulkReader
Schema
v1.1.0

18. 12. 2020

  • added Type::mergeDefaults() [Closes #13, Closes #24, Closes #28, Closes #31]
  • added error codes
  • ValidationException::getMessageObjects() returns array of Messages
  • Allow options to be marked as deprecated [Closes #27]
  • Structure: structure with required fields can be optional [Closes #17]
  • Type: PREVENT_MERGING prevents merging with defaults [Closes #14, Closes nette/application#257, nette/di#229]
  • 'option' changed to 'item' in error messages
Schema
v1.0.4

17. 12. 2020

  • Context is not internal #29
  • AnyOf: calls normalize() on items #25 #18
  • Structure: range is ?int, ?int #20
  • fixed combination of range with nullable/dynamic #32 #23
  • Type: ignore pattern when value is null

For the details you can have a look at the diff.

Latte
v2.9.2

16. 12. 2020

  • added {parameters}
  • detects unexpected assignments {include $var = ...}
  • PhpWriter::quotingPass() supports named arguments without parentheses
  • internal variables are prefixed $ʟ_
  • Fixes variables promotion after ce2b118 comments in #178
  • Defaults: better info when mbstring extension or nette/utils are missing #244
  • SnippetDriver: dynamic snippets runtime check

For the details you can have a look at the diff.

Tracy
v2.7.7

16. 12. 2020

  • Bar: fix clickable link in sortable tables (#450) (#450)
  • strict fix
  • Bar: JIT checks only buffer_size, not 'enabled'
  • bluescreen: fixed overlapping of adjacent links [Closes #449]
Latte
v2.8.4

16. 12. 2020

  • internal variables are prefixed $ʟ_
  • Compiler: improved code indentation
  • BlockMacros: "extends check" skipped for nested blocks #227
  • Template::render() removed dead code after 5972e72
  • PhpHelpers::reformatCode() appends correctly semicolon after '${""}'
  • CoreMacros: fixed regexp

For the details you can have a look at the diff.

Tracy
v2.8.0

10. 12. 2020

requires PHP 7.2

Completely Redesigned Dumper

image

  • added themes 'light' & 'dark'
  • added background for light scheme
  • in CLI outputs to STDOUT to bypass output buffering
  • implemented Scrubber (#439)
  • default maxDepth changed to 7
  • improved dumping of PHP Incomplete Class, DOM, ArrayObject, closures
  • shows uninitialized properties [Closes #448]
  • added 'see below', 'see above'
  • added tooltips about Ctrl-click
  • redesigned source location link 📍
  • clever way of displaying strings and escaped sequences, length is in tooltip in bytes or unicode characters
  • strings are quoted in single quotes
  • shows declaring class of private properties as tooltip
  • added option to limit max items in array/objects
  • added hover effect for guide lines
  • changed '=>' to ':' as key separator for objects & resources
  • distinguishes virtual property, resources are virtual
  • shows 'pub' to distinguish between public and dynamic properties
  • hash highlighting on mouseover
  • dumps zval references

Other Improvements

  • open-editor.sh: opening from Tracy in PHPStorm for Linux users (#447)
  • install.cmd: workaround for Chrome >= 77
  • Bar: sends content in UTF-8
  • TracyExtension: configures Tracy only when is enabled
  • Helpers::detectColors() supports https://no-color.org & sapi_windows_vt100_support
Latte
v2.5.5

1. 12. 2020

compatibility with PHP 8

Latte
v2.4.9

1. 12. 2020

compatibility with PHP 8

Database
v3.1.0

25. 11. 2020

  • requires PHP 7.2
  • SqlPreprocessor: support for IN ? and IN (?) [Closes #256]
  • SqlPreprocessor::formatValue() rejects array unless they are explicitly allowed (possible BC break)
  • Connection, Explorer: added transaction()
  • MySqlDriver driver uses subqueries (#265)
  • removed I from interface prefixes, ISupplementalDriver -> Driver
  • renamed Nette\Database\Context -> Explorer
  • deprecated interfaces IRow & IRowContainer
Di
v2.4.17

25. 11. 2020

compatible with PHP 8.0

Di
v3.0.6

25. 11. 2020

  • added PHP 8 attribute Inject
  • cooperation with union types
  • Resolver::completeException() appends entity to exception message when type is not known
  • DependencyChecker: checks types of properties
  • DependencyChecker: fixed compatibility with PHP 8 #247
  • DIExtension: detects Tracy by presence of service @tracy\Bar #245
  • InjectExtension: updated exception messages

For the details you can have a look at the diff.

Schema
v1.0.3

25. 11. 2020

  • compatible with PHP 8
  • Expect::from() supports union types
  • coding style
  • tests: refactoring

For the details you can have a look at the diff.

Utils
v3.2.0

25. 11. 2020

  • requires PHP 7.2
  • Added Nette\Utils\Floats class for comparing floats (#221)
  • Arrays: searchKey() silently renamed to getKeyOffset()
  • Callback::closure() triggers deprecation notice
  • Image: added detectTypeFromFile() and detectTypeFromString()
  • Reflection::toString() appends () after function/method name
  • Strings::toAscii - triggers E_USER_NOTICE when ext-intl is not present
  • renamed Nette\Localization\ITranslator -> Translator, added class alias
  • renamed Nette\Utils\IHtmlString -> Nette\HtmlStringable, added class alias
Utils
v3.1.4

25. 11. 2020

  • Reflection: added getReturnTypes(), getParameterTypes() and getPropertyTypes()
  • Reflection::getReturnType(), getParameterType() and getPropertyType() throws exception on union types
  • Image::fromString() throws UnknownImageFileException when file type is unknown

For the details you can have a look at the diff.

Application
v2.4.17

24. 11. 2020

  • compatible with PHP 8
  • PresenterFactory: removed case mismatch checks because may work incorrectly
  • strict type fix
  • MicroPresenter: accepts any callable objects

For the details you can have a look at the diff.

Latte
v2.9.1

24. 11. 2020

  • Compiler: improved code indentation
  • BlockMacros: added {include file with blocks} as a successor to {includeblock} (#152)
  • BlockMacros: combination of n:snippet & n:ifcontent is forbidden #243
  • Revert "{snippetArea} requires parameter" #240
  • BlockMacros: parameters in {define} can have default values
  • BlockMacros: {define} accepts named parameters #184 #198
  • BlockMacros: fixed variables visibility between blocks depend on block order, alternative solution #178"
  • BlockMacros: supports expression as block/snippet name
  • CoreMacros: supports expression in include/extends
  • {embed} can contain {import}
  • Only top-level {block} is auto-closed
  • SecurityPolicy: added new tags & filters
  • changed \RuntimeException to Latte\RuntimeException
  • changed word 'modifier' --> 'filter' in exception messages
  • Revert "Template imported via {import} can use {extends}"
  • CoreMacros: {breakIf} and {continueIf} checks ancestors instead of parents #239
  • Defaults: filter 'webalize' is optional and depends on nette/utils #238
  • CoreMacros: modified use of temporary variables
  • CoreMacros: fixed {var} in {switch} usage #237
  • Compiler: tag name can contain dots, dashes and colons #236
  • BlockMacros: removed checks if dynamic snippet is used in {snippet} or {snippetArea} #134

For the details you can have a look at the diff.

Caching
v3.0.2

16. 11. 2020

  • compatible with PHP 8.0
  • CacheMacro: wrapped in try ... finally
  • OutputHelper: added rollback()
  • MemcachedStorage: muted warning

For the details you can have a look at the diff.

Latte
v2.9.0

16. 11. 2020

New Features

  • possibility to {include block from file}
  • filter |sort, |clamp & custom function clamp()
  • added {ifchanged}
  • added {skipIf}
  • added {foreach} {else} {/foreach}
  • added {try} & {else} & {rollback}
  • added {embed file.latte}
  • added local blocks {block local name} & {define local name}
  • {case 1, 2, 3} accepts more than one option
  • syntax {include block foo} and {include file foo}
  • syntax {ifset block foo}
  • syntax {ifset #$blockName}
  • added $iterator->parent, returns the iterator surrounding the current one
  • added $iterator->counter0, returns 0-indexed counter
  • implemented support for named arguments
  • added null-coalescing-safe operator ??->

Improvements & Fixes

  • template code: direct HTML changed to 'echo' statements
  • BlockMacros: fixed variables visibility between blocks depend on block order [Closes #178]
  • FilterExecutor::filterContent() converts HtmlStringable to text [Closes #215]
  • Compiler: supports uppercases AND|OR|XOR [Closes #172]
  • BlockMacros: big refactoring
  • Template & BlockMacros: used new class Block, removed $blockQueue & $blockTypes
  • Template: removed old accumulator $_b (deprecated in 2.4, BC break)
  • added Defaults: default filters list moved here from FilterExecutor
  • CoreMacros: replaced global queuened temporary variables with local ones
  • BlockMacros: snippet driver wrapped in try ... finally
  • Parser: fixed parsing {__()} [Closes #226]
  • checks for valid macro/filter/function/block names
  • macros validates arguments, modifiers, position (MacroNode::validate())
  • {debugbreak} uses only xdebug
  • changed word 'macro' --> 'tag' in exception messages
  • CachingIterator: do not ask when not in valid state (#230)
  • improved typehints
  • PhpHelpers::reformatCode() appends correctly semicolon after '${""}'

Changes

  • Colons as argument separators in modifiers are deprecated (BC break)
  • optional chaining: operator ?-> in Latte behaves the same as in PHP (BC break)
  • optional chaining: deprecated support for $var? and $obj?::$prop to be consistent with PHP 8 (BC break)
  • internal variables are prefixed $__ and disallowed to be used
  • Template: changed $contentType and $blocks to constants CONTENT_TYPE & BLOCKS
  • Template & BlockMacros: moved snippets to own layer, removed '_' prefix
Database
v2.4.11

6. 11. 2020

compatible with PHP 8.0

Forms
v2.4.11

6. 11. 2020

compatible with PHP 8.0

Http
v2.4.12

6. 11. 2020

compatible with PHP 8.0

Robot Loader
v3.2.4

6. 11. 2020

compatibility with PHP 8.0

Robot Loader
v3.1.2

6. 11. 2020

  • compatibility with PHP 8.0

For the details you can have a look at the diff.

Utils
v3.0.4

5. 11. 2020

  • compatible with PHP 8.0
  • Image::fromString() throws UnknownImageFileException when file type is unknown
  • Image: better processing and checking dimensions in strings #217
  • DateTime::from(null) fixed #211

For the details you can have a look at the diff.

Utils
v2.5.5

5. 11. 2020

  • compatible with PHP 8.0
  • Image: better processing and checking dimensions in strings #217
  • Html::getText() decodes '

For the details you can have a look at the diff.

Latte
v2.8.3

4. 11. 2020

  • compatible with PHP 8.0
  • CoreMacros: varType accepts complex types #234
  • removed short ternary deprecation notice
  • added Template::getBlockNames()
  • coding style

For the details you can have a look at the diff.

Forms
v3.0.7

2. 11. 2020

  • compatible with PHP 8.0
  • examples: added Latte example
  • netteForms: added parameter 'event' to toggle()
  • netteForms: parameter srcElement is passed to Nette.toggle() even during initialization (possible BC break)
  • netteForms: removed hasOwnProperty() check
  • netteForms: added variable Nette.invalidNumberMessage with error message #252
  • netteForms: avoid checking of invalid number in nested validateControl() #252

For the details you can have a look at the diff.

Tester
v2.3.4

2. 11. 2020

  • compatible with PHP 8.0
  • Dumper: keep full data provider name in output files
  • Show @dataProvider data set name in assertion error #293 #377
  • Runner: fixed waiting for last async Job #415
  • CloverXMLGenerator, DomQuery: checks for PHP extensions #401 #419
  • FileMutator: fixes 'touch() expects parameter 2 to be int, null given' #403
  • @dataProvider file may return integer-indexed data #418
  • Dumper: clickable links in PhpStorm terminal with plugin Awesome Console #313
  • Environment: improved color detection
  • Drop create-phar tool #276

For the details you can have a look at the diff.

Tracy
v2.7.6

2. 11. 2020

  • compatible with PHP 8.0
  • Bar: added info about JIT (#440)
  • BlueScreen: phpinfo() returns text in CLI #444
  • BlueScreen: Allow to hide environment section by default (#438)
  • bluescreen.css: improved editor links color & background #443
  • BlueScreen: unified listing of hidden keys #441
  • Helpers::getSuggestion: item may be an int, type cast fix
  • Debugger: workaround for PHP bug #80234
  • TableSort: order can be specified by attribute data-order #442
  • BlueScreen: fixed error when file not exists #428
  • bar.js: fixed escaping
  • Dumper: fixed strict type #422

For the details you can have a look at the diff.

Security
v3.0.5

2. 11. 2020

  • compatible with PHP 8.0
  • SecurityExtension: detects Tracy by presence of service @Tracy\Bar nette/di#245
  • improved PHP doc
  • Passwords: hash(): Password can not be empty. (#47)

For the details you can have a look at the diff.

Routing
v3.0.1

2. 11. 2020

  • compatible with PHP 8.0
  • utilization of function inlining
  • added .phpstorm.meta.php

For the details you can have a look at the diff.

Http
v3.0.5

2. 11. 2020

  • FileUpload: added getImageFileExtension()
  • FileUpload: added getUntrustedName() as alias for getName()
  • FileUpload::getSanitizedName: returns correct file extension for images
  • FileUpload: fixed TypeError if getimagesize() returns false (#184)
  • FileUpload::getSanitizedName: Remove redundant minus before dot. (#179)
  • FileUpload::getSanitizedName: returns 'unknown' instead of empty string
  • Helpers::initCookie() sends cookie nette-samesite only if doesn't exist

For the details you can have a look at the diff.

Php Generator
v3.5.0

2. 11. 2020

Supports all new PHP 8 features!

  • implemented support for PHP 8 attributes
  • implemented support for PHP 8 union types
  • implemented PHP 8 constructor property promotion
  • Factory: supports attributes in PHP 8
  • Dumper::format() syntax ...? now supports named parameters (possible BC break)
  • Printer: prints trailing comma in parameter lists when PHP 8 syntax is used
  • Factory: loads method bodies from traits
  • PhpFile::addNamespace() accepts PhpNamespace object (#68)
Mail
v3.1.5

2. 11. 2020

  • compatible with PHP 8.0
  • MimePart::encodeSequence uses mime_encode for long strings
  • MimePart: UTF8 in attachment filename is encoded #75
  • MimePart: encodeHeader() -> encodeSequence()
  • Message::createAttachment() when content is provided, file name is not changed
  • Message::createAttachment() escapes " in filename
  • SmtpMailer: allowed login with blank password #74

For the details you can have a look at the diff.

Database
v3.0.7

2. 11. 2020

  • compatible with PHP 8.0
  • ConnectionPanel: added data-order to be sortable by time
  • ConnectionPanel: Added performance colors (#258)
  • DatabaseExtension: detects Tracy by presence of service @Tracy\BlueScreen nette/di#245
  • ConnectionPanel: bypasses SqlPreprocessor for explain to avoid double processing #259

For the details you can have a look at the diff.

Application
v3.0.7

2. 11. 2020

  • compatible with PHP 8.0
  • added PHP 8 attributes #[Persistent] & [CrossOrigin]#
  • MicroPresenter: throws BadRequestException on invalid argument
  • ApplicationExtension, RoutingExtension: detects Tracy by presence of service nette/di#245

For the details you can have a look at the diff.

Nette
v2.2.14

7. 10. 2020

security fix

Nette
v2.0.19

5. 10. 2020

security fix

Nette
v2.1.13

5. 10. 2020

security fix

Latte
v2.7.2

29. 9. 2020

This is the last 2.7.x release.

  • Filters::escapeJS: fixed escaping of CDATA #231
  • renamed HtmlString -> HtmlStringable
  • Parser::getLine() optimized & improved

For the details you can have a look at the diff.

Latte
v2.8.2

29. 9. 2020

  • Engine: added invokeFunction()
  • Filters::escapeJS: escapes slashes only when needed
  • Filters::escapeJS: fixed escaping of CDATA #231
  • PhpWriter: improved exception when |noescape or |nocheck is not expected

For the details you can have a look at the diff.

Robot Loader
v3.3.1

15. 9. 2020

  • compatibility with PHP 8.0
  • getRealPath() can return false (in PHAR)

For the details you can have a look at the diff.

Finder
v2.5.2

27. 8. 2020

  • composer: allows nette/utils ^3.0

For the details you can have a look at the diff.

Application
v3.0.6

25. 8. 2020

  • Application: Micro:* presenter are not achievable
  • MicroPresenter: parameter callback must be a Closure, removed support for __invoke
  • RoutingPanel: fixed calling to undefined RouteList::getModule() #264
  • LinkGenerator: added withReferenceUrl()
  • Presenter: added support for typehint 'object'
  • RoutingPanel: improved visualisation of error
  • RoutingPanel: fixed compatibility with new RouteList III.

For the details you can have a look at the diff.

Di
v3.0.5

13. 8. 2020

  • added new internal functions bool(), int(), float(), string()
  • added Helpers::escape()
  • fixed PHP 8.0 compatibility
  • improved exception messages

For the details you can have a look at the diff.

Utils
v3.1.3

7. 8. 2020

  • Arrays::renameKey() fixed incorrect replacement for existing new keys #230
  • Arrays::renameKey() returns true if $oldKey was found
  • Arrays: added toKey()
  • improved PHP doc
  • Reflection: fixed parseUseStatements for PHP 8 #229
  • SmartObject: better support for $onEvent with typehint
  • Image: added new PHP functions
  • Strings: ICONV_IMPL can be quoted
  • FileSystem: Added $mode to all exceptions.
  • Image: compatibility with PHP 8.0
  • Reflection: added PHP 8 type 'static'
  • Reflection::isBuiltinType() added PHP 8 types mixed & false
  • Reflection::getReturnType() fixed for functions
  • SmartObject: removed return void
  • tested on PHP 8

For the details you can have a look at the diff.

Tester
v2.3.3

3. 8. 2020

  • Dumper: keep full data provider name in output files
  • Show @dataProvider data set name in assertion error #293 #377
  • Drop create-phar tool #276
  • readme: added with() (#410)
  • Runner: fixed waiting for last async Job #415
  • CloverXMLGenerator, DomQuery: checks for PHP extensions #401 #419
  • FileMutator: fixes 'touch() expects parameter 2 to be int, null given' #403
  • @dataProvider file may return integer-indexed data #418
  • Dumper: clickable links in PhpStorm terminal with plugin Awesome Console #313
  • Environment: improved color detection, supports https://no-color.org/

For the details you can have a look at the diff.

Mail
v3.1.4

3. 8. 2020

  • SmtpMailer: Fix for servers which sends 250-AUTH only through encrypted connections (#67)
  • DkimSigner: removed testmode, added getTime()
  • Revert "SmtpMailer: Fix for servers which sends 250-AUTH only through encrypted connections (#67)" #71
  • Revert "MimePart: line length limit changed to 500" #72

For the details you can have a look at the diff.

Neon
v3.2.1

31. 7. 2020

  • Decoder: fixed \s in unicode, replaced with \n\t_
  • Encoder: removed duplicated code (#54)

For the details you can have a look at the diff.

Robot Loader
v3.3.0

28. 7. 2020

  • Loads and builds cache on demand

For the details you can have a look at the diff.

Forms
v3.0.6

16. 7. 2020

  • {formPrint} more compact output
  • {formPrint} is selectable
  • FormMacros: added {formContext}
  • strict fix (#249)

For the details you can have a look at the diff.

Neon
v3.2.0

13. 7. 2020

  • now supports only UTF-8 mode and throws exception on invalid input (BC break)
  • syntax \xAA is deprecated in favor of \uAAAA (BC break)
  • Encoder: encodes multiline strings in """ format
Mail
v3.1.3

13. 7. 2020

  • SmtpMailer: Fix for servers which sends 250-AUTH only through encrypted connections (#67)
  • use FileSystem::read() instead of native file_get_contents() (#69)
  • Message: Optional parameter before required (#68)

For the details you can have a look at the diff.

Php Generator
v3.4.1

25. 6. 2020

  • PHP-safe indentation replaced with Helpers::unindent() because requires too much memory
  • Factory: fix method bodies import #61 (#62)
  • Factory::extractBody() replaces multi-line & HEREDOC strings with single-line
  • Printer: added $returnTypeColon #63
  • Printer: added $linesBetweenProperties #60
  • added support for PHP 8.0 types mixed, static, false, null

For the details you can have a look at the diff.

Database
v2.4.10

9. 6. 2020

  • Fixed Selection::insert spoiling PDO:lastInsertId (#253)
  • DatabaseExtension: better detection of single/multiple definitions vol 2 #219

For the details you can have a look at the diff.

Application
v2.4.15

9. 6. 2020

  • class aliases are loaded on demand
  • added .phpstorm.meta.php
  • Template: prevents unserialization for security reasons

For the details you can have a look at the diff.

Forms
v3.0.5

6. 6. 2020

  • CheckboxList: compact transmission mode in form name=val1,val2,val3
  • CsrfProtection: auto-starts session before form is rendered #239
  • Container: detects property type of mapped class
  • Validator::validateNumeric() accepts unsigned integer #246
  • Rules::getIterator() moves BLANK before FILLED #233
  • Rules::getToggleStates() synced with netteForms.js toggleControl
  • netteForms: fixed toggleControl(), synced with validateControl()
  • Rules::validate() $emptyOptional is always false in BLANK condition
  • Container::addHidden Allow any type so it works same as setDefaultValue (#245) BC break!
  • Latte: prints {label/}

For the details you can have a look at the diff.

Security
v3.0.4

27. 5. 2020

  • SecurityExtensions, SimpleAuthenticator: add option for users data (#40)

For the details you can have a look at the diff.

Utils
v3.1.2

27. 5. 2020

  • Image: better processing and checking dimensions in strings #217
  • added Reflection::getMethodDeclaringMethod()
  • Strings: throws exception when iconv is missing #215
  • Strings::toAscii() removes non-ascii characters when iconv is not supported #216

For the details you can have a look at the diff.

Php Generator
v3.4.0

26. 5. 2020

  • Factory: reads class constants with visibility & phpDoc
  • Factory: added option to load methods a functions with bodies [Closes #59][Closes #4]
  • implemented PHP-safe indentation
  • Printer: one-line properties without comments are not separated using one empty line
  • Printer: constants with comments are separated using one empty line
Bootstrap
v3.0.2

26. 5. 2020

  • default parameters are escaped
  • added modification time of composer to container cache key

For the details you can have a look at the diff.

Tracy
v2.7.5

17. 5. 2020

  • bar: sends content in UTF-8
  • bar.js: fetch checks Response (#420)
  • bar: escapes <!-- in <script> #421
  • Dumper: supports closed resource
  • bar: fixed table sort after 193740e
  • Toggle: detects mouse click vs drag
  • Dumper: class names are selectable
  • Debugger: disables zend.exception_ignore_args #415
  • .phpstorm.meta: added exit point
  • Revert "Info panel: Add server name by IP (#401)" #416 #417

For the details you can have a look at the diff.

Tracy
v2.6.8

17. 5. 2020

This is the last 2.6.x release.

  • bar: sends content in UTF-8
  • bar.js: fetch checks Response (#420)
  • bar: escapes <!-- in <script> #421
  • Debugger: disables zend.exception_ignore_args #415

For the details you can have a look at the diff.

Tracy
v2.5.9

17. 5. 2020

This is the last 2.5.x release.

  • Debugger: fixed compatibility with PHP 7.4
  • bar: escapes <!-- in <script> #421

For the details you can have a look at the diff.

Di
v3.0.4

15. 5. 2020

  • Resolver: fixed self-dependency #240
  • InjectExtension: chooses a more specific type #234
  • SearchExtension: Exception when class is not autoloaded.
  • DecoratorExtension: resolves definitions before uses its findByType()
  • Container: added getByName() as alias for getService()
  • Compiler: moved Search extension before Decorator (#197)
  • Resolver: better exception message (#233)
  • InjectExtension: maintains natural order of inject methods (BC break)

For the details you can have a look at the diff.

Latte
v2.8.1

12. 5. 2020

  • Engine: implemented custom exception handler for {sandbox}
  • renamed Latte\SecurityViolation -> SecurityViolationException (BC break!)
  • Template: improved runtime method/property checking
  • PhpWriter: variable variables $$ when policy is enabled
  • PhpWriter: disabled underscored $_ when policy is enabled
  • PhpWriter: improved exception when |noescape or |nocheck is not allowed

For the details you can have a look at the diff.

Component Model
v3.0.1

21. 4. 2020

  • Container: component name may be number or null
  • Container: added const NAME_REGEXP
  • added .phpstorm.meta.php
  • fixed bugs reported by PHPStan

For the details you can have a look at the diff.

Application
v3.0.5

20. 4. 2020

  • UIMacros: fixed (expand) in {control) nette/latte#223
  • .phpstorm.meta: added exit points
  • PresenterFactoryCallback: fixed multiple services of type found #258
  • RoutingPanel: display RouteList groups
  • RoutingPanel: fixed compatibility with new RouteList II. #251 #253
  • RoutingPanel: changed Application\Routers* classes to Nette\Routing*
  • RoutingPanel: Better mask responsivity.
  • Template: prevents unserialization for security reasons

For the details you can have a look at the diff.

Latte
v2.8.0

20. 4. 2020

  • added macro {sandbox}
  • implemented policy checking
  • PhpWriter: disabled $this/break/case/catch/continue/... when policy is enabled
  • PhpWriter: deprecated backtick operator
  • PhpWriter: disabled _halt_compiler/declare/die/eval/exit/include/include_once/require/require_once in templates
  • added {do} as alias for {php}
  • Engine::loadTemplate() uses the same locking mechanism as RobotLoader
  • templates: added typehints to generated methods & improved coding style
  • {=...}, {php...}, {do...} must have arguments (BC break)

For the details you can have a look at the diff.

Forms
v3.0.4

20. 4. 2020

  • FormMacros: added {formPrint $form}
  • netteForms: added mime-type validation #173
  • netteForms: image validator accepts image/webp
  • SelectBox, MultiSelectBox: added setOptionAttribute()
  • Container::getValues('array') propagates arrays to inner containers only when mappedType is not set
  • Validator::validateInteger() returns false when integer is too big
  • DefaultFormRenderer: options 'class' & 'id' are used for 'control' part when 'pair' part is empty
  • DefaultFormRenderer: supports option 'nextTo' & style 'control .multi'
  • renders correctly Nette\Utils\IHtmlString in data-nette-rules #243
  • getLabel() removed return type void #241
  • FormsExtension: uses $initialization

For the details you can have a look at the diff.

Tracy
v2.6.7

11. 4. 2020

This is the last 2.6.x release.

  • Revert "Dumper: changed detection of recursive arrays, marker changed to strict comparison"
  • Logger & MailSender: replaced HTTP_HOST with SERVER_NAME #309
  • TableSort: better support for thead #348
  • Helpers::guessClassFile() fixed
  • BlueScreen::highlightPhp() removed part of code after __halt_compiler()
  • BlueScreen: do not show Enviroment on 'Allowed memory size of *** bytes exhausted'
  • some fixes

For the details you can have a look at the diff.

Tracy
v2.7.4

11. 4. 2020

  • BlueScreen::formatMessage() clickable methods & files
  • BlueScreen::highlightPhp() removed part of code after __halt_compiler()
  • Revert "Dumper: changed detection of recursive arrays, marker changed to strict comparison"
  • Debugger::exceptionHandler() evaluates template in closure
  • Debugger::exceptionHandler() sends Content-Type only when needed
  • Logger & MailSender: replaced HTTP_HOST with SERVER_NAME #309
  • TableSort: better support for thead #348
  • Helpers::guessClassFile() fixed
  • BlueScreen: do not show Enviroment on 'Allowed memory size of *** bytes exhausted'
  • BlueScreen: refactoring, added formatMessage()
  • TracyExtension: fixed config schema #409
  • Dumper: quotes keys true|false|null
  • Info panel: Better detection server IP and server name. (#406)

For the details you can have a look at the diff.

Latte
v2.7.1

1. 4. 2020

  • <script type="module"> is also javascript context (#220)
  • Engine::getTemplateClass() added functions to cache key
  • Engine: automatically registers methods annotated as @function & @filter
  • FileLoader: private changed to protected #219
  • PhpWriter: fixed combination of custom function & modifier

For the details you can have a look at the diff.

Http
v3.0.4

31. 3. 2020

  • Url::parseQuery() fixed parsing of ; #177
  • RequestFactory: $xForwardedForWithoutProxies can be empty #175
  • SessionPanel: uses capturing
  • HttpExtension, SessionExtension: uses $initialization (requires nette/di 3.0.3)
  • uses nette/utils 3.1

For the details you can have a look at the diff.

Mail
v3.1.2

25. 3. 2020

  • MimePart: fixed folding of header with file name #24
  • MimePart: line length limit changed to 500
  • MailExtension: privateKey is not dynamic

For the details you can have a look at the diff.

Safe Stream
v2.4.1

16. 3. 2020

  • PHP 7.4 compatibility

For the details you can have a look at the diff.

Mail
v3.1.1

10. 3. 2020

  • class aliases are loaded on demand
  • uses nette/utils 3.1

For the details you can have a look at the diff.

Latte
v2.7.0

9. 3. 2020

  • added macros {varPrint}, {varType}, {templatePrint}, {templateType}
  • added support for types in {define block type $var}
  • added support for types in {var type $var} and {default type $var}
  • Filters: added |batch
  • optional chaining: added support for $obj->$var? and $obj::$var?
  • Preserves spaces before and after <div n:spaceless>
  • deprecated syntax {var xx} and {var $xx => ...} (BC break)
  • removed prefix I from ILoader, IHtmlString, ISnipperDriver, IMacro
Tester
v2.3.2

6. 3. 2020

  • Runner: added support for CTRL-C
  • DomQuery: removed warning for invalid tags #354[Closes #416
  • Runner: pcntl_signal() can be disabled
  • Runner: ignores directory /vendor
  • fixes for PHP 7.4

For the details you can have a look at the diff.

Robot Loader
v3.2.3

6. 3. 2020

  • fixed renaming on windows, when it is read at the same time #11
  • added acquireLock() and better exception messages
  • ensures that $this->classes & $this->missing are not null

For the details you can have a look at the diff.

Neon
v3.1.2

4. 3. 2020

  • Encoder: correctly encodes numeric strings
  • Decoder: date-time is not decoded in keys #48

For the details you can have a look at the diff.

Neon
v3.0.1

4. 3. 2020

  • Encoder: correctly encodes numeric strings
  • Decoder: date-time is not decoded in keys #48
  • Encoder: json_encode() error is escalated to exception

For the details you can have a look at the diff.

Tracy
v2.7.3

23. 2. 2020

  • Info panel: Add server name by IP (#401)
  • Bluescreen: opens link to new window (#400)
  • TracyExtension: uses $initialization
  • dumper.js: fixed detection of recursion
  • BlueScreen: clickable classes in exception message
  • bar.css: better hiding of panel icons
  • TracyExtension: email accept array (#395)
  • readme: synced with documentation

For the details you can have a look at the diff.

Latte
v2.6.2

23. 2. 2020

  • Filters::escapeXml() & escapeIcal: C0 charactes are replaced with Unicode Replacement Character U+FFFD
  • optional chaining: disabled for Class::$prop? & $$var?
  • custom functions reimplemented

For the details you can have a look at the diff.

Robot Loader
v3.2.2

20. 2. 2020

  • saveCache() is atomic, fixed problem on Windows #11

For the details you can have a look at the diff.

Neon
v3.1.1

12. 2. 2020

  • Encoder: json_encode() error is escalated to exception
  • Single quoted string accepts double '' to express one quote #45

For the details you can have a look at the diff.

Database
v3.0.6

9. 2. 2020

  • Helpers: Fix dumpSql() for bool parameters (#251)
  • SqlPreprocessor: recoginzes (SELECT) UNION (SELECT) as parameteric command #248
  • SqlPreprocessor: correctly escapes scalars when parameters are not used
  • ConnectionPanel: uses capturing
  • Revert "ConnectionPanel: params are useless for EXPLAIN"
  • SqlPreprocessor: multi-insert accepts Row objects #247
  • ResultSet: muted warnings
  • Row: compatibility with operator ??

For the details you can have a look at the diff.

Php Generator
v3.3.4

9. 2. 2020

  • ClassType: added removeImplement() & removeTrait() #53
  • Printer: printParameters() is public
  • Printer: added printType()
  • added Factory::fromCallable()
  • added Type::getType()

For the details you can have a look at the diff.

Utils
v3.1.1

9. 2. 2020

  • Reflection::getParameterDefaultValue() supports parent::CONST nette/di#231
  • improved phpDoc
  • Image: added typeToExtension() & typeToMimeType()
  • Reflection: ensures that getType() returns ReflectionNamedType
  • Json: missing @throws JsonException (#212)
  • Image: added imagecrop() workaround because it loses transparency on ubuntu on Github Actions
  • DateTime::from(null) fixed #211
  • Html::htmlToText() decodes '
  • Strings::toAscii - simplified process when Transliterate is available

For the details you can have a look at the diff.

Application
v3.0.4

22. 1. 2020

  • Presenter::restoreRequest() redirects on GET request
  • Template: added custom functions isLinkCurrent() and isModuleCurrent()
  • Presenter: added isModuleCurrent() #240 (#243)
  • RoutingPanel: fixed compatibility with new RouteList
  • uses latte 2.6
  • class aliases are loaded on demand

For the details you can have a look at the diff.

Di
v3.0.3

20. 1. 2020

  • CompilerExtension: added $initialization as replacement for modifying initialize() method
  • class aliases are loaded on demand #226
  • Statement: can be used as dynamic parameter #228
  • parameters: dynamic parameters are resolved
  • parameters: statements are replaced with null in Container
  • %parameters% resolves to all parameters
  • Revert "parameters can contain statements #221"
  • ContainerPanel: uses capturing

For the details you can have a look at the diff.

Php Generator
v3.3.3

20. 1. 2020

  • ClassType: added new setter/getters for each type
  • VisibilityAware: added new setter/getters for each visibility
  • added Type
  • added Literal as alias for PhpLiteral
  • Dumper: dumped classes are fully qualified
  • Dumper::dumpArray() hides keys only in non-associative arrays #51

For the details you can have a look at the diff.

Latte
v2.6.1

14. 1. 2020

  • fixed bugs
  • Filters::safeUrl() accepts tel: and sms: #203
  • Filters: in HTML/XML invalid UTF-8 is replaced with Unicode Replacement Character U+FFFD (instead of discarding whole output)
  • Filters: escapes and decodes ' as '

For the details you can have a look at the diff.

Security
v3.0.3

14. 1. 2020

  • User: identity and authenticated state are cached, UserStorage is not called repeatedly
  • UserPanel: uses capturing

For the details you can have a look at the diff.

Schema
v1.0.2

6. 1. 2020

  • Assert with optinal description #7 (#8)
  • Base::required() accepts state parameter (#16)

For the details you can have a look at the diff.

Application
v3.0.3

5. 1. 2020

  • Template: added addFunction() for Latte 2.6
  • RoutingPanel: uses capturing
  • FileResponse: added some checks (#238)
  • ComponentReflection: changed way how it detects built-in types #241
  • ApplicationExtension: options scanDirs has higher priority than robotLoader
  • ApplicationExtension: always creates directory for touch file (#237)
  • Presenter: injectPrimary() params are required because $httpRequest is required. (#239)
  • updated .phpstorm.meta.php
  • uses nette/utils 3.1
  • fixed bugs reported by PHPStan

For the details you can have a look at the diff.

Latte
v2.6.0

3. 1. 2020

  • added custom functions via $latte->addFunction()
  • Added optional chaining $var?->prop?->elem[1]?->call()?->item
  • Short ternary operator now requires braces around array (for future optional chaining) (BC break)
  • PhpWriter: short ternary checks if value exists
  • CachingIterator: fixed IteratorAggregate -> Iterator conversion
  • BlockMacros: check when dynamic snippet is combined with id attribute [Closes nette/application#242]
  • BlockMacros: added $snippetAttribute for custom HTML attribute with snippet id [Closes nette/application#242]
  • removed latte.php
Utils
v3.1.0

3. 1. 2020

  • Strings::toAscii transliterates я/ю as ya/yu [Closes #203]
  • Helpers: added capture(), falseToNull(), getLastError(), getSuggestion()
  • FileSystem: added joinPaths(), normalizePath()
  • Strings, Validator: throw exception on invalid regexp patterns / malformed input
  • Strings: throw exception on malformed UTF-8 in webalize() and to… (#205)
  • Html: added helper htmlToText()
  • Html: added fromText() & fromHtml(), toText() & toHtml()
  • Image: added support for BMP
Tracy
v2.6.6

2. 1. 2020

This is the last 2.6.x release.

  • Debugger: fixed compatibility with PHP 7.4
  • Debugger::errorHandler correctly fill-in error_get_last() when $logSeverity is used
  • dumper.js: fixed detection of recursion
  • bar.js: stopImmediatePropagation after opening/closing tab
  • FireLogger: added space in header
  • content.phtml: fixed headers in format 'A:B'

For the details you can have a look at the diff.

Forms
v3.0.3

2. 1. 2020

  • HiddenField: added setNullable() and addFilter() #171
  • HiddenField: value is not converted to string #152
  • UploadControl: automatically sets MAX_FILE_SIZE #238
  • UploadControl: addRule() checks upload_max_filesize limit
  • Rules: added removeRule()
  • Form: added setHtmlAttribute()
  • BaseControl: supports setHtmlAttribute('name')
  • Validator::formatMessage() label is translated using form translator (#237)
  • added .phpstorm.meta.php
  • readme: info about netteForms.js

For the details you can have a look at the diff.

Utils
v3.0.3

27. 12. 2019

  • Strings: Fix boolean return of Normalizer. (#210)
  • Html: added @​property & @​method
  • phpStan fixes
  • Image: muted warnings
  • Image: added new PHP 7.2 functions

For the details you can have a look at the diff.

Robot Loader
v3.2.1

27. 12. 2019

  • $this is not available in loaded file
  • RobotLoader: Fixed the empty variadic array in addDirectory() #17
  • PhpStan fixes (#16)
  • removed support for comment //netteloader

For the details you can have a look at the diff.

Neon
v3.1.0

27. 12. 2019

  • requires PHP 7.1
  • Literal cannot begin with a character : when it follows after '" to improve JSON compatibility (syntax BC break)
  • Literal cannot begin with a character - or : followed by =[{( (syntax BC break)
  • Neon syntax: deprecated keywords on/off (#41)
  • Nette syntax: literals can begins with ! (#42)
  • removed neon.php
Di
v3.0.2

27. 12. 2019

  • InjectExtension: accepts native type
  • parameters can contain statements #221
  • InjectExtension: scans resolved class #218
  • SearchExtension: removes conflicting services before it starts to add them
  • Resolver.autowireArguments() fixed counting optional args
  • Resolver::autowireArguments() refactoring, added autowireArgument(), Resolver|Container replaced with callback
  • ExtensionsExtension: better exception message #219

For the details you can have a look at the diff.

Database
v3.0.5

15. 12. 2019

  • ConnectionPanel: params are useless for EXPLAIN
  • DriverException: added params, ConnectionPanel shows them
  • DriverException: mimics original file&line of PDOException
  • PgSqlDriver: stop using adsrc column (#242)

For the details you can have a look at the diff.

Tracy
v2.7.2

15. 12. 2019

  • Bar: added info [redirect|ajax] to panel headers
  • bar.js: stopImmediatePropagation after opening/closing tab
  • Debugger: fixed compatibility with PHP 7.4
  • Debugger: implemented support for E_COMPILE_WARNING
  • Debugger::errorHandler correctly fill-in error_get_last() when $logSeverity is used
  • refactoring, removed parameter $exit from exceptionHandler()
  • Debugger::exceptionHandler() when connection is aborted, log exception
  • FireLogger: added space in header
  • content.phtml: fixed headers in format 'A:B'
  • TracyExtension: editorMapping is null by default (#393)
  • Safe output capturing via Helpers::capture()

For the details you can have a look at the diff.

Php Generator
v3.3.0

20. 11. 2019

  • supports PHP 7.4
  • added support for PHP 7.4 typed properties
  • added Printer::printArrowFunction() for new PHP 7.4 arrow functions
  • added new class Dumper
  • output better respects wrap-length #45 #47
  • default wrap-length changed to 120
  • added setType()/getType()/hasStrictTypes()/hasBracketedSyntax()/isReturnNullable() as future replacements for setTypeHint()/getTypeHint()/getStrictTypes()/getBracketedSyntax()/getReturnNullable()
Application
v2.4.14

19. 11. 2019

  • supports PHP 7.4
  • composer: requires nette/utils < 3 #210
  • RoutingPanel: display exception thrown in match()
  • Template: fixed setTranslator(null) #204
  • Presenter: added support for typehint 'iterable' #203

For the details you can have a look at the diff.

Caching
v3.0.1

19. 11. 2019

  • supports PHP 7.4

For the details you can have a look at the diff.

Caching
v2.5.9

19. 11. 2019

  • supports PHP 7.4

For the details you can have a look at the diff.

Database
v3.0.4

19. 11. 2019

  • supports PHP 7.4
  • SqlPreprocessor: INSERT with multiple arrays is key-dependent #238
  • ConnectionPanel - highlight INSERT|UPDATE|DELETE (#237)

For the details you can have a look at the diff.

Database
v3.0.3

19. 11. 2019

  • SqlPreprocessor: fixed casting to string
  • Structure: foreign keys with less columns have bigger priority (#170)
  • Structure tests: driver should return also name of foreign key constraint
  • fixed typehint (#236)

For the details you can have a look at the diff.

Database
v2.4.9

19. 11. 2019

  • supports PHP 7.4
  • Revert "DatabaseExtension: better detection of single/multiple definitions" #219

For the details you can have a look at the diff.

Di
v2.4.16

19. 11. 2019

  • supports PHP 7.4
  • Helpers::expand() fixed expansion of dynamic parameters

For the details you can have a look at the diff.

Forms
v3.0.2

19. 11. 2019

  • supports PHP 7.4
  • Validator::formatMessage() Fixed using label placeholder in validation rule with Html label (#235)
  • throwing exceptions from __toString() is allowed since PHP 7.4
  • some fixes

For the details you can have a look at the diff.

Forms
v2.4.10

19. 11. 2019

  • supports PHP 7.4
  • compatibility with nette/latte v3
  • throwing exceptions from __toString() is allowed since PHP 7.4
  • Validator: method validatePattern() for UploadControl multiple (#192)

For the details you can have a look at the diff.

Utils
v2.5.4

19. 11. 2019

  • supports PHP 7.4
  • throwing exceptions from __toString() is allowed since PHP 7.4
  • LegacyObject: removed deprecation warning for extension methods
  • added PhpStorm metadata for autocompletion

For the details you can have a look at the diff.

Tester
v2.3.1

19. 11. 2019

  • supports PHP 7.4
  • Environment: 'file' can be undefined when is test called via register_shutdown_function() (#411)

For the details you can have a look at the diff.

Tracy
v2.7.1

2. 11. 2019

  • Dumper::truncateString() fixed for ''
  • TracyExtension: 'bar' can be string #390
  • Debugger::enable() preloading via class_exists changed to require_once #389

For the details you can have a look at the diff.

Schema
v1.0.1

31. 10. 2019

  • AnyOf: default value can be Schema (#12)
  • Structure: is normalized to array in normalize() #9
  • Added support for pattern() (#6)

For the details you can have a look at the diff.

Http
v3.0.3

31. 10. 2019

  • HttpExtension: added support for 'http:' in CSP
  • Session: prevents warning Cannot change session cookie parameters when session is active
  • Url::parseQuery() accepts separator ;
  • IResponse: added REASON_PHRASES
  • HttpExtension: 'proxy' can be string

For the details you can have a look at the diff.

Bootstrap
v3.0.1

22. 10. 2019

  • Configurator: passes RobotLoader to ApplicationExtension nette/application#227
  • Configurator::detectDebugMode() workaround for PHP bug #77722

For the details you can have a look at the diff.

Application
v3.0.2

21. 10. 2019

  • Form: added disableSameSiteProtection()
  • Route: fixed bug for constant module & presenter #216
  • BadRequestException: parent exception is Throwable (#236)
  • Component, Form: added getPresenterIfExists()
  • Component, Form: deprecated hasPresenter()
  • throwing exceptions from __toString() is allowed since PHP 7.4
  • Template: removed 'final' #235
  • TemplateFactory: remove unused Loader (#232)
  • ApplicationExtension: can use external RobotLoader #227
  • added support for persistent parameters with property typehints in PHP 7.4 #230
  • RoutingPanel: Add better panel responsivity (#225)

For the details you can have a look at the diff.

Security
v3.0.2

21. 10. 2019

  • Passwords: constants PASSWORD_* are strings since PHP 7.4 #35
  • User: added getAuthenticatorIfExists & getAuthorizatorIfExists()
  • User: deprecated hasAuthenticator() & hasAuthorizator()

For the details you can have a look at the diff.

Utils
v3.0.2

21. 10. 2019

  • Image: fixed lost of alpha after imagecrop() #202
  • Validators: accepts URL "https://example.com/?query" #190
  • composer: added suggestion for tokenizer #187
  • Json: added ESCAPE_UNICODE
  • throwing exceptions from __toString() is allowed since PHP 7.4
  • tested against PHP 7.4
  • regexp: \z replaced with D modifier
  • FileSystem: copy: Add binary safe parameter
  • Strings: Optimalize strlen() for better performance. (#193)

For the details you can have a look at the diff.

Tracy
v2.7.0

24. 9. 2019

  • Logger: added priority to the exception file name
  • TracyExtension: added getConfigSchema()
  • Dumper: hidden values are rendered with variable's type [Closes #380]
  • InfoPanel: Add information about localhost IP
  • Bluescreen: added length limit for exception message (#383)
  • BlueScreen: removed source from footer
  • Bluescreen: footer is always on bottom
  • bar: replaced attribute 'rel' with 'data-tracy-action' for closing & open-to-window links
  • tested against PHP 7.4

For the details you can have a look at the diff.

Tracy
v2.6.5

24. 9. 2019

  • fixes for PHP 7.4
  • Debugger: workaround for PHP bug #77722
  • Bridge: Template line can be null. (#384)
  • BlueScreen: keysToHide respected in title #381
  • Bridge: Remove redundant <pre> and <div>.
  • Debugger::errorHandler() argument $context can be null #379
  • bar.css: fixed table width 100%

For the details you can have a look at the diff.

Latte
v2.5.3

24. 9. 2019

  • Revert "BlockMacros: {define} accepts named parameters" #198 #194 #197
  • BlockMacros: block name must not start with underscore #193
  • Fix compatibility with PHP 7.4 (#199)
  • phpdoc fixes

For the details you can have a look at the diff.

Finder
v2.5.1

13. 9. 2019

  • Finder: fixed extension method fallback #11

For the details you can have a look at the diff.

Tokenizer
v3.1.0

13. 9. 2019

  • Revert "Stream: removed code that I don't know what is doing"
Tester
v2.3.0

11. 8. 2019

  • watch mode: changed files are detected by filemtime
  • added Assert::notNull()
  • FileMutator fixes
  • test result is printed when run as a standalone script
Di
v3.0.1

7. 8. 2019

  • SearchExtension: ability to add factory definitions from interfaces with method create() (#200)
  • Revert "Container: deprecated support for dynamically added services (BC break)" #203
  • ServiceDefinition: removed unnecessary $service variable #206
  • Autowiring: bug fix & tests
  • ExtensionsExtension: added extension type checking (#209)
  • fixed bugs reported by PhpStan (#212)(#211)(#210)(#208)(#207)(#213)(#214)
  • PHP 7.4 compatibility fixes

For the details you can have a look at the diff.

Latte
v2.5.2

16. 7. 2019

  • FileLoader::isExpired() returns true when file doesn't exist #186
  • BlockMacros: {define} accepts named parameters #184
  • Engine: strict_types not working with no temp directory #191
  • Engine::setTempDirectory accepts null
  • Filters: removed string type hints from replace filter (#189)

For the details you can have a look at the diff.

Tracy
v2.6.4

16. 7. 2019

  • bar.css: replaced all:unset with specific reset due to problems with Safari #373 #374 #364
  • bar.css: do not reset width/height of replaced elements #371
  • open-editor.sh: Path mapping before using of path.

For the details you can have a look at the diff.

Application
v3.0.1

8. 7. 2019

  • Presenter: added onRender event
  • Component::redirect() removed $code from signature #220 #221
  • Generates links using UrlImmutable::withoutUserInfo() (nette/http#160)
  • Application: fixed error conditions order
  • added .phpstorm.meta.php
  • Use phpstan callable format

For the details you can have a look at the diff.

Database
v3.0.2

8. 7. 2019

  • ResultSet: added workaround for PDO bug #38546 (#231)
  • SqlPreprocessor: generates IS NOT NULL (#226)
  • Revert "Table: moved caching related functionality to separate classes (#185)"
  • Structure::getBelongsToReference() return value fix
  • Selection: typefix for referencing table primary key
  • ResultSet: only format strings as floats (#228)
  • SqlBuilder: Fixed loading arguments for left join conditions (#224)
  • Use phpstan callable format (#220)

For the details you can have a look at the diff.

Forms
v3.0.1

8. 7. 2019

  • BaseControl::getLabel() IHtmlString are not translated (#225)
  • BaseControl::translate() ignores IHtmlString
  • DefaultFormRenderer: Fix GET Application\UI\Form (#222)
  • DefaultFormRenderer: strict type fix (#220)
  • Use phpstan callable definitions (#216)(#223)(#224)
  • FormsExtension: uses configuration Schema

For the details you can have a look at the diff.

Security
v3.0.1

8. 7. 2019

  • composer: update lower dependency
  • SecurityExtension: uses configuration Schema
  • Permission: removed useless condition (#33)

For the details you can have a look at the diff.

Http
v3.0.2

8. 7. 2019

  • Session: added read_and_close configuration (#156)
  • RequestFactory: respect host set by trusted proxy (#162)
  • RequestFactory: set user and password to Url (#161)
  • UrlImmutable: added withoutUserInfo()
  • Url, UrlImmutable: includes "empty" hostname ('0') in the host URL (#159)(#158)
  • added .phpstorm.meta.php

For the details you can have a look at the diff.

Php Generator
v3.2.3

5. 7. 2019

  • PsrPrinter: fixed indentation of dumps #41
  • Printer: added printUses()
  • ClassType: added hasProperty() & hasMethod()

For the details you can have a look at the diff.

Tracy
v2.6.3

18. 6. 2019

  • bar.css: resets #tracy-debug #364
  • bar.css: resets initial values for width/height
  • Helpers::improveException() do not improve already improved errors
  • Debugger: added $reservedMemorySize #272
  • Debugger: Increase size of memory reserve for Debugger.
  • PsrToTracyLoggerAdapter: changed the log message
  • Dumper: fixed dumping empty array in snapshot #367
  • BlueScreen: add support for escaping in highlighted title
  • added .phpstorm.meta.php
  • bluescreen: Fixed scollbar in long one-liners on Mac #363

For the details you can have a look at the diff.

Mail
v3.1.0

3. 6. 2019

  • added DKIM feature (#51)
  • renamed Nette\Mail\IMailer -> Mailer

DKIM can be configured via config file:

mail:
	dkim:
		domain: ...
		selector: ...
		privateKey: private.key.file
		passPhrase: ...
		testMode: ...
Mail
v3.0.1

3. 6. 2019

  • added .phpstorm.meta.php
  • Message: added support for quoted "display-name" <email> #64
  • MailExtension: added getConfigSchema()

For the details you can have a look at the diff.

Di
v3.0.0

3. 4. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • autowiring via Service[] (#178)
  • added collections via tagged() and typed()
  • added SearchExtension
  • added Schema & CompilerExtension::getConfigSchema() for automatic configuration validation with PHP 7.4 support #191
  • added full validation of dynamic parameters
  • configs are normalized before merge
  • added AccessorDefinition, FactoryDefinition, LocatorDefinition & ImportedDefinition
  • Container::addService() accepts factory closures
  • Minification of metadata: added option 'di › export › types', tags and parameters
  • added Reference, object representing reference to @service of @\Class
  • better exception messages
  • Helpers::expand() expands %params% in keys [Closes nette/nette#766]
  • Helpers::expand() supports %dynamic.item% for dynamic parameters
  • Compiler, CompilerExtension: improved Loader extendability (#62)
  • ServiceDefinition::setArgument() added [Closes #171][Closes #172]
  • Processor: names of anonymous services are just numbers
  • ContainerBuilder::addDefinition(null) adds anonymous service
  • added PhpStorm metadata for autocompletion
  • added CompilerExtension::loadDefinitionsFromConfig()
  • Loader: added support for %param% in 'include' section [Closes #170][Closes phpstan/phpstan#2020]

Changes

  • removed deprecated support for inheritance 'child < parent' (BC break)
  • some classes & members marked as final (BC break)
  • Compiler: container has declare(strict_types=1)
  • removed unused PhpReflection
  • Processor::filterArguments() translates @service to object Reference
  • Nette\DI\Helpers::filterArguments() moved to Nette\DI\Config\Processor
  • Config\Processor: options 'class' & 'type', 'dynamic' & 'imported' are aliases
  • Compiler::loadDefinitions() is not static and removed first parameter (BC break)
  • Compiler::loadDefinition() is deprecated (BC break)
  • Compiler: processing of config files moved to new class Nette\DI\Config\Processor
  • ServiceDefinition divided into Definition & ServiceDefinition
  • ContainerBuilder divided into Autowiring & Resolver
  • ServiceDefinition & Statement moved to Nette\DI\Definitions namespace
  • renamed Nette\DI\Config\IAdapter -> Adapter
  • NeonAdapter: added deprecation notice for operator ?
  • removed IniAdapter (BC break) (#177)
  • ServiceBuilder::setType() & getType() as a replacements for setClass() and getClass()
  • Compiler: added configuration option 'type' as replacement for 'class'
  • ServiceDefinition::setClass() parameter $args is deprecated (BC break) (#146)
  • Compiler::loadDefinitions() renamed to loadDefinitionsFromConfig(), better deprecation messages
  • InjectExtension: tag 'inject' changed to 'nette.inject'
  • DIExtension: tag 'run' is deprecated (BC break)
  • Container: deprecated support for dynamically added services (BC break)
  • Container: removed support for statically added createService* methods (BC break)
  • Container::$meta divided to $types, $aliases, $tags & $wiring (BC break)
  • Helpers::EXTENDS_KEY & OVERWRITE replaced with PREVENT_MERGING (BC break)
Application
v3.0.0

3. 4. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • uses nette/routing
  • RouteList: added addRoute() & withDomain(), withPath() and withModule()
  • Presenter: signal must be sent from the same origin unless they have annotation @crossorigin (BC break)
  • Presenter: persistent parameters are transmitted between traits (in addition to the class hierarchy) [Closes #183]
  • LatteExtension: added option 'strictTypes'
  • error template redesign
  • Application::run() counts with response
  • Component, Form: added hasPresenter(), deprecated $throw in getPresenter()
  • TemplateFactory: added onCreate event [closes #195] (#196)
  • Template: added renderToString()
  • DI extensions: are using configuration Schema

Changes

  • Changed signature of IRouter:
    • IRouter::constructUrl() accepts and match() returns array instead of Nette\Application\Request (BC break)
    • IRouter::constructUrl() accepts Nette\Http\UrlScript instead of Url
  • MicroPresenter: returns 500 instead of 404 when parameter callback is missing
  • ApplicationExtension: tag nette.presenter replaced by findByType()
  • Component::getParam() triggers deprecation warning (BC break)
  • Component::redirect() first parameter $code is deprecated (BC break)
  • TemplateFactory: filters |normalize, |toAscii, |reverse, |url and |null are deprecated
  • ComponentReflection::combineArgs() throws Nette\InvalidArgumentException and is converted to BadRequestException on higher level
  • Presenter: invalid action throws BadRequestException only during startup
  • ComponentReflection::parseAnnotation() returns NULL instead of FALSE (BC break)
  • Presenter: returns VoidResponse when has no response
  • TemplateFactory: removed $baseUri, replaced with $baseUrl
  • removed Component::getPersistentParams(), persistent params are always public properties with annotation @Persistent (BC break)
  • Presenter::error() moved to Component
  • Route: converts all scalar params to strings [Closes #185]
  • Presenter: deprecated annotation @user (BC break)
  • SimpleRouter: support for parameter 'module' is deprecated (BC break)
  • Route::$styles is deprecated (BC break)
  • Application::$maxLoop changed to non-static
  • ApplicationExtension: presenters are not autowired
Database
v3.0.1

3. 4. 2019

  • DatabaseExtension: uses configuration Schema
  • Revert "DatabaseExtension: better detection of single/multiple definitions" #219
  • ConnectionPanel: fixed bad source file nette/tracy#346

For the details you can have a look at the diff.

Http
v3.0.1

3. 4. 2019

  • DI extensions: are using configuration Schema
  • simplified code
  • Session: do not regenerate session ID when is newly created
  • Session: security options can not be bypassed
  • Session: $started changed from static to object property
  • Session: $started replaced with checking session_status() for better cooperation with the session started outside nette nette/forms#214
  • RequestFactory: added workaround [] in REMOTE_ADDR #152
  • Revert "HttpExtension: uses interfaces IRequest & IResponse instead of Request & Response (BC break) #90"
  • SessionExtension: accepts 'cookieSamesite = true'
  • Revert "Session: by default uses sameSite: Lax (BC break)"
  • HttpExtension: removed option 'sameSiteProtection', cookie 'nette-samesite' is always set
  • Session: validates configuration option names
  • SessionPanel: uses Tracy\Helpers::escapeHtml()

For the details you can have a look at the diff.

Schema
v1.0.0

3. 4. 2019

Handy library for validating data structures against a given Schema is here! :-)

Tracy
v2.6.2

3. 4. 2019

  • BlueScreen: prints request header even when apache_request_headers() is not available
  • BlueScreen: added URL to Http Request panel
  • BlueScreen: in CLI displays panel 'CLI request' instead of HTTP request & response
  • bar: uses all GET parameters when loading bar #352
  • Bar: ensures tab code in string #361
  • Debugger: shows error during rendering bar #361
  • example: removed problem with ?? and jQuery
  • bluescreen: removed reset from CSS
  • Helpers::improveException() handles error 'Call to undefined method parent::xxx()'
  • Helpers::getSource() improved escaping of cmdline arguments
  • TracyExtension: improved generated code

For the details you can have a look at the diff.

Utils
v3.0.1

26. 3. 2019

  • Reflection::getUseStatements() throw exceptions on anonymous class
  • Reflection: added 'null' to builtin types (in fact it is reserved type since PHP 7.0)
  • added Reflection::getPropertyType() (for PHP 7.4)
  • Validators: better exception message
  • Validators: added 'file', 'directory', 'class', 'interface' & mixed
  • Validators: added support for ?nullable types
  • Validators: grouped & sorted $validators
  • Validators: catches TypeError for incompatible types
  • Validator:: accepts the plus character as a valid option in numeric strings (#184)
  • added Arrays::toObject()
  • Image: fixed empty error_get_last() #183

For the details you can have a look at the diff.

Bootstrap
v3.0.0

26. 3. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • added Configurator::addDynamicParameters() [Closes #35]
  • added compiler extension SearchExtension
  • added default parameter %vendorDir%

Changes

  • parameters added via addParameters() has higher priority (BC break) (#56)
  • Configurator: uses Compiler::loadConfig()
  • Configurator::$files -> $configs (BC break)
  • removed support for Nette\Environment
  • to $autowireExcludedClasses added ArrayAccess, Countable, IteratorAggregate, Traversable
Php Generator
v3.2.2

25. 3. 2019

  • Printer::setTypeResolving() adds ability to print uresolved code #31
  • Helpers::format() is preferred over formatArgs() because we have variadics :)
  • Factory: uses ReflectionNamedType
  • PhpLiteral is not final

For the details you can have a look at the diff.

Tracy
v2.5.8

13. 3. 2019

This is the last 2.5.x release.

  • bar: uses all GET parameters when loading bar #352
  • dumper: fixed putting location before dump #343
  • Helpers::improveException() handles error 'Call to undefined method parent::xxx()'
  • TracyExtension: improved generated code
  • Helpers::editorLink shows in title the whole file name

For the details you can have a look at the diff.

Http
v2.4.11

13. 3. 2019

  • Session: do not regenerate session ID when is newly created
  • HttpExtension: option 'sameSiteProtection' does not change session cookie flag 'samesite'
  • SessionExtension: added option handler to pass own SessionHandlerInterface (#146)

For the details you can have a look at the diff.

Tester
v2.2.0

11. 3. 2019

  • --watch mode recovers from errors (e.g. missing file)
  • fixes in FileMutator (during scandir() or recursive mkdir())
  • Assert::noError() throws exception when called with more than one parameter
  • added Expect for complex assertions formulation (#398)
  • Helper::purge() protection to not purge root directory (#392)
  • added method Runner::addPhpIniOption() to be able set PHP INI option from --setup script
  • added PCOV support (#396) (thanks to @trejjam)

For more information see documentation and changelog.

Robot Loader
v3.2.0

8. 3. 2019

  • requires PHP 7.1
  • uses PHP 7.1 features & declare(strict_types=1)
  • deprecated support for addDirectory($array) and excludeDirectory($array) (BC break)
  • triggers warnings when $ignoreDirs or $acceptFiles is not array (BC break)
Robot Loader
v3.1.1

1. 3. 2019

  • added refresh()
  • readme: added info about non-autoloading usage

For the details you can have a look at the diff.

Tracy
v2.6.1

1. 3. 2019

  • a lot of fixes
  • significantly reduced HTML size
  • Bar: darker ajax & redirect rows
  • Bar: reverse AJAX rows order
  • Dumper: restored global snapshot used via LIVE, added new option LAZY #344
  • Dumper: changed detection of recursive arrays
  • Dumper: prints { RECURSION } in JavaScript dump
  • TableSort: only tables with class .tracy-sortable are sortable #345
  • Bluescreen: added <!-- in file:line --> at the top of page

For the details you can have a look at the diff.

Finder
v2.5.0

28. 2. 2019

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • extension methods are implemented independently on ObjectMixin (BC break)
Forms
v3.0.0

28. 2. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • added Container::setMappedType() and parameter getValues($returnType) for mapping to objects
  • netteForms: support for toggling by CSS selector, not only id (#210)
  • UploadControl: appends HTML attribute 'accept' [Closes #172]
  • SelectBox, MultiSelectBox: added getOptionAttributes() (#189)
  • BaseControl: added ability to multiple forms with different HTML ID [Closes #188]
  • DefaultFormRenderer: Add control .error class (#209)

Changes

  • Container, BaseControl: extension methods are implemented independently on ObjectMixin
  • CheckboxList: removed compatibility workaround for label vs item label (BC break)
  • SubmitButton::setValidationScope() accepts ?array; replace FALSE with [] (BC break)
  • BaseControl::getHtmlId() autoprefixes standalone forms with form name (BC break)
  • BaseControl::getHtmlId() ensures that control is attached to the form (BC break)
  • Container::addUpload() parameter $multiple is deprecated
  • Form::NUMERIC differs from INTEGER, checks whether value consists only of numbers and don't cast it to integer (BC break) [Closes #165]
  • $onClick handlers are called until form is valid (BC break)
  • BaseControl: labels are translated using form's translator (BC Break) (#58) (#141)
  • netteForms: removed support for IE < 9
  • ChoiceControl, MultiChoiceControl::$checkAllowedValues removed, use checkDefaultValue()
  • form controls are auto-optional
Routing
v3.0.0

28. 2. 2019

nette/routing was taken out nette/application

Changes

  • Router::match(Nette\Http\IRequest $httpRequest): ?array
  • Router::constructUrl(array $params, Nette\Http\UrlScript $refUrl): ?string
Http
v3.0.0

28. 2. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • added support for SameSite cookie
  • Request, HttpExtension: added sameSite protection (enabled by default)
  • Session: by default uses sameSite: Lax (BC break)
  • Session: enabled PHP option use_strict_mode
  • FileUpload: added IMAGE_MIME_TYPES
  • FileUpload: Added Webp content type to isImage (#132)
  • added UrlImmutable
  • UrlScript: added getRelativePath() [Closes #45]

Changes

  • UrlScript extends from UrlImmutable (BC break)
  • Request: removed unused second parameter $query (BC break)
  • IRequest, IResponse, Url: parameters $default are deprecated (BC break)
  • HttpExtension: uses interfaces IRequest & IResponse instead of Request & Response (BC break) [Closes #90]
  • some classes & members marked as final (BC break)
  • HttpExtension: default value of secureCookie is auto (BC break)
  • Session: default values for cookie_path, cookie_domain & cookie_secure are taken from Response
  • Session::getCookieParameters() is deprecated
  • Url::parseQuery() - correctly decodes spaces and dots in keys (BC break)
  • Url: is not ignoring user & password (BC break) [Closes #63]
  • RequestFactory: removed user & password from Url (BC break)
  • Request::getReferer() returns UrlImmutable (BC break)
Nette
v2.5.0

26. 2. 2019

  • removed discontinued packages nette/deprecated & nette/reflection
  • supports PHP 7.2 to 7.4
Latte
v2.5.0

20. 2. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • Engine::setStrictTypes() adds declare(strict_types=1) to templates
  • PhpWriter: filters are called using PHP 7 features
  • added CachingIterator::__toString() (#175)

Changes

  • Compiler: removed deprecated support for inline PHP (BC break)
  • removed deprecated stuff {use} {status} {?...} |safeurl |nl2br shortNoEscape
  • HtmlNode, MacroNode: removed $isEmpty (BC break)
  • MacroTokens::fetchWord() returns NULL instead of FALSE on error (BC break)
  • TokenIterator::expectNextValue() renamed to consumeValue()
Caching
v3.0.0

20. 2. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • added Cache::NAMESPACES and support for cleaning namespace in FileStorage [Closes #52]

Changes

  • FileStorage: always creates directories (#47)
  • FileStorage: removed <?php from cache file structure (BC break)
  • removed Memcached, renamed NewMemcachedStorage -> MemcachedStorage
Component Model
v3.0.0

20. 2. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • Component::monitor accepts callbacks
  • added trait ArrayAccess
  • Component: More informative message in case that name is not available (#5)

Changes

  • Component::__construct($parent) is deprecated (BC break)
  • Container::getComponents(): removed child-first option (BC break)
  • Component: removed constructor (BC break)
  • Container: name must be string, int is allowed via ArrayAccess (BC break)
  • Component: attached() and detached() marked as deprecated in favor of monitoring callbacks
Database
v3.0.0

20. 2. 2019

Features

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • Helpers::loadFromFile added $onProgress
  • SqlBuilder::tryDelimite() ignores casting ::int
  • MsSql support for tables, columns, indexes, foreign keys (#215)
  • Selection: fixed insert spoiling PDO:lastInsertId (#217)
  • SqlBuilder: fixed compatiblity with PCRE2 used in PHP 7.3 [Closes #210]

Changes

  • SqlPreprocessor: scalar are always passed via bindValue() (BC break)
  • ResultSet: changed empty result return type of fetch() and fetchField() methods from FALSE to NULL [BC Break]
  • removed unused ISupplementalDriver::normalizeRow() (BC break)
  • removed unused ISupplementalDriver::formatBool()
  • ISupplementalDriver: uncommented formatDateInterval() & getPrimaryAutoincrementKey()
  • added ISupplementalDriver::initialize(), is used instead of constructor (BC break!)
  • IRowContainer: Added method fetchField() (BC break)
  • remove old sqlite2 driver (#155)
  • removed meta info unsigned, onDelete, onUpdate
  • Table: moved caching related functionality to separate classes (#185)
Mail
v3.0.0

20. 2. 2019

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • SmtpMailer: supports TLS v1.2
Neon
v3.0.0

20. 2. 2019

  • requires PHP 7.0
  • uses declare(strict_types=1)
  • uses PHP 7.0 scalar and return type hints
  • some classes & members marked as final (BC break)
  • Entity: $value is mandatory
Security
v3.0.0

20. 2. 2019

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • User::setExpiration() changed arguments 84ada18 (BC break with fallback)
  • User: added hasAuthenticator() & hasAuthorizator(), deprecated $throw in getAuthenticator() & getAuthorizator()
  • Passwords: changed from static to object class (BC break)
  • Passwords: BCRYPT changed to default algorithm
  • SecurityExtension: added service 'passwords'
  • some classes & members marked as final (BC break)
Utils
v3.0.0

20. 2. 2019

  • requires PHP 7.1
  • uses declare(strict_types=1)
  • uses PHP 7.1 scalar and return type hints
  • Object, ObjectMixin: silently marked as deprecated
  • added PhpStorm metadata for autocompletion

Changes

  • Strings::before(), after(), indexOf() and pos() return NULL instead of FALSE if the needle was not found
  • Arrays::searchKey() returns NULL instead of FALSE when item is not found
  • Image::save() and send() throws ImageException on failure (BC break)
  • Validators::assertField: first argument has type hint array
  • Callback::toReflection() removed support for Nette\Reflection
  • some classes & members marked as final
  • ITranslator: allow multiple parameters for translated messages (#178)
  • deprecated ObjectMixin::getSuggestion()
  • MemberAccessException extends from Error (BC break)
  • removed StaticClassException, StaticClass throws Error
  • Image::save() $file cannot be null, added output()
  • DateTime: removed setTimestamp() and getTimestamp(), big int are supported in x64 PHP versions
  • Strings::findPrefix accepts only string[] (BC break)
  • Removed Nette\Object & ObjectMixin (BC break)
  • Callback::invoke() and invokeArgs() are deprecated in favor of native invocation
  • Callback: deprecated closure()
  • Validators::everyIs: first argument has typehint iterable (BC break)
  • Strings::normalize() a compare() dependency on Normalizer is optional
  • Strings::normalize() a compare() normalize strings into UTF-8 NFC (#150)
  • Filesystem::write() accept NULL in $mode parameter (#139)
Tracy
v2.6.0

17. 2. 2019

  • requires PHP 7.1
  • uses PHP 7.1 features, typehints and declare(strict_types=1)
  • Dumper: lazy loading for collapsed content (10× improves the speed of loading page with large dumps)
  • Bar: shows multiple AJAX requests rows
  • BlueScreen & Bar: implemented table sorting
  • BlueScreen: source mapping, shows original Latte template when errors occurs in compiled template
  • Dumper: added cool toggle animation
  • add PSR-3 adapters (#314)
  • BlueScreen: response header are print in table
  • Dumper: do not quote dumped keys #340
  • BlueScreen: renderToFile() returns bool to indicate if file was written by current process (#325)
  • directory structure rearranged by modules

See videos!

image

For the details you can have a look at the diff.

Tracy
v2.5.6

17. 2. 2019

  • bar.js: normalizes window.fetch arguments to Request object #323
  • bar.js: Recount hiding of labels when resized (#337)
  • bar.js: appends <div id=tracy-debug> into BODY #335
  • refactoring: used ES6 let
  • eslint: unified arrow function syntax
  • dumper.js: fixed counting collapseCount
  • toggle: disables selection for toggle labels
  • composer.json: compatible with nette/di 3.0 & tester 2.0

For the details you can have a look at the diff.

Tokenizer
v3.0.0

5. 2. 2019

Deprecated Nette\Utils\Tokenizer & TokenIterator and added new Nette\Tokenizer\Tokenizer and Nette\Tokenizer\Stream that represents tokens as objects Nette\Tokenizer\Token instead of arrays.

  • requires PHP 7.1
  • uses PHP 7.1 features
  • added PHP 7.1 scalar and return type hints
  • added declare(strict_types=1);
  • added Stream::consumeToken() & consumeValue() [Closes #17]
Safe Stream
v2.4.0

5. 2. 2019

  • requires PHP 7.1
  • uses PHP 7.1 features
  • added PHP 7.1 scalar and return type hints
  • added declare(strict_types=1);
Di
v2.4.15

30. 1. 2019

  • compatibility with nette/php-generator 3.x #182
  • updated to nette/utils 2.5
  • ContainerBuilder: improved error messages
  • Container: removed leading __ from anonymous method names
  • Compiler: names of anonymous services are just numbers
  • Compiler::loadDefinitions() sorts definitions only if needed
  • Compiler: added option 'imported' as alias for 'dynamic'
  • CompilerExtension::validateConfig() prints 'section › value' instead of section.value in exception message
  • added PhpStorm metadata for autocompletion
  • PhpGenerator: fixed type of generated factories in Container $meta

For the details you can have a look at the diff.

Php Generator
v3.1.4

29. 11. 2018

  • Printer: fixed use statements generation

For the details you can have a look at the diff.

Php Generator
v3.2.1

29. 11. 2018

  • PhpFile: added addUse() #38
  • Printer: fixed use statements generation
  • PsrPrinter is final

For the details you can have a look at the diff.

Database
v2.4.8

26. 11. 2018

  • SqlBuilder: fixed compatiblity with PCRE2 used in PHP 7.3 #208 #210
  • PgSqlDriver: uses cache for getColumnTypes() to avoid excessive number of queries #212
  • SqlPreprocessor: enables database parameters only for SELECT, INSERT, UPDATE, DELETE, REPLACE and EXPLAIN #211
  • Connection::quote() throws exception on error (related to #202)

For the details you can have a look at the diff.

Mail
v2.4.6

26. 11. 2018

  • MailExtension: Persistent parameter is configurable (#55)
  • Embedding SVG Images in Apple Mail (#53)
  • Mail: check if the function mail() exists #52

For the details you can have a look at the diff.

Application
v2.4.13

23. 11. 2018

  • RoutingPanel: removed inline style to work with CSP
  • ComponentReflection: accepts value '1.0' as float #200
  • Presenter: added support for typehint 'iterable' [Closes #203]

For the details you can have a look at the diff.

Security
v2.4.4

23. 11. 2018

  • SecurityExtension: added service 'passwords'
  • Passwords: is not static class (forward compatibility with v3)
  • Passwords: simplified checking for invalid hash

For the details you can have a look at the diff.

Tracy
v2.5.5

3. 11. 2018

  • TracyExtension: bar panel services are not recreated #329
  • Nette Bridge: highlights whitespaces in NEON #330
  • BlueScreen: hides sensitive keys, is GDPR ready
  • Dumper: added KEYS_TO_HIDE #328
  • bar.js: added timeout on mouseover for panel
  • bar.js: removed unnecessary timeout for panel focus (on click)
  • BlueScreen: added action 'create class'
  • BlueScreen: actions are displayed, but not logged
  • added 'did you mean' for logged warning
  • added support for nonce in style-src
  • bar: send with Content-type: application/javascript (#322)
  • bar: improved localization of 'composer.lock' when custom vendor dir is used #313
  • bar: works with <base href> (#321)

For the details you can have a look at the diff.

Database
v2.4.7

16. 10. 2018

  • Selection: Fixed accidental deletion of referenced cached rows when emptyResultSet is called (#187)(#207)
  • SqlBuilder: added method resetSelect (#146)
  • Fixed Helpers::dumpResult with non-string values (#204)
  • Connection, Context: added fetchFields()
  • SqlPreprocessor: strings are always passed via bindValue() (possible BC break)
  • SqlPreprocessor: PDO::quote() returns false for ODBC driver #202
  • OdbcDriver: doesn't support meta
  • MySqlDriver: Fix PDO::ATTR_CASE (#199)
  • added Connection::getLastQueryString()
  • appveyor: is unable to start MSSQL 2008, 2012 & 2014 together

For the details you can have a look at the diff.

Tester
v2.1.0

10. 10. 2018

Minimal PHP version since this release is 7.1. That's actually the main reason for this release.

  • Internal code improvements

    • used PHP 7.1 features
    • added PHP 7.1 typehints
    • strict types usage
  • Bypass finals respects final as a literal

  • Added notification when empty code coverage report data

  • The --coverage-src option is repeatable (#388)

For more information see documentation and changelog.

Tracy
v2.5.3

24. 9. 2018

  • Helpers::improveException() supports Nette\MemberAccessException
  • dumpe(): don't call exit() in production mode
  • bar.js: repeated opening/closing of panel shifts it's position up and left #318
  • bar.js: fixed multiple panels with tracy-focused class #316
  • fixed compatibility with PHP 5.4 #317
  • bar.js: fixed checking of same origin #315

For the details you can have a look at the diff.

Tracy
v2.4.18

24. 9. 2018

This is the last 2.4.x release.

  • dumpe(): don't call exit() in production mode
  • bar.js: repeated opening/closing of panel shifts it's position up and left #318
  • bar.js: fixed multiple panels with tracy-focused class #316
  • fixed compatibility with PHP 5.4 #317
  • bar.js: fixed checking of same origin #315

For the details you can have a look at the diff.

Di
v2.4.14

18. 9. 2018

  • ContainerBuilder::resolveImplement supports polymorphism (#175)
  • Helpers::expand() supports %dynamic.item% for dynamic parameters

For the details you can have a look at the diff.

Utils
v2.5.3

18. 9. 2018

  • Callback: removes HTML from error message nette/mail#54
  • test: fixed compatiblity with PHP 7.3
  • Callback: fixed bug in is_callable($object, true) #176
  • Reflection: token_get_all() uses flag TOKEN_PARSE
  • FileSystem: better error messages

For the details you can have a look at the diff.

Utils
v2.4.10

18. 9. 2018

This release marks the end of life of the nette/utils 2.4 series

  • Callback: removes HTML from error message nette/mail#54
  • test: fixed compatiblity with PHP 7.3
  • Callback: fixed bug in is_callable($object, true) #176
  • SmartObject: better error message

For the details you can have a look at the diff.

Forms
v2.4.9

16. 9. 2018

  • BaseControl: added ability to multiple forms with different HTML ID #188
  • add Form::PATTERN_ICASE as a case-insensitive variant of Form::PATTERN; fixes #185 (#187)
  • netteForms: uses unicode RegExp if is supported
  • netteForms.js: support checking file name via pattern rule using HTML5 File API (#186)

For the details you can have a look at the diff.

Http
v2.4.10

3. 9. 2018

  • Request, HttpExtension: added sameSite protection
  • Session: added support for SameSite cookie
  • Response::setCookie() supports SameSite
  • SessionExtension: cookieSecure can be 'auto'
  • Response: removed removeDuplicateCookies() #139
  • HttpExtension: added option cookieSecure; allowed values are: true, false, auto
  • HttpExtension: allows bools in CSP policy
  • HttpExtension: fixed quotating in sections require-sri-for & sandbox #143
  • HttpExtension: added Feature-Policy header #142
  • HttpExtension: renamed csp-report to cspReportOnly (BC break)
  • fixed compatibility with PHP 7.3

For the details you can have a look at the diff.

Robot Loader
v3.1.0

29. 8. 2018

By default, RobotLoader reports errors in PHP files by throwing exception ParseError (since PHP 7.0). It can be disabled via $loader->reportParseErrors(false).

For the details you can have a look at the diff.

Tracy
v2.5.2

13. 8. 2018

  • info.panel: composer 1.7.0 lock files as no longer dist and source attributes #311

For the details you can have a look at the diff.

Tracy
v2.4.17

13. 8. 2018

  • info.panel: composer 1.7.0 lock files as no longer dist and source attributes #311

For the details you can have a look at the diff.

Php Generator
v3.2.0

9. 8. 2018

New features

  • added Printer, code from __toString moved to Printer
  • added PsrPrinter, compatible with PSR-2 and PSR-12 [Closes #30]
  • added PhpNamespace::add() [Closes #27]
  • added NameAware::cloneWithName()
  • added FunctionLike::removeParameter() & ClassType::removeMethod(), removeProperty(), removeConstant()
  • added ClassType::addMember() [Closes #35]
  • ClassType: implemented deep clone
  • ClassType: added VISIBILITY_* constants
  • PhpFile: added setStrictTypes()

Changes

  • PhpNamespace::add*() - removed checking whether class already exists - to be consistent with the rest of package (BC break)
  • FunctionLike: removed setNamespace() (BC break)
  • ClassType::getNamespace() is softly deprecated. An object can be in multiple namespaces.
  • ClassType, Method: added validate(), prevents classes and methods from declared both final and abstract [BC break] (#36)
  • __toString converts exceptions to errors
  • fine tuned generated coding style

For the details you can have a look at the diff.

Php Generator
v3.1.3

9. 8. 2018

  • ClassType::from() resolves inheriting interfaces #32
  • added ClassType::getTraitResolutions & PhpFile::getNamespaces()
  • optimizations
  • readme.md: improved

For the details you can have a look at the diff.

Php Generator
v3.0.5

9. 8. 2018

This is the last v3.0 release.

  • ClassType::from() resolves inheriting interfaces #32
  • optimizations

For the details you can have a look at the diff.

Tracy
v2.5.1

3. 7. 2018

Please make a donation at https://nette.org/donate

  • MailSender: $email can contain multiple addresses #308
  • readme.md: added browser compatibility
  • bar.js: fixed autoHideLabels() after 070309d
  • added missing Coveralls file
  • bar.js: visibility is determined by width
  • MailSender: validates email
  • typo, fixed types
  • BlueScreen: empty($ex->tracyAction) may throw exception #305

For the details you can have a look at the diff.

Tracy
v2.4.16

3. 7. 2018

  • MailSender: $email can contain multiple addresses #308
  • readme.md: added browser compatibility
  • bar.js: fixed autoHideLabels() after 070309d
  • typo, fixed types

For the details you can have a look at the diff.

Finder
v2.4.2

28. 6. 2018

  • Revert "composer: accepts nette 3.0"

For the details you can have a look at the diff.

Robot Loader
v3.0.4

28. 6. 2018

  • RobotLoader: fixed exclusion when scanned dir contains .. #13
  • phpDoc: added $var name to @param

For the details you can have a look at the diff.

Neon
v2.4.3

28. 6. 2018

  • type fixes, coding style

For the details you can have a look at the diff.

Forms
v2.4.8

28. 6. 2018

  • netteForms: DOMContentLoaded is never executed when script is loaded asynchronically
  • JSHint replaced with ESLint
  • DefaultFormRenderer, Latte: fix input name defined like array (#182)
  • Rules: added reset method (#180)
  • Validator: %label trims colon

For the details you can have a look at the diff.

Di
v2.4.13

28. 6. 2018

  • ContainerBuilder::completeStatement() improved error message
  • Helpers::autowireArguments() improved error message
  • ServiceCreationException: can alter exception message
  • names in error "Multiple services of type ..." are sorted
  • ContainerBuilder: fixed type of service

For the details you can have a look at the diff.

Tester
v2.0.2

7. 6. 2018

  • FileMutator: fixes
  • Assert::error() accepts array of E_XXXX without error message
  • DomQuery: added missing error suppression for (#385)

For more information see documentation and changelog.

Latte
v2.4.8

3. 6. 2018

  • Parser: tag name can contains : _ . - #179
  • Compiler: added 'did you mean' suggestion for n:attributes
  • Compiler: fixed error when there is no macro (#177)
  • coding style

For the details you can have a look at the diff.

Tester
v1.7.2

2. 6. 2018

  • fixed PHP 7.2 compatibility

This release is the last in the 1.x series. It is compatible with PHP 5.4 - 7.2.

The following 2.0 series, even marked as compatibility breaking, has very good compatibility, but supports PHP from version 5.6.

For more information see documentation and changelog.

Database
v2.4.6

1. 6. 2018

  • Helpers::detectTypes() added support for TIMESTAMP WITH TIME ZONE in PostgreSQL #163 (#198)
  • ResultSet: reads fraction of seconds to DateInterval (#197)
  • ActiveRow: __isset checks the existence of the relation (#196)
  • ConnectionPanel: compatibility with Tracy 2.5

For the details you can have a look at the diff.

Tracy
v2.4.15

25. 5. 2018

  • TracyExtension: added option netteMailer, when enabled Tracy send emails via Nette mailer #299
  • open-editor.js: focuses PhpStorm
  • open-editor.js: refactoring, added 'settings'
  • refactoring

For the details you can have a look at the diff.

Tracy
v2.5.0

17. 5. 2018

Please make a donation at https://nette.org/donate

New features

  • bar: panels are resizable [Closes #285]
  • added BlueScreen::addAction()
  • TracyExtension: added option netteMailer, when enabled Tracy send emails via Nette mailer #299
  • bluescreen: added action 'open file' and 'create file' which opens/creates file mentioned in exception messsage (see https://tracy.nette.org/open-files-in-ide)
  • bluescreen: added action 'fix it' which opens and fixes file
  • bluescreen: better readability of quoted part of exception message
  • bluescreen: focuses PhpStorm
  • JavaScript uses ES6
  • added Nette\Bridge

Changes, BC breaks

  • update open-in-editor scripts!
  • option netteMailer is enabled by default
  • Logger: formatMessage() & formatLogLine() changed to public static methods
  • bar: tables are 100% width
  • bar: wrap the content of panel with <div class="tracy-inner"><div class="tracy-inner-container">...
  • bar: changed coords system from right-bottom to left-top
Bootstrap
v2.4.6

17. 5. 2018

  • TracyBridge: initializes Tracy v2.5 Nette brigde
  • coding style

For the details you can have a look at the diff.

Http
v2.4.9

17. 5. 2018

  • SessionPanel: compatibility with Tracy 2.5
  • coding style
  • type fixes

For the details you can have a look at the diff.

Di
v2.4.12

17. 5. 2018

  • ContainerPanel: compatibility with Tracy 2.5
  • coding style

For the details you can have a look at the diff.

Application
v2.4.12

17. 5. 2018

  • TemplateFactory: retrieve CSP nonce from CSP-Report-Only header as a fallback (#193)
  • TemplateFactory: added onCreate event #195 (#196)
  • Presenter: do not shorten file names in exceptions
  • RoutingPanel: compatibility with Tracy 2.5
  • Presenter::error() moved to Component
  • type fixes

For the details you can have a look at the diff.

Tracy
v2.4.14

4. 5. 2018

  • bar: ignore mouseenter when button is pressed
  • bar: removed flex-wrap for floating bar
  • bar: mouseenter & mouseleave are supported by Firefox and Chrome
  • Dumper: Added support for __debugInfo() magic method via Dumper::DEBUGINFO option #135 #282
  • info.panel.html: fix undefined property in list of composer packages (#287)
  • bar: support for debug bar at top of screen AJAX fixes
  • phpDoc: added $var name to @param
  • fixing issues found by Psalm

For the details you can have a look at the diff.

Utils
v2.5.2

4. 5. 2018

  • SmartObject: better error message
  • Image: throw exception when $file and $type is null (#170)

For the details you can have a look at the diff.

Php Generator
v3.1.2

26. 4. 2018

  • Closure: chops 'uses' when are longer than WRAP_LENGTH
  • FunctionLike: chops parameters when are longer than WRAP_LENGTH #28
  • Helpers::formatArgs() chops ?* parameters when are longer than WRAP_LENGTH
  • Helpers: changed WRAP_LENGTH to 100, added INDENT_LENGTH
  • added Helpers::tabsToSpaces()

For the details you can have a look at the diff.

Php Generator
v3.0.4

26. 4. 2018

  • Closure: chops 'uses' when are longer than WRAP_LENGTH
  • FunctionLike: chops parameters when are longer than WRAP_LENGTH #28
  • Helpers::formatArgs() chops ?* parameters when are longer than WRAP_LENGTH
  • Helpers: changed WRAP_LENGTH to 100, added INDENT_LENGTH
  • added Helpers::tabsToSpaces()

For the details you can have a look at the diff.

Php Generator
v2.6.4

26. 4. 2018

This is the last v2.x release.

  • Closure: chops 'uses' when are longer than WRAP_LENGTH
  • FunctionLike: chops parameters when are longer than WRAP_LENGTH #28
  • Helpers::formatArgs() chops ?* parameters when are longer than WRAP_LENGTH
  • Helpers: changed WRAP_LENGTH to 100, added INDENT_LENGTH
  • added Helpers::tabsToSpaces()
  • travis: added PHP 7.2

For the details you can have a look at the diff.

Mail
v2.4.5

14. 4. 2018

  • SmtpMailer: $error may not be filled

For the details you can have a look at the diff.

Security
v2.4.3

2. 4. 2018

  • Permission: used native callback invocation
  • improved typehints
  • SecurityExtension: used setFactory() instead of misused setClass()

For the details you can have a look at the diff.

Php Generator
v3.0.3

2. 4. 2018

  • added type hints, type fixes
  • phpDoc: added $var name to @param

For the details you can have a look at the diff.

Php Generator
v3.1.1

2. 4. 2018

  • added type hints, type fixes
  • phpDoc: added $var name to @param

For the details you can have a look at the diff.

Di
v2.4.11

2. 4. 2018

  • DecoratorExtension: do not decorate accessors by inner type (possible BC break)
  • ContainerBuilder: added check that accessor have no setup
  • Loader: add includes recursive limitation #164 #162
  • ContainerBuilder: added service type to ServiceCreationException (#151)

For the details you can have a look at the diff.

Tracy
v2.4.13

23. 3. 2018

Please make a donation at https://nette.org/donate

  • bar: support for debug bar at top of screen #286
  • bar: added composer packages to info panel
  • bar: Allow adding of custom icons to panel header (#276)
  • added Debugger::$showFireLogger #267
  • supports Content-Security-Policy-Report-Only
  • bar.js: fixed nonce reading when attribute is not exposed

For the details you can have a look at the diff.

Caching
v2.5.8

21. 3. 2018

  • fixed compatiblity with nette/object 2.5
  • phpDoc: added $var name to @param
  • phpDoc: removed inherited docs

For the details you can have a look at the diff.

Component Model
v2.4.0

20. 3. 2018

  • Component::monitor() accepts callbacks
  • Component: attached() and detached() marked as deprecated in favor of monitoring callbacks
  • added trait ArrayAccess
  • Component::__construct($parent, $name) is deprecated (BC break)
Http
v2.4.8

15. 3. 2018

  • HttpExtension: allow setup CSP in restrictive and report mode at the same time #136 #135
  • Session: don't call session_set_cookie_params() when values was not changed #134 #23
  • Session: session id cookie is checked only if it was not regenerated #133 #129

For the details you can have a look at the diff.

Forms
v2.4.7

7. 3. 2018

  • ChoiceControl, MultiChoiceControl: added checkDefaultValue() as replacement for $checkAllowedValues (#151)
  • Validator: method validatePattern() for FileUpload uses file name (#175)
  • netteForms.js: conforms with PHP FLOAT validation (#174)
  • examples: bootstrap updated

For the details you can have a look at the diff.

Application
v2.4.11

7. 3. 2018

  • added Request::VARYING for request that must not be canonicalized via 301
  • Presenter: added $onStartup
  • ErrorPresenter: renders error.phtml only in HTML
  • Route: change inflectors visibility to public (#192)

For the details you can have a look at the diff.

Tracy
v2.4.12

28. 2. 2018

  • bar: floating panel is focused on mousedown instead of on mouseover (BC break in behavior) #269
  • bar: panel zIndex is stored in session
  • bar: added Tracy.panelZIndex
  • bar: fixed z-index issue when some panels are already in FLOAT mode when the page is loaded. #269
  • bar.css: supports <small>
  • examples: improved fatal-error.php to be fatal in PHP 7

For the details you can have a look at the diff.

Utils
v2.5.0

17. 2. 2018

  • deprecated Nette\Object renamed to Nette\LegacyObject (to avoid fatal error in PHP 7.2)
  • usage of Nette\Object triggers notice or exception
  • removed stuff deprecated in v2.4
Tester
v2.0.1

7. 2. 2018

  • fixed FileMutator

For more information see documentation and changelog.

Utils
v2.4.9

6. 2. 2018

  • FileSystem::rename() fix renaming file/directory if only case changes (#155)
  • Added Html::removeAttributes() - removing multiple attributes (#161)
  • Reflection::getParameterDefaultValue: fix constant visibility handling (php 7.1) (#156)
  • PHPStan: fixed some issues
  • Object, ObjectMixin: silently marked as deprecated

For the details you can have a look at the diff.

Robot Loader
v3.0.3

6. 2. 2018

  • throws exception when is unable to create temp directory

For the details you can have a look at the diff.

Robot Loader
v2.4.4

6. 2. 2018

  • throws exception when is unable to create temp directory

For the details you can have a look at the diff.

Php Generator
v3.0.2

6. 2. 2018

  • PhpNamespace: added support for PHP 7.2 type 'object'

For the details you can have a look at the diff.

Mail
v2.4.4

6. 2. 2018

  • Message: fixed wrong content type for .eml files added as attachment #47
  • SmtpMailer: allow setting the client name through config (#46)
  • SmtpSender: Better handling of exceptions thrown when building the message (#43)
  • travis: added PHP 7.2

For the details you can have a look at the diff.

Latte
v2.4.7

6. 2. 2018

Please make a donation at https://nette.org/donate

  • FileLoader: isExpired called with correct file path (#171)
  • Compiler: {$var} can be in quotes in <style>
  • TokenIterator: fixes, sync with nette/tokenizer

For the details you can have a look at the diff.

Database
v2.4.5

6. 2. 2018

  • fixed PHP 7.2 compatibility (#190)
  • SqlBuilder: UPDATE supports ORDER BY (#179)
  • NDBT return types changed from IRow to ActiveRow

For the details you can have a look at the diff.

Application
v2.4.10

6. 2. 2018

  • FileResponse: strict type fix for PHP 5.2
  • Template: added renderToString()

For the details you can have a look at the diff.

Tracy
v2.4.11

31. 1. 2018

  • Bar: fixed Undefined index #271
  • TracyExtension: add configuration directive maxLength #274 (#275)
  • shortcuts: added function dumpe(), shortcut for dump() & exit()
  • Better exception messages for invalid logging directory
  • Debugger::dispatch() is ignored in CLI
  • Bar: added info about OPcache
  • Bar: removed HHVM version from info panel
  • Bar: info panel counts only user defined classes/interfaces/traits
  • Debugger: added support for custom JS via $customJsFiles #265
  • Debugger: added support for custom CSS via $customCssFiles #27
  • Debugger: error handler context argument optional for compatibility with PHP 7.2 (#264)

For the details you can have a look at the diff.

Tracy
v2.4.10

5. 10. 2017

  • Bar: uses session only for redirect, AJAX and when is rendered via renderLoader()
  • added example "preload"
  • bar.js: fixed attribute nonce
  • bar: fixed iconv_strlen may return false #263
  • Debugger::detectDebugMode() check for Forwarded header existence

For the details you can have a look at the diff.

Tokenizer
v2.3.0

8. 9. 2017

  • requires PHP 5.4 and supports PHP up to 7.2
  • added new classes Nette\Tokenizer\Tokenizer & Nette\Tokenizer\Stream
    • Tokenizer::tokenize return Stream instead of array
    • token is represented by object Token instead of array
    • removed support for 'simple' mode
  • Nette\Utils\Tokenizer & Nette\Utils\TokenIterator are marked as deprecated (BC break)
Caching
v2.5.6

6. 9. 2017

  • supports PHP up to 7.2
  • Revert "SQLiteJournal: checking for extension pdo_sqlite is lazy, service cache.journal is created always"

This reverts commit 7212326, it can lead to unexpected error 500 when GC is started.

For the details you can have a look at the diff.

Di
v2.4.10

6. 9. 2017

  • supports PHP up to 7.2
  • added ServiceBuilder::setType() & getType() as a future replacements for setClass() and getClass()
  • Compiler: added configuration option 'type' as a future replacement for 'class'
  • Loader: fixed including of paths with scheme in config loader (#153)
  • ContainerLoader: better error message when is unable to create file
  • ContainerLoader: throws exception when is unable to create directory

For the details you can have a look at the diff.

Utils
v2.4.8

29. 8. 2017

  • Html: accepts IHtmlString nette/forms#160
  • Html::addText() accepts Html as setText() does
  • Reflection: added support for PHP 7.2 type 'object'
  • ArrayList: triggers notice when indexes are not integers
  • travis: compatible with PHP 7.2

For the details you can have a look at the diff.

Latte
v2.4.6

29. 8. 2017

  • supports PHP up to 7.2
  • Engine: better error message when is unable to create file
  • Engine: throws exception when is unable to create directory
  • Parser: expands <script /> to <script></script> #164
  • added |webalize (requires nette/utils)
  • added |reverse

For the details you can have a look at the diff.

Http
v2.4.7

29. 8. 2017

  • supports PHP up to 7.2
  • FileUpload: uses FileSystem
  • silenced each() deprecation notice in PHP 7.2

For the details you can have a look at the diff.

Forms
v2.4.6

29. 8. 2017

  • supports PHP up to 7.2
  • addError() by default translates messages (BC break)
  • Revert "DefaultFormRenderer: added error message translation (#145)" #162 (introduced in v2.4.4)
  • FormMacros: fix edcompatibility between n:class macro and n:name form macro. (#159)
  • added Form::reset()

For the details you can have a look at the diff.

Caching
v2.5.5

29. 8. 2017

  • added Cache::NAMESPACES and support for cleaning namespace in FileStorage #52
  • CacheExtension: throws exception when is unable to create directory

For the details you can have a look at the diff.

Bootstrap
v2.4.5

29. 8. 2017

  • supports PHP up to 7.2
  • detectDebugMode() check for Forwarded header existence (#55)
  • Configurator:getCacheDirectory() throws exception when is unable to create directory

For the details you can have a look at the diff.

Application
v2.4.9

29. 8. 2017

  • supports PHP up to 7.2
  • Route: converts all scalar params to strings #185
  • Route: fixed handling of required parameters with default value
  • ComponentReflection: 'sinces' are stored only for presenters, refactoring
  • Control: enhanced code completion for $template (#184)
  • Component::saveState() fixed compatibility with PHP 7.2

For the details you can have a look at the diff.

Tester
v2.0.0

22. 8. 2017

  • Compatibility
    • required PHP 5.6 and supports PHP up to 7.2
    • dropped support for HHVM
    • default interpreter is CLI, used to be CGI
  • Handle *Test.php as a test files too
  • Added -C option to use system-wide php.ini
  • Added --temp option
  • Last time failing tests run as first
  • Fixed FileMock in append mode
  • Added environmental variable Environment::THREAD
  • Added @phpExtension test file annotation
  • Added %w% and %% modifiers for Assert::match()
  • Assert::match() replaces modifiers by matching values in output
  • Assert::exception() prints stack trace when unexpected exception is thrown
  • TestCase::tearDown() called even after test method error
  • TestCase::run() does not accept arguments, use TestCase::runTest() instead
  • Added CodeCoverage\Collector::flush()
  • Code coverage HTML template facelift
  • (many other small fixes and improvements)

For more information see documentation and changelog.

Tracy
v2.4.9

16. 8. 2017

  • supports PHP up to 7.2
  • added Debugger::renderLoader() for faster client-side initialization
  • element <div id=tracy-debug> is created by JS
  • bar: added support for touch events
  • bar: is draggable only using logo
  • bar: all H1 tags should make panel draggable (#207)
  • dumper: added CSS for anchors
  • TracyExtension: throws exception when log directory is not writable

For the details you can have a look at the diff.

Php Generator
v3.1.0

16. 8. 2017

  • requires PHP 7.1 and supports PHP up to 7.2
  • uses PHP 7.1 type hints and constant visiblity
  • removed deprecated stuff
  • Parameter::setOptional() triggers deprecation notice
Database
v2.4.4

27. 7. 2017

  • supports PHP up to 7.2
  • SqlPreprocessor: workaround for PDO bug #74996 when looking for ? in prepared query #177
  • composer: requires nette/utils 2.4 for PHP 7.2

For the details you can have a look at the diff.

Robot Loader
v3.0.2

20. 7. 2017

  • supports PHP up to 7.2
  • saveCache() is atomic #11

For the details you can have a look at the diff.

Application
v2.4.8

16. 7. 2017

  • Presenter::$absoluteUrls fixed

For the details you can have a look at the diff.

Tokenizer
v2.2.1

14. 7. 2017

  • improved coding style

For the details you can have a look at the diff.

Tokenizer
v2.2.4

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • @return self -> static

For the details you can have a look at the diff.

Safe Stream
v2.3.3

14. 7. 2017

  • supports PHP up to 7.2
  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Reflection
v2.4.2

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • each() replaced with current() and next()

For the details you can have a look at the diff.

Utils
v2.4.7

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • Image: attempt to serialize throws exception

For the details you can have a look at the diff.

Tracy
v2.4.8

14. 7. 2017

  • dumps true/false/null in lowercase
  • coding style: fixes, lowercase true/false/null
  • examples: added info about DEVELOPMENT vs DETECT mode
  • Show date/time error occured on error 500 (#258)

For the details you can have a look at the diff.

Security
v2.4.2

14. 7. 2017

  • supports PHP up to 7.2
  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Robot Loader
v2.4.3

14. 7. 2017

  • supports PHP up to 7.2
  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Robot Loader
v3.0.1

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • default $acceptFiles & $ignoreDirs changed to arrays (BC break!)

For the details you can have a look at the diff.

Php Generator
v2.6.3

14. 7. 2017

  • supports PHP up to 7.2
  • ClassType: removed some blank lines
  • dumps true/false/null in lowercase
  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Php Generator
v3.0.1

14. 7. 2017

  • supports PHP up to 7.2
  • added support for class constants (#25)
  • dumps true/false/null in lowercase
  • coding style: fixes, lowercase true/false/null
  • ClassType: removed some blank lines

For the details you can have a look at the diff.

Neon
v2.4.2

14. 7. 2017

  • supports PHP up to 7.2
  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Mail
v2.4.3

14. 7. 2017

  • supports PHP up to 7.2
  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Latte
v2.4.5

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • Engine::compile() fixed construction of CompileException, doesn't accept nullable type (#161)

For the details you can have a look at the diff.

Http
v2.4.6

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • RequestFactory: when proxy is used and HTTP_X_FORWARDED_PORT is not available, uses default port #124
  • RequestFactory: test that HTTP_X_FORWARDED_PROTO doesn't change the port
  • typo
  • RequestFactory: correctly ignores not-ip values in HTTP_X_FORWARDED_FOR & REMOTE_ADDR (#122)

For the details you can have a look at the diff.

Forms
v2.4.5

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • $onClick handlers are called with argument $values (as $onSuccess)
  • tests: improved $onSuccess & $onClick etc. tests
  • DefaultFormRenderer: translates object 'label' & 'description' #142
  • tests: added rendering + localization (#149)
  • DefaultRenderer: fix for calling renderErrors() from renderPair() which was caused by #145 (->form = NULL) (#150)
  • ControlGroup: added remove() and removeOrphans() #155
  • SelectBox: only one item can be rendered as selected at the same time

For the details you can have a look at the diff.

Finder
v2.4.1

14. 7. 2017

  • supports PHP up to 7.2
  • coding style: fixes, lowercase true/false/null
  • variadics methods accepts no arguments #5
  • folder /Finder renamed to /Utils
  • composer: accepts nette 3.0
  • @return self -> static

For the details you can have a look at the diff.

Di
v2.4.9

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • added support for class aliases created via class_alias() #156
  • DependencyChecker: class is expired when parent/interfaces/traits was changed
  • DecoratorExtension: accepts setup syntax '$prop = val'
  • ContainerBuilder: allows ::Namespace\func as factory name
  • generated factories: fix return type, PHP does not support return type covariance (#152)
  • removed unnecessary ltrim($class, '\')

For the details you can have a look at the diff.

Database
v2.4.3

14. 7. 2017

  • fetchPairs() supports floats in keys
  • coding style: fixes, lowercase true/false/null
  • SqliteDriver::getColumns() fix regexp for autoincrement recognition (#168)
  • DatabaseExtension: added support for constants in options values
  • OciDriver: do not use meta, driver is not meta-aware

For the details you can have a look at the diff.

Component Model
v2.3.1

14. 7. 2017

  • supports PHP up to 7.2
  • coding style: fixes, lowercase true/false/null
  • @return self -> static
  • composer: accepts nette 3.0
  • renamed parameter $need -> $throw

For the details you can have a look at the diff.

Caching
v2.5.4

14. 7. 2017

  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Bootstrap
v2.4.4

14. 7. 2017

  • coding style: fixes, lowercase true/false/null

For the details you can have a look at the diff.

Application
v2.4.7

14. 7. 2017

  • coding style: fixes, lowercase true/false/null
  • Presenter: added requestToUrl(), taken out from createRequest()

For the details you can have a look at the diff.

Application
v2.4.6

29. 5. 2017

  • RoutingExtension: added support for custom single-route classes. (#162)
  • UI\Presenter::canonicalize() allows to redirect to specified destination
  • Presenter: fixed uninitialized $since #166
  • strict types fixes

For the details you can have a look at the diff.

Latte
v2.4.4

17. 5. 2017

  • n:class supports BEM (#156)
  • Filters: trim() is content type aware
  • macro n:attr expands array (#158)
  • Filters: independent on utf8_decode()
  • strict type fixes
  • fixed phpDoc

For the details you can have a look at the diff.

Tracy
v2.4.7

11. 5. 2017

  • AJAX: debug Fetch requests (#249)
  • Logger::getExceptionFile() hash contains exception class name
  • Helpers::improveException() fixed suggestion when calling undefined method of anonymous class #248
  • create-phar: leaves annotation @tracySkipLocation #254

For the details you can have a look at the diff.

Utils
v2.4.6

9. 5. 2017

  • Validators::isInRange() works with DateTime
  • Validators::isInRange() return FALSE when both limits are NULL

For the details you can have a look at the diff.

Utils
v2.4.5

30. 3. 2017

  • supports PHP up to 7.2
  • Validators::isInRange() compares strings as strings and numbers as numbers (BC break) nette/forms#146
  • Validators::isInRange() ignores NULL
  • Reflection::getReturnType() & getParameterType() supports 'parent'
  • Callback: workaround for Suhosin extension bug (#134)
  • each() replaced with current() and next()

For the details you can have a look at the diff.

Forms
v2.4.4

29. 3. 2017

  • added support for static addCondition(TRUE | FALSE)
  • netteForms.js: fixed 'Too much recursions' #143
  • BaseControl::setDisabled(FALSE) reloads HTTP value #139
  • DefaultFormRenderer: added error message translation (#145)
  • Revert "TextBase: emptyValue is removed from value in validate()" - getValue() can be called before validation
  • fixed phpDoc

For the details you can have a look at the diff.

Php Generator
v2.6.2

18. 3. 2017

  • fixed default values
  • ClassType: checks whether names are valid
  • Helpers::isNamespaceIdentifier() added $allowLeadingSlash
  • Helpers::isNamespace() -> isNamespaceIdentifier()
  • Closure::setUses() checks argument type

For the details you can have a look at the diff.

Di
v2.4.8

17. 3. 2017

  • Compiler::loadDefinitions: allow to get to existing service by class #145
  • ContainerBuilder::getByType() added argument $throw
  • DependencyChecker::isExpired() can alter $phpFiles modification times #144
  • Helpers::getReturnType() ignores 'object' and 'mixed'
  • PhpGenerator: removed unnecessary type checking in PHP 7
  • uses nette/php-generator 2.6.1 wildcards
  • ContainerBuilder: create_function() replaced with eval()

For the details you can have a look at the diff.

Http
v2.4.5

17. 3. 2017

  • Session: configuration options are normalized in setOptions() instead of configure() #121
  • SessionExtension: special value 'domain' in cookieDomain means whole domain
  • Url: added getDomain()
  • fixed phpDoc

For the details you can have a look at the diff.

Http
v2.3.9

17. 3. 2017

  • Session: configuration options are normalized in setOptions() instead of configure() #121

For the details you can have a look at the diff.

Di
v2.3.14

17. 3. 2017

  • compatibility with nette/php-generator v2.6 #150
  • ContainerBuilder: create_function() replaced with eval()
  • tests: fixed mkdir() race condition
  • each() replaced with current() and next()

For the details you can have a look at the diff.

Php Generator
v2.6.1

14. 3. 2017

  • Helpers::formatArgs() escaped \? means ?
  • Helpers::formatArgs() ...? is substitution for ?*
  • Helpers::formatArgs() refactoring

For the details you can have a look at the diff.

Php Generator
v2.6.0

24. 2. 2017

  • Checks whether names are valid [Closes #24]
  • added GlobalFunction & Closure
  • ClassType: added possibility to define trait resolution rules
  • PhpNamespace: recognizes 'void' and 'iterable' as built-in types
  • deprecated setName() & from() trigger warnings (BC break)
  • added Factory::fromMethodReflection()
  • refactoring: transformed to traits, removed Member

For the details you can have a look at the diff.

Mail
v2.4.2

21. 2. 2017

  • fixed phpDoc
  • fixed strict compatibility
  • @return self -> static

For the details you can have a look at the diff.

Database
v2.3.11

21. 2. 2017

  • MySqlDriver: formatLike() uses quote()
  • tests: fixed compatibility with PHP 7.1
  • @return self -> static

For the details you can have a look at the diff.

Bootstrap
v2.4.3

19. 2. 2017

  • added Configurator::addDynamicParameters()
  • compatible with RobotLoader 3.0

For the details you can have a look at the diff.

Di
v2.4.7

19. 2. 2017

  • added dynamic parameters #61
  • Compiler::addExtension() allows empty name
  • each() replaced with current() and next()
  • ContainerBuilder: ltrims \ from service class
  • Helpers::expand supports concatenation of PhpLiteral
  • ContainerBuilder: disable autowiring for aliases only when autowired is TRUE

For the details you can have a look at the diff.

Database
v2.4.2

2. 2. 2017

  • Insert to table with multi primary or without autoincrement primary (#105)(#41)(#80)(#102)
  • Connection::getInsertId() is normalized to string
  • fixed phpDoc
  • DatabaseExtension: fixed compatibility with nette/di
  • SqlBuilder: lose parameters for aliasses (#150)
  • MySqlDriver: formatLike() uses quote()

For the details you can have a look at the diff.

Application
v2.4.5

2. 2. 2017

  • fixed phpDoc
  • uses IResponse constants
  • TemplateFactory: "nonce" is Presenter agnostic (#172)
  • BadRequestException: added getHttpCode()
  • TemplateFactory: dependency on nette/caching is optional
  • Revert "ComponentReflection::combineArgs() throws InvalidArgumentException instead BadRequestException when incompatible type is object"

For the details you can have a look at the diff.

Caching
v2.5.3

2. 2. 2017

  • Cache: do not save data with negative/zero expiration (#50)
  • Cache: create dependencies when closing macro (#49)

For the details you can have a look at the diff.

Php Generator
v3.0.0

2. 2. 2017

  • requires PHP 7.0
  • uses declare(strict_types=1)
  • uses PHP 7.0 scalar and return type hints
  • some classes & members marked as final (BC break)
  • Method: empty body is NULL instead of FALSE (BC break)
  • Helpers::formatArgs() checks for insufficient number of placeholders (BC break)
  • Parameter::setDefaultValue() automatically sets setOptional(), setOptional is deprecated (BC break)
  • PhpNamespace: global namespace represents '' instead of NULL (BC break)
  • PhpNamespace::__construct() $name is mandatory, setName() triggers warnings (BC break)
  • new deprecated stuff triggers warnings b357b90
Robot Loader
v3.0.0

2. 2. 2017

  • compatible with PHP 5.6
  • removed setCacheStorage() and dependency on nette/caching (BC break)
  • RobotLoader is case sensitive (BC break)
  • $autoRebuild is private (BC break)
  • getKey() renamed to getCacheKey() (BC break)
  • added RobotLoader::excludeDirectory() (#9)
Tracy
v2.4.6

29. 1. 2017

  • TracyExtension: added 'editorMapping' default parameter (#244)
  • error 500 redesign
  • bar.css: fixed reseting :before and :after
  • templates: improved list of hardclosed elements
  • bar.js: tracy-debug is always in <body>
  • bar.css: fixed whitepace for code nette/application#169
  • bar.css: resets SVG display

For the details you can have a look at the diff.

Http
v2.4.4

19. 1. 2017

  • HttpExtension: added option 'csp' for Content-Security-Policy
  • Response::setCode() added $reason
  • HttpExtension: sends headers via Http\Response

For the details you can have a look at the diff.

Latte
v2.4.3

19. 1. 2017

  • BlockMacros: removed deprecation warning for {includeblock}, it is deprecated silently
  • BlockMacros: dynamic blocks with content-types html & htmlattr are compatible #146
  • BlockMacros: implemented modifies for dynamic blocks
  • RegexpException: added PREG_JIT_STACKLIMIT_ERROR
  • Filters: added |padLeft & |padRight
  • FileLoader::normalizePath() not forget leading ../ #138 #139
  • CoreMacros: {status} uses http_response_code() related to nette/http#113

For the details you can have a look at the diff.

Application
v2.4.4

19. 1. 2017

  • UIMacros: added n:nonce
  • compatibility with nette/di and RobotLoader 3.0

For the details you can have a look at the diff.

Tracy
v2.3.12

18. 1. 2017

  • Bar: is now showing in Safari. See: (#238)
  • bar.css: resets SVG display and :before and :after (#240)
  • Debugger: sends HTTP code with text, related to nette/http#113
  • This release marks the end of life of the 2.3 series

For the details you can have a look at the diff.

Di
v2.4.6

15. 1. 2017

  • PhpGenerator: generates native return type hints
  • Compiler: added option 'alteration'
  • ContainerBuilder: getDefinitionByType() method added #130 (#137)
  • ContainerBuilder::literal() can have arguments
  • Compiler: fixed notice when overwriting service
  • uses Nette\Utils\Reflection::getParameterDefaultValue() to prevent Fatal Error when invalid constant is used
  • nette/php-generator updated to 2.5.0
  • compatibility with nette/php-generator v3

For the details you can have a look at the diff.

Neon
v2.4.1

15. 1. 2017

  • Decoder: every regexp are possessive #36
  • Entity: added __set_state() support #35

For the details you can have a look at the diff.

Php Generator
v2.5.0

15. 1. 2017

  • added Factory
  • Method, Parameter: added support for PHP 7.1 nullable types
  • Parameter::from() prevents fatal error when default value is not resolvable
  • ClassType: improved rendering of anonymous classes
  • add Constant; class constants can have declared visibility and comment
  • refactoring: extracted base class Member for properties, methods and constants
  • Method::from() sets visibility 'public'
  • Parameters: added hasDefaultValue() as replacement of isOptional()
  • deprecated Parameter::from() and Property::from() (BC break)
Reflection
v2.4.1

15. 1. 2017

  • AnnotationsParser: sooner $useReflection initialization
  • AnnotationsParser: fixed expanding to FQCN in bracketed namespace
  • AnnotationParser: support PHP 7 group use statements (nette/di#125)

For the details you can have a look at the diff.

Tracy
v2.4.5

15. 1. 2017

  • added support for Content Security Policy script-src: 'nonce-....' #136
  • bar.js: avoid multiple init for bar links #239
  • bar.css: resets some other CSS properties and :before and :after (#240)
  • bar: showing/hiding of panel is done via CSS classes
  • TracyExtension: fixed compatibility with nette/di
  • bar.js: evalScripts() uses createElement('script') instead of eval()
  • bar.js: monkey patching getResponseHeader() & getAllResponseHeaders() replaced with addEventListener()

For the details you can have a look at the diff.

Utils
v2.4.4

11. 1. 2017

For the details you can have a look at the diff.

Robot Loader
v2.4.2

2. 1. 2017

  • added setTempDirectory(), should be used instead of setCacheStorage()
  • presence of cacheStorage is checked only in register(), not in rebuild()

For the details you can have a look at the diff.

Di
v2.4.5

23. 12. 2016

  • ContainerBuilder: support for nullable types in generated factories #132
  • DependencyChecker: fixed serialization of returnType, supports nullable types
  • Config\Loader: allow absolute paths in includes section (#131)
  • IniAdapter, NeonAdapter: process() is public #134
  • @return self -> static

For the details you can have a look at the diff.

Latte
v2.3.13

21. 12. 2016

  • fixed compatibility with PHP 7.1
  • @return self -> static

For the details you can have a look at the diff.

Forms
v2.3.12

21. 12. 2016

  • BaseControl::setAttribute() and setType() aliased to setHtmlAttribute() and setHtmlType()
  • @return self -> static

For the details you can have a look at the diff.

Forms
v2.4.3

20. 12. 2016

  • BaseControl::setAttribute() and setType() aliased to setHtmlAttribute() and setHtmlType()
  • CheckboxList: added item label prototype
  • RadioList::getLabelPart() uses $itemLabel instead of $label
  • netteForms.js: fixed issue with button type=submit with html #137
  • netteForms: forms with attribute 'novalidate' are not validated (BC break)
  • becomes NPM package
  • @return self -> static

For the details you can have a look at the diff.

Utils
v2.4.2

20. 12. 2016

  • added DateTime::fromParts()
  • DateTime::from() supports microseconds
  • Image: added support for WEBP #73
  • added Arrays::every(), some() & map() #36
  • Validators: support for types int[], string[] etc #119
  • added Validators::everyIs() #123
  • Validators: added validator 'iterable'
  • SmartObject: better exception message for deprecated property usage
  • Json skips workaround on PHP 7.0+
  • @return self -> static

For the details you can have a look at the diff.

Bootstrap
v2.4.2

20. 12. 2016

  • added Configurator::enableTracy as alias for enableDebugger
  • @return self -> static

For the details you can have a look at the diff.

Application
v2.4.3

20. 12. 2016

  • TemplateFactory: added support for custom Template implementation #159 #141
  • JsonResponse: allow scalar payload #168
  • Route::constructUrl(): split of module and presenter moved before global filter (#167)
  • Route::constructUrl() fixed global filter on presenter name (#161)
  • LatteExtension: added support for macro factories defined as DI services
  • Application: fixed empty $requests when createInitialRequest() failed, thx to @vlastavesely #163
  • Template::addFilter() returns $this
  • @return self -> static

For the details you can have a look at the diff.

Utils
v2.3.11

19. 12. 2016

This release marks the end of life of the nette/utils 2.3 series

  • FileSystem: added read() (#124)
  • FileSystem: fix mkdir race condition (#120)
  • Image: fix conversion of percentage arguments to numeric values (#122)
  • fixed compatibility with PHP 7.1
  • @return self -> static

For the details you can have a look at the diff.

Security
v2.4.1

19. 12. 2016

For the details you can have a look at the diff.

Http
v2.4.3

19. 12. 2016

  • Http\Response::setCode produces valid HTTP header on nginx (#113)
  • SessionSection::removeExpiration() fixed (#111)
  • UrlScript: accept optional $scriptPath parameter in constructor (#109)
  • UserStorage: removed BROWSER_CLOSED expiration reason #112
  • @return self -> static

For the details you can have a look at the diff.

Http
v2.3.8

19. 12. 2016

  • Http\Response::setCode produces valid HTTP header on nginx and PHP >= 5.4(#113)
  • @return self -> static
  • SessionSection::removeExpiration() fixed (#111)
  • RequestFactory: improved checking of $_FILES structure

For the details you can have a look at the diff.

Di
v2.3.13

19. 12. 2016

  • ServiceDefinition::setImplementType() and getImplementType() aliased to setImplementMode() & getImplementMode() (#122)
  • @return self -> static

For the details you can have a look at the diff.

Component Model
v2.2.5

19. 12. 2016

  • @return self -> static
  • Container::getComponent() optimization

For the details you can have a look at the diff.

Tracy
v2.4.4

10. 12. 2016

  • Bar: removes entries from session after 60 seconds #234
  • Bar: all assets & contents in single HTTP request
  • Revert "Bar: JS & CSS is cached in localStorage (#226)" #228
  • Added Linux version of 'open-in-editor' tool (#235)
  • BlueScreen: ability to set whether panel is collapsed or not (#232)
  • Helpers::improveException() removes namespace from function name because is confusing (related to PHP issue 73049)

For the details you can have a look at the diff.

Di
v2.4.4

8. 11. 2016

  • InjectExtension: fixed injecting of services which cannot be autowired via @Inject #127
  • PhpGenerator: lazy load interface definitions for generated factories #129
  • ContainerBuilder::completeStatement() uses autowiring only when class is known

For the details you can have a look at the diff.

Robot Loader
v2.4.1

26. 10. 2016

  • added setAutoRefresh()
  • $refreshed is set in rebuildCallback()

For the details you can have a look at the diff.

Caching
v2.5.2

18. 10. 2016

  • Cache: TAGS in dependencies are converted to array list #46
  • SQLiteStorage: filesystem permissions like ordinary file (#44)

For the details you can have a look at the diff.

Caching
v2.4.7

18. 10. 2016

  • Cache: TAGS in dependencies are converted to array list #46
  • SQLiteStorage: filesystem permissions like ordinary file (#44)

For the details you can have a look at the diff.

Database
v2.4.1

18. 10. 2016

  • SqlPreprocessor: escapes primary value of IRow #144
  • Selection: missing primary key can be FALSE, '0' or '' #145
  • ConnectionPanel: preserves whitespaces in explain panel #134
  • Sqlite: fixed datetime column type
  • SqlBuilder: added support for limit in update and delete queries (#140)
  • tests: fixed compatibility with PHP 7.1

For the details you can have a look at the diff.

Http
v2.4.2

18. 10. 2016

  • Session: removed cookie nette-browser and support for expiration 'until the browser is closed' (#103)
  • UrlScript: default scriptPath is whole path to maintain same behavioral as the class Url (in method getBasePath, ...) #100
  • RequestFactory: parse the "proto" part of "forwarded" header instead of the "scheme" part. (#106)
  • IResponse: added missing HTTP response codes (#107)
  • Session: make sure __NF is array (#108)
  • Session::$options: removed null options

For the details you can have a look at the diff.

Database
v2.3.10

18. 10. 2016

  • SqlPreprocessor: escapes primary value of IRow #144
  • Selection: missing primary key can be FALSE, '0' or '' #145

For the details you can have a look at the diff.

Utils
v2.4.1

30. 9. 2016

  • SmartObject: added support for annotations in traits (thx @matej21) #121
  • FileSystem: fix mkdir race condition (#120)
  • fixed compatibility with PHP 7.1

For the details you can have a look at the diff.

Tracy
v2.4.3

30. 9. 2016

  • Bar: JS & CSS is cached in localStorage (#226)
  • Dumper::encodeString() optimization, slow regexp is used for shortened string #223
  • Revert "Bar: disables XDEBUG_PROFILE & XDEBUG_TRACE" - it cannot be disabled
  • Dumper::encodeString - use mb_substr (#222)
  • Logger::getExceptionFile() ignores exception arguments
  • Logger: added exception code to log
  • Revert "Bar: detects and uses document root path" #216
  • Debugger::errorHandler() calls Helpers::improveException() before ErrorException is logged

For the details you can have a look at the diff.

Latte
v2.4.2

27. 9. 2016

  • Filters: added support for including blocks in HTMLCOMMENT #136
  • PhpWriter::validateTokens fixed to not recognize Namespace\CLASS as constant
  • BlockMacros - define: fixed variables extracting when named parameters are used (#131)
  • StringLoader: throws exception when is unable to load referred template #129
  • Filters::escapeHtmlAttr() prevents double escaping of Latte\Runtime\Html

For the details you can have a look at the diff.

Http
v2.4.1

27. 9. 2016

  • FileUpload: added hasFile() (#97)
  • Url::getHostUrl() doesn't return empty // #96
  • Session: max session id length is 256 #105
  • Session: used static access to $started (#104)
  • FileUpload: missing variable #98
  • RequestFactory: improved checking of $_FILES structure

For the details you can have a look at the diff.

Application
v2.4.2

27. 9. 2016

  • UI: added support for PHP 7.1 nullable types
  • Revert "Presenter: invalid component name in signal throws BadSignalException"
  • MicroPresenter: fixed passing of services to closure in 2.4
  • ComponentReflection::combineArgs() throws InvalidArgumentException instead BadRequestException when incompatible type is object
  • Route: fixed PHP warning "strpos(): Offset not contained in string" (#154)
  • ComponentReflection::parseAnnotation: fix false positive annotation parsing (#151)

For the details you can have a look at the diff.

Forms
v2.3.11

27. 9. 2016

  • netteForms.js: cannot use range() to validate min/max (#136)
  • netteForms.js: validity of input=number is checked in 'onlyCheck' mode
  • netteForms.js: compatibility with 2.4
  • netteForms: added version
  • fixed compatibility with PHP 7.1

For the details you can have a look at the diff.

Forms
v2.4.2

27. 9. 2016

  • netteForms.js: cannot use range() to validate min/max (#136)
  • netteForms.js: added argument 'onlyCheck' to validateForm() #133
  • netteForms.js: validity of input=number is checked in 'onlyCheck' mode
  • Rules::validate() processes all conditions
  • fixed compatibility with PHP 7.1
  • netteForms.js: fixed compatiblity with IE 8 (#127)

For the details you can have a look at the diff.

Di
v2.4.3

27. 9. 2016

  • Helpers::autowireArguments() can handle PHP 7.1 nullable types
  • PhpReflection::getReturnType() can handle PHP 7.1 nullable types
  • PhpReflection::getParameterType() can handle PHP 7.1 nullable types (#126)
  • PhpReflection::getParameterType() supports type 'self'
  • DependencyChecker: takes into account if class is abstract
  • InjectExtension::getInjectMethods() correct order of methods in traits
  • PhpReflection: support PHP 7 group use statements (#125)
  • DependencyChecker: do not call getParameterType() in PHP < 7 #124
  • Compiler: improved overwriting of single arguments

For the details you can have a look at the diff.

Tracy
v2.4.2

31. 7. 2016

  • BlueScreen: catches exceptions while rendering user panels #208
  • Dumper: removed dependency on utf8_decode because it is missing in some PHP packages #212
  • Bar: assets path dependent on session cookie path (#213)
  • bar.js: fix for protocol-less ajax url request (#211)
  • bar.js: warning about IE11+ thrown as exception because console may not exist
  • Debugger::enable() and dispatch() throws exception when output has been sent

For the details you can have a look at the diff.

Php Generator
v2.4.1

31. 7. 2016

  • ClassType: added @Property $properties (#23)
  • Helpers::dump() native dumping of DateTime & DateTimeImmutable

For the details you can have a look at the diff.

Mail
v2.4.1

31. 7. 2016

  • SmtpMailer: add support for AUTH PLAIN (#31)

For the details you can have a look at the diff.

Di
v2.3.12

31. 7. 2016

  • ContainerLoader::load() allows swapped arguments

For the details you can have a look at the diff.

Di
v2.4.1

31. 7. 2016

  • ContainerBuilder: improved exception messages
  • Config\Loader: removed realpath() to be compatible with FileMock #120
  • ContainerLoader: fixed extra implode() #119

For the details you can have a look at the diff.

Di
v2.4.2

31. 7. 2016

  • PhpReflection::parseAnnotation() regexp fix
  • DependencyChecker: prevents fatal error when undefined constant is used as default value of method parameter
  • DIExtension: added option 'parentClass' nette/bootstrap#52
  • ContainerBuilder::resolveImplement: use isDefaultValueAvailable instead of isOptional (#121)

For the details you can have a look at the diff.

Caching
v2.5.1

31. 7. 2016

  • SQLiteJournal: checking for extension pdo_sqlite is lazy, service cache.journal is created always

For the details you can have a look at the diff.

Caching
v2.4.6

31. 7. 2016

  • SQLiteJournal: filesystem permissions like ordinary file #29
  • SQLiteJournal: checking for extension pdo_sqlite is lazy, service cache.journal is created always

For the details you can have a look at the diff.

Latte
v2.4.1

31. 7. 2016

  • CoreMacros: translate macro does not use output buffer when possible #124
  • Snippets: disable snippet mode when rendering snippets BC break - interface changed
  • CoreMacros: {spaceless} works the same way as |strip and strips output in chunks
  • Revert "deprecated filter |strip", changed implementation to prevent backtrace limit errors
  • BlockMacros: fixed expandTokens in dynamic blocks (#125)
  • PhpWriter: fixed handling of uppercase class name
  • fixed compatibility with PHP 7.1

For the details you can have a look at the diff.

Application
v2.4.1

31. 7. 2016

  • SnippetBridge: added setSnippetMode; added snippet test (#150)
  • Presenter: removed static from refUrl variable (#80)
  • Presenter: fixed creating link with required persistent parameters (#148)
  • Presenter: flash key has to be string (fix for "Array to string conversion" notice) (#147)
  • ComponentReflection::parseAnnotations: fixed regexp quoting

For the details you can have a look at the diff.

Forms
v2.4.1

9. 7. 2016

  • added netteForms.min.js
  • netteForms: forms are initialized on DOMContentLoaded instead of onload
  • netteForms: fixed compatibility with IE 8
  • Container::addInteger() is nullable
  • TextInput: Reverts, validators FLOAT doesn't automatically sets type to 'number'
  • TextBase: added setNullable()
  • TextBase: emptyValue is removed from value in validate()
  • TextBase, TextInput, TextArea: refactoring, rendered value is built in getRenderedValue()
  • TextInput: rules are processed in addRule() instead of getControl() (is consistent with TextBase)

For the details you can have a look at the diff.

Tracy
v2.4.1

30. 6. 2016

  • bar.js: tracks XMLHttpRequest.getResponseHeader method #205
  • bar.js: Strip tags from window title when opening in new window (#203)
  • Bars: sends CSS with UTF-8 charset (#201)
  • TracyExtension: Don't dispatch Debugger in a CLI (#200)
  • bar.js: auto hide labels works after ajax

For the details you can have a look at the diff.

Forms
v2.4.0

30. 6. 2016

  • requires PHP 5.6
  • support for true optional controls via setRequired(FALSE) (BC break)
  • checks for missing setRequired(TRUE | FALSE)
  • Container: added addEmail() & addInteger()
  • Form: added isMethod(), beforeRender() & fireRenderEvents() and event $onRender
  • negative rules like ~$form::ABCD are deprecated. (Negatives for FILLED & EQUAL are BLANK & NOT_EQUAL)
  • controls: getOption('type') for distinguishing between them
  • TextInput: validators EMAIL, URL, INTEGER and FLOAT automatically sets type to 'email', 'url' or 'number' (BC break)
  • SelectBox, MultiSelectBox: added addOptionAttributes()
  • SelectBox: added isOk()
  • UploadControl: when file is uploaded with error, automatically shows error and isFilled() returns TRUE (BC break)
  • UploadControl: added isOK()
  • CheckboxList: added containerPrototype #92
  • DefaultFormRenderer: adds class 'text' to input types 'email' and 'number' (for back compatibility after 72127b1)
  • DefaultFormRenderer: wrapper for hidden fields changed from <div> to none
  • Form::addProtection() is always the first item
  • added BaseControl::enableAutoOptionalMode()
  • uses Nette\SmartObject & StaticClass

netteForms.js:

  • ability to show all error messages at once via Nette.showFormErrors() #65
  • displays all errors at once #65
  • removed support for IE =< 7
  • toggle handlers are added on body, uses addEventListener or attachEvent

Latte:

  • {label} is AUTO_EMPTY
  • <tag n:name> always uses getControlPart() and getLabelPart(), removed method_exists checking (BC break)
  • local $_form replaced with global $this->global->formsCurrent so it is not needed to pass $_form to included templates

For the details you can have a look at the diff.

Forms
v2.3.10

30. 6. 2016

  • BaseControl::setValue() marked as @Internal #114
  • Container: calls validate() only for IControl & Container #86
  • Rename Html:add() to Html:addHtml() to follow nette/utils#111 (#120)
  • netteForms.js: validates fucking HTML5 type 'number'

For the details you can have a look at the diff.

Database
v2.4.0

28. 6. 2016

  • requires PHP 5.6
  • NDBT: Added alias support #119
  • NDBT: added new method whereOr (#111)
  • NDBT: Added ability to specify left join conditions
  • NDBT: performance, prevents multiple parse of query parts by regexp (#131)
  • NDBT: queries with limit/offset are automatically ordered by primary key
  • NDBT: page() for $page < 1 returns no rows
  • drivers: applyLimit throws exception for negative values (BC break)
  • Improved checking of unique table name
  • Helpers::detectType() uses more strict type patterns
  • SqlPreprocessor: detects modes inside SQL string, before ?
  • Selection: fixed columns cache in repeated use of same selection
  • SqlBuilder: The same conditions with different parameter is not skipped #109, #14
  • PgSqlDriver::getTables() returns materialized views (#136)
  • SqlsrvDriver::formatDateTime(): format datetime by ISO 8601
  • Connection: fifth argument is deprecated
  • uses Nette\SmartObject & StaticClass

For the details you can have a look at the diff.

Application
v2.4.0

27. 6. 2016

  • requires PHP 5.6
  • PresenterComponent, Form: added $onAnchor
  • Route, SimpleRouter: by default keeps the currently used HTTP/HTTPS protocol (BC break) nette/nette#1196 nette/routing#14
  • Route: added support for scheme:// in mask
  • Route: add %host% variable (#140)
  • Route: Added variable for domain second level name (%sld%)
  • Route: support for optional [<module>]
  • RouteList: added warmupCache()
  • PresenterFactory: added possibility to configure mapping via array #101 #119
  • PresenterComponent: added redirectPermanent()
  • Presenter: support for direct setting layout file
  • Presenter: don't mix GET & POST params in AJAX when form is submitted nette/forms#33 nette/nette#1061 (#127)
  • Snippets: do not render snippets from a template which is included using includeblock macro
  • JsonResponse: sends utf-8 charset #120
  • UIMacros: {control} wrap arguments in array only when needed nette/nette#1206
  • uses Nette\SmartObject

deprecated, changed:

  • Presenter: argsToParams() and saveState() now distinguish between NULL and FALSE #107
  • PresenterComponentReflection::convertType() objects can be passed only to parameters without array or scalar type (without array / scalar default value) (BC break)
  • Form: uses underscored signal parameter _do only in POST forms
  • IRouter::SECURED is deprecated
  • Router::$defaultFlags and flag SECURED are deprecated nette/routing#13
  • PresenterComponent ⇒ Component
  • PresenterComponentReflection ⇒ ComponentReflection
  • Control::validateControl() & invalidateControl(), Presenter::backlink() and Template::registerHelper() trigger E_USER_DEPRECATED
  • Presenter: triggers notice when payload is send via terminate()
  • UIMacros: uses Latte providers uiControl and uiPresenter instead of $_control and $_presenter
  • composer: removed dependency on nette/security (#132)

For the details you can have a look at the diff.

Latte
v2.4.0

27. 6. 2016

  • requires PHP 5.4
  • generates pretty PHP code
  • implemented content type aware filters (triggers warning when mixing blocks/files in different contexts)
  • Implemented inline filters ($var|modifiers) #59
  • added operator in: $entry in [item1, item2] #27
  • {define} accepts parameters
  • added macro {import 'file'}
  • added macro {spaceless}
  • implemented {while} ... {/while $cond}
  • extremely fast filters
  • added |stripHtml
  • added |linebreaks
  • added |length for strings, arrays, Countable and Iterator #103
  • {syntax off} can be ended with {/syntax}
  • added Engine::addProvider(), runtime dependencies and options for macros
  • added SnippetDriver & ISnippetBridge, snippet refactoring
  • supports new operators <=> ** ...
  • {contentType} do not send header when is rendered to string or included #106
  • {capture} creates Latte\Runtime\Html in HTML content type (BC break)
  • new flags IMacro::AUTO_EMPTY and IMacro::AUTO_CLOSE
  • StringLoader: accepts array of strings
  • added |checkurl & |nocheck as aliases for |safeurl & |nosafeurl
  • added MacroNode::$innerContent nette/nette#1361
  • Engine::loadTemplate() invalidates opcode cache
  • Parser: exception 'Template is not valid UTF-8 stream' provides line number

deprecated, changed:

  • inline PHP <? ... ?> is deprecated
  • {includeblock} is deprecated
  • {? ...} is replaced with {php ...}
  • {use} and {status} are deprecated
  • |nl2br is deprecated
  • BlockMacros: <tag> in {snippet} is deprecated
  • {include |escape} and {block |escape} trigger warning about auto-escaping
  • {contentType} is allowed only in template header and in <script> due to #71
  • Latte\Template ⇒ Latte\Runtime\Template
  • Engine::getFilters() returns only name of filters
  • added ILoader::getUniqueId(), changed interface
  • MacroNode, HtmlNode: $isEmpty replaced with $empty
  • ILoader::getChildName()getReferredName() BC break, changed interface
  • uses $global accumulator instead of $_l and $_g
  • variable $template is deprecated
  • PhpWriter: deprecated support for constant names without underscore
  • Parser: removed support for ASP & Python syntax (BC break)

For the details you can have a look at the diff.

Di
v2.4.0

27. 6. 2016

  • requires PHP 5.6
  • implemented Fine Grained Dependencies
  • new autowiring approach, option autowired can contain list of classes (#84)
  • added support for setup syntax $prop = value and '$prop[]' = value
  • Compiler: allows to overwrite single arguments
  • ContainerLoader::loadFile() invalidates opcache
  • ContainerBuilder: split into ContainerBuilder and PhpGenerator
  • DIExtension: debugger is enabled by default
  • Compiler::parseServices: added @extension syntax for referencing services from a same extension (#85)
  • uses Nette\SmartObject & StaticClass
  • Compiler: support for removing services via 'name: no'

deprecated, changed:

  • Compiler: parseServices() and parseService() renamed to loadDefinition() and loadDefinitions() (#112)
  • di.accessors are deprecated
  • ServiceDefinition::setImplementType() and getImplementType() renamed to setImplementMode() & getImplementMode()
  • ContainerLoader::load() swapped arguments (BC break)
  • ContainerBuilder: setClassName() & getClassName() moved to Compiler (BC break)
  • Statement::setEntity() is deprecated
  • Compiler: option 'run' is deprecated, should be used as tag
  • Compiler: deprecated section inheritance child < parent (BC break)

For the details you can have a look at the diff.

Http
v2.4.0

25. 6. 2016

  • requires PHP 5.6
  • Implemented RFC 7239 - "Forwarded HTTP Extension" (#94)
  • Session: fixed error "Session object destruction failed" - update (#86)
  • RequestFactory: removes absolute URI from $_SERVER['REQUEST_URI'](issue #91) (#93)
  • RequestFactory: correctly detects scheme and port if the server is behind a trusted proxy #81 #4
  • IRequest: added OPTIONS and PATCH method constant (#95)
  • Response: do not send "Possible problem notice in CLI" #89
  • Response::setExpiration() removes header Pragma
  • RequestFactory: Fixed possible remoteAddr spoofing (issue #87)
  • FileUpload::move() do not suppress system warnings #82
  • HttpExtension, SessionExtension: added parameter $cliMode
  • Url: implements JsonSerializable nette/latte#78
  • HttpExtension: service http.context is deprecated
  • Session: use better detection for started session
  • uses Nette\SmartObject & StaticClass

For the details you can have a look at the diff.

Mail
v2.4.0

25. 6. 2016

  • requires PHP 5.6
  • Message::setHtmlBody() added new syntax for embedded files [[image.gif]] #29
  • added FallbackMailer #28
  • Message: added addInlinePart() #27
  • SmtpMailer: allow set stream context (#30)
  • uses Nette\SmartObject

For the details you can have a look at the diff.

Neon
v2.4.0

25. 6. 2016

  • requires PHP 5.6
  • added support for multilines strings nette/nette#1375
  • Decoder: added support for octal 0o777 and binary 0b11001 numbers #31
  • Decoder: generates DateTimeImmutable instead of DateTime (BC break)
  • Decoder: refactoring, added some constants

For the details you can have a look at the diff.

Bootstrap
v2.4.1

25. 6. 2016

  • Configurator: added setTimeZone()
  • Configurator: passes %consoleMode% to some extensions

For the details you can have a look at the diff.

Application
v2.3.13

17. 6. 2016

  • Route: add %host% variable (#140)
  • Route: Added variable for domain second level name (%sld%)
  • Route: fixed checking for missing [

For the details you can have a look at the diff.

Bootstrap
v2.4.0

17. 6. 2016

  • requires PHP 5.6.0
  • uses Nette\SmartObject & StaticClass
  • Configurator: removed ReflectionExtension
  • Configurator: extracted loadContainer() from createContainer()
  • Configurator: warns when deprecated 'nette' section is used
  • Configurator: removed parameter 'environment' (BC break)
  • Configurator: removed parameter 'container' (BC break)
  • Configurator::addConfig() sections are deprecated (BC break)

For the details you can have a look at the diff.

Bootstrap
v2.3.5

17. 6. 2016

  • TracyBridge: fixed highlighting of long lines nette/tracy#156
  • compatible only with nette/di 2.3.*

For the details you can have a look at the diff.

Caching
v2.5.0

17. 6. 2016

  • requires PHP 5.6
  • uses Nette\SmartObject
  • removed FileJournal (note that successor SQLiteJournal requires pdo-sqlite extension)
  • added bulk read support #2 #42
  • added NewMemcachedStorage using memcached extension #38
  • CacheMacro: compatibility with Latte 2.4, uses Latte provider 'cacheStorage' (and 'cacheStack')
  • CacheMacro: improved dependency on files

For the details you can have a look at the diff.

Caching
v2.4.5

17. 6. 2016

  • SQLiteJournal: lazy initialization

For the details you can have a look at the diff.

Component Model
v2.3.0

17. 6. 2016

  • requires PHP 5.6
  • uses Nette\SmartObject
  • Container::getComponent() optimization
  • Component::__construct() parameters $parent & $name are deprecated

For the details you can have a look at the diff.

Di
v2.3.11

17. 6. 2016

  • PhpReflection: fixed expanding to FQCN in bracketed namespace
  • added Compiler::setClassName()

For the details you can have a look at the diff.

Finder
v2.4.0

17. 6. 2016

  • requires PHP 5.6
  • uses Nette\SmartObject with explicit support for extension methods

For the details you can have a look at the diff.

Http
v2.3.7

17. 6. 2016

  • Session: removed duplicated warning about sent headers
  • Response::setExpiration() removes header Pragma

For the details you can have a look at the diff.

Neon
v2.3.5

17. 6. 2016

  • Decoder: fixed datetime regexp #29
  • Decoder: some regexps changed to constants

For the details you can have a look at the diff.

Php Generator
v2.4.0

17. 6. 2016

  • requires PHP 5.6
  • uses Nette\SmartObject & StaticClass
  • deprecated addDocument(), setDocuments() and getDocuments() and replaced with addComment(), setComment() and getComment()

For the details you can have a look at the diff.

Php Generator
v2.3.6

17. 6. 2016

  • Helpers::dump() support for infinite floats
  • added addComment(), setComment() and getComment()

For the details you can have a look at the diff.

Reflection
v2.4.0

17. 6. 2016

  • requires PHP 5.6
  • uses Nette\SmartObject & StaticClass
  • AnnotationsParser::parsePhp() Return also classes without annotations

For the details you can have a look at the diff.

Robot Loader
v2.4.0

17. 6. 2016

  • requires PHP 5.6
  • uses Nette\SmartObject

For the details you can have a look at the diff.

Robot Loader
v2.3.2

17. 6. 2016

  • typos, tests

For the details you can have a look at the diff.

Security
v2.3.2

17. 6. 2016

  • tests, typos

For the details you can have a look at the diff.

Security
v2.4.0

17. 6. 2016

  • requires PHP 5.6
  • uses Nette\SmartObject & StaticClass
  • Passwords: simplified with password_* API
  • Passwords::hash() removed option 'salt' (BC break)

For the details you can have a look at the diff.

Tracy
v2.4.0

17. 6. 2016

image

  • requires PHP 5.4.4 or newer
  • Bar & BlueScreen: displays AJAX requests
  • saving & restoring of toggles
  • Bar: is loaded in separated HTTP requests
  • Bar: info bar show HTTP method & response code
  • Bar: panel height fits to the viewport #184 (#188)
  • Bar: automatic labels hiding to conserve space #173
  • Bar: lazy rendering of panels (#160)
  • BlueScreen: added $maxDepth & $maxLength #114
  • BlueScreen: added panel with last muted error #133
  • BlueScreen: added renderToFile() #130
  • Bluescreen: rel=noopener for target=_blank
  • Debugger: added $editorMapping support #170
  • Debugger::$maxLen ⇒ $maxLength
  • Debugger::dispatch() starts session if is not started
  • Debugger: error exit code changed from 254 to 255 to be the same as native error code
  • added function bdump()
  • Helpers::getSource: shows PID in CLI logs
  • Tracy requires IE11+

For the details you can have a look at the diff.

Utils
v2.4.0

17. 6. 2016

  • requires PHP 5.6
  • added trait Nette\SmartObject, it differs from Nette\Object:
    • magic properties without @Property annotation are deprecated
    • accessing methods as properties is deprecated
    • extension methods are deprecated
    • magic @methods are deprecated
    • getReflection is deprecated
    • invoking closure in property is deprecated
  • added trait Nette\StaticClass
  • Html: renamed add() to addHtml(); added addText() (#111)
  • Html: deprecated "expanded" attribute data
  • Html: added attribute public accessor methods
  • Image::place() preserves the alpha channel
  • Strings::random() renamed to Random::generate()
  • Random: uses random_bytes() on PHP 7
  • FileSystem: added read()
  • ArrayList: added prepend()
  • Json::encode() uses by default JSON_PRESERVE_ZERO_FRACTION (BC break) #89
  • DateTime: implements JsonSerializable, formats date in ISO 8601 format accepted by JavaScript's Date object (BC break)
  • Filter & RecursiveFilter are deprecated

For the details you can have a look at the diff.

Utils
v2.3.10

17. 6. 2016

  • Html: added addHtml() and addText() (#111)

For the details you can have a look at the diff.

Utils
v2.3.9

31. 5. 2016

  • Object: removed alias for ObjectMixin, it may interfere with nette/deprecated, which creates alias Nette\ObjectMixin

For the details you can have a look at the diff.

Forms
v2.3.9

31. 5. 2016

  • UploadControl: added isOK()
  • Helpers::exportRules() skips empty branches
  • netteForms.js: Nette.noInit = true disables auto initialization

For the details you can have a look at the diff.

Database
v2.3.9

31. 5. 2016

  • Helpers::detectType() detects DATERANGE as text
  • Structure::analyzeForeignKeys() fixed lowercased name #122

For the details you can have a look at the diff.

Latte
v2.3.12

30. 5. 2016

  • Filter strip: fixed bug when input begins with <pre> <script> or <textarea>
  • Filters::escapeHtml escapes all entities
  • Compiler: pretty whitespace around comments
  • MacroTokens: added new operators <=> ** ...
  • Compiler: improved error messages

For the details you can have a look at the diff.

Tracy
v2.3.11

30. 5. 2016

  • Dumper: fixed missing escape for & (#187)
  • bar.js: fixed evaluating script tags in panels in window-mode (#174)
  • Bluescreen: rel=noopener for target=_blank
  • BlueScreen::highlightLine() line may be out of range #148
  • Bar: versioning of data in session #146 #149

For the details you can have a look at the diff.

Nette
v2.3.10

13. 4. 2016

  • composer.json: relaxed dependencies to ~2.3.x
  • Http\RequestFactory: Fixed possible remoteAddr spoofing (issue nette/http#87)
  • PresenterFactory: added possibility to configure mapping via array
  • Presenter: isLinkCurrent is compatible with PHP 7 typehints
  • RouteList: added warmupCache()
  • JsonResponse: sends utf-8 charset
  • DI\ContainerBuilder: unused parameters check when generating factory
  • DI\Compiler: support for removing services via 'name: no'
  • Mail\Message: improved regexp for seaching embedded images
  • SafeStream: unregister protocols in cleaner way
  • Html::__toString() prints better error message
  • Latte: exception 'Template is not valid UTF-8 stream' provides line number
  • Latte: supports PHP 7 coalesce operator
  • Tracy\Bar: added CPU usage to info panel
  • TracyExtension: added option 'showBar'

For the details you can have a look at: application, di, http + previous, mail, reflection, safe-stream, utils, latte, tracy.

Nette
v2.2.13

13. 4. 2016

This release marks the end of life of the Nette 2.2 series. All users are encouraged to upgrade to the current stable version.

  • composer.json: relaxed dependencies to ~2.2.x
  • Http\RequestFactory: Fixed possible remoteAddr spoofing (issue nette/http#87)
Mail
v2.3.5

13. 4. 2016

  • Message: improved regexp for seaching embedded images #25

For the details you can have a look at the diff.

Latte
v2.3.11

10. 4. 2016

  • Engine: reverted "throws CompileException when template contains parse error"
  • BlockMacros: store includingBlock flag in the template global storage when including file using includeblock macro
  • Parser: exception 'Template is not valid UTF-8 stream' provides line number
  • MacroTokens: added null coalesce operator; PhpWriter: quoteFilter recognizes null coalesce operator
  • ob_start() is protected against flush when error occurs

For the details you can have a look at the diff.

Application
v2.3.12

6. 4. 2016

  • PresenterFactory: added possibility to configure mapping via array; thanks @achse #101 #119
  • Presenter: isLinkCurrent is compatible with PHP 7 typehints #126
  • RouteList: added warmupCache()
  • JsonResponse: sends utf-8 charset #120
  • RoutingPanel: fixed displaying of empty mask ''

For the details you can have a look at the diff.

Di
v2.3.10

1. 4. 2016

  • PhpReflection::expandClassName() added support for @return $this
  • ContainerBuilder: unused parameters check when generating factory
  • Compiler: support for removing services via 'name: no'
  • PhpReflection::parseUseStatemenets(): class in use can contain leading \ #97
  • ContainerPanel: ob_start() is protected against flush when error occurs

For the details you can have a look at the diff.

Http
v2.2.10

1. 4. 2016

  • RequestFactory: Fixed possible remoteAddr spoofing (issue #87)
  • removed rarely used @property phpDoc
  • Fix FileUpload::move($dest) when low permission to chmod

For the details you can have a look at the diff.

Http
v2.3.6

1. 4. 2016

  • RequestFactory: Fixed possible remoteAddr spoofing (issue #87)
  • SessionPanel: ob_start() is protected against flush when error occurs

For the details you can have a look at the diff.

Reflection
v2.3.2

1. 4. 2016

  • AnnotationsParser::parsePhp() Return also classes without annotations
  • Method: self replaced with static

For the details you can have a look at the diff.

Safe Stream
v2.3.2

1. 4. 2016

  • SafeStream: unregister protocols in cleaner way #6

For the details you can have a look at the diff.

Utils
v2.3.8

1. 4. 2016

  • ArrayHash: fixed bug in ArrayIterator #103
  • Html::__toString() prints better error message
  • Image: ob_start() is protected to be not flushable

For the details you can have a look at the diff.

Tester
v1.7.1

19. 3. 2016

  • Tester itself is tested on AppVeyor (Windows CI)
  • Dumper
    • dumpException() stores strings when maxLength is exceeded
    • dumpException() improved searching for Assert method invocation
    • Dumper::color() uses simple color escape codes (AppVeyor compatibility)
  • Environment: removes output buffers on shutdown before error message is print
  • Assert::error() fixed that restore_error_handler() isn't working when called from the error handler which throws exception
  • FileMock: read/write modes behave more like ordinary filesystem

For more information see documentation and changelog.

Tracy
v2.3.10

29. 2. 2016

  • Debugger: flushes (not cleans) output buffers before Bar is rendered
  • Bar: added CPU usage to info panel #144
  • Dumper: fix possible E_NOTICE #141
  • TracyExtension: added option 'showBar'
  • ob_start() is protected against flush when error occurs

For the details you can have a look at the diff.

Nette
v2.3.9

22. 2. 2016

Application

  • Presenter::argsToParams() computes default values for mandatory parameters with built-in typehint
  • Presenter: throws exception when parameter has scalar type hint & no default value and argument is missing
  • Route: support for optional [<module>]
  • Template: better error message when Translator is not set

Caching

  • added NewMemcachedStorage

DI

  • DI\Container: added getServiceType()
  • DI\Compiler: InjectExtension is moved after extensions added by ExtensionsExtension
  • DI\Compiler: calls prepareClassList() after each beforeCompile()
  • DI\ContainerBuilder::removeAlias() removes aliases
  • DI\Helpers::autowireArguments() better error message for PHP7 and class name case mismatch

Forms

  • Form: added IS_NOT_IN
  • Forms\Helpers::exportRules() correctly exports empty arrays
  • Forms: allow Form::VALID only in the addConditionOn
  • FormMacros: better error messages
  • SelectBox: is not required when size > 1
  • Validator: pattern: supports back reference
  • __toString handles Throwable errors
  • netteForms.js: validator 'equal' compares values as PHP strings

HTTP

  • IRequest: added PATCH method constant
  • Fix FileUpload::move($dest) when low permission to chmod

Neon

  • Neon\Decoder: fixed entity value conversion in the entity chain

Latte

  • BlockMacros: fixed enabling snippetMode in the dynamic snippetArea
  • Latte\Parser::parseMacroTag() fixed extraction of modifier
  • Parser: || is not modifier separator
  • Engine: fixed CompileException sourceLine on PHP7
  • FileLoader: error message explaining touching, when touch() fails

Tracy

  • added Debugger::$showBar, can disable debug bar
  • Bluescreen: link to google opens in new window
  • Bar: add xdebug version to info panel
  • bar.js: MouseEvent.buttons is not supported by Safari
  • Dumper: support for general object exporter which is called for every object
  • Dumper: object exporters are called in order from most specific to general
  • Debugger: removes output buffer for Bar, Bluescreen and production error. It decides whether clean or flush output buffers.
  • Dumper: variable term=xterm-256color enables colors

For the details you can have a look at: application + previous + previous, caching, di + previous, finder, forms + previous, http, neon, latte + previous, tracy + previous.

This release marks the end of active support of the Nette 2.3 series. For one year only critical issues will be fixed.

Caching
v2.4.4

22. 2. 2016

  • added NewMemcachedStorage using memcached extension #38
  • CacheExtension: journal service SQLiteJournal is added only when extension pdo_sqlite is loaded
  • CacheMacro: better error message

For the details you can have a look at the diff.

Caching
v2.3.5

22. 2. 2016

  • added NewMemcachedStorage using memcached extension #38
  • CacheMacro: better error message

For the details you can have a look at the diff.

Tracy
v2.3.9

22. 2. 2016

  • bar.js: MouseEvent.buttons is not supported by Safari #134
  • Dumper: support for general object exporter which is called for every object
  • Dumper: object exporters are called in order from most specific to general
  • Debugger: removes output buffer for Bar, Bluescreen and production error. It decides whether clean or flush output buffers.
  • Dumper: variable term=xterm-256color enables colors

For the details you can have a look at the diff.

Latte
v2.3.10

19. 2. 2016

  • Parser: || is not modifier separator #100
  • Engine: fixed CompileException sourceLine on PHP7
  • FileLoader: error message explaining touching, when touch() fails

For the details you can have a look at the diff.

Forms
v2.3.8

19. 2. 2016

  • SelectBox: is not required when size > 1
  • Validator: pattern: supports back reference #104

For the details you can have a look at the diff.

Di
v2.3.9

19. 2. 2016

  • Compiler: calls prepareClassList() after each beforeCompile() #94

For the details you can have a look at the diff.

Application
v2.3.11

8. 2. 2016

  • Route: support for optional [<module>]
  • ApplicationExtension: do not initialize RoutingPanel if Tracy is not installed
  • Presenter: throws exception when parameter has scalar type hint & no default value and argument is missing #112
  • PresenterComponentReflection::combineArgs() throws exception when parameter has scalar type hint, no default value and argument is missing
  • PresenterComponentReflection::convertType() NULLs are not allowed

For the details you can have a look at the diff.

Tester
v1.7.0

8. 2. 2016

  • HtmlGenerator: not evaluated sources are counted as not covered #248
  • TestCase
    • data provider can return Traversable #272
    • error handler is registered only once #268
    • data provider file may start by dot
  • Dumper
    • print object hash #277
    • fixed dumping INF in PHP 7.0.2
    • toLine() improved empty array dump
    • dumpException() prints source line where Assert is called
  • Added support for PHPDBG SAPI #258
  • CodeCoverage: added support for PHPDBG collector as Xdebug alternative
  • DataProvider: added support for .php provider #280
  • Environment: variable term=xterm-256color enables colors
  • FileMock: added unlink()

For more information see documentation and changelog.

Tracy
v2.3.8

20. 1. 2016

  • added Debugger::$showBar, can disable debug bar #132 #83 #82
  • Bluescreen: link to google opens in new window
  • Bar: add xdebug version to info panel
  • Dumper::encodeString() is independent on iconv #126
  • Dumper: fixed dumping INF in PHP 7.0.2

For the details you can have a look at the diff.

Latte
v2.3.9

20. 1. 2016

  • BlockMacros: fixed enabling snippetMode in the dynamic snippetArea
  • Parser::parseMacroTag() fixed extraction of modifier nette/nette#1541

For the details you can have a look at the diff.

Neon
v2.3.4

20. 1. 2016

  • Decoder: fixed entity value conversion in the entity chain

For the details you can have a look at the diff.

Http
v2.3.4

20. 1. 2016

  • IRequest: added PATCH method constant
  • Fix FileUpload::move($dest) when low permission to chmod
  • removed rarely used @property phpDoc

For the details you can have a look at the diff.

Forms
v2.3.7

20. 1. 2016

  • Form: added IS_NOT_IN
  • Helpers::exportRules() correctly exports empty arrays #102
  • Rules: allow Form::VALID only in the addConditionOn #95 #101
  • FormMacros: better error messages
  • __toString handles Throwable errors
  • netteForms.js: validator 'equal' compares values as PHP strings

For the details you can have a look at the diff.

Finder
v2.3.2

20. 1. 2016

  • fixed typehints, FilesystemIterator -> RecursiveDirectoryIterator in filters

For the details you can have a look at the diff.

Di
v2.3.8

20. 1. 2016

  • Container: added getServiceType()
  • Compiler: InjectExtension is moved after extensions added by ExtensionsExtension #88
  • ContainerBuilder: service name must not be empty
  • ContainerPanel: removed color distinction
  • ContainerBuilder::removeAlias() removes aliases
  • ContainerBuilder::checkCase() checks interfaces too
  • Helpers::autowireArguments() better error message for PHP7 and class name case mismatch

For the details you can have a look at the diff.

Application
v2.3.9

20. 1. 2016

  • Presenter::argsToParams() computes default values for mandatory parameters with built-in typehint
  • Template: better error message when Translator is not set

For the details you can have a look at the diff.

Database
v2.3.8

3. 12. 2015

  • Selection::insert() fixed delimiting of FQN sequence name like 'aaa.bbb' #108
  • ActiveRow: optimization
  • tested on AppVeyor
  • __toString handles Throwable errors

For the details you can have a look at the diff.

Nette
v2.3.8

3. 12. 2015

  • compatiblity with PHP 7, supports Throwable etc…
  • Route: action is mandatory when defined as 'Presenter:'
  • UIMacros: better error message
  • TracyBridge: prints template name although is not file
  • Configurator: DI container cache key depends on PHP minor version
  • Cache: fixed deadlock when exception is thrown in fallback nette/caching#36
  • CacheMacro: added warning Modifiers are not allowed here
  • Selection::insert() fixed delimiting of FQN sequence name like 'aaa.bbb' nette/database#108
  • ActiveRow: optimization
  • tested on AppVeyor
  • DI: Compiler, CompilerExtension: shows suggestions for unexpected config items and extensions, better error message
  • FormMacros: added warnings Modifiers are not allowed here
  • Form::$onSuccess and Container::$onValidate must be array of Traversable
  • netteForms: updated regexp for URL and email validation #1539 #1540
  • SmtpMailer: used stream_socket_client instead of fsockopen nette/mail#19
  • Messages: fixed regexp for propagating links nette/mail#18
  • PhpGenerator: ClassType, Method: class types are not resolved when namespace is not specified nette/php-generator#21
  • Strings::toAscii() optimization
  • ObjectMixin::getSuggestion() better balance, replacement of prefix get|set|add|has|is costs 20
  • Callback::invokeSafe() removes function name also with arguments from error message
  • Latte Parser: used possessive quantifiers and atomic grouping (prevents 500 error)
  • Engine: throws CompileException when template contains parse error
  • CoreMacros: {else if} throws warning "Did you mean {elseif}"
  • Macroset: checks for allowed arguments
  • Latte Filters: improved HTML comments escaping nette/latte#87
  • Debugger: reserves some memory that is used when error "Allowed Memory Exhausted" occurs
  • Debugger: cleans output buffers on strictMode error
  • Debugger: error exit code changed from 254 to 255 for Error
  • Debugger: more readable exceptions in console
  • Helpers::editorUri default $line is 1; line is required by open-editor.js
  • Dumper: fixed live-dumping of floats like '1.0'
  • bluescreen: bigger exception/error message

For the details you can have a look at: application, bootstrap, caching, database, deprecated, di, forms, mail, php-generator, utils, latte + previous, tracy + previous.

Nette
v2.2.12

3. 12. 2015

  • compatiblity with PHP 7, supports Throwable etc…
  • Route: action is mandatory when defined as 'Presenter:'
  • Cache: fixed deadlock when exception is thrown in fallback
  • ControlGroup::add() validation fixed; typos
  • netteForms.js: validator 'equal' compares values as PHP strings
  • netteForms.js: fixed freeze browser on email validation #1540
  • netteForms: updated regexp for URL and email validation #1539
  • SmtpMailer: improved exception message on write failure
  • Neon Encoder: removed trailing spaces nette/neon#20
  • Neon Decoder: fixed support for hex numbers in PHP 7
  • Validator::is: fixed value overwriting
  • Random: use random_int() on PHP 7
  • Random: charlist now contains only unique characters
  • Random: rejects openssl_random_pseudo_bytes result when is not cryptographically strong
  • Random: skips microtime(), str_shuffle() and lcg_value() when cryptographically strong source is used
  • Image: fixed color allocation in palette-based images
  • Latte Parser: used possessive quantifiers and atomic grouping
  • Latte Filters: improved HTML comments escaping #87
  • Latte microoptimizations
  • BlockMacros: fixed triming of block nette/latte#83
  • BlockMacros: fixed child template without block nette/latte#80
  • added Helpers::getClass() class name can contain control characters in PHP 7
  • Helpers::editorUri default $line is 1; line is required by open-editor.js
  • Helpers::editorLink() improved way how file names are shortened

For the details you can have a look at: application, caching, forms, mail, neon, utils, latte + previous, tracy.

Nette
v2.1.12

3. 12. 2015

This release marks the end of life of the Nette 2.1 series. All users are encouraged to upgrade to the current stable version.

  • compatiblity with PHP 7, supports Throwable etc…
  • Image: fixed color allocation in palette-based images
  • Validator::is: fixed value overwriting
  • Route: action is mandatory when defined as 'Presenter:'
  • Control: global snippet changed from NULL to \0 to be distinguished from ''
  • UIMacros: {snippet} and {snippetArea} without name has name '' in both PHP 5 and PHP 7
  • Templating: improved HTML comments escaping nette/latte#87
  • Latte Parser: fixed substr_count() error on empty string
  • Debugger: support for PHP7 Throwable
  • __toString handles Throwable errors
  • Cache::save() handles Throwable errors
  • Cache: fixed deadlock when exception is thrown in fallback
  • Fix FileUpload::move($dest) when low permission to chmod
  • netteForms.js: updated to v2.2

For the details you can have a look at the diff.

Application
v2.3.8

3. 12. 2015

  • Route: action is mandatory when defined as 'Presenter:'
  • UIMacros: better error message
  • __toString and router serialization handles Throwable errors

For the details you can have a look at the diff.

Latte
v2.2.9

3. 12. 2015

  • Parser: used possessive quantifiers and atomic grouping
  • Engine::renderToString handles Throwable errors
  • Filters: improved HTML comments escaping #87
  • PhpWriter, CoreMacros: microoptimizations

For the details you can have a look at the diff.

Tracy
v2.2.9

3. 12. 2015

  • bar.css: fixed width of H1 #124
  • support for PHP7 Throwable
  • added Helpers::getClass() class name can contain control characters in PHP 7
  • Helpers::editorUri default $line is 1; line is required by open-editor.js
  • Helpers::editorLink() improved way how file names are shortened

For the details you can have a look at the diff.

Utils
v2.2.8

3. 12. 2015

  • Callback::invokeSafe() removes function name also with arguments from error message
  • Callback::invokeSafe() workaround for HHVM bug facebook/hhvm#4625
  • __toString and Callback::invokeSafe() handles Throwable errors
  • Validator::is: fixed value overwriting
  • Random: use random_int() on PHP 7
  • Random: charlist now contains only unique characters
  • Random: rejects openssl_random_pseudo_bytes result when is not cryptographically strong
  • Random: skips microtime(), str_shuffle() and lcg_value() when cryptographically strong source is used
  • Image: fixed color allocation in palette-based images

For the details you can have a look at the diff.

Neon
v2.2.6

3. 12. 2015

  • Encoder: removed trailing spaces #20
  • Decoder: fixed support for hex numbers in PHP 7

For the details you can have a look at the diff.

Mail
v2.2.5

3. 12. 2015

  • SmtpMailer: improved exception message on write failure

For the details you can have a look at the diff.

Forms
v2.2.8

3. 12. 2015

  • ChoiceControl, MultiChoiceControl: renamed 'range' to 'set' in exception
  • ControlGroup::add() validation fixed; typos
  • netteForms.js: validator 'equal' compares values as PHP strings
  • netteForms.js: fixed freeze browser on email validation nette/nette#1540
  • netteForms: updated regexp for URL and email validation nette/nette#1539
  • __toString handles Throwable errors

For the details you can have a look at the diff.

Caching
v2.2.7

3. 12. 2015

  • Cache: fixed deadlock when exception is thrown in fallback #36

For the details you can have a look at the diff.

Application
v2.2.9

3. 12. 2015

  • Route: action is mandatory when defined as 'Presenter:'
  • __toString handles Throwable errors
  • typos, fixed coding style

For the details you can have a look at the diff.

Php Generator
v2.3.5

2. 12. 2015

  • ClassType, Method: class types are not resolved when namespace is not specified [#21]

For the details you can have a look at the diff.

Latte
v2.3.8

2. 12. 2015

  • better error messages
  • Engine::renderToString handles Throwable errors
  • Engine: improved exception info when template contains parse error

For the details you can have a look at the diff.

Di
v2.3.7

2. 12. 2015

  • Compiler, CompilerExtension: shows suggestions for unexpected config items and extensions
  • ContainerBuilder: better message

For the details you can have a look at the diff.

Bootstrap
v2.3.4

30. 11. 2015

  • TracyBridge: prints template name although is not file
  • Configurator: DI container cache key depends on PHP minor version

For the details you can have a look at the diff.

Caching
v2.3.4

30. 11. 2015

  • Cache: fixed deadlock when exception is thrown in fallback #36
  • Cache::save() handles Throwable errors
  • CacheMacro: added warning Modifiers are not allowed here

For the details you can have a look at the diff.

Caching
v2.4.2

30. 11. 2015

  • SQLite: Removed connection persistence.
  • FileJournal: deprecated

For the details you can have a look at the diff.

Caching
v2.4.3

30. 11. 2015

  • SQLiteJournal: optimizations #34
  • SQLiteJournal: fixed bug with keys with multiple priority #35
  • Cache: fixed deadlock when exception is thrown in fallback #36
  • Cache::save() handles Throwable errors
  • CacheMacro: added warning Modifiers are not allowed here

For the details you can have a look at the diff.

Forms
v2.3.6

30. 11. 2015

  • FormMacros: added warnings Modifiers are not allowed here
  • Form::$onSuccess and Container::$onValidate must be array of Traversable
  • netteForms: updated regexp for URL and email validation nette/nette#1539 nette/nette#1540

For the details you can have a look at the diff.

Mail
v2.3.4

30. 11. 2015

  • SmtpMailer: used stream_socket_client instead of fsockopen #19
  • Messages: fixed regexp for propagating links #18

For the details you can have a look at the diff.

Latte
v2.3.7

30. 11. 2015

  • Parser: used possessive quantifiers and atomic grouping
  • Engine: throws CompileException when template contains parse error
  • CoreMacros: {else if} throws warning "Did you mean {elseif}"
  • Macroset: checks for allowed arguments
  • Filters: improved HTML comments escaping #87
  • Helpers::getSuggestion() better balance. Replacement is more expensive than insertion/deletion.

For the details you can have a look at the diff.

Utils
v2.3.7

30. 11. 2015

  • Strings::toAscii() optimization
  • ObjectMixin::getSuggestion() better balance, replacement of prefix get|set|add|has|is costs 20
  • ObjectMixin::getSuggestion() better balance. Replacement is more expensive than insertion/deletion.
  • __toString and Callback::invokeSafe() handles Throwable errors
  • Callback::invokeSafe() removes function name also with arguments from error message

For the details you can have a look at the diff.

Tracy
v2.3.7

30. 11. 2015

  • compatible with PHP 7
  • bar.css: fixed width of H1 #124
  • Debugger: allowed using stream wrappers as log directory #125
  • Debugger: reserves some memory that is used when error "Allowed Memory Exhausted" occurs
  • Bar, Debugger: handles Throwable errors
  • Debugger: cleans output buffers on strictMode error
  • Debugger: error exit code changed from 254 to 255 for Error
  • Debugger: more readable exceptions in console
  • Helpers::getSuggestion() better balance. Replacement is more expensive than insertion/deletion.
  • Helpers::editorUri default $line is 1; line is required by open-editor.js

For the details you can have a look at the diff.

Tracy
v2.3.6

28. 10. 2015

  • Dumper: fixed live-dumping of floats like '1.0'
  • dumper.js: fixed collapseCount counting
  • bluescreen: added exception/error message to <title>
  • bluescreen: bigger exception/error message
  • Helpers::improveException() ignores namespace before function

For the details you can have a look at the diff.

Tester
v1.6.1

26. 10. 2015

This release fixes issue of TestCase::tearDown() double calling:

  • TestCase: ignore muted errors in testMethod() #266

For more information see documentation and changelog.

Tester
v1.6.0

19. 10. 2015

  • Assert: added noError() assertion #250
  • Assert: added custom fail descriptions
  • TestCase: annotation @throws is applied to testMethods() only, not to setUp() nor tearDown() (BC break) #238
  • TestCase: is not masking setUp() and tearDown() exceptions
  • TestCase: tearDown() is called even on error in test method #254 #255
  • CliTester: explicit html_errors=off for TAP & Junit outputs #256
  • Dumper::toPhp() better support for anonymous classes and Closures

For more information see documentation and changelog.

Nette
v2.3.7

12. 10. 2015

„Did you mean?“ feature

  • Database Row, ActiveRow: shows suggestions for undeclared columns
  • Tracy: shows suggestions for some errors and notices (see)
  • Nette\Object: suggestions for undeclared methods and properties (see)
  • Latte: missing macros and filters
  • component Container: shows suggestions for missing components

Application

  • RoutingPanel: redesign, added HTTP method
  • Presenter: better exception messages
  • PresenterComponentReflection::convertType() support for all built-in PHP typehints
  • PresenterComponentReflection::convertType() converts NULL to appropriate type
  • added Nette\Application\Responses\CallbackResponse
  • ErrorPresenter: returns CallbackResponse
  • removed rarely used @property phpDoc

Database

  • Selection: Fixed infinite loop when accessing to deleted row
  • SqlsrvDriver: support for limit and offset on SQL Server 2012
  • drivers: fixed applyLimit for $limit = 0
  • drivers: applyLimit() throws exception for negative values (but not when you use page())
  • Selection: fixed bug with zero in primary key
  • Selection: referenced cache cleared only for root selection (not in GroupedSelection)
  • SqlsrvDriver::applyLimit(): supports keywords DISTINCT and ALL after SELECT
  • SqlBuilder: removed "AS" keyword in JOINs
  • Structure: added columns analyze for views

DI

  • ContainerBuilder: added support for PHP7 type hints
  • DecoratorExtension: implemented decorating by factory interface
  • PhpExtension: NULLs are skipped.
  • NeonAdapter: fixed dump() for data with simple Nette\DI\Statement

Forms

  • CheckboxList: added containerPrototype and itemLabelPrototype
  • FormMacros: added warnings Modifiers are not allowed here
  • Form::$onSuccess and Container::$onValidate must be array or Traversable
  • netteForms: updated regexp for URL and email validation

Mail

  • Message: propagates links target from HTML message to plaintext version

PhpGenerator

  • added support for anonymous classes
  • Method, Parameter: added support for PHP 7 type hints
  • Method, Parameter, Property: added constructors
  • PhpNamespace::unresolveName() supports for built-in types and PHP 7 types

Tracy

  • Debugger::barDump() dumps basic location by default
  • Helpers::editorLink() improved way how file names are shortened
  • Logger: fixed severity in formatMessage()
  • fixes for PHP 7, added new examples

Latte

  • added warnings: Modifiers are not allowed here
  • BlockMacros: fixed trimming of block
  • BlockMacros: fixed child template without block
  • Parser: fixed substr_count() error on empty string

Utils

  • Random: use random_int() on PHP 7
  • Random: charlist now contains only unique characters
  • Random: rejects openssl_random_pseudo_bytes result when it is not cryptographically strong
  • Image: fixed color allocation in palette-based images
  • ObjectMixin: added getExtensionMethods()
  • ObjectMixin: added warning when method-getter is used by mistake (for getters without parameters) (BC break) See note.

Sandbox

  • Error & Error4xx presenters

For the details you can have a look at: application, component-model, database + previous, di, forms, mail, php-generator + previous, utils + previous, latte, tracy.

Database
v2.3.7

9. 10. 2015

  • Selection: Fixed infinite loop when accessing to deleted row
  • SqlsrvDriver: support for limit and offset on SQL Server 2012
  • drivers: fixed applyLimit for $limit = 0
  • drivers: applyLimit() throws exception for negative values (but not when you use page())

For the details you can have a look at the diff.

Utils
v2.3.6

9. 10. 2015

ObjectMixin: added warning when method-getter is used by mistake (for getters without parameters) (BC break)

Note: This release will trigger warning Did you forgot parentheses? when you call a method without parentheses, i.e. foreach ($form–>getErrors as $error).

This notation is also used to create a callback. If you really want to create a callback, i.e. parentheses have not been forgotten and they are missing intentionally, replace this notation with a native PHP callback, for example [$form, 'getErrors']. Alternatively in PHP 5.3 you can use shutup operator: @$form->getErrors.

For the details you can have a look at the diff.

Latte
v2.2.8

9. 10. 2015

  • Parser: fixed substr_count() error on empty string #79
  • BlockMacros: fixed triming of block #83
  • BlockMacros: fixed child template without block #80
Latte
v2.3.6

9. 10. 2015

  • added suggestions for Object, macros, filters and blocks
  • added warnings: Modifiers are not allowed here
  • BlockMacros: fixed triming of block #83
  • BlockMacros: fixed child template without block #80
  • Parser: fixed substr_count() error on empty string #79
  • Object: slightly changed exception messages, added __callStatic
  • some fixes

For the details you can have a look at the diff.

Application
v2.3.7

9. 10. 2015

  • RoutingPanel: redesign, added HTTP method
  • Presenter: better exception messages
  • PresenterComponentReflection::convertType() support for all builtin PHP typehints
  • PresenterComponentReflection::convertType() converts NULL to appropriate type
  • added CallbackResponse
  • ErrorPresenter: returns CallbackResponse
  • UIMacros: added warning Modifiers are not allowed here
  • removed rarely used @property phpDoc

For the details you can have a look at the diff.

Component Model
v2.2.4

9. 10. 2015

  • Container: shows suggestions for missing components

For the details you can have a look at the diff.

Mail
v2.3.3

9. 10. 2015

  • Message: propagates links target from HTML message to plaintext version

For the details you can have a look at the diff.

Php Generator
v2.3.4

9. 10. 2015

  • ClassType::from() fixes for ReflectionObject
  • added support for anonymous classes
  • Helpers::dump() throws exception for closures
  • PhpFile::__toString(): brackets are no longer set when generating classes from global namespace only

For the details you can have a look at the diff.

Tracy
v2.3.5

9. 10. 2015

  • Debugger: shows suggestions for some errors and notices (see)
  • Debugger::barDump() dumps basic location by default
  • Helpers::editorLink() improved way how file names are shortened
  • Logger: fixed severity in formatMessage()
  • fixes for PHP 7
  • added new examples

For the details you can have a look at the diff.

Di
v2.3.6

14. 9. 2015

  • ContainerBuilder: added support for PHP7 type hints
  • DecoratorExtension: implemented decorating by factory interface
  • PhpExtension: NULLs are skipped.
  • NeonAdapter: fixed dump() for data with simple Nette\DI\Statement

For the details you can have a look at the diff.

Php Generator
v2.3.3

14. 9. 2015

  • Method, Parameter: added support for PHP 7 type hints
  • Method, Parameter, Property: added and used constructors
  • PhpNamespace::unresolveName() supports for build-in types
  • ClassType: prints one 'use' keyword per trait
  • Method::setParameters() & ClassType::setProperties() & setMethods() retain names in keys

For the details you can have a look at the diff.

Database
v2.3.6

14. 9. 2015

  • Row, ActiveRow: shows suggestions for undeclared columns
  • Selection: fixed bug with zero in primary key
  • Selection: referenced cache cleared only for root selection (not in GroupedSelection)
  • SqlsrvDriver::applyLimit(): supports keywords DISTINCT and ALL after SELECT
  • SqlBuilder: removed "AS" keyword in JOINs
  • Structure: added columns analyze for views

For the details you can have a look at the diff.

Utils
v2.3.5

14. 9. 2015

  • ObjectMixin: shows suggestions for undeclared members
  • ObjectMixin: added getExtensionMethods()
  • Random: use random_int() on PHP 7
  • Random: charlist now contains only unique characters
  • Random: rejects openssl_random_pseudo_bytes result when is not cryptographically strong
  • Random: skips microtime(), str_shuffle() and lcg_value() when cryptographically strong source is used
  • Image: fixed color allocation in palette-based images

For the details you can have a look at the diff.

Nette
v2.3.5

23. 8. 2015

Nette Framework 2.3.5 has just been released.

  • Presenter: fixed signal in POST in ajax request
  • Selection: added fetchField()
  • Structure: added rebuild when table not exists in cache
  • Structure: throws proper exception when table doesn't exists
  • Neon\Encoder: added support for entity chaining
  • PhpGenerator, added support for build-in types callable, self, parent, better whitespace usage
  • Strings: added const for trim method whitespace charset
  • Json: accept whitespace-surrounded "null" for decode() as it is a valid JSON text
  • Image: fix exception message
  • Html, Latte: chars '<' in attributes are encoded in XHTML
  • Latte\Engine: added warmupCache()
  • Debugger Bar: fixed dragging in Firefox when cursor leaves the browser window
  • BlueScreen: collapse paths usable with files
  • Logger: better readability of exception file name

For the details you can have a look at the diffs: application, database, neon, php-generator, utils, latte, tracy.

Neon
v2.3.3

23. 8. 2015

  • Encoder: added support for entity chaining #21

For the details you can have a look at the diff.

Database
v2.3.5

23. 8. 2015

  • Selection: emptyResultSet invalidates referenced cache
  • Selection: added fetchField()
  • Structure: added rebuild when table not exists in cache - #79
  • Structure: throws proper exception when table doesn't exists - #79

For the details you can have a look at the diff.

Application
v2.3.5

23. 8. 2015

  • Presenter: fixed signal in POST in ajax request
  • Presenter: added test for initGlobalParameters
  • travis: migrating to container-based infrastructure

For the details you can have a look at the diff.

Application
v2.2.8

23. 8. 2015

  • Presenter: fixed signal in POST in ajax request
  • Presenter: added test for initGlobalParameters

For the details you can have a look at the diff.

Application
v2.2.7

23. 8. 2015

  • ErrorPresenter: exception is logged to 'exception.log'
  • Control: global snippet changed from NULL to \0 to be distinguished from ''
  • UIMacros: {snippet} and {snippetArea} without name has name '' in both PHP 5 and PHP 7, fixed test
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Bootstrap
v2.3.3

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Bootstrap
v2.3.2

23. 8. 2015

  • Configurator: DecoratorExtension is called after ApplicationExtension to allow decorate presenters

For the details you can have a look at the diff.

Bootstrap
v2.3.1

23. 8. 2015

  • Configurator: param tempDir is passed to ApplicationExtension

For the details you can have a look at the diff.

Bootstrap
v2.2.6

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Bootstrap
v2.2.5

23. 8. 2015

  • NetteExtension: avoid autoloading of FileStorage when not required
  • NetteExtension: headers are not send and session is not started in CLI mode
  • Configurator::setDebugMode() accepts only array|string|bool
  • Configurator: TracyBridge is called in enableDebugger()
  • TracyBridge: fixed quirky htmlspecialchars in PHP 5.6

For the details you can have a look at the diff.

Caching
v2.4.1

23. 8. 2015

  • SQLiteJournal: Atomic operations added back [Rel #25]
  • SQLiteJournal: 'Too many variables' bug fixed #25
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Caching
v2.3.3

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Caching
v2.2.6

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Component Model
v2.2.3

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Component Model
v2.2.2

23. 8. 2015

  • Component: attached() is called only once for each object #2

For the details you can have a look at the diff.

Database
v2.3.4

23. 8. 2015

  • Helpers::loadFromFile() uses native exec() without logging and creating result set
  • Selection: fixed exception namespace
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Database
v2.3.3

23. 8. 2015

  • Selection: Related prototype depends on specific cache key

For the details you can have a look at the diff.

Database
v2.3.2

23. 8. 2015

  • ResultSet: parameters are passed to statement via bindValue with correct type #63
  • Selection::fetchAssoc fix
  • Table: fixed infinite recursion when using StaticConventions and trying to access undefined column

For the details you can have a look at the diff.

Database
v2.3.1

23. 8. 2015

  • ActiveRow: added support to update primary columns via update() #57 #58
  • added support for objects DateInterval via ISupplementalDriver::formatDateInterval() #56
  • Revert "SqlPreprocessor: fixed IN (?) with empty array"
  • Table: fixed Selection::getReferencedTable() always refetching when primary is NULL

For the details you can have a look at the diff.

Database
v2.2.5

23. 8. 2015

  • Helpers::loadFromFile() uses native exec() without logging and creating result set
  • Selection: Related prototype depends on specific cache key
  • Table: fixed Selection::getReferencedTable() always refetching when primary is NULL
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Database
v2.2.4

23. 8. 2015

  • SqlBuilder: uses delimited table name #49
  • ConnectionPanel: generates unique ID across requests
  • ConnectionPanel refactoring, used templates
  • Connection: undeprecated some methods, partially reverts commit 8818410
  • PgSqlDriver: fixed formatLike() #46
  • SqlBuilder: table and column names in joins can begin with number or underscore
  • ConnectionPanel: fixed quirky htmlspecialchars in PHP 5.6

For the details you can have a look at the diff.

Di
v2.3.5

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Di
v2.3.4

23. 8. 2015

  • ContainerBuilder::removeDefinition() fixed keys in $classes #72
  • ContainerBuilder: removeDefinition removes definition from $classes #71
  • Compiler: fixed "array to string conversion" while service name is generated

For the details you can have a look at the diff.

Di
v2.3.3

23. 8. 2015

  • ContainerBuilder: fixed reseting of $currentService #70

For the details you can have a look at the diff.

Di
v2.3.2

23. 8. 2015

  • InjectExtension: fixed exception type

For the details you can have a look at the diff.

Di
v2.3.1

23. 8. 2015

  • Support for inject methods and properties moved to InjectExtension
  • ContainerPanel: display compilation time when container is compiled
  • Compiler::addExtensions disallows to replace extensions
  • Compiler: extension without parameters is allowed now

For the details you can have a look at the diff.

Di
v2.2.6

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Di
v2.2.5

23. 8. 2015

  • ContainerBuilder: fixed reseting of $currentService #70

For the details you can have a look at the diff.

Di
v2.2.4

23. 8. 2015

  • ContainerFactory: fixed thread-safety issues
  • Compiler: service name must not be "0"

For the details you can have a look at the diff.

Finder
v2.2.2

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Finder
v2.3.1

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Forms
v2.3.4

23. 8. 2015

  • Helpers::createSelectBox: added parameter $selected
  • ChoiceControl, MultiChoiceControl: added $checkAllowedValues #28
  • ChoiceControl, MultiChoiceControl: renamed 'range' to 'set' in exception
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Forms
v2.3.3

23. 8. 2015

  • FormMacros: added support for <label n:name /> Checkbox label with caption rendering
  • CheckboxList, RadioList: fixed rendering of <label n:name>
  • netteForms.js: fixed toggle in IE < 9
  • netteForms.js: works only with Nette forms #82

For the details you can have a look at the diff.

Forms
v2.3.2

23. 8. 2015

  • netteForms.js: toggleControl() binds events on all inputs #75
  • netteForms.js: fixed getValue for radio list #73 and multi select box
  • FormMacros: <label n:name></label> is rendered without caption, fixes 6d16631
  • Form::fireEvents() calls onError even after last onSuccess handler
  • RadioList & CheckboxList: getControlPart() normalizes key type #76 #78

For the details you can have a look at the diff.

Forms
v2.3.1

23. 8. 2015

  • netteForms.js: used form.elements.namedItem(…) instead of form.elements[…] #72
  • netteForms: supports Common.JS and AMD loading #69
  • FormMacros: added support for <button>
  • FormMacros: empty <label n:name /> displays caption, as {label /}

For the details you can have a look at the diff.

Forms
v2.2.7

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style
  • netteForms.js: fixed toggle in IE < 9

For the details you can have a look at the diff.

Forms
v2.2.6

23. 8. 2015

  • netteForms.js: toggleControl() binds events on all inputs #75
  • netteForms.js: fixed getValue for radio list #73 and multi select box
  • Form::fireEvents() calls onError even after last onSuccess handler
  • RadioList & CheckboxList: getControlPart() normalizes key type #76 #78
  • netteForms.js: used form.elements.namedItem(…) instead of form.elements[…] #72

For the details you can have a look at the diff.

Forms
v2.2.5

23. 8. 2015

  • netteForms.js: fixed bug in toggleControl from 8871974
  • netteForms.js: Fixed "Uncaught TypeError: Cannot read property 'tagName' of undefined"
  • netteForms.js: validator 'float' converts value to float, 'url' prepends 'https://' nette/nette#1430 nette/nette#1462
  • netteForms.js: ignore fieldsets (and eventually other non-control elements) in form.elements
  • netteForms.js: add webalize() support for ô ä ľ characters
  • netteForms.js: fixed length validation on checkbox list with exactly 1 item #59
  • netteForms.js: validator 'filled' for [] returns false
  • netteForms.js: textarea is not trimmed
  • DefaultFormRenderer: automatically sets setOption('rendered', TRUE)
  • Helpers: fixed quirky htmlspecialchars in PHP 5.6

For the details you can have a look at the diff.

Http
v2.3.3

23. 8. 2015

  • Session: session ID is not regenerated when not set
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Http
v2.3.2

23. 8. 2015

  • Helpers: fixed ipMatch() for IPv4 #61

For the details you can have a look at the diff.

Http
v2.3.1

23. 8. 2015

  • Url: fixed isEqual() for same param values & regular sorting on numbers

For the details you can have a look at the diff.

Http
v2.2.8

23. 8. 2015

  • Helpers: fixed ipMatch() for IPv4 #61
  • Session: session ID is not regenerated when not set
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Http
v2.2.7

23. 8. 2015

  • Url: fixed isEqual() for same param values & regular sorting on numbers

For the details you can have a look at the diff.

Http
v2.2.6

23. 8. 2015

  • HttpRequest: drops non-UTF8 strings, but control characters only removes
  • Session: fetch session cookie from Http\IRequest
  • Session: fix handling exceptions thrown from SessionHandlerInterface
  • Session::configure() do not override setHandler #15 #18
  • SessionPanel: fixed quirky htmlspecialchars in PHP 5.6
  • Response: fixed quirky htmlspecialchars in PHP 5.6
  • Url: fixed canonicalize()

For the details you can have a look at the diff.

Latte
v2.3.4

23. 8. 2015

  • Engine: added warmupCache() #74
  • Filters::htmlAttributes: chars '<' in attributes are encoded in XHTML
  • travis: migrating to container-based infrastructure

For the details you can have a look at the diff.

Latte
v2.2.7

23. 8. 2015

  • Filters::htmlAttributes: chars '<' in attributes are encoded in XHTML

For the details you can have a look at the diff.

Latte
v2.2.6

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • BlockMacros: {snippet} and {snippetArea} without name has name '' in both PHP 5 and PHP 7
  • improved coding style

For the details you can have a look at the diff.

Mail
v2.2.4

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Neon
v2.3.2

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style
  • Decoder: fixed support for hex numbers in PHP 7

For the details you can have a look at the diff.

Neon
v2.3.1

23. 8. 2015

  • Encoder: removed trailing spaces #20

For the details you can have a look at the diff.

Neon
v2.2.5

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Php Generator
v2.3.2

23. 8. 2015

  • Method::from() added support for closures & global functions
  • fixed inconsistencies between 'nullable string' and 'string' properties
  • fixed content for properties $documents
  • ClassType::__toString() refactoring
  • Method, Parameter: added support for build-in types callable, self, parent
  • Method, ClassType: better whitespace usage

For the details you can have a look at the diff.

Php Generator
v2.3.1

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Php Generator
v2.2.3

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Php Generator
v2.2.2

23. 8. 2015

  • added Helpers::MAX_DEPTH
  • phpDocs: new line after multiline docs removed

For the details you can have a look at the diff.

Reflection
v2.2.2

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Reflection
v2.3.1

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Robot Loader
v2.2.2

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Robot Loader
v2.3.1

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Safe Stream
v2.3.1

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • typos

For the details you can have a look at the diff.

Safe Stream
v2.2.1

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • typos

For the details you can have a look at the diff.

Security
v2.2.4

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Security
v2.3.1

23. 8. 2015

  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Security
v2.2.3

23. 8. 2015

For the details you can have a look at the diff.

Tokenizer
v2.2.3

23. 8. 2015

  • improved coding style
  • travis: migrating to container-based infrastructure

For the details you can have a look at the diff.

Tracy
v2.2.8

23. 8. 2015

  • bar.js: fixed dragging in Firefox when cursor leaves the browser window
  • bar.css: added text-shadow reset
  • travis: migrating to container-based infrastructure
  • improved coding style

For the details you can have a look at the diff.

Tracy
v2.3.4

23. 8. 2015

  • bar.js: fixed dragging in Firefox when cursor leaves the browser window
  • BlueScreen: collapse paths usable with files [Closes #115]
  • Logger: better readability of exception file name
  • travis: migrating to container-based infrastructure

For the details you can have a look at the diff.

Utils
v2.2.5

23. 8. 2015

  • Image::place() fixed unexpected output with transparency image #56
  • Image: better exception message [Closes #42]
  • Strings::webalize() converts non-breaking space … ™ ® etc in glibc mode
  • Validators::isUrl: backslashes in regexp escaped
  • Validators::isUrl: underscored subdomain support added
  • Strings::toAscii() removes \x80-\xFF chars
  • Strings::toAscii() converts degree sign to ^
  • Html: fixed quirky htmlspecialchars in PHP 5.6

For the details you can have a look at the diff.

Utils
v2.2.6

23. 8. 2015

  • Strings::toAscii() uses //IGNORE

For the details you can have a look at the diff.

Utils
v2.2.7

23. 8. 2015

  • Html: chars '<' in attributes are encoded in XHTML
  • travis: migrating to container-based infrastructure
  • Random: /dev/urandom is not used on Windows
  • improved coding style

For the details you can have a look at the diff.

Utils
v2.3.1

23. 8. 2015

  • Strings::toAscii() uses //IGNORE

For the details you can have a look at the diff.

Utils
v2.3.2

23. 8. 2015

  • Strings: added after() and before() (thanks @icaine) [Closes #20]
  • Arrays: added pick() - picks element from the array by key and return its value [Closes #54]
  • Random: fixed generating zero-length string with mcrypt
  • Image::fromString() undeprecated argument $format

For the details you can have a look at the diff.

Utils
v2.3.3

23. 8. 2015

  • Callback::invokeSafe() removes function name from error message
  • Callback::invokeSafe() workaround for HHVM bug facebook/hhvm#4625
  • Random: /dev/urandom is not used on Windows
  • improved coding style
  • travis: migrating to container-based infrastructure

For the details you can have a look at the diff.

Utils
v2.3.4

23. 8. 2015

  • Strings: added const for trim method whitespace charset
  • Json: accept whitespace-surrounded "null" for decode() as it is a valid JSON text
  • Image: fix exception message [Closes #71]
  • Html: chars '<' in attributes are encoded in XHTML

For the details you can have a look at the diff.

Nette
v2.2.11

23. 8. 2015

Nette Framework 2.2.11 has just been released.

  • improved coding style
  • Presenter: fixed signal in POST in ajax request
  • Presenter: added test for initGlobalParameters
  • netteForms.js: fixed toggle in IE < 9
  • Html & Latte: chars '<' in attributes are encoded in XHTML
  • Random: /dev/urandom is not used on Windows
  • Tracy: fixed dragging in Firefox when cursor leaves the browser window
  • travis: migrating to container-based infrastructure

For the details you can have a look at the diffs: application, bootstrap, caching, di, finder, forms, mail, neon, php-generator, reflection, robot-loader, security, utils, latte, tracy.

Nette
v2.1.11

15. 8. 2015

  • Html: chars '<' in attributes are encoded in XHTML
  • Helpers: fixed ipMatch() for IPv4 [closes nette/http#61]
  • Random: /dev/urandom is not used on Windows
  • bar.js: fixed dragging in Firefox when cursor leaves the browser window
  • ErrorPresenter: exception is logged to 'exception.log'
  • improved coding style

For the details you can have a look at the diff.

Nette
v2.3.4

20. 7. 2015

Nette Framework 2.3.4 has just been released.

  • improved coding style
  • travis: migrating to container-based infrastructure
  • travis: testing with lowest dependencies
  • Control: global snippet changed from NULL to \0 to be distinguished from ''
  • UIMacros: {snippet} and {snippetArea} without name has name '' in both PHP 5 and PHP 7
  • UIMacros: runtime helpers moved to UIRuntime
  • ApplicationExtension: missing RobotLoader throws exception
  • Database\Helpers::loadFromFile() uses native exec() without logging and creating result set
  • Selection: fixed exception namespace
  • Forms\Helpers::createSelectBox: added parameter $selected
  • ChoiceControl, MultiChoiceControl: added $checkAllowedValues
  • ChoiceControl, MultiChoiceControl: renamed 'range' to 'set' in exception
  • Session: session ID is not regenerated when not set
  • added Mail\SendException
  • Callback::invokeSafe() workaround for HHVM bug facebook/hhvm#4625
  • Callback::invokeSafe() removes function name from error message
  • Random: /dev/urandom is not used on Windows
  • PhpWriter, CoreMacros: microoptimizations
  • Tracy: support for PHP7 Throwable
  • Logger::getExceptionFile() is public
  • Bar: live data for previous request are stored in session
  • bar.css: added text-shadow reset

For the details you can have a look at the diffs: application, bootstrap, caching, component-model, database, deprecated, di, finder, forms, http, mail, neon, php-generator, reflection, robot-loader, safe-stream, security, tokenizer, utils, latte, tracy.

Nette
v2.2.10

20. 7. 2015

Nette Framework 2.2.10 has just been released.

  • improved coding style
  • ErrorPresenter: exception is logged to 'exception.log'
  • Control: global snippet changed from NULL to \0 to be distinguished from ''
  • UIMacros: {snippet} and {snippetArea} without name has name '' in both PHP 5 and PHP 7
  • Component: attached() is called only once for each object
  • Database\Helpers::loadFromFile() uses native exec() without logging and creating result set
  • Selection: Related prototype depends on specific cache key
  • Table: fixed Selection::getReferencedTable() always refetching when primary is NULL
  • Session: session ID is not regenerated when not set
  • Http\Helpers: fixed ipMatch() for IPv4

For the details you can have a look at the diffs: application, component-model, database, http, safe-stream, tokenizer, latte.

Tester
v1.5.0

16. 7. 2015

  • support for PHP7 Throwable
  • added Job::getErrorOutput() & PhpInterpreter::getErrorOutput() for PHP startup errors [Closes #229][Closes #230]
  • CloverXMLGenerator: fixed report statements from not loaded files [Closes #220]
  • DomQuery: fixed css2xpath for brackets in selector [Closes #235]

For more information see documentation and changelog.

Application
v2.3.4

3. 7. 2015

  • Control: global snippet changed from NULL to \0 to be distinguished from ''
  • UIMacros: {snippet} and {snippetArea} without name has name '' in both PHP 5 and PHP 7
  • UIMacros: runtime helpers moved to UIRuntime
  • PresenterComponentReflection::convertType() do not change $val on error, added tests
  • ApplicationExtension: missing RobotLoader throws exception [Closes #78]
  • improved coding style

For the details you can have a look at the diff.

Mail
v2.3.2

3. 7. 2015

  • added SendException [Closes #13]
  • improved coding style

For the details you can have a look at the diff.

Mail
v2.3.1

3. 7. 2015

  • Message: added getAttachments() [Closes #11]
  • SmtpMailer: improved exception message on write failure

For the details you can have a look at the diff.

Latte
v2.3.3

3. 7. 2015

  • {snippet} and {snippetArea} without name has name '' in both PHP 5 and PHP 7
  • improved coding style
  • PhpWriter, CoreMacros: microoptimizations

For the details you can have a look at the diff.

Latte
v2.3.2

3. 7. 2015

  • HtmlNode::$isEmpty is TRUE for shortcuts like <textarea /> in HTML mode

For the details you can have a look at the diff.

Latte
v2.3.1

3. 7. 2015

  • {dump} updated for 2.3
  • whitespace moved after closing tag for shortcuts like <element />
  • <script> with type text/json is escaped as javascript

For the details you can have a look at the diff.

Latte
v2.2.5

3. 7. 2015

  • whitespace moved after closing tag for shortcuts like <element />
  • fixed syntax=off
  • added Engine::VERSION
  • some fixes

For the details you can have a look at the diff.

Tracy
v2.3.3

3. 7. 2015

  • Bar: live data for previous request are stored in session [Closes #112]
  • support for PHP7 type Throwable
  • improved coding style
  • some fixes
Nette
v2.3.3

17. 6. 2015

We would like to announce the Nette Framework 2.3.3 containing these improvements:

  • Configurator: DecoratorExtension is called after ApplicationExtension to allow decorate presenters
  • Component: attached() is called only once for each object
  • Database: Selection: Related prototype depends on specific cache key
  • DI: ContainerBuilder::removeDefinition() removes definition from $classes
  • netteForms.js: works only with Nette forms, fixed toggle in IE < 9
  • Checkbox, CheckboxList, RadioList: fixed rendering of and
  • Nette\Http\Helpers: fixed bug in ipMatch() for IPv4
  • SmtpMailer: improved exception message on write failure
  • Nette\Mail\Message: added getAttachments()
  • Image::fromString() undeprecated argument $format
  • Arrays: added pick() - picks element from the array by key and return its value
  • Strings: added after() and before()

For the details you can have a look at the diffs: bootstrap, component-model, database, di, forms, http, mail, utils.

Caching
v2.4.0

17. 6. 2015

  • added SQLiteJournal
  • CacheExtension: default journal changed to SQLiteJournal
  • requires PHP 5.4.4 or newer
Application
v2.3.3

14. 6. 2015

  • PresenterComponent::redirect() fixed compatibility with HHVM & PHP 7
  • Presenter: "query" link syntax is undeprecated
  • LinkGenerator: fixed exception namespace

For the details you can have a look at the diff.

Application
v2.3.2

14. 6. 2015

  • PresenterComponentReflection::parseAnnotation accepts *@annotation
  • FileResponse: works according to RFC 5987
  • MicroPresenter: fixed passing params to callback
  • ApplicationExtension: uses file in temp dir to invalidate container

For the details you can have a look at the diff.

Application
v2.3.1

14. 6. 2015

  • UIMacros: {ifCurrent} calls isLinkCurrent() method

For the details you can have a look at the diff.

Application
v2.2.6

14. 6. 2015

  • PresenterComponent::redirect() fixed compatibility with HHVM & PHP 7
  • FileResponse: works according to RFC 5987

For the details you can have a look at the diff.

Application
v2.2.5

14. 6. 2015

  • Router: speed optimizations
  • MicroPresenter: fixes
  • UIMacros: {ifCurrent} calls isLinkCurrent() method

For the details you can have a look at the diff.

Nette
v2.1.10

6. 5. 2015

  • Url: fixed isEqual() for same param values & regular sorting on numbers
  • SQLiteStorage: fixed transaction execution
  • HttpRequest: drops non-UTF8 strings, but control characters only removes
  • Configurator::setDebugMode() accepts only array|string|bool
  • Latte: whitespace moved after closing tag for shortcuts like
  • ContainerBuilder: fixed reseting of $currentService [Closes nette/di#70]
  • PresenterComponent::redirect() fixed compatibility with func_get_args() in HHVM & PHP 7
  • FileResponse: According to RFC 5987 Content-Disposition filename should not contain non-US-ASCII
  • Validators::isUrl: underscored subdomain support added
  • Strings::toAscii() removes \x80-\xFF chars
  • Strings::toAscii() uses //IGNORE
  • Identity: fixed conversion of big ints [Closes #1520]
  • PgSqlDriver: fixed formatLike() [Closes nette/database#46]
  • fixed quirky htmlspecialchars in PHP 5.6
Nette
v2.2.9

6. 5. 2015

Nette Framework 2.2.9 has just been released and this release marks the end of active support of the Nette 2.2 series. For one year only critical issues will be fixed. All users are encouraged to upgrade to the current stable version.

  • PresenterComponent::redirect() fixed compatibility with func_get_args() in HHVM & PHP 7
  • FileResponse: send file name according to RFC 5987
  • SQLiteStorage: fixed transaction execution
  • ContainerBuilder: fixed reseting of $currentService
  • netteForms.js: a lot of fixes
  • Form::fireEvents() calls onError even after last onSuccess handler
  • RadioList & CheckboxList: getControlPart() normalizes key type
  • Url: fixed isEqual() for same param values & regular sorting on numbers
  • Strings::toAscii() uses //IGNORE

For the details you can have a look at the diffs: application, caching, di, forms, http, utils.

Nette
v2.3.2

6. 5. 2015

We would like to announce the Nette Framework 2.3.2 containing these improvements:

  • PresenterComponent::redirect() fixed compatibility with func_get_args() in HHVM & PHP 7
  • ApplicationExtension: changed linkGenerator dependency from Nette\Http\Request to Nette\Http\IRequest
  • Presenter: "query" link syntax is un-deprecated
  • SQLiteStorage: fixed transaction execution
  • ResultSet: parameters are passed to statement via bindValue with correct type
  • Selection::fetchAssoc fix
  • Database: fixed infinite recursion when using StaticConventions and trying to access undefined column
  • ContainerBuilder: fixed reseting of $currentService
  • netteForms.js: a lot of fixes
  • FormMacros: <label n:name></label> is rendered as is, without caption
  • Form::fireEvents() calls onError even after last onSuccess handler
  • RadioList & CheckboxList: getControlPart() normalizes key type
  • Url: fixed isEqual() for same param values & regular sorting on numbers
  • Latte: HtmlNode::$isEmpty is TRUE for shortcuts like <textarea /> in HTML mode
  • Logger: added fromEmail option to set From header
  • Logger: suppress timezone warning
  • Bar: info bar show HHVM version if is running on HHVM

For the details you can have a look at the diffs: application, caching, database, di, forms, http, latte, tracy.

Tracy
v2.3.2

3. 5. 2015

  • Logger: added fromEmail option to set From header [Closes #109]
  • Bar: info bar show HHVM version if is running on HHVM
Tracy
v2.3.1

3. 5. 2015

  • dumper.js: works with polluted Array (i.e. with MooTools)
  • TracyExtension: added options logDirectory and logSeverity
  • Logger: exception is logged to exception.log before is stored to HTML file
  • Dumper::findLocation skips internal functions [Closes #104]
Tracy
v2.2.7

3. 5. 2015

  • Bar: support for SVG icons
  • Bar: fixed reloading of (empty) panel in external windows [Closes #57]
  • Dumper::findLocation skips internal functions [Closes #104]
  • added Tracy\Debugger::VERSION
Tester
v1.4.0

30. 3. 2015

  • generates code coverage report in Clover XML format (via tester --coverage coverage.xml)
  • generates test reports in JUnit XML format (via tester -o junit)
  • source code moved from Tester to src
  • improved Xdebug detection
  • Environment: acquires lock() only if not exist #201

For more information see documentation and changelog.

Tester
v1.3.2

30. 3. 2015

This release fixes some minor issues. For more information see documentation and changes.

Nette
v2.3.1

27. 3. 2015

We would like to announce the Nette Framework 2.3.1 containing these improvements:

  • FileResponse: encodes filename in Content-Disposition according to RFC 5987
  • ApplicationExtension: uses file in temp dir to invalidate container
  • CacheMacro: createCache has support for defining dependencies as a fallback
  • ActiveRow: added support to update primary columns via update()
  • MySQL: added support for objects DateInterval in column TIME
  • Revertes "SqlPreprocessor: fixed IN (?) with empty array" (possible BC break, see)
  • Table: fixed Selection::getReferencedTable() always refetching when primary is NULL
  • ContainerPanel: displays compilation time when container is compiled
  • FormMacros: empty <label n:name /> displays caption, as {label /} does
  • FormMacros: added support for <button>
  • netteForms.js: supports Common.JS and AMD loading
  • Neon::encode: removed trailing spaces
  • Latte: <script> with type text/json is escaped as javascript
  • Latte: improved macro {dump}
  • Tracy: fixed compatibility with MooTools and some plugins
  • TracyExtension: added option logSeverity
  • added tool ClassUpdater
  • and some fixes

For the details you can have a look at the diffs: application, bootstrap, caching, database, deprecated, di, forms, neon, utils, latte, tracy.

Nette
v2.2.8

10. 3. 2015

We would like to announce the Nette Framework 2.2.8 containing these improvements:

  • Routing: speed optimization
  • MicroPresenter: bug fixes
  • Configurator::setDebugMode() accepts only bool / string / array
  • NetteExtension: headers are not send and session is not started in CLI mode
  • Cache::load() fixed receiving dependencies as reference
  • Container::getComponent() uses better exception message when component has parent
  • Database: table and column names in joins can begin with number or underscore
  • PgSqlDriver: fixed formatLike() nette/database#46
  • Database\Connection & Context: undeprecated some methods, refactoring
  • DI\ContainerFactory: fixed thread-safety issues
  • fixed some limitations of netteForms.js
  • Session::configure() do not override setHandler
  • HttpRequest: drops non-UTF8 strings, but control characters only removes
  • Session: fix handling exceptions thrown from SessionHandlerInterface
  • Latte: fixed syntax=off
  • Latte: whitespace moved after closing tag for shortcuts like
  • PhpGenerator: new line after multiline phpDocs removed
  • Identity: fixed conversion of big ints #1520
  • Tracy\Bar: fixed reloading of (empty) panel in external windows
  • Tracy\Bar: is ready for SVG icons
  • Strings::toAscii() converts degree sign to ^ and removes \x80-\xFF chars
  • Strings::webalize() converts non-breaking space … ™ ® etc in glibc mode
  • Image::place() fixed unexpected output with transparency image #56
  • Validators::isUrl: underscored subdomain support added

For the details you can have a look at the diffs: application, bootstrap, caching, component-model, database, di, forms, http, php-generator, security, utils, latte, tracy.

Nette
v2.3.0

25. 2. 2015

One - two - three, we are very proud to announce the Nette Framework two three!

Application

  • all presenters are created by Dependency Injection container
  • added LinkGenerator
  • Presenter: changed handling of invalid link, they triggers warnings on production and are configurable on development via 'silentLinks'
  • Routing: speed optimization & caching
  • added bridges for Nette DI
  • added Request::getParameter(), deprecated Request::isPost()

BC breaks:

  • routes and presenter names are case sensitive. Nette will warn you if you use the wrong case in presenter name. But due to performance limitation it is not checking Route mask - you should check them manually. Correct is <presenter=UpperCasedDefaultValue> and <presenter url-cased-regexp-mask>.
  • Route::addStyle() & Route::setStyleProperty() are deprecated and now will trigger E_USER_DEPRECATED
  • removed support for deprecated Nette\Templating, template extension .phtml and old link syntax

Bootstrap

  • in config file you can move all sections placed in nette to one level up. If you move up one of the sections container, mailer or debugger, rename it to di, mail and tracy.
  • added Configurator::addServices()
  • uses new DI\ContainerLoader
  • removed deprecated constants Configurator::DEVELOPMENT & PRODUCTION (BC break)
  • Configurator::setDebugMode() accepts only bool / string / array

Caching

  • FileStorage: removed usage of realpath()
  • added bridge for Nette DI
  • ancient and deprecated ArrayAccess syntax $val = $cache[$key] or $cache[$key] = $val triggers E_USER_DEPRECATED. Use please $cache->load($key) and $cache->save($key, $val)

Database

  • throws own exceptions:
    • DriverException, ConnectionException
    • ConstraintViolationException, ForeignKeyConstraintViolationException, NotNullConstraintViolationException and UniqueConstraintViolationException
  • added support for += and -= in UPDATE statement
  • added support for operators in WHERE & AND
  • implemented ?and ?or ?set ?values ?order ?name
  • added support for '.' in column names
  • forbidden syntax 'sql', 'sql', ..., i.e. after every SQL string must be at least one parameter
  • SqlLiteral is parsed using SqlPreprocessor
  • table and column names in joins can begin with number or underscore
  • classes *Reflection split into with *Conventions & Structure
  • added IRowContainer::fetchAssoc(), ISupplementalDriver::convertException() (BC break)
  • PgSqlDriver: fixed formatLike() nette/database#46
  • MySqlDriver by default uses utf8mb4 encoding for MySQL >= 5.5.3 instead of utf8 (possible problem)
  • Connection: undeprecated some methods
  • DatabaseExtension: added alias 'database.x.connection' for 'database.x'
  • to ensure that new SQL translator do the same job as older one, you can install special tool named CompatibilityChecker22

Deprecated

new package for deprecated stuff

DI

  • parameters auto-resolution for generated factories
  • service aliases
  • removed ServiceDefinition & Statement magic methods (makes it 3× faster)
  • added DecoratorExtension, DIExtension and InjectExtension
  • added CompilerExtension::validateConfig()
  • ExtensionsExtension: allows to pass params
  • dynamic services
  • chained syntax Class::method()::method()::method()
  • removed dependency on nette/reflection
  • ContainerFactory replaced with light ContainerLoader
  • ContainerBuilder: implement escaping of '@' at the beginning of string
  • Compiler: added addConfig() & loadConfig(), compile() returns ClassType[]

BC breaks:

  • Container & ContainerBuilder::findByType() returns all services, including non-autowired
  • class names are case sensitive
  • removed support for placing services inside extension section in configuration file
  • removed support for dynamically added extensions

Finder

  • Finder::filter() callback always receives as argument (at least) a FilesystemIterator
  • Finder is countable

Forms

  • fixed some limitations of netteForms.js
  • TextBase: input is not silently truncated to max-length
  • TextBase::addFilter() is processed during validation, added Rules::addFilter()
  • now you can add filters to conditions $input->addCondition(...)->addFilter(...)
  • to Container::onValidate callbacks are passed values via second parameter
  • added bridge for Nette DI
  • internal filtering methods like Nette\Forms\Controls\TextBase::filterFloat was removed
  • internal validation methods like Nette\Forms\Controls\TextBase::validateFloat was moved to Nette\Forms\Validator, as well as Rules::$defaultMessages
  • Buttons and Hidden fields are generated without HTML ID. Relying on autogenerated ID is very bad, if you want ID, set it via setHtmlId()
  • RadioList items are generated without ID too. You can enable it via $radioList->generateId = TRUE. But again: set you base ID via setHtmlId()
  • DefaultFormRenderer adds classes to inputs & label only during rendering process (BC break)

Http

  • RequestFactory: speed optimizations
  • Url: internally stores query parameters as array, improved canonicalize(), etc…
  • added briges for Nette DI
  • added Helpers::formatDate(), added IResponse::getHeader() (BC break)
  • Request::getUrl() is immutable
  • Response::date(), Request::isPost() & Request::getFile() with multiple keys are deprecated

Latte

  • template is wrapped in an class → much faster repeated rendering
  • faster loading from cache file
  • faster autoloader for non-Composer usage
  • {ifset block} & {elseifset block} without #
  • parser detects for unclosed / malformed macros (#711)
  • added support for <script type="text/html"> (#24 & #705)
  • added macro {php …} as replacement for {? …}
  • fills Html::$attrs with actual attribute values
  • "words" can contain concatenation dots (i.e. {include $dir . '/template.latte'} #26)
  • combination of n:class & class leads to exception

Mail

  • added bridge for Nette DI
  • variable $mail is not automatically passed to templates, you have to do it yourself (BC break) (but better than {var $mail->subject = "Your new order"} is this <title>Your new order</title>, isn't it?)
  • if you have linked images (with relative paths) in template, pass base file path to images as second parameter to setHtmlBody()
  • Message: removes <title> from body

Neon

  • chained syntax first(a, b)second(1, 2)

Php Generator

  • generating PHP files with multiple namespaces & classes
  • removed magic methods (makes it much faster)
  • splits long lines, uses single-quotes strings when possible
  • short phpDoc for properties

Reflection

  • added Helpers::getDeclaringClass()
  • added bridge for Nette DI

Robot Loader

  • added support for loading from Phar
  • removed usage of realpath()
  • is now case sensitive and will warn you if you use the wrong case in class name

Safe Stream

  • it is recommended to change protocol safe://... to namespaced nette.safe://...
  • protocol is registered automatically, no longer need to call SafeStream::register()

Security

  • added bridge for Nette DI

Tracy

  • Bluescreen & Debug Bar: 10× smaller HTML code, 10× faster, deeper depth of dumps
  • Debug Bar: redesigned, uses vector icons
  • Bluescreen: dumps contain location of class definition (can be opened in editor with ctrl key)
  • Bluescreen: added link "skip error" to suppress strictMode
  • Bluescreen: added Exception panel
  • added Tracy\ILogger and rewritten default Logger
  • Debugger::enable() implements checking of cookie (format cookie@ip.address)
  • customizable 500 error template via Debugger::$errorTemplate
  • Dumper: new options LOCATION_SOURCE, LOCATION_LINK, LOCATION_CLASS
  • Dumper: customizable object exportes
  • completely rewritten JavaScript, now requires IE 10+ (removed tracyQ.js)
  • added bridge for Nette DI

Utils

  • added Arrays::normalize(), Callback::invokeSafe(), Html::data(), Strings::firstLower()
  • Image::from() throws ImageException when is unable to decode file
  • Image::place() fixes support for alpha channel
  • Callback::closure() returns native closures since PHP 5.4
  • Strings::chr() throws Nette\InvalidArgumentException if code point is not in valid range
  • Validators::isUrl() accepts underscores in subdomains
Component Model
v2.2.1

24. 2. 2015

  • Container::getComponent() uses better exception message when component has parent #1
Mail
v2.3.0

31. 1. 2015

  • added bridge for Nette DI
  • variable $mail is not automatically passed to templates, you have to do it yourself (BC break) (but better than {var $mail->subject = "Your new order"} is this <title>Your new order</title>, isn't it?)
  • if you have linked images (with relative paths) in template, pass base file path to images as second parameter to setHtmlBody()
  • Message: removes <title> from body
Mail
v2.2.3

31. 1. 2015

  • fix

For the details you can have a look at the diff.

Bootstrap
v2.3.0

31. 1. 2015

  • in config file you can move all sections placed in nette to one level up. If you move up one of the sections container, mailer or debugger, rename it to di, mail and tracy.
  • added Configurator::addServices()
  • uses new DI\ContainerLoader
  • removed deprecated constants Configurator::DEVELOPMENT & PRODUCTION (BC break)
  • Configurator::setDebugMode() accepts only bool / string / array
Bootstrap
v2.2.4

31. 1. 2015

  • fixes

For the details you can have a look at the diff.

Bootstrap
v2.2.3

31. 1. 2015

  • Configurator::addConfig() accepts arrays [Closes #25]
  • TracyBridge initialization moved from NetteExtension to Configurator
  • TracyBridge: collapsePaths are initialized by Tracy itself
  • NetteExtension: validates security.users data

For the details you can have a look at the diff.

Di
v2.3.0

31. 1. 2015

  • parameters auto-resolution for generated factories
  • service aliases
  • removed ServiceDefinition & Statement magic methods (makes it 3× faster)
  • added DecoratorExtension, DIExtension and InjectExtension
  • added CompilerExtension::validateConfig()
  • ExtensionsExtension: allows to pass params
  • dynamic services
  • chained syntax Class::method()::method()::method()
  • removed dependency on nette/reflection
  • ContainerFactory replaced with light ContainerLoader
  • ContainerBuilder: implement escaping of '@' at the beginning of string
  • Compiler: added addConfig() & loadConfig(), compile() returns ClassType[]

BC breaks:

  • Container & ContainerBuilder::findByType() returns all services, including non-autowired
  • class names are case sensitive
  • removed support for placing services inside extension section in configuration file
  • removed support for dynamically added extensions
Application
v2.3.0

31. 1. 2015

  • all presenters are created by Dependency Injection container
  • added LinkGenerator
  • Presenter: changed handling of invalid link, they triggers warnings on production and are configurable on development via 'silentLinks'
  • Routing: speed optimization & caching
  • added bridges for Nette DI
  • added Request::getParameter(), deprecated Request::isPost()

BC breaks:

  • routes and presenter names are case sensitive. Nette will warn you if you use the wrong case in presenter name. But due to performance limitation it is not checking Route mask - you should check them manually. Correct is <presenter=UpperCasedDefaultValue> and <presenter url-cased-regexp-mask>.
  • Route::addStyle() & Route::setStyleProperty() are deprecated and now will trigger E_USER_DEPRECATED
  • removed support for deprecated Nette\Templating, template extension .phtml and old link syntax
Forms
v2.3.0

31. 1. 2015

  • fixed some limitations of netteForms.js
  • TextBase: input is not silently truncated to max-length
  • TextBase::addFilter() is processed during validation, added Rules::addFilter()
  • now you can add filters to conditions $input->addCondition(...)->addFilter(...)
  • to Container::onValidate callbacks are passed values via second parameter
  • added bridge for Nette DI
  • internal filtering methods like Nette\Forms\Controls\TextBase::filterFloat was removed
  • internal validation methods like Nette\Forms\Controls\TextBase::validateFloat was moved to Nette\Forms\Validator, as well as Rules::$defaultMessages
  • Buttons and Hidden fields are generated without HTML ID. Relying on autogenerated ID is very bad, if you want ID, set it via setHtmlId()
  • RadioList items are generated without ID too. You can enable it via $radioList->generateId = TRUE. But again: set you base ID via setHtmlId()
  • DefaultFormRenderer adds classes to inputs & label only during rendering process (BC break)
Database
v2.3.0

31. 1. 2015

  • throws own exceptions:
    • DriverException, ConnectionException
    • ConstraintViolationException, ForeignKeyConstraintViolationException, NotNullConstraintViolationException and UniqueConstraintViolationException
  • added support for += and -= in UPDATE statement
  • added support for operators in WHERE & AND
  • implemented ?and ?or ?set ?values ?order ?name
  • added support for '.' in column names
  • forbidden syntax 'sql', 'sql', ..., i.e. after every SQL string must be at least one parameter
  • SqlLiteral is parsed using SqlPreprocessor
  • table and column names in joins can begin with number or underscore
  • classes *Reflection split into with *Conventions & Structure
  • added IRowContainer::fetchAssoc(), ISupplementalDriver::convertException() (BC break)
  • PgSqlDriver: fixed formatLike() #46
  • MySqlDriver by default uses utf8mb4 encoding for MySQL >= 5.5.3 instead of utf8 (possible problem)
  • Connection: undeprecated some methods
  • DatabaseExtension: added alias 'database.x.connection' for 'database.x'
  • to ensure that new SQL translator do the same job as older one, you can install special tool named CompatibilityChecker22
Caching
v2.3.0

31. 1. 2015

  • FileStorage: removed usage of realpath()
  • added bridge for Nette DI
  • ancient and deprecated ArrayAccess syntax $val = $cache[$key] or $cache[$key] = $val triggers E_USER_DEPRECATED. Use please $cache->load($key) and $cache->save($key, $val)
Database
v2.2.3

31. 1. 2015

  • Helpers::dumpSql() quotes strings using connection
  • SqlPreprocessor: fixed non-associative array detection

For the details you can have a look at the diff.

Finder
v2.3.0

31. 1. 2015

  • Finder::filter() callback always receives as argument (at least) a FilesystemIterator
  • Finder is countable
Finder
v2.2.1

31. 1. 2015

  • fixes

For the details you can have a look at the diff.

Http
v2.3.0

31. 1. 2015

  • RequestFactory: speed optimizations
  • Url: internally stores query parameters as array, improved canonicalize(), etc…
  • added briges for Nette DI
  • added Helpers::formatDate(), added IResponse::getHeader() (BC break)
  • Request::getUrl() is immutable
  • Response::date(), Request::isPost() & Request::getFile() with multiple keys are deprecated
Latte
v2.3.0

31. 1. 2015

  • template is wrapped in an class → much faster repeated rendering
  • faster loading from cache file
  • faster autoloader for non-Composer usage
  • {ifset block} & {elseifset block} without #
  • parser detects for unclosed / malformed macros (nette/nette#711)
  • added support for <script type="text/html"> (#24 & nette/nette#705)
  • added macro {php …} as replacement for {? …}
  • fills Html::$attrs with actual attribute values
  • "words" can contain concatenation dots (i.e. {include $dir . '/template.latte'} #26)
  • combination of n:class & class leads to exception
Neon
v2.3.0

31. 1. 2015

  • chained syntax first(a, b)second(1, 2)
Neon
v2.2.4

31. 1. 2015

  • Encoder: encodes strings with JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES
  • NeonDecoder: implemented support for unicode surrogate pairs

For the details you can have a look at the diff.

Neon
v2.2.3

31. 1. 2015

  • fixed array-after-key parsing

For the details you can have a look at the diff.

Php Generator
v2.3.0

31. 1. 2015

  • generating PHP files with multiple namespaces & classes
  • removed magic methods (makes it much faster)
  • splits long lines, uses single-quotes strings when possible
  • short phpDoc for properties
Reflection
v2.3.0

31. 1. 2015

  • added Helpers::getDeclaringClass()
  • added bridge for Nette DI
Reflection
v2.2.1

31. 1. 2015

  • AnnotationsParser::expandClassName() resolves self to original class name
Robot Loader
v2.3.0

31. 1. 2015

  • added support for loading from Phar
  • removed usage of realpath()
  • is now case sensitive and will warn you if you use the wrong case in class name
Robot Loader
v2.2.1

31. 1. 2015

  • Ignores ClassName::class syntax #1

For the details you can have a look at the diff.

Safe Stream
v2.3.0

31. 1. 2015

  • protocol safe:// changed to nette.safe://
  • protocol is registered automatically, no longer need to call SafeStream::register()
Security
v2.3.0

31. 1. 2015

  • added bridge for Nette DI
Utils
v2.3.0

31. 1. 2015

  • added Arrays::normalize(), Callback::invokeSafe(), Html::data(), Strings::firstLower()
  • Image::from() throws ImageException when is unable to decode file
  • Image::place() fixes support for alpha channel
  • Callback::closure() returns native closures since PHP 5.4
  • Strings::chr() throws Nette\InvalidArgumentException if code point is not in valid range
  • Validators::isUrl() accepts underscores in subdomains
Tracy
v2.3.0

31. 1. 2015

  • Bluescreen & Debug Bar: 10× smaller HTML code, 10× faster, deeper depth of dumps
  • Debug Bar: redesigned, uses vector icons
  • Bluescreen: dumps contain location of class definition (can be opened in editor with ctrl key)
  • Bluescreen: added link "skip error" to suppress strictMode
  • Bluescreen: added Exception panel
  • added Tracy\ILogger and rewritten default Logger
  • Debugger::enable() implements checking of cookie (format cookie@ip.address)
  • customizable 500 error template via Debugger::$errorTemplate
  • Dumper: new options LOCATION_SOURCE, LOCATION_LINK, LOCATION_CLASS
  • Dumper: customizable object exportes
  • completely rewritten JavaScript, now requires IE 10+ (removed tracyQ.js)
  • added bridge for Nette DI

b9ewtkxcuae35me png large

Latte
v2.2.4

28. 1. 2015

  • implemented {elseifset #block}
  • fixed some bugs

For the details you can have a look at the diff.

Tester
v1.3.1

27. 1. 2015

This release fixes some issues:

  • FileMock: removed uniqid(), because is not unique #177
  • HHVM: register_shutdown_handler() fixed in 3.4.0 #162
  • CodeCoverage/template.phtml: suppressed error when datetime zone is not set #195
  • Runner: stop-on-fail can be invoked by initial phase #185
  • Environment::lock() allows multiple locks #201

For more information see documentation and changes.

Application
v2.2.4

30. 12. 2014

  • RoutingPanel: improved dumping of objects [Closes #42]
  • Route: percent-encoded bytes are decoded before URL is matched

For the details you can have a look at the diff.

Application
v2.2.3

30. 12. 2014

  • Form: calling setAction() bypasses creation of 'do' element [Closes #33]
  • Template: added __call() for BC [Closes #38]
  • Route: %domain% and %tld% works with IP

For the details you can have a look at the diff.

Caching
v2.2.3

30. 12. 2014

  • MemcachedStorage: the key must not include control characters or whitespace [Closes #13]
  • FileJournal: fixed 'Link is not in node' exception [Closes #12]

For the details you can have a look at the diff.

Caching
v2.2.2

30. 12. 2014

  • SQLiteStorage: fixed clean(Cache::ALL)

For the details you can have a look at the diff.

Di
v2.2.3

30. 12. 2014

  • ExtensionsExtension: Allow passing parameters to extension constructor
  • ContainerFactory: rewritten caching mechanism to not use fopen [Closes #27]
  • Fixed usage of inject annotations in traits

For the details you can have a look at the diff.

Di
v2.2.2

30. 12. 2014

  • ContainerFactory::$configFiles can contain arrays with configuration [Closes #26]

For the details you can have a look at the diff.

Forms
v2.2.4

30. 12. 2014

  • BaseControl: allow passing objects to translator in control
  • netteForms.js: getValue returns bool for checkbox
  • bower: excluded examples folder

For the details you can have a look at the diff.

Forms
v2.2.3

30. 12. 2014

  • CsrfProtection: token is expired after regenerateId() (i.e. after logout) [Closes #36]
  • CSRF: better error message
  • CsrfProtection: ignores setValue(), is not erased by Form::setValues() [Closes #39][Closes #40]
  • RadioList: added item label prototype [fixes #31]
  • Container: added addMultiUpload()
  • TextBase: added setMaxLength()
  • TextInput: removed empty value=""
  • TextBase: fixed setEmptyValue() and space at the end of the string [Closes #35]
  • Latte: Fixed $formContainer recover after end of formContainer macro [Closes #43]
  • netteforms.js: Change order of showing error message and focusing element. In Firefox element lost focus when alert is invoked.

For the details you can have a look at the diff.

Http
v2.2.5

30. 12. 2014

  • RequestFactory: optimized UTF-8 validation performance
  • Url::unescape() optimized for performance
  • Url::unescape() unifies %aa to %AA

For the details you can have a look at the diff.

Http
v2.2.4

30. 12. 2014

  • Response::redirect() link is printed only for https? protocols [Closes #24](security fix)
  • Response: workaroud for PHP bugs #61106 and #66375 [closes #25]

For the details you can have a look at the diff.

Http
v2.2.2

30. 12. 2014

  • Url::isEqual: improved, fixed comparing of indexed arrays
  • Response: added missing HTTP status codes as constants
  • Request: header names are lowercased

For the details you can have a look at the diff.

Security
v2.2.2

30. 12. 2014

  • UserPanel: is rendered only when headers are not sent [Closes #7](fixed bug introduced in v2.2.1)

For the details you can have a look at the diff.

Security
v2.2.1

30. 12. 2014

  • Passwords: removed useless PASSWORD_MAX_LENGTH [Closes #1]
  • Passwords: Fix for validation of cost 31 [Closes #2][Closes #4]

For the details you can have a look at the diff.

Utils
v2.2.4

30. 12. 2014

  • Json: workaroud for PHP fatal error caused by \u0000 at the beginning of key
  • speed optimization for Object, Strings::length(), Strings::substring()
  • Strings::toAscii(): unsupported characters are removed instead of being replaced with '?'
  • Html: floats in attributes are printed in natural notation [Closes nette/forms#50]

For the details you can have a look at the diff.

Utils
v2.2.3

30. 12. 2014

  • DateTime: createFromFormat returns FALSE on failure [Closes #33][Closes #34]

For the details you can have a look at the diff.

Nette
v2.2.7

30. 12. 2014

We would like to announce the Nette Framework 2.2.7 containing these improvements:

  • Json: workaroud for PHP fatal error caused by \u0000 at the beginning of key
  • RequestFactory: optimized UTF-8 validation performance
  • Url::unescape() optimized for performance
  • speed optimization for Object, Strings::length(), Strings::substring()
  • Tracy: 500 error page is better displayed as part of page
  • RoutingPanel: improved dumping of objects
  • MemcachedStorage: the key must not include control characters or whitespace
  • ExtensionsExtension: Allow passing parameters to extension constructor
  • ContainerFactory: rewritten caching mechanism to not use fopen
  • BaseControl: allow passing objects to translator in control
  • netteForms.js: getValue returns bool for checkbox
  • UserPanel: is rendered only when headers are not sent (fixes bug introduced in v2.2.6)
  • Strings::toAscii(): unsupported characters are removed instead of being replaced with '?'
  • Html: floats in attributes are printed in natural notation
  • DI: annotations @inject can be defined in traits
  • Neon: support for unicode surrogate pairs, improved encoding of strings

For the details you can have a look at the diffs: application, caching, di, finder, forms, http, neon, security, utils, tracy.

Nette
v2.1.9

30. 12. 2014

Nette Framework 2.1.9 has just been released and this release marks the end of active support of the Nette 2.1 series. For one year only critical issues will be fixed. All users are encouraged to upgrade to the current stable version Nette 2.2.

  • Json: workaroud for PHP fatal error caused by \u0000 at the beginning of key
  • RequestFactory: optimized UTF-8 validation performance
  • Url::unescape() optimized for performance
  • speed optimization for Object, Strings::length(), Strings::substring()
  • RoutingPanel: improved dumping of objects
  • MemcachedStorage: the key must not include control characters or whitespace
  • BaseControl: allow passing objects to translator in control
  • netteForms.js: getValue returns bool for checkbox
  • UserPanel: is rendered only when headers are not sent (fixes bug introduced in v2.1.8)
  • Strings::toAscii(): unsupported characters are removed instead of being replaced with '?'
  • Html: floats in attributes are printed in natural notation
  • some other fixes

For the details you can have a look at the diff.

Tracy
v2.2.6

30. 12. 2014

  • 500 error page is better displayed as part of page
  • some fixes

For the details you can have a look at the diff.

Tracy
v2.2.5

30. 12. 2014

  • OutputDebugger: stack is printed in title, output is grouped by stack trace
  • added OutputDebugger example
  • some fixes

For the details you can have a look at the diff.

Tracy
v2.2.4

30. 12. 2014

  • BlueScreen: collapsePaths is set to /vendor dir
  • a lot of fixes

For the details you can have a look at the diff.

Nette
v2.0.18

22. 12. 2014

Nette Framework 2.0.18 has just been released and this release marks the end of life of the Nette 2.0 series and end of support for PHP 5.2. All users are encouraged to upgrade to the current stable version Nette 2.2.

  • Json: workaround for PHP fatal error
  • Response::redirect() prints only http/s links
  • MemcachedStorage: keys must not include control characters

For the details you can have a look at the diff.

Nette
v2.2.6

15. 11. 2014

We would like to announce the Nette Framework 2.2.6 containing these improvements:

  • Http\Response: workaround for PHP bugs #61106 and #66375
  • Http\Response::redirect() link is printed only for https? protocol
  • Tracy: fixed positioning of window
  • Tracy\OutputDebugger: stack is printed in title

For the details you can have a look at the diffs: bootstrap, http, reflection, tracy.

Nette
v2.1.8

15. 11. 2014

We would like to announce the Nette Framework 2.1.8 containing these improvements:

  • Http\Response: workaroud for PHP bugs #61106 and #66375
  • Http\Response::redirect() link is printed only for https? protocol
  • Debugger: fixed positioning of window

For the details you can have a look at the diff.

Nette
v2.0.17

29. 10. 2014

Nette Framework 2.0.17 has just been released and contains these security fixes:

  • CsrfProtection token is expired after regenerateId() (i.e. after logout)
  • CSRF error message changed to Your session has expired. Please return to the home page and try again.

For the details you can have a look at the diff.

Please note that the 2.0 series will enter an end of life cycle and receive only (critical) fixes for year 2014. This is also the last series for PHP 5.2. All users are encouraged to upgrade to Nette Framework 2.2.

Nette
v2.1.6

29. 10. 2014

We would like to announce the Nette Framework 2.1.6 containing these improvements:

  • CsrfProtection: token is expired after regenerateId() (i.e. after logout) security fix!
  • CsrfProtection: ignores setValue(), is not erased by Form::setValues
  • TextInput: fixed setEmptyValue() with space at the end of the string
  • fixes in netteForms.js
  • Route: %domain% and %tld% works with IP
  • SqlPreprocessor: fixed non-associative array detection
  • Url::isEqual: fixed comparing of indexed arrays
  • UserPanel: is rendered only when headers are not sent
  • fixes in phpDoc

Due to PHP bugs #61106 and #66375 we recommend to use version 2.1.7.

For the details you can have a look at the diff.

Nette
v2.2.4

27. 10. 2014

We would like to announce the Nette Framework 2.2.4 containing these improvements:

Forms:

  • CsrfProtection: token is expired after regenerateId() (i.e. after logout) security fix!
  • CsrfProtection: ignores setValue(), is not erased by Form::setValues
  • Form: calling setAction() bypasses creation of 'do' element
  • DefaultFormRenderer: support for setOption('id') for groups
  • RadioList: added item label prototype
  • Container: added addMultiUpload()
  • TextBase: added setMaxLength()
  • TextInput: removed empty value=""
  • TextBase::setEmptyValue() can contain space at the end of the value
  • fixes in netteForms.js

Tracy:

  • fixed double calling Debugger::enable(), Debugger: $logSeverity in development mode, CSS
  • BlueScreen: collapsePaths is set to /vendor dir
  • create-phar: minification for JS & CSS
  • Debugger: removed error message in non-HTML production mode
  • TracyBridge initialization moved from NetteExtension to Configurator

others:

  • supported $configurator->addConfig(array(...configuration...))
  • Template: added __call() for BC
  • Route: %domain% and %tld% works with IP
  • SqlPreprocessor: fixed non-associative array detection
  • Http\Response: Added missing HTTP status codes as constants
  • Url::isEqual: fixed comparing of indexed arrays
  • UserPanel: is rendered only when headers are not sent
  • DateTime: createFromFormat returns FALSE on failure
  • Latte: implemented {elseifset #block}
  • Latte: allows load templates from phar file
  • Database: strings in Tracy Bar are correctly escaped
  • Http: fixes in phpDoc

Due to PHP bugs #61106 and #66375 we recommend to use version 2.2.5.

For the details you can have a look at the diffs: application, bootstrap, caching, database, di, forms, http, mail, neon, security, utils, latte, tracy.

Tester
v1.3.0

27. 9. 2014

  • officially supports HHVM v3.3.0 (thanks to @Majkl578 & @milo)
  • added option -o (output format) which can enumerate from:
    • console: the same as default, but logo is not printed
    • tap: replacement for the deprecated --tap option (Test Anything Protocol)
    • none: nothing is printed, only bad usage errors when occures
  • removed dependency on iconv and json extensions
  • refactoring of Environment::setup() and file tester.php
  • FileMock works with is_readable & is_writable

For more information see documentation and changelog.

Nette
v2.0.16

28. 8. 2014

Nette Framework 2.0.16 has just been released and contains these security fixes:

  • Configurator::setDebugMode() without argument uses autodetection
  • Mail: fixed headers encoding
  • Mail: setHtmlBody() decodes %XX in URL
  • PhpGenerator: fixed dumping of non-public properties
  • DI: better exception messages
  • and some other fixes

For the details you can have a look at the diff.

Please note that the 2.0 series will enter an end of life cycle and receive only (critical) fixes for year 2014. This is also the last series for PHP 5.2. All users are encouraged to upgrade to Nette Framework 2.2.

Nette
v2.1.5

28. 8. 2014

We would like to announce the Nette Framework 2.1.5 containing these improvements:

  • new way how to detect errors in native PHP function (used in Session, Mail, Strings, …)
  • Configurator::setDebugMode() without argument uses autodetection
  • DI: fixed inheritance
  • DI: better exception messages
  • Forms: fixed erasing of manually added errors via addError
  • Forms: fixed getHttpData() for multiple file uploads
  • Latte: macro {includeblock} gently trims output
  • Http\Response: added $warnOnBuffer
  • Mail: fixed headers encoding nette/mail#4
  • Mail: setHtmlBody() decodes %XX in URL
  • PhpGenerator: ClassType::from processes only own properties
  • PhpGenerator: fixed dumping of non-public properties

For the details you can have a look at the diff.

Nette
v2.2.3

28. 8. 2014

We would like to announce the Nette Framework 2.2.3 containing these improvements:

Fixes:

  • new way how to detect errors in native PHP function (used in Session, Mail, Strings, …)
  • DI: fixed inheritance
  • Database & DI: fixes autowiring for multiple connections
  • Database: fixed & enhanced support for multiple scheme reflection
  • Forms: fixed erasing of manually added errors via addError
  • Forms: fixed getHttpData() for multiple file uploads
  • Http\Response: added $warnOnBuffer
  • Latte: filter |date respects active timezone
  • Latte: macro {includeblock} gently trims output
  • Mail: fixed headers encoding nette/mail#4
  • Mail: setHtmlBody() decodes %XX in URL
  • PhpGenerator: ClassType::from processes only own properties
  • PhpGenerator: fixed dumping of non-public properties
  • Template::registerHelperLoader: removed E_USER_DEPRECATED
  • TemplateFactory: added missing filters modifyDate, length & null
  • Neon: fixed parsing of:
key1:
- subitem
- subitem

News:

  • added support for $configurator->setDebugMode('secret@23.75.345.200'), where secret must match with cookie nette-debug
  • added Latte\Engine::invokeFilter(), as a replacement for $template->$filter().
  • DI: better exception messages
  • NDBT: added support for NULL with operator NOT
  • Forms & Latte: prettier output formating
  • Tracy: added Debugger::$logSeverity for logging bluescreen for errors/warnings/notices in production mode
  • added Validators::isUri()

For the details you can have a look at the diffs: application, bootstrap, database, di, forms, http, mail, neon, php-generator, utils, latte, tracy.

Forms
v2.2.2

28. 8. 2014

  • fixed erasing of manually added errors via addError
  • fixed getHttpData() for multiple file uploads
  • Latte: prettier output formating

For the details you can have a look at the diff.

Application
v2.2.2

27. 8. 2014

  • Template::registerHelperLoader: removed E_USER_DEPRECATED
  • TemplateFactory: added missing filters modifyDate, length & null
  • Application disables warnOnBuffer before error 500 is sent nette/nette#1366

For the details you can have a look at the diff.

Bootstrap
v2.2.2

27. 8. 2014

  • added support for $configurator->setDebugMode('secret@23.75.345.200'), where secret must match with cookie nette-debug

For the details you can have a look at the diff.

Database
v2.2.2

27. 8. 2014

  • DI: fixed autowiring for multiple connections
  • fixed & enhanced support for multiple scheme reflection
  • NDBT: added support for NULL with operator NOT

For the details you can have a look at the diff.

Di
v2.2.1

27. 8. 2014

  • fixed service inheritance
  • better exception messages
  • added ContainerBuilder::addExcludedClasses() for excluding classes from autowiring nette/nette#1424
  • added ServiceDefinition::getTag()
  • Compiler: builder is created in constructor

For the details you can have a look at the diff.

Http
v2.2.1

27. 8. 2014

  • Response: added $warnOnBuffer
  • fixes

For the details you can have a look at the diff.

Latte
v2.2.3

27. 8. 2014

  • filter |date respects active timezone
  • macro {includeblock} gently trims output
  • added Latte\Engine::invokeFilter(), as a replacement for former $template->$filter().
  • prettier output formating for some macros

For the details you can have a look at the diff.

Mail
v2.2.2

27. 8. 2014

  • changed & fixed encoding of emails in headers
  • base64 is not used for long headers & where can be quoted string #4
  • setHtmlBody() decodes %XX in URL

For the details you can have a look at the diff.

Neon
v2.2.2

27. 8. 2014

Fixed parsing

key1:
- subitem
- subitem

For the details you can have a look at the diff.

Php Generator
v2.2.1

27. 8. 2014

  • fixed dumping of non-public properties
  • ClassType::from processes only own properties

For the details you can have a look at the diff.

Tracy
v2.2.3

27. 8. 2014

  • added Debugger::$logSeverity for logging bluescreen for errors/warnings/notices in production mode

For the details you can have a look at the diff.

Utils
v2.2.2

27. 8. 2014

  • Strings, Arrays, Json: rewritten way how errors in PCRE functions are detected
  • added Validators::isUri()

For the details you can have a look at the diff.

Neon
v2.2.1

24. 6. 2014

  • allows combinations of tabs and spaces
  • accepts short bullet syntax:
- key: val
  key2: val2

For the details you can have a look at the diff.

Nette
v2.2.2

24. 6. 2014

We would like to announce the Nette Framework 2.2.2 containing these improvements:

  • Route: allows to use parameters with long names
  • FileResponse: send response either as attachment or inline
  • UI\Presenter: all services except httpRequest & httpResponse are optional
  • Tracy: better error messages when is Tracy unable to log errors
  • Latte: added support for empty {var $foo}
  • netteForms: toggle related event handler is added only once
  • Configurator::setDebugMode(): removed default value
  • a lot of bugfixes

For the details you can have a look at the diffs: application, bootstrap, caching, database, forms, mail, latte, tracy.

Application
v2.2.1

24. 6. 2014

  • Route: allows to use parameters with long names
  • FileResponse: send response either as attachment or inline
  • UI\Presenter: all services except httpRequest & httpResponse are optional
  • fixed bugs

For the details about the changes you can have a look at the Github diff.

Bootstrap
v2.2.1

24. 6. 2014

  • Configurator::setDebugMode(): removed default value
  • fixed bugs

For the details about the changes you can have a look at the Github diff.

Caching
v2.2.1

24. 6. 2014

Nothing new.

Database
v2.2.1

24. 6. 2014

  • ResultSet: fix, empty keys are not converted to properties

For the details about the changes you can have a look at the Github diff.

Forms
v2.2.1

24. 6. 2014

  • netteForms: toggle related event handler is added only once
  • some fixes

For the details about the changes you can have a look at the Github diff.

Mail
v2.2.1

24. 6. 2014

  • SendMailMailer: fixed catching of error message

For the details you can have a look at the diff.

Latte
v2.2.2

24. 6. 2014

Note: usage of some internal variables like $_l has been changed.

For the details about the changes you can have a look at the Github diff.

Latte
v2.2.1

24. 6. 2014

Added protection against innerHTML mXSS vulnerability nette/nette#1496

For the details about the changes you can have a look at the Github diff.

Tracy
v2.2.2

24. 6. 2014

  • better error messages when is Tracy unable to log errors
  • a lot of fixes

For the details you can have a look at the diff.

Tester
v1.2.0

11. 6. 2014

  • added option --stop-on-fail that stops execution upon first error
  • added FileMock for mocking files #137
  • added Assert::count()
  • DomQuery supports HTML 5
  • DataProvider can use default values of target method #123
  • allowed combination of annotations like @testcase, @multiple or @dataprovider
  • fixed some bugs in Coverage reporter

For more information see documentation and changelog.

Nette
v2.2.1

27. 5. 2014

We would like to announce the Nette Framework 2.2.1 containing these improvements:

  • Latte & Nette\Utils\Html: added protection against innerHTML mXSS vulnerability
  • Tracy: Dumper prints attribute data-tracy-href only when option 'location' is enabled
  • Neon: accepts short bullet syntax:
- key: val
  key2: val2

For the details you can have a look at the diffs: neon, robot-loader, utils, latte, tracy.

Nette
v2.1.4

26. 5. 2014

We would like to announce the Nette Framework 2.1.4 containing these fixes:

  • Latte & Nette\Utils\Html: added protection against innerHTML mXSS vulnerability
  • Latte: fixed parsing {macro|modifier /}
  • Latte: fixed including parent block multiple times
  • Latte, DI: improved error messages
  • Tracy: Dumper prints attribute data-tracy-href only when option 'location' is enabled
  • RadioList: attrs of radiolist label aren't appended to labels of radio
  • Database: ResultSet: empty keys are not converted to properties
  • Strings::toAscii(): support for czech and french quotation marks
  • RobotLoader: works with PHP 5.6 syntax ClassName::class

For the details you can have a look at the diff.

Utils
v2.2.1

25. 5. 2014

Added protection against innerHTML mXSS vulnerability.

IE8 for code <div attr="´´foo=bar"> produces invalid innerHTML <div attr=´´foo=bar>. Adding a space at the end of the attribute forces IE to put quotes around the attribute.

For the details you can have a look at the diff.

Nette
v2.0.15

24. 5. 2014

We would like to announce the Nette Framework 2.0.15 containing these fixes and improvements:

  • Strings::random() uses the best available entrophy generator
  • Latte & Nette\Utils\Html: added protection against innerHTML mXSS vulnerability ("see":https://www.slideshare.net/x00mario/the-innerhtml-apocalypse)
  • Latte: fixed including parent block multiple times
  • Latte: improved HTML comments escaping
  • Latte: improved |safeurl helper
  • Debugger: fixed HTTPS detection on nginx
  • Database: fixes in PostgreSQL and SQlite drivers
  • Database: ResultSet: empty keys are not converted to properties
  • RobotLoader: works with PHP 5.6 syntax ClassName::class
  • added support DateTimeImmutable

For the details you can have a look at the diff.

Please note that the 2.0 series will enter an end of life cycle and receive only (critical) fixes for year 2014. This is also the last series for PHP 5.2. All users are encouraged to upgrade to Nette Framework 2.2.

Tracy
v0.7

23. 5. 2014

Tracy
v0.9.1

23. 5. 2014

  • added OutputDebugger
  • added @tracySkipLocation annotation
  • some fixes

For the details you can have a look at the diff.

Tracy
v2.2.1

23. 5. 2014

  • Dumper exposes file paths only when option 'location' is enabled
  • Bluesceen: fixed dumping variables in source code

For the details you can have a look at the diff.

Application
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Safe Stream
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Tracy
v2.2.0

12. 5. 2014

  • added Tracy logo (replaces Nette logo)
  • exceptions are logged to file 'exception.log' instead of 'error.log'
  • CSS: replaced .tracy-toggle-collapsed with .tracy-toggle.tracy-collaped
  • a lot of fixes

For the details you can have a look at the diff.

Forms
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Utils
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Tokenizer
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Security
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Robot Loader
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Reflection
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Php Generator
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Neon
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md and sandbox.

Mail
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Latte
v2.2.0

12. 5. 2014

After 6 years of development Latte has become standalone templating engine with a lot of cool features.

  • context sensitive escaping
  • easy PHP-like syntax
  • n:attributes

For more information see readme.md.

Http
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Finder
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Di
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Database
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Component Model
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Caching
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Bootstrap
v2.2.0

12. 5. 2014

The first standalone release. For more information see readme.md.

Nette
v2.1.3

12. 5. 2014

We would like to announce the Nette Framework 2.1.3 containing these fixes:

  • Strings::fixEncoding() uses iconv in PHP 5.3, because htmlspecialchars can be very slow
  • added option to disable autoloading of annotation classes via AnnotationsParser::$useAnnotationClasses
  • Reverted SendmailMailer use CRLF in subject, see #1437 (comment)
  • fixed detection of primary keys in SQlite

For the details you can have a look at the diff.

Nette
v2.2.0

11. 5. 2014

We would like to announce the Nette Framework 2.2, the biggest revolution in its history.

Nette has been split into small projects Application, Caching, ComponentModel, Nette Database, DI, Finder, Forms, Http, Latte, Mail, Neon, PhpGenerator, Reflection, RobotLoader, SafeStream, Security, Tokenizer, Tracy and Nette Utils.

It also brings complete new Latte API for standalone usage:

$latte = new Latte\Engine;
$latte->onCompile[] = function($latte) {
    $latte->addMacro(...);
};
$latte->addFilter('money', ...);
$latte->render('template.latte', $parameters);

Also Nette\Diagnostics was renamed to nice and short Tracy.

You can, as usual, download complete package or install it via Composer.

Tester
v1.1.0

3. 4. 2014

  • Tester: added options --coverage and --coverage-src for generating code coverage reports (tool coverage-report.php was removed)
  • Tester uses 33 threads by default (instead of single thread)
  • Tester: option -log changed to -l or --log to be consistent with other options
  • shows warning when no assertions are executed [Closes #112]
  • Assert::isEqual can compare recursive objects [Closes #93]
  • added Assert::nan()
  • added PHAR (PHP Archive) distribution
  • added Tester\Environment::loadData() for loading data via annotation @dataProvider

For more information see documentation and changelog.

Nette
v2.1.2

20. 3. 2014

We would like to announce the Nette Framework 2.1.2 containing these fixes:

  • Image: added support for image resource cloning #1329
  • Forms: added Form::DATA_KEYS for preserving keys in getHttpData() #1433
  • Forms & netteForms.js: fixed bug in negative toggling via toggle(..., FALSE)
  • PhpGenerator: Added support for variadics (PHP 5.6 feature) #1414
  • Mail: SendmailMailer use CRLF in subject. #1437
  • Random: mcrypt_create_iv() crashes with „Fatal error: mcrypt_create_iv(): Could not gather sufficient random data“ in PHP 5.3.3 on Windows
  • Latte Macros: n:ifcontent checks for whitespaces (closes #1387)
  • Latte: improved HTML comments escaping
  • Debugger: fixed HTTPS detection on nginx
  • Debugger: error.phtml erases HTML output
  • Strings::fixEncoding() removed dependency on mbstring for UTF-8 encoding

For the details you can have a look at the diff.

Nette
v2.1.1

11. 2. 2014

We would like to announce the release of Nette Framework 2.1.1 containing these fixes:

  • disables safeUrl when |dataStream, {link} or {plink} are used
  • adds ability to render checkboxes via n:name without using colon in name
  • enables coexistence of annotation @method with extension methods #1344
  • fixes SelectBox::setItems without keys
  • and doubled DB query after toArray #1332
  • multiple service inheritance
  • snippetArea with included template
  • HTML5 validation of required CheckboxList
  • TextInput: min/max input attributes for multiple range rules
  • fixes combination of n:name with other n:attributes

Adds:

  • CSRF token is protected against BREACH attack
  • Application::$onPresenter event
  • helper escapeUrl as alias for url
  • Strings::random uses openssl_random_pseudo_bytes or mcrypt_create_iv
  • supports short <select n:name=... />

For the details you can have a look at the diff.

Tester
v1.0.0

8. 2. 2014

Four years ago was added to the Nette Framework new simple unit test framework ;-) Now Nette Tester has become stable testing tool with integrated support in NetBeans 8.0 and lot of features:

  • very easy and understandable API
  • each test is a standalone PHP script
  • fast parallel testing
  • colorized and readable output, including TAP format
  • code coverage analysis
  • watching folders for changes and automatically re-run tests
  • HTML output testing

For more information see readme.md.

Nette
v2.0.14

1. 1. 2014

Nette Framework 2.0.14 has just been released and is now available for download Feel free to update!

Please note that the 2.0 series will enter an end of life cycle and receive only (critical) fixes for year 2014. This is also the last series for PHP 5.2. All users are encouraged to upgrade to Nette Framework 2.1. For migration to namespaced version you can use script migrate-53.php.

It contains a lot of fixes and improvements:

  • UI\Presenter: fixed canonicalize with components #545 and making relative URLs #1201
  • UI\Presenter: sends HTTP header Vary: X-Requested-With #1133
  • Database: SqlPreprocessor ignores placeholders in comments #1293
  • Database: added limit for logged queries into Debugger Bar commit
  • Forms: removed usage of Environment (when addProtection() is not used)
  • netteForms.js: toggles are attached on changed event #1087
  • Latte: added modifier |safeUrl, white list for http & ftp URL: <a href="{$url|safeUrl}">
  • Latte: added modifier {foreach |noiterator}
  • Latte: is faster and uses less memory thanks to removing the function extract()
  • Latte: improved auto-quoting in some expressions
  • Latte: fixed processing and escaping of XML
  • Nette\DateTime: works with UNIX timestamps bigger than 32bits
  • Debugger: Logger: HTTP_HOST is sanitized
  • and one more thing: keyword final from all methods and classes has been removed

For the details you can have a look at the diff.

Nette
v2.1.0

31. 12. 2013

After two years of development we are very proud to announce the availability of Nette Framework 2.1.0!

Application & Presenter

  • PresenterFactory: configurable mapping Presenter name -> Class name
  • Route: new pseudo-variables %basePath%, %tld% and %domain%
  • Presenter: new method sendJson()

Caching

  • added SQLite storage (Nette/Caching/Storages/SQLiteStorage)

Database (NDB)

  • complete refactoring, a ton of bug fixes
  • lazy connection
  • much better (dibi-like) SQL preprocessor
  • Selection, ActiveRow: insert() & update() methods return row instances with refetched data
  • Selection: added placeholder support select(), group(), having(), order() methods
  • SqlLiteral: added placeholder support
  • Selection: added WHERE conditions consider NOT for IN operator
  • new driver for Sqlsrv
  • Sqlite supports multi-inserts

Debugger

  • Bar: you can see bar after redirect
  • Dumper: colored and clickable dumps in HTML or terminal
  • Debugger: full stack trace on fatal errors (requires Xdebug)

Dependency Injection (DI)

  • auto-generated factories and accessors via interface
  • adding compiler extensions via config file
  • configurable presenters via config file
  • annotation @Inject
  • bullet syntax for anonymous services

Forms

  • setOmitted: excludes value from $form->getValues() result
  • implemented full validation scopes
  • Form::getOwnErrors() returns only errors attached to form
  • Radiolist::getLabel(..., $key) returns label for single item
  • added ChoiceControl, MultiChoiceControl and CheckboxList
  • SelectBox and CheckboxList: allowes to disable single items
  • UploadControl allowes multiple files upload
  • validators Form::INTEGER, NUMERIC and FLOAT converts values to integer or float
  • validator Form::URL prepends https:// to value
  • Form::getHttpData($htmlName) returns data for single field
  • supports Twitter Bootstrap 2 & 3 (see examples)
  • removed dependency on Environment
  • improved toggles
  • data-nette-rules attribute is JSON

Latte

  • supports <tag attr=$val> without quotes
  • new macro n:name for <form> <input> <select> <textarea>
  • partially rendered radiolists using {input name:$key} and {label name:$key}
  • new modifier |safeurl which allowes only http(s), ftp and mailto protocols
  • safeurl is automatically used for href, src, action and formaction attributes (can be bypassed by |nosafeurl modifier)
  • new modifier |noescape which is preferred over exclamation mark
  • {foreach ...|nointerator} bypasses creating variable $iterator
  • new macro n:ifcontent
  • {include block} can be written without hash

Http

  • added new SessionPanel
  • RequestFactory: new method setProxy()

Utils

  • new utility class FileSystem
  • new utility class Callback
  • Arrays: new method isList()
  • Arrays: method flatten() supports key preserving
  • Strings: new methods findPrefix() and normalizeNewLines()
  • Json: supports pretty output
  • Validators: new method isType()

Mailing

  • SmtpMailer: persistent connection

Others

  • minified version is PHAR file
  • ObjectMixin: magic methods setProperty(), getProperty(), isProperty() and addProperty() by @method
  • SafeStream: supports ftruncate (requires PHP 5.4+)
Tester
v0.9.5

30. 12. 2013

  • Assert::error() can test more than one error
  • small fixes

For more information see readme.md.

Tracy
v0.9.0

11. 12. 2013

First release of Tracy, the rebranded Nette Debug.

Tester
v0.9.4

11. 12. 2013

  • you can watch multiple directories via --watch
  • a lot of fixes

For more information see readme.md.

Nette
v2.0.13

5. 11. 2013

Nette Framework 2.0.13 has just been released and is now available for download. Feel free to update!

It fixes security bug in Latte and introduces new form validators NOT_EQUAL & BLANK.

For the details about the changes you can have a look at the Github diff.

Nette
v2.0.12

8. 8. 2013

Nette Framework 2.0.12 has just been released and is now available for download. Feel free to update!

It fixes few bugs in Nette\Database discovered in 2.0.11 (#1156, #1175, #1198), in netteForms.js, sanitizes server name in Nette\Mail, adds support for IPv6 in Nette\Http\RequestFactory and has better performance with APC.

For the details about the changes you can have a look at the Github diff.

Tester
v0.9.3

7. 8. 2013

  • output in TAP format using --tap
  • added interface for custom output handlers
  • smarter error messages, skips the same beginning part of compared strings
  • supports file masks like tester *.php
  • when expected & actual variables are stored to output/ subdirectory, message diff file.expected file.actual is printed

For more information see readme.md.

Tester
v0.9.2

19. 7. 2013

  • much better colorized error messages!
  • colors can be enabled or disabled by option --colors
  • added tests annotations @exitCode, @htmlCode, @outputMatch and @outputMatchFile
  • added annotation @throws for TestCase
  • Assert::match is fully customizable via Assert::$pattern and regular expressions
  • Assert::type accepts default PHP types
  • added new assertions Assert::matchFile, truthy and falsey

For more information see readme.md.

Nette
v2.0.11

11. 7. 2013

Nette Framework 2.0.11 has just been released and is now available for download. Feel free to update!

It contains a lot of fixes and improvements contributed by 17 authors:

  • Nette\Database is much faster
  • fixed are quotes in sent emails #634
  • added new modifier |noescape and n:name in Latte and improved escaping in HTML comments
  • new Adminer with better skin & autocomplete plugin in Sandbox, now accessible only from localhost
  • and much more (#700, #1026, #900, #1057, …)

For the details about the changes you can have a look at the Github diff.

Tester
v0.9.1

9. 7. 2013

After 4 years of development Nette Tester has become stable testing tool with a lot of cool features:

  • very easy and understandable API
  • each test is a standalone PHP script
  • fast parallel testing
  • code coverage analysis
  • watching folders for changes and automatically re-run tests
  • colorized output
  • HTML code testing

For more information see readme.md.

Nette
v0.9.7

3. 7. 2013

Nette
v2.0.10

8. 3. 2013

Nette Framework 2.0.10 has just been released and is now available for download. Feel free to update.

It contains a lot of improvements and fixes mostly in FileJournal and Database, contributed by 13 authors.

For the details about the changes you can have a look at the Github diff.

(Support for constants in config file introduced in 2.0.9 was removed due to BC break.)

Nette
v2.0.8

1. 1. 2013

New Year and new version of Nette Framework 2.0.8 has just been released. And is now available for download. Feel free to update!

Fixes and improvements:

  • Database: a lot of fixes, see changelog
  • security: String::random() uses even more entropy and now it's great
  • Neon: fixed error "Backtrack limit was exhausted" and it removes BOM
  • Debugger: "caused by" exception in better visible & some fixes
  • Cache: fixed problem with nested {cache} macros
  • Forms: added support for #hash part of URL

For the details about the changes you can have a look at the Github diff.

Nette
v2.0.7

28. 11. 2012

Nette Framework 2.0.7 has just been released and is now available for download. Feel free to update!

Fixes and improvements:

  • Database: implemented multi primary key support and a lot of fixes (in type detection, …)
  • Config: added support for anonymous services defined via bullets
  • Latte: added support for {input $control}, {label $control} and n:input=$control, where $control is object IFormControl
  • UI\Presenter: invalid URL parameters are ignored and do not throw 404 HTTP error
  • MicroPresenter: returns 404 HTTP error when parameter callback is missing
  • Session: session ID is not regenerated after 30 minutes
  • Mail: fixed sending BCC header via SMTP protocol
  • PresenterComponent: to override constructor and not to call its ancestor will not cause error
  • Debugger: sends error-code after every errors
  • Tests: test are updated to last version of Nette\Tester

For the details about the changes you can have a look at the Github diff.

Nette
v2.0.6

1. 10. 2012

Nette Framework 2.0.6 has just been released and is now available for download. Feel free to update!

Fixes and improvements:

  • Database: really a lot of fixes and improvements, added PostgreSQL tests
  • Tests: we are moved to Nette\Tester and using Travis CI
  • added FTP deployment tool
  • RobotLoader: smarter detection of changed files
  • Finder: added workaround for PHP bug in AppendIterator
  • added some workarounds for PHP 5.4.x and 5.3.16 bugs

For the details about the changes you can have a look at the Github diff.

Nette
v2.0.5

30. 8. 2012

Nette Framework 2.0.5 has just been released and is now available for download. Feel free to update! It contains a lot of minor improvements and bug fixes contributed by 10 authors.

Fixes and improvements:

  • Database: really a lot of fixes and improvements
  • Presenters: dependencies can be passed via inject*() methods
  • Latte: fixed {define} and dynamic blocks
  • FileResponse: fixed range processing
  • Validators: improved URL and email validator (client side & server side)
  • Debugger: dumps additional info for resources
  • Sandbox contains Adminer 3.5.1 with Nette skin (looks like API doc)

For the details about the changes you can have a look at the Github diff.

Nette
v2.0.4

30. 7. 2012

Nette Framework 2.0.4 (code name Lisboa) has just been released and is now available for download. Feel free to update. It contains a lot of minor improvements and bug fixes contributed by 22 authors.

Improvements:

  • Database: added support for foreign keys in PostgreSQL driver
  • Added support for getting public methods as Closure in PHP >= 5.3. $this->formSubmitted
  • Route: slash is not converted to %2F
  • Presenter: directory 'templates' may be located inside presenter's directory
  • Nette sandbox becomes a Composer package.

Changes:

  • Presenter: fixed array-to-string conversion errors in PHP 5.4
  • Fixes and improvements in Neon and Latte syntax.
  • Improved error messages in Presenter, Latte, DI Container.
  • Contains Adminer 3.4.0 with new Nette skin (looks like API doc)

For the details about the changes you can have a look at the Github diff.

Nette
v2.0.3

3. 4. 2012

Nette Framework 2.0.3 has just been released. It contains some minor improvements and bug fixes mainly for Database and NetteExtension, contributed by 14 authors.

Improvements:

  • Added $_SESSION to Debugger bluescreen.
  • Added syntax highlighted dump() in Linux.
  • Tests runs in parallel (reduce time from 2 minutes to 10 seconds).
  • Nette becomes a Composer package.

Changes:

  • Default value of header X-Frame-Options is now sameorigin
  • Default value of session autoStart changed to smart.
  • Introduces method Nette\Config\Configurator::setDebugMode() used to replace setProductionMode().

For the details about the changes you can have a look at the Github diff.

Nette
v2.0.1

24. 2. 2012

Nette
v2.0.0

2. 2. 2012

After years of development, after alpha & beta versions and 3 release candidates, we are very proud to announce the immediate availability of Nette Framework 2.0 final.

Nette Framework 2.0 has many innovations, some of them are unique in the PHP world:

  • full Dependency Injection support, extensively used in whole framework
  • new database layer with integrated awesome library NotORM
  • completely rewritten Latte, very handy templating language
  • customizable Debugger, developer's little helper with a lot of predefined panels
  • new markup language NEON
  • new ways to configure framework and applications
  • Nette stays to be one of the most secured framework in the world

…and a lot lot lot of enhancements in every part of framework.

Nette Framework also comes with new and great documentation. How to get started? Try Quick Start tutorial.

Nette Framework 2 is released. It's time to celebrate!

Application

  • better directory structure
  • default template for error codes 4xx, 403, 404, 405, 410 and 500
  • transmission of persistent parameters to the error-presenter
  • Route: support for the default values new Route('<presenter=Homepage><action=default>')
  • Route: shortcut Presenter:action (forum)
  • changed IRouter::constructUrl() second argument to Nette\Web\Uri.
  • support for rapid prototyping via via $router[] = new Route('login', function() {...})
  • solve complications with store & restoreRequest & flashMessage

Templates

  • remove at-sign @ from templates
  • unification of all macros syntax
  • syntax enhancement {=$var ? item} arrays {=[a, b, c]|join:' '} comments {var $prom = 123 /*, $name = ahoj*/} and array expansion {link default $id, (expand) $args, lang => cs}
  • new syntax {var $prom = 123, $name = ahoj}
  • new macros {first}, {last}, {sep} and {l} {r}
  • improved {cache} (forum)
  • new attributes n:class a n:href
  • extension .latte
  • automatic check of the crossing and not closing tags
  • refactoring LatteMacros into more classes
  • new way how to add Latte macros
  • support for XML in Latte
  • new form macros {form} {label} {control}
  • new form attribute <input n:name="email" ...>

Debug

  • added Debug Bar
  • added template for error 500 (in production)
  • URL or command line is logged
  • added Debug::log($message [, $priority])
  • added Nette\Debug::$scream = TRUE
  • clickable file names in "bluescreen"
  • FirePHP replaced with FireLogger
  • detection of developer / production environment with proxy servers
  • hiding "bluescreen" via ESC
  • added UserPanel

Forms

  • InstantClientScript replaced with Unobtrusive JavaScript (forum)
  • added support for HTML5
  • added validator Form::IMAGE

Caching

  • added ICacheJournal and FileJournal
  • added Nette\Caching\MemoryStorage
  • supports any variables as keys in a cache

Depencency Injection

  • implemented configurable DI container with autowiring
  • deprecated Environment
  • all classes (except Form) are independent on Environment
  • Nette\Web\HttpRequest is created via HttpRequestFactory
  • new config modes

others

  • new namespaces
  • added NEON, language for writing configuration
  • added Nette\Finder (forum )
  • added SmtpMailer (forum
  • added Nette\String::length(), compare(), toAscii() and safe regular expression via split(), match(), matchAll(), replace() and ArrayTools::grep()
  • added Nette\Json
  • added CallbackFilterIterator, RecursiveCallbackFilterIterator, MapIterator
  • added support for data attributes in Nette\Web\Html (forum)
  • RobotLoader supports netterobots.txt
  • RobotLoader detects file moving
  • loader.php defines constants NETTE, NETTE_VERSION_ID & NETTE_PACKAGE, NETTE_DIR
  • loader.php resets error_reporting (na E_ALL + E_STRICT), iconv.internal_encoding, mbstring.internal_encoding na UTF-8
  • created new testing framework Nette Tests
  • added tool Code-Checker
  • created tool APIGEN for generation API documentation
  • added Nette\Framework::$iAmUsingBadHost = TRUE
Nette
v0.9.6

18. 9. 2010

Řada 0.9 se uzavírá a souhrn všech bugfixů za poslední 2,5 měsíce najdete ve verzi 0.9.6. Update je doporučený a žádné nekompatibility by se objevit neměly.

Pár dní ještě 0.9.6 považujme za release candidate, kdyby se náhodou objevila nějaká chyba, promptně ji opravím.

Nette 0.9 RIP!

Nette
v0.9.5

30. 6. 2010

Venku je verze 0.9.5. Ta především opravuje řadu chybiček, jejichž kompletní výčet najdete v changelogu. Velkou interní změnou je, že repozitář byl převeden do PHP 5.3 a teprve z něj se generují distribuce frameworku určené pro PHP 5.2. Což vyřešilo nedostatky v generování prefixované verze. Druhou interní změnou je úprava adresářové struktury frameworku. Přičemž obě interní změny by neměly mít vliv na funkčnost.

Ze všech úprav bych zdůraznil jen několik:

  • Nette\Mail by měl mít fixnuté všechny známé nedostatky v kompatibilitě s emailovými klienty
  • metody Nette\Mail dále striktně kontrolují, zda jsou všechny parametry kódovány v UTF-8
  • SmartCachingIterator (tj. makro {foreach}) nyní umí iterovat i nad SimpleXMLElement
  • používejte login(), logout() a isLoggedIn(), volání starších metod vyvolá varování
  • nové konstanty NETTE, NETTE_VERSION_ID, NETTE_PACKAGE a také PHP_VERSION_ID pod PHP < 5.2.7
Nette
v0.9.4

14. 4. 2010

Světlo světa spatřila nová stabilní verze 0.9.4. Ta především opravuje řadu chybiček, jejichž kompletní výčet najdete v changelogu. Zároveň také přináší několik vylepšení:

Formuláře:

  • lze používat placeholdery %label, %name a %value ve výchozích chybových zprávách
  • vypnutí překladače na určitém prvku nevypne překládání chybových zpráv
  • zaměněno <form name="..."> za <form id="...">

Šablony

  • v modifikátorech lze používat mezery (např. {$var |truncate : 30}) a klíčová slova true, false, null
  • přidáno makro {var ...} jako alias pro {assign ...}
  • je podporován zápis {var item => value} i {var $item => value}
Nette
v0.9.3

28. 1. 2010

Po dvou měsících je tu verze 0.9.3. Přináší poměrně dost novinek a opravuje chybičky.

  • vylepšení jazyka o globální funkci callback() a Nette\Callback pro čitelnější zápis a volání callbacků
  • zásadního zrychlení dosáhla třída RobotLoader
  • opraven bug přehazující pořadí parametrů v URI
  • vylepšený RoutingDebugger zobrazuje více informací
  • přidána třída DateTime53 opravující zmršený DateTime v PHP 5.2 (podpora serializace & unix timestamp)
  • metoda createComponent() může vracet instanci
  • sjednoceno chování všech funkcí ve frameworku, kterým se jako parameter předává čas. Ten může být zadán buď jako objekt DateTime, řetězec ve formátu '+ 14 days', jako relativní počet sekund nebo jako UNIX timestamp.
  • přidána třída Nette\Web\HttpContext
  • přidány funkce String::padLeft() a String::padRight() (obdoba str_pad pro UTF-8)
  • deprecated: Uri::setPass() a getPass() nahrazuje Uri::setPassword() and getPassword()
  • deprecated: HttpResponse::expire() nahrazuje HttpResponse::setExpiration()
  • deprecated: Nette\Object::getClass() (důvodem je příliš obecný název, lze nahradit za $obj->reflection->name)
  • odstraněny třídy Nette\Loaders\SimpleLoader, Nette\Config\ConfigAdapterXml, Nette\Forms\RepeaterControl

Formuláře

  • InstantClientScript: formuláře generují zgruntu nový validační JavaScriptový kód. Ten by měl být lépe přizpůsobitelný (např. pro live validation) a je nezávislý na HTML ID. V této oblasti bude vývoj pokračovat, nicméně nové chování by mělo být stabilní.
  • HttpUploadedFile: příkaz move() řeší problematiku přístupových práv, umí vytvořit adresář a lze jej použít i pro více přesunů.
  • Html: vylepšeno chování metod getHtml() a getText(), takže objekty Html lze bez problémů používat v labelech apod.
  • deprecated: Form::processHttpRequest() bylo přejmenováno na Form::fireEvents()

Debug

  • globální funkce dump() jako ("nejen .(lze dumpovat víc proměnných)") zkratka pro Nette\Debug::dump()
  • Debug::enable() lze předat výčet IP adres
  • kvůli šetření místem nyní Debug nevytváří HTML logy pro opakující se chyby (zvažuju ukládat soubory komprimované)
  • opraveny nedostatky logování chyb na některých hostinzích

Šablony

  • isFirst() a isLast() podporuje renderování mřížek
  • v šablonách lze psát <?xml ... ?> bez kliček kvůli PHP parseru
  • Makro {debugbreak} podporuje XDebug
  • deprecated: LatteFilter::invoke potažmo CurlyBracketsFilter::invoke (zpravidla by mělo stačit inicializaci filtru odstranit)

Image

  • metoda resize() se zápornými argumenty zrcadlí obrázek (Image i ImageMagick)
  • metoda calculateSize() je nyní statická (BC break!)

Nette\Reflection

Asi nejvýraznější novinkou je nový soubor tříd Nette\Reflection, které sjednocují a rozšiřují možnosti meta-programování. Sem byla přesunuta podpora anotací a zpracování extension method. Řekl bych, že tohle bude příští velká věc, nicméně tuto oblast čeká ještě velký vývoj.

Cache a session

Co ve verzi 0.9.3 není?

Ve verzi 0.9.3 nejsou vývojové záležitosti jako tzv. nové snippety, nezměnila se třída Identity a Presenter používá starou adresářovou strukturu a má stále aktivní přepínače $oldLayoutMode a $oldModuleMode. Zmíněné novinky najdete až ve vývojové větvi 1.0-dev.

Nette
v0.9.2

10. 11. 2009

Po dvou měsících je tu další setinková stabilní verze. Ta především opravuje řadu odhalených chybiček, ale také nabízí několik nových vlastností:

  • Route: volitelné sekvence via [...] (POZOR: místo původních složených závorek jsou ve finální verzi hranaté)
  • nový testovací framework pro self-testing Nette
  • metoda setDefaultValue() na prvcích formuláře
  • nová adresářová struktura pro moduly (aktivuje se přes $oldModuleMode) a s tím související BC break - odstranění proměnných prostředí %templatesDir%, %presentersDir%, %componentsDir%, %modelsDir%
  • vylepšení Image::crop() a resize() (thanx to kravčo)
  • v presenterech lze k singletonům User a Session / SessionNamespace přistupovat přes metody getUser() a getSession().

Šablony:

  • předregistrované helpery: length, substr, number, replace, replaceRE, repeat, implode
  • proměnná $basePath nahrazující $baseUri (liší se v absenci pravostranného lomítka)
  • makro {status ...} pro odeslání HTTP kódu a {layout ...} jako alias pro {extends ...}
  • u definic bloků je nepovinný znak #

Kromě zmíněného BC breaku s proměnnými prostředí by se žádná nekompatibilní změna objevit neměla, takže upgrade na 0.9.2 je doporučený.

Poznámka pro uživatele development verze: OldPresenter a snippety s dvojtečkou jsou součástí jen vývojové verze (tj. 0.9.3-dev) a ve verzi 0.9.2 je nenajdete.

Nette
v0.9.1

18. 9. 2009

Pouhý měsíc po vydání 0.9.0 je tu další setinková stabilní verze. Co nabízí nového?

  • CurlyBrackets se přejmenoval na LatteFilter a byla finalizována podpora n:attributů a dopřána možnost měnit syntax maker via {syntax ...}
  • výrazně byl vylepšen životní cyklus formulářů
  • úpravy API doznal ServiceLocator a rozšířily se tak možnosti konfigurace přes config.ini
  • framework má nyní vlastní testovací framework (code coverage se blíží 80 %)
  • funkce presenterů byla formalizována a fungují jako konvertor z PresenterRequest -> IPresenterResponse
  • nové podoby se dočkal Requirements Checker
  • manipulace s obrázky zachovává poloprůhlednost
  • vylepšeno chování cache úložiště FileStorage v prostředí Windows
  • opravena řada bugů

Součástí distribuce je i nová verze dibi 1.2, jejíž hlavní novinkou je práce s datem prostřednictvím třídy DateTime, takže netrpí limitem pro UNIX timestamp.

Ačkoliv změn je poměrně dost, v jejich souvislosti jsem nezaznamenal žádné problémy, tudíž je možné je v této podobě považovat za stabilní a pustit se do dalšího vývoje. Ten se bude týkat především podpory AJAXu - ve formulářích, presenterech a šablonách.

Nette
v0.9.0

17. 8. 2009

Můžete dát sbohem verzi 0.8, má svého stabilního nástupce.

Co přináší verze 0.9.0 nového? Vylepšení je poměrně dost, jaké jsou ty nejdůležitější:

  • nová knihovna Nette\Mail pro odesílání emailů
  • CurlyBracketsFilter (nyní LatteFilter) prošel velkým vývojem a nově nabízí:
    • nová makra {ifset ...}...{/if}, {assign ...}, {default ...} a {control ...}
    • dynamická dědičnost šablon (zatím experimentální feature)
    • v případě chyby zobrazuje číslo řádku v šabloně
  • koncept chytrých továrniček pro komponenty nahrazující zapovězené metody prepare
  • přímočařejší předávání AJAXových dat přes $presenter->payload
  • nová verze Routing Debuggeru, zobrazující se jako widget na stránce
  • nový pomocník programátora Nette Debug Console a další ladící novinky
  • povinné volání metody startup() v Presenteru zabraňující možným chybám
  • cache nabízí uživatelské validátory (via Cache::CALLBACKS)
  • cache úložiště FileStorage rozděluje soubory do složek
  • přešli jsme na Git

Verze by měla být plně zpětně kompatibilní s v0.8 s výjimkou změn uvedených v tomto fóru (a ty jako vždy hlásí upozornění).

Nette
v0.8

4. 5. 2009

.

Nette
v0.7

23. 1. 2006

Released in 2008 as open source after 4 years of development.

Di
v2.4.17

compatible with PHP 8.0

Tracy
v2.8.9

Database
v3.1.7

  • composer: allows nette/utils 4.0
Application
v3.1.12

  • LatteExtension: added options strictParsing & phpLinter
Di
v3.1.4

  • ParametersExtension: parameters containing expressions have static value '* unavailable value *'
  • ParametersExtension: dynamic parameters are evaluated immediately #291
  • option 'class' is allowed again
Di
v3.1.4

  • ParametersExtension, Container: redesigned way of handling dynamic parameters via getParameter() #291 #288
  • more self explanatory message for factory and service mismatch (closes #199) (#284)
  • Support list<Type> syntax for autowiring a collection of services (#293)
  • Resolver: added support for named variadics #289
  • ContainerPanel: refactoring
  • Option 'class' is allowed again
Database
v3.1.5

  • SqlTranslator: convert BackedEnum to scalar (thanks @milo)
  • normalizeRow() don't return small float as string #289
  • drivers: updated getForeignKeys() #281
  • ConnectionPanel::initialize() replaces Helpers::initializeTracy()
  • DatabaseExtension: creates service '.explorer' as alias to '.context'
  • PgSqlDriver: support for partitioned tables (#286)
  • PgSqlDriver: getColumns() for materialized view too
  • coding style