All notable changes to this project will be documented in this file.
2.14.0 — 2025-12-12
- console: [breaking] allow
--forceto bypassCautionMiddleware(#1804) (bccf92f)
- session: add redis session manager (#1790) (eb7150b)
- core: fix class guards not using the autoloader (#1808) (450b2e7)
- database: support route binding through
IsDatabaseModel(#1794) (3556acb) - database: support pagination with joins and relations (#1801) (0b52ffd)
- router: add null checks and fix route parameter handling (#1778) (c89c345)
- view: throw exception when parsing xml views with
short_open_tagenabled (#1795) (30b2a6f)
2.13.0 — 2025-12-04
- auth: add OAuth installer (#1674) (9c82b71)
- cache: make
assertLockedensure that the checked lock has an expiration (#1758) (1a2e8fb) - container: make all container properties publicly readable (#1785) (be93ec1)
- database: add support for self-referencing relations (#1745) (df2dcdc)
- http: add support to mark Request properties as #[SensitiveField] (#1746) (0000c99)
- auth: correctly map user in GitHub OAuth provider (#1751) (ad2182a)
- auth: pass scopes/options to auth URL builder (#1750) (cbe54d7)
- auth: update outdated authenticatable import (#1752) (5c68b96)
- cache: support enum tags (#1756) (678b695)
- cache: add descriptions to
cache:cleararguments (#1755) (e324f6e) - command-bus: extract uuid from pending commands when not provided (#1761) (b787c16)
- console: properly normalize boolean flag names (#1762) (c6e6867)
- core: gracefully handle missing seeders when using
db:seed(#1759) (450ca75) - process: properly return exit code if missing (#1776) (9ad1587)
2.12.0 — 2025-11-28
- eventbus: add
#[StopsPropagation](#1740) (5769ec2) - validation: support nullable enums (#1739) (a9ca8c4)
- core: remove php 8.5 deprecations (#1742) (7501c1b)
- support: correct some string function oversights (#1743) (f113128)
- support: process error message after callback in box() (#1741) (908352a)
2.11.0 — 2025-11-26
- core: partial discovery loading (#1737) (92a31c3)
2.10.0 — 2025-11-26
- core: load composer dev namespaces (#1736) (892da0c)
- database: add ability to create a query builder from another one (#1725) (55204a0)
- tests: support paratest (#1721) (f5b5cd3)
- view: fixes PHP 8.5 null offset deprecation warning (#1729) (2349c71)
2.9.3 — 2025-11-20
- router: use route registry to generate uris (#1724) (6dc51c2)
2.9.2 — 2025-11-19
- intl: make pluralizer singleton (#1726) (39b2b2d)
2.9.0 — 2025-11-14
- router: improve optional route parameter syntax (#1706) (68f4aba)
- testing: inject app config in Integration test setup (#1710) (14a8da8)
- console: render nullable enum arguments (#1711) (402f0e7)
- eventbus: change dispatched assertion from not null to not empty (#1709) (82318a6)
- view: support relative view paths on windows (#1703) (87b2f7b)
2.8.0 — 2025-11-10
- router: [breaking] add route decorators (#1695) (c901dfe)
2.7.2 — 2025-11-10
- console: respect default value in confirm when forced (#1698) (708c8f9)
2.7.1 — 2025-11-09
- auth: mark password property with
#[SensitiveParameter](#1693) (129fdd5)
- view: discovery locations for view compiler (#1701) (8604b86)
2.7.0 — 2025-11-07
- router: add
#[Stateless]attribute (#1692) (86d140d)
2.6.3 — 2025-11-07
- database: revert broken mysql dsn changes (#1689) (9edc4d2)
2.6.2 — 2025-11-07
- http: cleanup session without starting a new one (#1688) (9a7dee6)
2.6.1 — 2025-11-07
- http: gracefully recover from corrupt session retrieval (#1687) (8c5d8cc)
2.6.0 — 2025-11-07
- view: standalone
TempestViewRenderersupport (#1686) (2f5a3bc)
2.5.0 — 2025-11-06
- core: support booting in phar (#1672) (536db47)
- core: make discovery cache environment variable partial by default (#1682) (f50af80)
- view: add
:issetattribte (#1675) (1af3b23) - view: support single-quote attributes (#1678) (071993a)
- database: fix dsn format for mysql connection (#1664) (6c3cbe2)
- events: prevent enum event naming collisions (#1681) (1602654)
- view: zero-values in attributes (#1679) (66dda2f)
- psr-discovery dependency (#1655) (a1679a1)
2.4.0 — 2025-10-22
- http: [breaking] add
--crawlflag tostatic:generatecommand (#1656) (fee1230)
- auth: invalid key file arguments for Apple OAuth provider (#1640) (bf476c0)
- http: desrialize csrf token from headers (#1616) (d1ee721)
- reflection: return null for method return type if not defined (#1645) (b3acd5f)
- view: handle boolean attribute followed by non space whitespace or self-closing tags (#1632) (cd226a3)
2.3.3 — 2025-10-09
- http: support passing
JsonSerializabletoJsonresponse (#1626) (930e7ee)
- core: optional dependency guards (#1630) (1b23fd4)
2.3.2 — 2025-10-08
- installer: set correct default port on base_uri (#1625) (ef00d98)
- make package dependencies optional where possible (#1624) (530c226)
2.3.1 — 2025-10-07
- view: support void tag rendering for XML files (#1621) (a395534)
2.3.0 — 2025-10-06
- console: support variadic argument (#1572) (b5f4185)
- container: support decorators (#1537) (2d29bd5)
- http: support database-based sessions (#1605) (174044c)
- view: parse RSS feeds with tempest/view (#1617) (7398040)
- database: handle loading circular eager relations (#1556) (b2e0c75)
- database: multiple select fields in one statement (#1603) (cd51bcf)
- http: improve failed request exception messages (#1598) (a84ce29)
- http: publish migration during database session driver installation (#1606) (2d6fa1b)
2.2.1 — 2025-10-03
- database: update or create with initial values (#1597) (d4450aa)
2.2.0 — 2025-10-02
- auth: improve OAuth user flow (#1587) (873fae9)
- oauth: properly set state when creating the redirect URL (#1592) (885a219)
2.1.0 — 2025-10-02
- http: [breaking] add
queryparameter to route testing utilities (#1583) (a819979)
- auth: add support for OAuth (#1577) (742d4fb)
- database: add testing utilities (#1585) (cd39b60)
- database: support for hooked virtual properties (#1586) (938c024)
- support: add
Uriutils (#1580) (83320ab)
- database: saving nullable
BelongsTorelations (#1584) (a572b26)
2.0.4 — 2025-09-25
- database: nullable belongsto relations (#1575) (fc77327)
2.0.2 — 2025-09-18
- database: combining chunk and with in the select querybuilder (#1567) (62743e5)
2.0.1 — 2025-09-18
- database: properly serialize enum values when calling toRawSql (#1564) (3700723)
2.0.0 — 2025-09-16
- auth: [breaking] overhaul authentication and access control (#1516) (16aacc7)
- commandbus: [breaking] rename AsyncCommand to Async (#1507) (9745b28)
- core: [breaking] update exception processors to no longer return a throwable (#1342) (7000028)
- database: [breaking] improve orm experience (#1458) (c6302f3)
- http: [breaking] automatically encrypt cookies (#1447) (6615751)
- router: [breaking] support signed URIs (#1520) (9d0fc5f)
- validator: [breaking] add localization support for validation error messages (#1444) (38217ee)
- container: allow to inject tagged singletons (#1544) (b1459db)
- core: add trace to exception logger (#1508) (af512b0)
- core: improve base testing class (#1509) (830e27b)
- database: primary key improvements (#1517) (b33204f)
- database: dissociate down migrations from up migrations (#1513) (de2334b)
- database: add
#[Hashed]and#[Encrypted]attributes (#1514) (aca1f9a) - http: improve context for failed http requests (#1484) (01287b6)
- mapper: support mapping array of serialized enums (#1521) (122d7a3)
- mapper: support converting array of objects to array (#1523) (accab81)
- process: introduce process component (#1326) (70bc5f8)
- router: add ability to skip middleware per route (#1472) (ba2ef8a)
- router: add method spoofing support for HTML forms (#1536) (fee4da0)
- upgrade: add upgrade package (#1534) (97ceda7)
- upgrade: upgrade router specific namespace changes (#1550) (a416f94)
- validation: add
Existsvalidation rule (#1462) (a28c943) - vite: mention
<x-vite-tags />and documentation link in post-install instructions (#1473) (477dfa9)
- container: allow enums in the #[Tag] attribute (#1506) (fd0912a)
- core: properly handle unserializable discovery items when caching discovery (#1503) (e8c60ea)
- core: discover vendor directory first on all platforms (#1535) (b7dc71e)
- database: support inserting empty rows (#1515) (5c2a500)
- database: ensure natural ordering for migrations (#1541) (1d50336)
- http: null for enums values in request bodies (#1498) (0f7fc94)
- http: fix assertStatus mixing up expected and actual results (#1499) (43dcf58)
- http: discard unencrypted cookies (#1551) (a061e46)
- mapper: don't overwrite request fields (#1487) (a280f56)
1.6.0 — 2025-08-08
- core: improved exceptions for unwriteable internal storage (#1468) (948f800)
- cryptography: introduce cryptography component (#1346) (439b49e)
- database: add
stringmethod onCreateTableStatement(#1454) (9c78fd6) - datetime: add convenience comparison and manipulation methods (#1450) (4aab9ed)
- http: offer more control over server sent events format (#1459) (6623850)
- mapper: implement serialization mapping for DTOs (#1449) (900898a)
- testing: add assert response json assertions (#1433) (754a657)
- vite: support passing configuration to containerized environments (#1426) (acace86)
- router: do not discover controller stub (#1453) (2246f72)
- view: set doctype in
x-base(#1451) (e7ea095) - view: pass scoped variables down view components (#1467) (c911989)
- add json-serializable to
TestResponseHelper$body (#1455) (3d459fd)
1.5.1 — 2025-07-29
- core: improve exceptions related to internal storage (#1434) (00caadf)
- testing: add view data assertions (#1440) (f573fd1)
- view: add csrf token in x-form (#1441) (e4daa51)
1.5.0 — 2025-07-28
- http: [breaking] add cross-site request forgery protection (#1411) (2bb4fcf)
- view: [breaking] properly handle scoped view-components (#1435) (c6237db)
- view: [breaking] support overriding vendor view components (#1439) (3483fe4)
- database: add pagination support (#1417) (07f9f4d)
- http: add
csrf_tokenfunction (#1415) (4386578) - kv-store: introduce key-value store component (#1252) (daee10d)
- response: add a new Response class for json responses (#1423) (d25bc44)
- router: json serializable as response body (#1420) (4af4429)
- view: make default slot available as dynamic slot (#1419) (0f6f261)
- view: add meta command for view components (#1424) (051078b)
- view: add
x-markdowncomponent (#1430) (b81b9ed)
- http: don't cache csrf tokens in views (#1412) (9db65f0)
- http: prevent CSRF token variable name collision (#1413) (361c2fb)
- http: properly handle cookies lifecycle (#1416) (1089f61)
- http: respect file session locks during reads (#1418) (55cb06f)
- mapper: support casting
bool,int,floatand enums (#1414) (c7292e2) - vite: prevent syntax errors on prefetching script (#1421) (15c303e)
1.4.0 — 2025-07-17
- auth: add class-level permission support (#1405) (1404246)
- mailer: introduce mailer component (#1227) (3f5f31e)
- support: add json encode/decode to array and string utilities (#1396) (978bba2)
- vite: inject react refresh when needed (#1406) (b57bf7f)
- mail: fix typos (#1410) (0e29b0e)
- mailer: small tweaks and bugfixes (#1408) (f80536a)
- vite: exclude
.tempestfrom vite's file watcher (#1384) (e1bdcf2)
1.3.0 — 2025-07-10
- database: run
migrate:freshwithout validation by default (#1390) (665c825)
- commandbus: require console as a dependency (#1397) (e56cb6d)
- router: change the
Bindable::resolvereturn type fromstatictoself(#1391) (3ac0e3a) - view: remove multiline comments before AST parsing (#1395) (f2c03df)
1.2.3 — 2025-07-08
- database: fix datetime serialization for mysql database (#1383) (dde0e84)
1.2.2 — 2025-07-08
- vite: make which extensions vite discovers configurable (#1375) (de2d6d4)
- http: allow session id cookies when on a local non-secure host (#1381) (47e993a)
1.2.1 — 2025-07-07
- http: register request interface as singleton as soon as possible (#1379) (b7d1d41)
1.2.0 — 2025-07-07
- database: [breaking] query builder refactor (#1367) (21ca22c)
- database: [breaking] remove
ModelDefinitionin favor orModelInspector(#1372) (7e8bfc6)
- database: add
havingandgroupByin select query builder (#1370) (6bf5c06) - view: add view comments (#1356) (c61519b)
- reflection: improve class reflector memoization (#1360) (d8c502d)
- database: throw
QueryWasInvalidon database fetch failure (#1371) (95b660b) - http: use exclusive locks for file session writes (#1366) (c3c8d03)
- http: prevent mapping request data to reserved properties on request objects (#1374) (96bd1b0)
1.1.0 — 2025-07-05
- database: display sqlite path in
aboutcommand (#1353) (9d8449c) - database: add database seeder support (#1354) (0a49e1f)
- http: support implicit host in serve command (#1350) (ebde2c6)
- session: add reflash method to session (#1338) (8e8d839)
- validation: add HexColor validation rule (#1332) (e9a5a17)
- core: improve overall discovery performance (#1333) (0199fa3)
- core: improve config loading performance (#1341) (d28e896)
- core: fix SkipDiscovery attributes not being detected in vendor packages (#1337) (b049dd9)
- core: add missing config cache initializer (#1340) (bf4770e)
- icon: enable icon cache by default (#1339) (34e0d2d)
- log: fix driver resolving not accounting log level (#1343) (e197b3c)
- router: support implicit HEAD requests (#1349) (f912d6a)
1.0.1 — 2025-06-27
- console: allow dynamic arguments for specific console commands (#1322) (facdc25)
- router: handle
ConvertsToResponseoutside of exception handler (#1320) (d4a219d) - router: allow specifying port using
host:portsyntax (#1321) (dba57d8)
1.0.0 — 2025-06-27
- cache: separate internal and user caches (#1245) (36edbd8)
- cache: support stale while revalidate (#1269) (dde685a)
- console: add inline documentation to console methods (#1232) (6dd0cbb)
- core: add
aboutcommand (#1226) (25c4aff) - core: add discovery config (#1198) (7b3cc70)
- core: support exception reporting (#1264) (914ed58)
- core: load
localandproductionconfigurations last (#1266) (0306cbd) - database: add
count()helper toIsDatabaseModeltrait (#1181) (f2c9e47) - database: add insert()->then() and prevent invalid relations from being attached (#1225) (0e78895)
- database: support multiple databases in migrations and query builders (#1267) (24ba164)
- database: add ShouldMigrate interface (#1273) (d6d3e37)
- database: support dto fields (#1305) (9b802b8)
- datetime: support tempest datetime in validator and mapper (#1257) (5b9d8ff)
- http: add testing client (#1295) (e3743ae)
- icon: introduce icon component (#1313) (cc5b0a6)
- intl: add localization support (#1294) (17eeebc)
- router: support server-sent events (#1260) (b5420a9)
- support: add number formatting utils (#1268) (c2f4e9d)
- support: add uuid utilities (#1270) (20c3559)
- validation: add ability to validate an array of values (#1212) (c4a9237)
- view: support escaped expression attributes (#1222) (014b67f)
- view: default slot content (#1300) (d1a21b0)
- vite-plugin-tempest: allow overriding configuration using
TEMPEST_PLUGIN_CONFIGURATION_OVERRIDE(#1256) (05d9942)
- cache: allow cache clear to be forced (#1272) (768273a)
- console: prevent unknown console arguments (#1238) (975b49a)
- core: register
HttpExceptionHandleronly in production (#1220) (f3a21a5) - core: allow discovery:generate to run even when full caching is enabled (#1223) (1b06332)
- core: display clean version in
aboutcommand (#1251) (f267de2) - core: release script fixes for next beta (#1314) (45fe695)
- database: prevent non-object model queries from trying to use the model class (#1239) (c1561e0)
- database: prepend backslash when creating enum columns (#1228) (e8705a7)
- database: properly display mysql and postgresql versions in
aboutcommand (#1258) (076653a) - database: postgres support (#1259) (f34ad57)
- database: support semicolons in queries (#1262) (b110123)
- event-bus: reorder
listenparameters for consistency (#1291) (0d6e6ee) - framework: handle reflection in config show command (#1211) (972870f)
- intl: remove circular dependency on datetime component (#1299) (957f9c8)
- intl: fix circular dependency (#1301) (9e5eed6)
- intl: fix circular dependency (#1302) (6c71b06)
- router: check internal dead links without the domain (#1210) (62f45c3)
- router: require hard-coded uris to start with a slash in
Router::toUri(#1205) (1f3ec14) - support: make
Arr\forget_valuesandArr\forget_keysmutable (#1215) (286d9a0) - support: use
Closureinstead ofcallablewhen callingpreg_replace_callback(#1231) (ce48368) - support: support more
to_snake_caseedge cases (#1250) (dcf926a) - view: properly unset local view component variables (#1221) (6bdb652)
- view: prevent infinite loop with unclosed PHP or comment tags (#1282) (347513a)
- view: fix falsy boolean evaluation on comments (#1289) (8d0d780)
- view: handle icon name parsing without colon (#1298) (e34e120)
- view:
InvalidClosingTagshould ignore commented out code attributes (#1288) (3892651) - vite: ignore missing
.gitignoreduring installation (#1275) (a986846) - vite: use npm as fallback when no package manager is detected during installation (#1297) (b8b64d0)
- use correct README guideline link (#1213) (670da14)
1.0.0-beta.1 — 2025-05-07
- console: add
make:migrationcommand (#871) (e34654a) - console: add option to use terminal width to render key/values (#1148) (0c553d4)
- container: support lazy dependency initialization using lazy proxies (#1090) (78273cc)
- container: add
container:showcommand (#1118) (80ab136) - container: support dynamic tags using dynamic initializers (#1120) (0980e3a)
- core: add middleware priority and discovery (#1109) (da6665c)
- core: display more data in default error handler (#1116) (90e8208)
- core: improve exception handling (#1203) (9b31ecc)
- database: allow overriding table names through model class attributes (#1060) (412c2d0)
- database: store default sqlite database in internal storage (#1075) (d1704e8)
- database: add migration hash checking (#1054) (90fa20c)
- database: model validation before update, create, and save (#1131) (58f15f9)
- database: add
HasConditionsto query builders (#1154) (619dd11) - database: add
Countquery builder and statement (#1174) (22dbe07) - datetime: add datetime component (#1158) (76d70c1)
- event-bus: add event bus testing utilities (#1103) (9c84c68)
- router: allow checking an action against the current route (#1059) (a8b6ea9)
- router: support returning
stringandarrayfrom controllers (#1083) (5fb1045) - router: introduce response processors (#1084) (fb8977b)
- router: support getting raw body from requests (#1093) (9d86d13)
- router: add redirect back response (#1050) (8d43ce5)
- router: detect dead links when generating static pages (#1192) (453e1cb)
- storage: add storage component (#1149) (4baead1)
- storage: support multiple storage configurations (#1187) (5b8be8a)
- support: support array parameters in string manipulations (#1073) (283af0b)
- support: rename
map_arraytomap_iterable(#1071) (1eaf65e) - support: support
$defaulton arrayfirstandlastmethods (#1096) (0d93283) - support: add
removeValuesto array utils (#1204) (3209379) - view: add
view:clearcommand (#1069) (4137981) - view: improve boolean attributes (#1111) (35f85e9)
- view: attribute precedence (#1153) (96f3149)
- view: dynamic view components (#1169) (06be1af)
- view: prevent invalid closing tags (#1195) (215671f)
- vite: disable tag resolution in tests by default (#1072) (71efbae)
- view: improve view component discovery performance (#1191) (25adb82)
- console: keep colors in key-value lines (#1068) (02aa357)
- console: do not discover stub files (#1136) (30f012d)
- console: do not discover stub files (#1138) (3fc2a15)
- console: select default option in ask component (#1139) (797392e)
- console: properly place cursor in multiline input (#1141) (b079c5e)
- core: publish tempest binary via composer (#1207) (03cccff)
- database: improved check on missing migrations table (#1092) (ed6f85c)
- filesystem: add ability to delete invalid symlinks (#1206) (12e2b03)
- mapper: properly serialize nullable properties in objects (#1107) (0b824b6)
- support: non-dev bun dependencies installation (#1124) (da7006f)
- support: fix psr-4 namespace path generation with dots and slashes in the composer path (#1166) (ce06b52)
- validation: more lenient scalar validation (#1127) (dcc2401)
- validation: enum request validation (#1130) (2181ec8)
- view: lexing multiline attributes in windows (#1121) (33085b0)
- view:
:is replaced by-and@is removed (#1125) (2f0b247) - view: hyphens in slot names (#1129) (bead5a5)
- view: don't throw when using a
<table>element (#1133) (5a05f6d) - view: prevent
$varfrom beingnulled after passing to component (#1160) (9aeb727) - view: switch to runtime icon view component (#1165) (6b84639)
- view: improved attribute precedence (#1168) (077cc7d)
- view: fallback attributes fix with nested slots (#1172) (5f38986)
- view: wrong matched imports in view component slots (#1173) (6c5da00)
- view: dynamic components with slots (#1171) (9fb3dd4)
- fix release script adding tempest/highlight dependency (be80673)
1.0.0-alpha.6 — 2025-03-24
- support: [breaking] improve architecture of support utilities (#940) (bb75e81)
- vite: [breaking] automatically discover entrypoints (#1051) (ebe3ef4)
- console: add
make:commandcommand (#1048) (13bc731) - console: add
make:discoverycommand (#1057) (2bd5814) - console: add
make:generator-commandcommand (#1056) (6992b70) - core: add kernel interface (#924) (2a2c454)
- database: refactor DatabaseConfig interface (#902) (3d3a094)
- database: add a
Virtualattribute to exclude model properties from query builder (#966) (b6252dc) - database: add a
findBymethod to models (#965) (8d479bc) - http: empty request values are converted to null (#976) (dc5323b)
- http: fix http header casing on retrieval (#1024) (be2fb43)
- mapper: add two-way casters (#920) (0748aa9)
- mapper: add
MapFromandMapToattributes (#929) (b9a89de) - mapper:
ObjectToArrayMapperuseCaster::serializeto serialize the property value (#947) (269bfcb) - mapper: map()->with()->to() (#951) (e6f04ee)
- mapper: allow multiple fields in
#[MapFrom](#944) (381c58d) - support: add enums support (#878) (964d55a)
- support: add
basenameto string utils (#1039) (1d4f563) - support: add
slug,asciiandisAsciito string utils (#1040) (3eb8b35) - support: add
wordsandsentencemethods to string utils (#1042) (b2dfd32) - support: add
groupByto array utils (#1047) (d696826) - support: add
mapFirstToandmapLastToto array utils (#1038) (b188609) - validation: allow
Stringableobjects inIsStringrule (#1029) (bd22988) - view: support dynamic
$slotsandx-template(#911) (1ba1629) - view: more lenient DOM parsing (#941) (0fe0df9)
- view: remove empty slots in production (#950) (64b1ff0)
- view: support relative view paths (#953) (2479148)
- view: access view component attributes (#1008) (6c7dfae)
- view: add view processors (#1011) (573d557)
- view: view components by file name (#1013) (12b5503)
- view: fallthrough attributes (#1014) (e1ce286)
- view: add icon component (#1009) (46570eb)
- view: support merging class attributes (#1020) (80ff7be)
- view: cache Blade and Twig templates in internal storage (#1061) (1e33722)
- vite: add Tailwind CSS option to the installer (#926) (cfe1564)
- vite: add
<x-vite-tags />component (#945) (888f5b1)
- database: make
AlterTableStatementproduce valid SQL (#979) (fd63ec0) - discovery: pass real paths to discovery classes (#1053) (97bfbf2)
- linter: exclude cache directories (#1046) (0b27762)
- mapper: nullable datetime caster (#974) (118eeb5)
- mapper: validate before mapping (#980) (0688c97)
- router: content-type json support when mapping psr request to tempest request (#956) (16345b6)
- router: use correct input stream (#1005) (768c6fb)
- validation: prevent type errors in rules using
preg_match(#1043) (4a00657) - view: render doctype and html tags properly (#910) (dff3884)
- view: fix for compiling HTML documents that contain PHP (#922) (f93fb3d)
- view: comment out empty slots (#938) (1b3433d)
- view: hardcoded boolean attributes shouldn't be parsed (#952) (dff166b)
- view: regex timeout (#1015) (2e24641)
- view: support
<x-component>in auto-registered components (#1018) (371d9ea) - view: don't allow php expressions in attributes (#1019) (6931350)
- view: do not duplicate
<br />tag (#995) (2279402) - view: prevent compiling parent elements of minified void tags (#1055) (0b25975)
- vite: generate absolute asset urls (#1023) (3551008)
- vite: don't discover template entrypoints (#1052) (3d7cbbd)
1.0.0-alpha.5 — 2025-02-24
- console: add
make:initializercommand (#771) (cf354b7) - console: add backed enum support to
ask(#808) (5e3d99e) - console: improve rescuing enum console parameters (#809) (7c64c7c)
- console: allow calling console commands via fqcn (#824) (a6ba3b6)
- console: provide command suggestions when using
:shorthands (#814) (107f8b8) - console: add installer (#837) (90b6321)
- console: add
make:middlewarecommand (#804) (467c664) - console: several QOL improvements (#847) (05dac5c)
- console: add support for printing hyperlinks (#850) (6f457af)
- console: add
make:configcommand (#863) (d0f3f53) - console: add
make:viewcommand (#864) (a4ab813) - console: add
taskcomponent (#857) (d4dac18) - container: add
hasandunregister(#840) (09ced7a) - core: allow
defercallbacks to receive parameters from container (#798) (42262fa) - core: add
TEMPEST_STARTconstant (#791) (1cabe2d) - core: optionally run
composer upafter installers (#839) (6747d2c) - database: improved database indexing (#851) (82f1808)
- database: alter table with only indices (#852) (61e7abb)
- database: chunked results (#855) (e332bbd)
- database: bindings in query methods (#859) (49f019c)
- database: add
rawtoCreateTableStatement(#868) (60dcc28) - database: add explicit relation attributes (#874) (5e4df24)
- database: add closable connection wrapper for PDO connection (#875) (15f8995)
- debug: emit
ItemsDebuggedon debug (#796) (c1be5e6) - framework: extend http testing methods (#790) (dd01ef1)
- framework: overhaul console interactions (#754) (e966ecb)
- log: emit
MessageLoggedwhen logs are written (#795) (50b27c8) - log: configure log paths through env by default (#820) (52f200a)
- support: improve types of
HasConditions(#800) (00aa6ea) - support: add
everytoArrayHelper(#813) (9d39e15) - support: add
appendandprependtoArrayHelper(#833) (7daf3fc) - support: add
HtmlStringclass (#842) (751f0d1) - view: add twig support (#841) (0f47a80)
- vite: add Vite installer (#901) (f9f4167)
- add Vite support (#829) (4099b40)
- core: do not redefine
TEMPEST_START(#806) (2739f4f) - database: default strong comparison check (#858) (b6064a6)
- database: loading database relations or other objects (#884) (0214ac3)
- generation:
ClassManipulatornow make replacements before simplifies classnames (#876) (fe0f3b2) - http: remove empty directories when running
static:clean(#784) (3f0d17b) - http: correct HTTP 418 description and coverage (#823) (dbad109)
- support: support keys with dots in
ArrayHelper#get(#832) (8372827) - tests: update IPv6 test to align with PHP 8.4.3 behavior (dec5c2f)
- view: check the existing of the
$tagNameproperty (#803) (f34c2ba) - view: support doc comment elements (#816) (8b95679)
- view: self-closing view component tags (#818) (420e5d8)
- view: use bug when compiling view (#893) (6ce796c)
- vite: fall back to global entrypoints if supplied ones are empty (#870) (08df98c)
- vite: support new cors rules in Vite 6 (#890) (d991bfd)
- change order of scripts in composer.json (#786) (f948184)
1.0.0-alpha.4 — 2024-11-25
- commandbus: async commands (#685) (bfa1706)
- console: support negative arguments (#660) (1cdf158)
- console: support "no prompt" mode (#661) (687e333)
- console: add
nameparameter to#[ConsoleArgument](#617) (2a73033) - console: ensure
tempest servesupports routes with file extension (#704) (6300617) - console: support dynamic style injections (#703) (6847a79)
- console: accept
BackedEnumas command arguments (#722) (c21f24e) - console: add
make:controllerandmake:modelcommands (#647) (0bdee91) - console: add
make:requestcommand (#730) (987eabf) - console: infer binary path for scheduler (#758) (25e5d81)
- console: add
make:responsecommand (#760) (e76c1f8) - container: support injecting properties using
#[Inject](#690) (ab0eecd) - core: install main namespace (#751) (3f9bdde)
- core: partial discovery cache (#763) (2049f6e)
- database: add json data type (#709) (d599d50)
- database: add
setdata type (#725) (f0db5c8) - filesystem: add new
Filesystemcomponent (#441) (25d4a47) - framework: add
config:showcommand (#732) (2124577) - http: map uploaded files into the request properties (#702) (a97014c)
- http: add
Deleteattribute (#733) (613b884) - http: add
PutandPatchattributes (#742) (3621006) - log: allow usage of multiple same log channels (#718) (68d7e54)
- mapper: json file to object mapper (#748) (99933ff)
- routing: add regex chunking to route regex (#714) (3eb0c59)
- support: add sorting methods to
ArrayHelper(#659) (8f52e4a) - support: add
wrapandunwraptoStringHelper(#693) (a0fffe9) - support: support not specifying a value to
ArrayHelper::popandArrayHelper::unshift(#692) (6a56d94) - support: add
starttoStringHelper(#713) (f719c20) - support: add methods
reduce,chunkandfindKeytoArrayHelper(#720) (c8a31db) - support: add more methods to
ArrayHelperandStringHelper(#721) (bdf5efc) - validation:
ArrayListrule (#745) (ddda992) - validation: enhance enum validation (#755) (ca7a226)
- view: add boolean attributes (#700) (04000ac)
- view: add raw html element (#738) (df6a418)
- optimize routing (#626) (83f1dac)
- multiple routes per controller method (#667) (166912d)
- route enum binding support (#668) (f055fc1)
- exception handler improvements (#670) (0f97964)
- middleware callables (#672) (d2e8a4e)
- routing: replace recursion in favor of iteration (#705) (32aaff4)
- commandbus: disallow having two
#[CommandHandler]for the same command (#706) (f3054f9) - console: handle nested
styletags (#726) (779973e) - core: discovery location loading order (#663) (6fc2d95)
- core: discovery errors being silenced (#688) (f5b848c)
- core: installers not updating docblock references (#696) (7b7e2ca)
- generation: simplify traits and method parameter attributes (#753) (3cca6bc)
- http: collision between route and query params for uri generator (#687) (e22492a)
- http: use document root instead of env in
tempest serve(#717) (ccc1ece) - http: use default log config only if no config is provided (#719) (fbaf866)
- support: support calling
firstandlaston emptyArrayHelper(#691) (9021c6e) - view: several bugfixes (#662) (5034d0a)
- view: attributes for raw elements (#734) (f89eb5d)
- view: extra null check for node attributes (#740) (5fa27bc)
- query param name collision in uri function (#679) (59fe4fb)
- rector (#680) (7fdff1d)
1.0.0-alpha.3 — 2024-10-31
- [breaking] add support for specifying an optional port in serve command (b8b9167)
- [breaking] add the ability to use custom regex for route params (871dda9)
- console: support string keys in
MultipleChoiceComponent(#567) (78f2794) - container: add ability to invoke arbitrary closures (#535) (c1da5f1)
- core: add root_path helper (#607) (ccfcf94)
- event-bus: support closure-based listeners (#540) (0fa02bc)
- generation: add
ClassGenerator(#544) (f54a0e0) - support: improve helpers (#538) (6d60b9b)
- support: improve array helper with additional methods (#557) (57e6cd8)
- support: refactor dd() method to use logger in string helper and add the dump() method (#563) (3349cf1)
- support: add implode()/explode() methods in string helper (#564) (5718796)
- support: add methods to array helper (#590) (b16f797)
- support: add inline documentation on helper classes (#611) (c5fdcad)
- validation: support validating by closure (#570) (450bc58)
- match all method for string helper class (#536) (0f33a44)
- enhance matchAll method to support flags and offset (9da79f4)
- add named hasOne relation (#549) (58906b7)
- add initializer for builtin types (#541) (bd64f5a)
- add boolean data type (#547) (#555) (6776fff)
- add
isList()andisAssoc()methods in ArrayHelper for array type checking (#566) (f465060) - event bus improvements (#623) (bf7ff15)
- add defer helper (#624) (15cd46e)
- install command (#625) (10f3388)
- add inline documentation on all namespaced functions (#616) (bef5af7)
- publish imports (#643) (52ca58d)
- #275: implement weekly log rotation (#548) (14fea7d)
- container: fix caching of autowire discovered classes (#630) (6a5a5d5)
- http: fix so referer header is resolved depending on request class in invalid response (#604) (d463258)
- phpstan: fix phpstan issues (#556) (b1495b2)
- phpstan: fix last phpstan issues (#589) (e719dfa)
- view: consume dynamic attributes (#644) (972595c)
- terminal line clearing (#576) (ce2b6c4)
- low terminal frame rate causing keystrokes to be dropped (#577) (8f414d6)
- rector config (#581) (83c103d)
- view argument casing (#585) (158b2db)
- nullable properties not seen as nullable by TypeReflector (#591) (6e7dc59)
- disable rector ci (#595) (88dfdfb)
- type reflector uses wrong definition when converting to class (#592) (94071c3)
- view components with multiple attributes (#599) (e00d0cd)
- console cache dependency (#603) (2acdf9a)
- duplicate command completion (#600) (effb684)
- publish file root namespace (#638) (2051dd4)
- add release script (e1a1107)
- core: add
Composerutil (#519) (40c5f03) - database: implement table naming strategies (#453) (519f44f)
- discovery: add ability to hide classes from discovery (#512) (c09cdf4)
- discovery: allow exceptions on
DoNotDiscoverclasses (#521) (1dcacae) - generation: add
ClassManipulator(#531) (92ccb7d) - string-helper: add replacement and concatenation methods (#517) (6e3a63a)
- support: adds string pluralizer (32fb3e9)
- support: add
StringHelper(ccb1e65) - refactor string helper to object (#433) (5eca329)
- add array helper (#434) (988f28d)
- request::has methods (#448) (82e6522)
- add base uri support (#449) (f243a1f)
- always log errors in production handler (#454) (0652e9c)
- cache (#474) (00fd2de)
- add str::startswith and endswith (#484) (3ac79d6)
- cache:clear command (#487) (c1f6cc4)
- use directories instead of file names to allow default server config setup (#479) (140f9eb)
- add output to schedule:run command (#489) (c57b1ac)
- allow hard-coded uris in router::touri (#490) (72e88c8)
- add autowire/autodiscovery/auto-initialization of interfaces to classes (#501) (1572122)
- array helper::map-to (#505) (e4bb059)
- authenticator (#493) (5017c5f)
- adds
enctypewithin the form component (#500) (7c4f12d) - str match (#527) (ce899cd)
- str regex functions (#528) (672ea02)
- allow object to define how they are mapped to array (#532) (19d001b)
- console: support
defaultparameter on textbox component (#518) (3c86f8e) - view: join generic elements with an empty string (3ad5461)
- Missing descriptions in composer files (5c28483)
- package validation reading the license from composer files (3701b64)
- view renderer bug fixes (#439) (d60d26f)
- view renderer bug fixes (#440) (6a85ef8)
- improved error handling for warnings and deprecations (#443) (1e7ad4d)
- response sender improvements for download and file responses (#447) (3132bed)
- extra check for existing file (#455) (f466b7d)
- properly detect application (#456) (ee84b94)
- view component attribute fixes (#459) (4622298)
- package dependencies (#461) (e1e8470)
- dependency loop between kernel and event-bus (#475) (53a9c86)
- rename console component interfaces (#476) (d96f98e)
- database component tests (#477) (02a85e1)
- typo in readme (#473) (df14709)
- handle invalid discovery cache (#492) (bc44eb9)
- validation referer (#511) (a3710a8)
- datetime caster with datetime object (#514) (e361f26)
- static generate error handling (#529) (02b4db8)