@getstrata/bootstrap 2.2.13 → 2.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -14
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
# @getstrata/bootstrap changelog
|
|
2
2
|
|
|
3
|
+
## 2.2.15
|
|
4
|
+
|
|
5
|
+
- Batch legacy list-queue priority polling while retaining recovery and ownership contracts.
|
|
6
|
+
- Batch dialect-portable pivot writes with framework transaction/savepoint composition and consistent numeric/string ID toggle semantics. Noncanonical or textual IDs use sequential database comparisons to preserve coercion and collation behavior.
|
|
7
|
+
- New Redis scaffolds explicitly select Streams; existing unset transport settings continue to select lists.
|
|
8
|
+
- Generate the SQL outbox migration, listener registry and managed worker command. Durable publication and cache-invalidation activation remain explicit.
|
|
9
|
+
|
|
10
|
+
- Primary-key ascending `chunk` queries reuse the existing keyset walk, including default primary-key ordering; projections, joins, grouping, locks and other orders retain OFFSET behavior.
|
|
11
|
+
- Empty filtered pagination totals skip the row query. Nonempty page-number pagination preserves OFFSET semantics and its count-plus-row-query budget; explicit cursor/keyset APIs remain available for deep traversal.
|
|
12
|
+
- Independent hashed write casts run concurrently. Deterministic regressions prove concurrent start, complete awaiting and failure before model observers or SQL writes; hydration and existing-hash behavior are preserved.
|
|
13
|
+
- Streams workers poll retry promotion, pending recovery and new delivery across priorities in one bounded Redis script, preserving priority, ownership fencing and at-least-once delivery contracts.
|
|
14
|
+
- Clarify historical 2.1.0–2.2.13 release notes and database/queue documentation. Remove the consolidated 1.x-to-2.x migration guide; existing projects are upgraded individually.
|
|
15
|
+
|
|
16
|
+
## 2.2.14
|
|
17
|
+
|
|
18
|
+
Complete the scoped HTML rendering starter adoption: generated apps inject ViewRenderer through createViewProvider instead of copying renderPage; welcome pages opt into HTMX fragments with full-page fallbacks, auth retains existing contracts, and CORS preserves representation Vary headers. Includes generator, runtime auth and cache-header regressions.
|
|
19
|
+
|
|
20
|
+
Add optional typed resourceRoutes and strict mergeRouteMaps composition, preserving native Bun routing and app-owned middleware. Add explicit ViewRenderer.namespace prefixes with unchanged layout/Response/HTMX contracts; generated auth controllers use the namespace. Includes native HTTP, compile-time, rendering isolation and generator regressions.
|
|
21
|
+
|
|
3
22
|
## 2.2.13
|
|
4
23
|
|
|
5
|
-
-
|
|
24
|
+
- Add a typed per-app HTML renderer on top of the native response path.
|
|
25
|
+
- Add explicit HTMX page and fragment responses. A fragment can fall back to the full page. Layout and auth response contracts stay the same.
|
|
6
26
|
|
|
7
27
|
## 2.2.12
|
|
8
28
|
|
|
@@ -24,42 +44,47 @@ Add independently interruptible read-only SQLite and MySQL observations; extend
|
|
|
24
44
|
|
|
25
45
|
## 2.2.9
|
|
26
46
|
|
|
27
|
-
-
|
|
47
|
+
- Pool checkout can be cancelled. `reserve({ signal })` on the native driver aborts while it is still waiting for a connection. Drivers without that method are not given a fake one.
|
|
28
48
|
|
|
29
49
|
## 2.2.8
|
|
30
50
|
|
|
31
|
-
- Add bounded read-only Postgres outbox metrics
|
|
51
|
+
- Add bounded, read-only Postgres outbox metrics.
|
|
52
|
+
- Add bounded, opt-in Redis queue metrics. List and Streams depth stay separate.
|
|
32
53
|
|
|
33
54
|
## 2.2.7
|
|
34
55
|
|
|
35
|
-
-
|
|
56
|
+
- `ORDER BY` accepts explicit `nulls: "first" | "last"`. Postgres and SQLite emit `NULLS FIRST` / `NULLS LAST`. MySQL has no `NULLS FIRST` / `NULLS LAST` clause, so it orders nulls with an `IS NULL` discriminator and leaves the rest of the sort unchanged.
|
|
36
57
|
|
|
37
58
|
## 2.2.6
|
|
38
59
|
|
|
39
|
-
-
|
|
60
|
+
- The CLI, when it supervises the app or worker as a child, forwards shutdown signals to that child and waits for it. The container launcher no longer exits while the child is still running.
|
|
40
61
|
|
|
41
62
|
## 2.2.5
|
|
42
63
|
|
|
43
|
-
-
|
|
64
|
+
- Container readiness no longer means the API is admitting traffic. Database readiness no longer provisions roles or creates a missing database. A failed configured admin connection does not fall back to a generated password.
|
|
44
65
|
|
|
45
66
|
## 2.2.4
|
|
46
67
|
|
|
47
|
-
-
|
|
68
|
+
- Composite keyset pages on Postgres seek with a row comparison (`(a, b) > (cursor)`), so the planner can start at the index bound instead of expanding the cursor into a chain of OR predicates.
|
|
48
69
|
|
|
49
70
|
## 2.2.3
|
|
50
71
|
|
|
51
|
-
-
|
|
72
|
+
- Add scoped composite keyset pagination. The order must end with the primary key. Global scopes and caller filters stay in force across the cursor. Joins, grouping, and offset queries are rejected.
|
|
52
73
|
|
|
53
74
|
## 2.2.2
|
|
54
75
|
|
|
55
|
-
-
|
|
76
|
+
- Schema `bigId` emits an explicit 64-bit generated identity.
|
|
77
|
+
- Repository writes can be conditional and set-based.
|
|
78
|
+
- Repositories and models can take a typed row lock inside the current transaction.
|
|
79
|
+
- Generated Postgres query handles keep tagged-SQL typing.
|
|
56
80
|
|
|
57
81
|
## 2.2.1
|
|
58
82
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
83
|
+
- Opt-in Redis Streams (`QUEUE_REDIS_TRANSPORT=streams`). Lists stay the default. Streams adds consumer-group recovery, persisted retry schedules, total job deadlines, opt-in cancellation, and a stable job id across replay. Conversion from lists is a stopped maintenance step.
|
|
84
|
+
- Failed jobs stay recorded until retry admission succeeds. Manual replay keeps `failed_job.job_id` when the row has one.
|
|
85
|
+
- Public reads and tenant host selection are separate. Unknown hosts fail closed. Forwarded hosts are accepted only from configured trusted proxies.
|
|
86
|
+
- Generated apps can provision one initial administrator with `auth:provision-admin` and a one-time claim migration. Demo seeding stays explicit and is rejected in production and staging.
|
|
87
|
+
- Quota and in-memory throttle docs match the code: memory throttles stay process-local, and a Redis failure does not fall back to them.
|
|
63
88
|
|
|
64
89
|
## 2.2.0
|
|
65
90
|
|
|
@@ -88,7 +113,9 @@ Bounded memory throttling.
|
|
|
88
113
|
|
|
89
114
|
## 2.1.0
|
|
90
115
|
|
|
91
|
-
-
|
|
116
|
+
- Generated apps reuse the shared config store and base repositories instead of a copied stack.
|
|
117
|
+
- Password casts are awaited before the write reaches SQL or observers. Hydration does not hash.
|
|
118
|
+
- Model queries keep the concrete model type in their results. Service tokens, route handlers, and the starter's generated infrastructure were tightened in the same release.
|
|
92
119
|
|
|
93
120
|
## 2.0.9
|
|
94
121
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/bootstrap",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.15",
|
|
4
4
|
"description": "Strata application bootstrap: HttpKernel, DI, web session helpers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
"access": "public"
|
|
191
191
|
},
|
|
192
192
|
"peerDependencies": {
|
|
193
|
-
"@getstrata/core": "^2.2.
|
|
193
|
+
"@getstrata/core": "^2.2.15",
|
|
194
194
|
"typescript": "^5.9.0 || ^6.0.0 || ^7.0.0"
|
|
195
195
|
},
|
|
196
196
|
"engines": {
|