genesis-stack 1.4.7 → 1.4.9
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/package.json
CHANGED
|
@@ -82,3 +82,11 @@ JSKIT MySQL runtime, live-schema CRUD generation, and persistence conventions.
|
|
|
82
82
|
error translation at one established persistence boundary.
|
|
83
83
|
- Never compete with or rewrite a generator-owned baseline migration. Preserve
|
|
84
84
|
retained migration history and data semantics.
|
|
85
|
+
|
|
86
|
+
## Data pass
|
|
87
|
+
|
|
88
|
+
- Apply the MySQL part of JSKIT's data pass page at
|
|
89
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/data-pass#mysql`:
|
|
90
|
+
one schema change per migration because MySQL DDL commits as it goes, online
|
|
91
|
+
index changes that fail rather than lock (`ALGORITHM=INPLACE, LOCK=NONE`),
|
|
92
|
+
and `EXPLAIN ANALYZE` on the test database at realistic size.
|
|
@@ -78,3 +78,11 @@ JSKIT PostgreSQL runtime, live-schema CRUD generation, and persistence conventio
|
|
|
78
78
|
error translation at one established persistence boundary.
|
|
79
79
|
- Never compete with or rewrite a generator-owned baseline migration. Preserve
|
|
80
80
|
retained migration history and data semantics.
|
|
81
|
+
|
|
82
|
+
## Data pass
|
|
83
|
+
|
|
84
|
+
- Apply the PostgreSQL part of JSKIT's data pass page at
|
|
85
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/data-pass#postgresql`:
|
|
86
|
+
concurrent index builds in a migration without a transaction, constraints
|
|
87
|
+
added `NOT VALID` and validated afterwards on large tables, and
|
|
88
|
+
`EXPLAIN (ANALYZE, BUFFERS)` on the test database at realistic size.
|
package/stacks/pieces/jskit.md
CHANGED
|
@@ -326,6 +326,82 @@ https://mobily-enterprises.github.io/jskit-ai/
|
|
|
326
326
|
- The checks cannot see layout, spacing or contrast; look at every screenshot
|
|
327
327
|
for those.
|
|
328
328
|
|
|
329
|
+
## Identity pass
|
|
330
|
+
|
|
331
|
+
- Read JSKIT's visual identity page at
|
|
332
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/visual-identity`
|
|
333
|
+
and its Material 3 rules at
|
|
334
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/material-3`
|
|
335
|
+
completely. The identity lives where that page puts it: the seed and a
|
|
336
|
+
named colour per content kind in `src/theme/index.js`, every content colour
|
|
337
|
+
in `src/theme/palettes.js`, the cover and empty-state art in
|
|
338
|
+
`src/components/art/`, the logo with `favicon.svg`, the startup shell in
|
|
339
|
+
`index.html`, and sign-in in the auth surface's `AppBrand.vue`.
|
|
340
|
+
- Run `npx jskit check m3` until it reports nothing and `npx jskit check`
|
|
341
|
+
until it passes, then take the screenshots as JSKIT's UI pass method shows.
|
|
342
|
+
|
|
343
|
+
## Quality pass
|
|
344
|
+
|
|
345
|
+
- Read JSKIT's quality pass page at
|
|
346
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/quality-pass`
|
|
347
|
+
completely: where loading, empty, error and refused states live in a JSKIT
|
|
348
|
+
app, how each refusal carries its own code to `useJskitText()`'s
|
|
349
|
+
`serverMessage()`, and how Playwright forces each state.
|
|
350
|
+
- Run `npm run verify` and the focused Vitest and Playwright tests of the
|
|
351
|
+
affected screens.
|
|
352
|
+
|
|
353
|
+
## Data pass
|
|
354
|
+
|
|
355
|
+
- Read JSKIT's data pass page at
|
|
356
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/data-pass`
|
|
357
|
+
and its data access guide at
|
|
358
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/data-access`
|
|
359
|
+
completely: the table resource is each table's one owner, Knex migrations
|
|
360
|
+
carry constraints and indexes, and `expectFlatQueries()` compares a path's
|
|
361
|
+
queries at a few rows and at a realistic number on `TEST_DB_NAME`.
|
|
362
|
+
- Leave `npm run lint` (which reports narrowing in code) and `npx jskit check`
|
|
363
|
+
without findings.
|
|
364
|
+
|
|
365
|
+
## Security pass
|
|
366
|
+
|
|
367
|
+
- Read JSKIT's security pass page at
|
|
368
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/security-pass`
|
|
369
|
+
completely: each route's `auth` and `permission`, a table resource's
|
|
370
|
+
`ownership` and row policy scoping every handle call, `expectScoped()` for
|
|
371
|
+
another workspace's rows, `rateLimit` and `config.auth.rateLimits`, the
|
|
372
|
+
first account's setup code, and what `NODE_ENV=production` requires, such as
|
|
373
|
+
`AUTH_LOCAL_SESSION_SECRET`.
|
|
374
|
+
- Try each refusal through `app.inject` on the test server, then run
|
|
375
|
+
`npm run verify`.
|
|
376
|
+
|
|
377
|
+
## User experience pass
|
|
378
|
+
|
|
379
|
+
- Read JSKIT's user experience pass page at
|
|
380
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/ux-pass`
|
|
381
|
+
completely: main tasks as `shell.primary-nav` placements and each inner
|
|
382
|
+
page's `jskit.parent`, `ShellPrimaryAction` for a list's New and a record's
|
|
383
|
+
one filled next step, a new form's `initialValue` or `createModel`,
|
|
384
|
+
`saveSuccess` for where Save lands, `CrudDeleteAction`'s confirmation, Undo
|
|
385
|
+
in the snackbar, and the app's words through `useJskitText()`.
|
|
386
|
+
- Walk each main task in the host's managed Preview or a Playwright spec, then
|
|
387
|
+
run `npm run verify`.
|
|
388
|
+
|
|
389
|
+
## Speed pass
|
|
390
|
+
|
|
391
|
+
- Read JSKIT's speed pass page at
|
|
392
|
+
`https://mobily-enterprises.github.io/jskit-ai/guide/framework/speed-pass`
|
|
393
|
+
completely: `jskit test` runs test files in parallel within the machine's
|
|
394
|
+
test budget (`V64_TEST_CONCURRENCY`, else half the CPUs) and ends with its
|
|
395
|
+
slowest files, `jskit test --databases` restores a stored snapshot for each
|
|
396
|
+
file, a fixture every file only reads is made once in a
|
|
397
|
+
`--test-global-setup` module, a client provider exported by its own subpath
|
|
398
|
+
keeps screens out of every page's first load, and a list reads its related
|
|
399
|
+
records with `include` and its selected values by `filter[id]` in one
|
|
400
|
+
request.
|
|
401
|
+
- Compare the whole `npm test` wall time, its slowest files and the build's
|
|
402
|
+
chunk sizes before and after, then leave `npx jskit check` and
|
|
403
|
+
`npm run verify` passing.
|
|
404
|
+
|
|
329
405
|
## Verification
|
|
330
406
|
|
|
331
407
|
- Verify `application`: `npm` `run` `verify`
|