main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
Bump askama 0.13 to 0.16 across server and multithreaded
0.16 makes {% call %} a block node requiring {% endcall %}. Appended
{% endcall %} to all 31 bare call sites in server templates;
multithreaded uses no {% call %} so it is a lockfile-only bump.
Co-Authored-By
Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 files changed,
+89 insertions,
-64 deletions
46
46
47
47
[[package]]
48
48
name = "askama"
49
-
version = "0.13.1"
49
+
version = "0.16.0"
50
50
source = "registry+https://github.com/rust-lang/crates.io-index"
51
-
checksum = "5d4744ed2eef2645831b441d8f5459689ade2ab27c854488fbab1fbe94fce1a7"
51
+
checksum = "f1bf825125edd887a019d0a3a837dcc5499a68b0d034cc3eb594070c3e18addc"
52
52
dependencies = [
53
-
"askama_derive",
53
+
"askama_macros",
54
54
"itoa",
55
55
"percent-encoding",
56
56
"serde",
59
59
60
60
[[package]]
61
61
name = "askama_derive"
62
-
version = "0.13.1"
62
+
version = "0.16.0"
63
63
source = "registry+https://github.com/rust-lang/crates.io-index"
64
-
checksum = "d661e0f57be36a5c14c48f78d09011e67e0cb618f269cca9f2fd8d15b68c46ac"
64
+
checksum = "e1c7065972a130eafa84215f21352ae15b4a7393da48c1f5e103904490736738"
65
65
dependencies = [
66
66
"askama_parser",
67
67
"basic-toml",
68
+
"glob",
68
69
"memchr",
69
70
"proc-macro2",
70
71
"quote",
75
76
]
76
77
77
78
[[package]]
78
-
name = "askama_parser"
79
-
version = "0.13.0"
79
+
name = "askama_macros"
80
+
version = "0.16.0"
80
81
source = "registry+https://github.com/rust-lang/crates.io-index"
81
-
checksum = "cf315ce6524c857bb129ff794935cf6d42c82a6cff60526fe2a63593de4d0d4f"
82
+
checksum = "0e23b1d2c4bd39a41971f6124cef4cc6fd0540913ecb90919b69ab3bbe44ae1a"
82
83
dependencies = [
83
-
"memchr",
84
+
"askama_derive",
85
+
]
86
+
87
+
[[package]]
88
+
name = "askama_parser"
89
+
version = "0.16.0"
90
+
source = "registry+https://github.com/rust-lang/crates.io-index"
91
+
checksum = "7db09fde9143e7ac4513358fb32ee32847125b63b18ea715afd487956da715da"
92
+
dependencies = [
93
+
"rustc-hash",
84
94
"serde",
85
95
"serde_derive",
86
-
"winnow 0.7.15",
96
+
"unicode-ident",
97
+
"winnow",
87
98
]
88
99
89
100
[[package]]
1449
1460
"wasm-bindgen",
1450
1461
]
1451
1462
1463
+
[[package]]
1464
+
name = "glob"
1465
+
version = "0.3.4"
1466
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1467
+
checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
1468
+
1452
1469
[[package]]
1453
1470
name = "governor"
1454
1471
version = "0.10.4"
3863
3880
"toml_datetime",
3864
3881
"toml_parser",
3865
3882
"toml_writer",
3866
-
"winnow 1.0.4",
3883
+
"winnow",
3867
3884
]
3868
3885
3869
3886
[[package]]
3881
3898
source = "registry+https://github.com/rust-lang/crates.io-index"
3882
3899
checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
3883
3900
dependencies = [
3884
-
"winnow 1.0.4",
3901
+
"winnow",
3885
3902
]
3886
3903
3887
3904
[[package]]
4731
4748
source = "registry+https://github.com/rust-lang/crates.io-index"
4732
4749
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
4733
4750
4734
-
[[package]]
4735
-
name = "winnow"
4736
-
version = "0.7.15"
4737
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4738
-
checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
4739
-
dependencies = [
4740
-
"memchr",
4741
-
]
4742
-
4743
4751
[[package]]
4744
4752
name = "winnow"
4745
4753
version = "1.0.4"
4746
4754
source = "registry+https://github.com/rust-lang/crates.io-index"
4747
4755
checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
4756
+
dependencies = [
4757
+
"memchr",
4758
+
]
4748
4759
4749
4760
[[package]]
4750
4761
name = "wiremock"
52
52
chrono = { version = "0.4", features = ["serde"] }
53
53
uuid = { version = "1", features = ["v4", "serde"] }
54
54
pulldown-cmark = "0.13"
55
-
askama = "0.13"
55
+
askama = "0.16.0"
56
56
57
57
# Internal crates
58
58
mt-core = { path = "crates/mt-core" }
334
334
335
335
[[package]]
336
336
name = "askama"
337
-
version = "0.13.1"
337
+
version = "0.16.0"
338
338
source = "registry+https://github.com/rust-lang/crates.io-index"
339
-
checksum = "5d4744ed2eef2645831b441d8f5459689ade2ab27c854488fbab1fbe94fce1a7"
339
+
checksum = "f1bf825125edd887a019d0a3a837dcc5499a68b0d034cc3eb594070c3e18addc"
340
340
dependencies = [
341
-
"askama_derive",
341
+
"askama_macros",
342
342
"itoa",
343
343
"percent-encoding",
344
344
"serde",
347
347
348
348
[[package]]
349
349
name = "askama_derive"
350
-
version = "0.13.1"
350
+
version = "0.16.0"
351
351
source = "registry+https://github.com/rust-lang/crates.io-index"
352
-
checksum = "d661e0f57be36a5c14c48f78d09011e67e0cb618f269cca9f2fd8d15b68c46ac"
352
+
checksum = "e1c7065972a130eafa84215f21352ae15b4a7393da48c1f5e103904490736738"
353
353
dependencies = [
354
354
"askama_parser",
355
355
"basic-toml",
356
+
"glob",
356
357
"memchr",
357
358
"proc-macro2",
358
359
"quote",
363
364
]
364
365
365
366
[[package]]
366
-
name = "askama_parser"
367
-
version = "0.13.0"
367
+
name = "askama_macros"
368
+
version = "0.16.0"
368
369
source = "registry+https://github.com/rust-lang/crates.io-index"
369
-
checksum = "cf315ce6524c857bb129ff794935cf6d42c82a6cff60526fe2a63593de4d0d4f"
370
+
checksum = "0e23b1d2c4bd39a41971f6124cef4cc6fd0540913ecb90919b69ab3bbe44ae1a"
370
371
dependencies = [
371
-
"memchr",
372
+
"askama_derive",
373
+
]
374
+
375
+
[[package]]
376
+
name = "askama_parser"
377
+
version = "0.16.0"
378
+
source = "registry+https://github.com/rust-lang/crates.io-index"
379
+
checksum = "7db09fde9143e7ac4513358fb32ee32847125b63b18ea715afd487956da715da"
380
+
dependencies = [
381
+
"rustc-hash 2.1.2",
372
382
"serde",
373
383
"serde_derive",
374
-
"winnow 0.7.15",
384
+
"unicode-ident",
385
+
"winnow 1.0.4",
375
386
]
376
387
377
388
[[package]]
9035
9046
version = "1.0.4"
9036
9047
source = "registry+https://github.com/rust-lang/crates.io-index"
9037
9048
checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
9049
+
dependencies = [
9050
+
"memchr",
9051
+
]
9038
9052
9039
9053
[[package]]
9040
9054
name = "wiremock"
34
34
tracing-subscriber = { version = "0.3.22", features = ["env-filter", "json"] }
35
35
36
36
# Templates
37
-
askama = "0.13.1"
37
+
askama = "0.16.0"
38
38
39
39
# Environment & Configuration
40
40
dotenvy = "0.15.7"
24
24
</header>
25
25
26
26
{% if items.is_empty() %}
27
-
{% call ui::empty_state("", "This collection is empty.") %}
27
+
{% call ui::empty_state("", "This collection is empty.") %}{% endcall %}
28
28
{% else %}
29
29
<section>
30
30
{% for item in items %}
11
11
<h1 class="page-title">Your Feed</h1>
12
12
13
13
{% if items.is_empty() %}
14
-
{% call ui::empty_state_with_action("Nothing here yet", "Follow users, projects, or tags to see their items here.", "/discover", "Browse Discover") %}
14
+
{% call ui::empty_state_with_action("Nothing here yet", "Follow users, projects, or tags to see their items here.", "/discover", "Browse Discover") %}{% endcall %}
15
15
{% else %}
16
16
<div class="feed-meta">Showing {{ showing_start }}-{{ showing_end }} of {{ total_items }} items</div>
17
17
72
72
{% if !landing_carousel.is_empty() %}
73
73
<section class="landing-showcase" aria-label="See the platform">
74
74
<h2 class="section-label">See the platform</h2>
75
-
{% call carousel::carousel("landing-shots", landing_carousel) %}
75
+
{% call carousel::carousel("landing-shots", landing_carousel) %}{% endcall %}
76
76
</section>
77
77
{% endif %}
78
78
214
214
215
215
{% if !gallery.is_empty() %}
216
216
<section class="item-gallery content-section">
217
-
{% call carousel::carousel("item-gallery", gallery) %}
217
+
{% call carousel::carousel("item-gallery", gallery) %}{% endcall %}
218
218
</section>
219
219
{% endif %}
220
220
156
156
}
157
157
</script>
158
158
</mnw-media-player>
159
-
{% call island::island("media-player") %}
159
+
{% call island::island("media-player") %}{% endcall %}
160
160
<script src="/static/page-library-audio.js?v=0623" defer></script>
161
161
{% endblock %}
150
150
}
151
151
</script>
152
152
</mnw-media-player>
153
-
{% call island::island("media-player") %}
153
+
{% call island::island("media-player") %}{% endcall %}
154
154
<script src="/static/page-library-video.js?v=0623" defer></script>
155
155
{% endblock %}
93
93
94
94
{% if !gallery.is_empty() %}
95
95
<section class="project-gallery">
96
-
{% call carousel::carousel("project-gallery", gallery) %}
96
+
{% call carousel::carousel("project-gallery", gallery) %}{% endcall %}
97
97
</section>
98
98
{% endif %}
99
99
25
25
26
26
<section class="posts-list">
27
27
{% if posts.is_empty() %}
28
-
{% call ui::empty_state("", "No blog posts yet.") %}
28
+
{% call ui::empty_state("", "No blog posts yet.") %}{% endcall %}
29
29
{% else %}
30
30
{% for post in posts %}
31
31
<div class="post-entry">
25
25
</nav>
26
26
27
27
{% if categories.is_empty() %}
28
-
{% call ui::empty_state("", "No tags found in this category.") %}
28
+
{% call ui::empty_state("", "No tags found in this category.") %}{% endcall %}
29
29
{% else %}
30
30
<div class="tag-grid">
31
31
{% for cat in categories %}
5
5
Convention: import once at the top of a template as `ui`:
6
6
{%- import "partials/_ui.html" as ui -%}
7
7
then call:
8
-
{% call ui::empty_state("No items yet", "Create one to get started.") %}
8
+
{% call ui::empty_state("No items yet", "Create one to get started.") %}{% endcall %}
9
9
#}
10
10
11
11
{% macro empty_state(title, body) -%}