You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tempest's first alpha release was tagged half a year ago. It's amazing to see that, since then, 35 people have contributed to the project, and alpha.6 is so different and so much more feature-rich than alpha.1. At the same time, it's important to realize that we cannot stay in alpha for years. There is so much more to be done, and Tempest is far from "ready", but there's a real danger of ending in an infinite "alpha limbo", where we keep adding awesome stuff, but never get to actually release something for real.
16
+
Tempest's first alpha release was tagged half a year ago. It's amazing to see that, since then, 35 people have contributed to the project, and alpha6 is so different and so much more feature-rich than alpha1. At the same time, it's important to realize that we cannot stay in alpha for years. There is so much more to be done, and Tempest is far from "ready", but there's a real danger of ending in an infinite "alpha limbo", where we keep adding awesome stuff, but never get to actually release something for real.
17
17
18
18
I want Tempest to be real. And real things aren't perfect. They don't _have_ to be perfect. That's why we're now moving towards 1.0. There'll be one or two beta releases after this one, but that's it. The goal of these beta releases will be to fix some final bugs, review the docs, do some touch-ups here and there. The goal of 1.0 isn't to be perfect, it's to be real.
19
19
20
20
There is one thing we've agreed on with the core team: we'll mark some components and features as _experimental_. These experimental features can still change after 1.0 in minor releases. This gives us a bit more freedom to iron out the kinks, but also gives Tempest users some more certainty about what's changing and what not. The goal is to have this list ready before beta.1, and then we'll have some more insights in whether there are possibly future breaking changes or not.
21
21
22
-
All of that being said, let's talk about what's new in Tempest alpha.6!
22
+
All of that being said, let's talk about what's new in Tempest alpha6!
23
23
24
-
## tempest/view updates
24
+
## `tempest/view` updates
25
25
26
-
We start with tempest/view, which has gotten a lot of love this release. We've fixed a wide range of edge cases and bugs (many were caused because we switched to PHP's built-in HTML 5 spec compliant parser), but we also added a whole range of cool new features.
26
+
We start with {`tempest/view`}, which has gotten a lot of love this release. We've fixed a wide range of edge cases and bugs (many were caused because we switched to PHP's built-in HTML 5 spec compliant parser), but we also added a whole range of cool new features.
27
27
28
-
### x-template
28
+
### `x-template`
29
29
30
30
There's a new `{html}<x-template>` component which will only render its contents so that you don't have to wrap that content into another element. For example, the following:
31
31
@@ -54,7 +54,7 @@ View components now have direct access to the `$slots` and `$attributes` variabl
54
54
```html
55
55
<x-componentname="x-tabs">
56
56
<span:foreach="$attributes['tags'] as $tag">{{ $tag }}</span>
57
-
57
+
58
58
<x-codeblock:foreach="$slots as $slot">
59
59
<h1>{{ $slot->name }}</h1>
60
60
@@ -106,7 +106,7 @@ final class BookController
106
106
public function index(): View
107
107
{
108
108
// book_index.view.php can be in the same folder as this directory
109
-
return view('book_index.view.php');
109
+
return view('book_index.view.php');
110
110
}
111
111
}
112
112
```
@@ -157,17 +157,17 @@ View components can now be discovered by file name:
157
157
</x-base>
158
158
```
159
159
160
-
### The x-icon components
160
+
### The `x-icon` component
161
161
162
-
And finally, there's a new `{html}<x-icon>` componentwhich adds built-in support for [iconfy](https://iconify.design/) icons:
162
+
And finally, there's a new `{html}<x-icon>` component, added by {gh:nhedger,Nicolas}, which adds built-in support for [Iconify](https://iconify.design/) icons:
Enzo has made some pretty significant changes to our `arr()` and `str()` helpers: there are now two variants available: `MutableString` and `ImmutableString`, as well as `MutableArray` and `ImmutableArray`. The helper functions still use the immutable version by default:
170
+
{gh:innocenzi,Enzo} has made some pretty significant changes to our `arr()` and `str()` helpers: there are now two variants available: `MutableString` and `ImmutableString`, as well as `MutableArray` and `ImmutableArray`. The helper functions still use the immutable version by default:
Enzo has worked hard to add Vite support, with the option to install Tailwind as well. It's as simple as running the Vite installer:
254
+
{gh:innocenzi,Enzo} has worked hard to add Vite support, with the option to install Tailwind as well. It's as simple as running the Vite installer:
255
255
256
256
```php
257
257
~ ./tempest install vite
@@ -263,7 +263,7 @@ Next, add `{html}<x-vite-tags />`, in the `{html}<head>` of your template:
263
263
<htmllang="en"class="h-dvh flex flex-col">
264
264
<head>
265
265
<!-- … -->
266
-
266
+
267
267
<x-vite-tags/>
268
268
</head>
269
269
<body>
@@ -284,7 +284,7 @@ Done!
284
284
285
285
## Database improvements
286
286
287
-
Vincent has simplified database configs, instead of having a single `DatabaseConfig` object with a connection, we've created a `DatabaseConfig` interface, which each driver now implements:
287
+
{gh:blackshadev,Vincent} has simplified database configs, instead of having a single `DatabaseConfig` object with a connection, we've created a `DatabaseConfig` interface, which each driver now implements:
288
288
289
289
```php
290
290
// app/Config/database.config.php
@@ -301,21 +301,21 @@ return new MysqlConfig(
301
301
);
302
302
```
303
303
304
-
Next, Matt added support for a `#[Virtual]` property, which excludes models fields from the model query:
304
+
Next, {gh:mattdinthehouse,Matt} added support for a `#[Virtual]` property, which excludes models fields from the model query:
305
305
306
306
```php
307
307
use Tempest\Database\Virtual;
308
308
use Tempest\Database\DatabaseModel;
309
309
use Tempest\Database\IsDatabaseModel;
310
310
311
311
class Book implements DatabaseModel
312
-
{
312
+
{
313
313
use IsDatabaseModel;
314
-
314
+
315
315
// …
316
-
316
+
317
317
public DateTimeImmutable $publishedAt;
318
-
318
+
319
319
#[Virtual]
320
320
public DateTimeImmutable $saleExpiresAt {
321
321
get => $this->publishedAt->add(new DateInterval('P5D'));
@@ -325,7 +325,7 @@ class Book implements DatabaseModel
325
325
326
326
## New website
327
327
328
-
One last thing to mention — you might have noticed it already — we've completely redesigned the Tempest website! A big shout-out to Enzo who made a huge effort to get it ready! Of course, there a lot more changes with this release, you can check the [full changelog here](https://github.com/tempestphp/tempest-framework/releases/tag/v1.0.0-alpha.6).
328
+
One last thing to mention — you might have noticed it already — we've completely redesigned the Tempest website! A big shout-out to {gh:innocenzi,Enzo} who made a huge effort to get it ready! Of course, there a lot more changes with this release, you can check the [full changelog here](https://github.com/tempestphp/tempest-framework/releases/tag/v1.0.0-alpha.6).
0 commit comments