Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,22 @@ All notable changes to this project are documented in this file. The format is b

## [Unreleased]

### Added
- Development responses carry a `Server-Timing` header with the request's app
time, database time and SQL statement count (`app;dur=…, db;dur=…;desc="N
queries"`), so an N+1 shows in the browser's network panel. Never sent
outside development. `simple_module_db.query_stats` (`install_query_stats`,
`track_queries`) exposes the same count to tests.
- `simple-module-page-perf` skill: `scripts/page_audit` signs in, finds every
page from the menus and two levels of links, and reports server time, SQL
statements, payload and prop sizes, deferred props, client-side navigation
time, LCP, CLS, JS bytes, DOM size, console errors, phone-width overflow and
basic UX checks against budgets. Install with
`smpy skills add simple-module-page-perf`.
- `docs/frontend/performance.md`: how to build pages that are fast and feel
fast (server, client, loading/empty/error states, layout shift, polling,
prefetch) and how to pin a page's query count in a test.

### Changed

- Scaffold new modules with `core/` and `web/` areas and mirrored nested Python tests; existing modules migrate individually. See `docs/module-layout.md`.
Expand All @@ -25,6 +41,15 @@ All notable changes to this project are documented in this file. The format is b
### Fixed

- Include module `ui/` sources in wheel-installed Tailwind scanning and the asset manifest; retain legacy `components/` support.
- Background tasks: the executions list (when empty) and the Workers page no
longer wait out the broker's ~1 s inspect timeout before rendering. The
worker poll is now a deferred prop: the list shows *Checking for workers…*
in the empty state and Workers shows skeleton cards until the broker
answers (server time about 1,050 ms → 15–20 ms). **Behaviour change:**
`worker_presence` and `snapshot` are no longer in the first Inertia
response; they arrive in the deferred `workers` group.
- Background tasks pages linked to `/admin/background-tasks` without its
trailing slash, so every "back to executions" click cost a redirect.

## [0.0.43] — 2026-11-04

Expand Down
5 changes: 4 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,10 @@ by `InertiaLayoutDataMiddleware`; `auth.user` is null unless
`app.state.principal_serializer` is set, and `i18n.messages` is null on every
`X-Inertia` request when the tab reports a matching locale and audience
via `X-SM-I18n`; clients without that header use the legacy session markers.
Layout props are resolved lazily by page and error rendering; permissions stay eager. Inertia
Layout props are resolved lazily by page and error rendering; permissions stay eager.
Development responses carry `Server-Timing` (app time, SQL statement count);
`docs/frontend/performance.md` covers fast pages and the
`simple-module-page-perf` skill audits them. Inertia
`router.post/patch/put/delete` must target view routes, never `/api/*`
(`SM018`). `docs/frontend/`.

Expand Down
1 change: 1 addition & 0 deletions docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ export default defineConfig({
{ text: "Inertia basics", link: "/frontend/inertia" },
{ text: "Pages & discovery", link: "/frontend/pages" },
{ text: "Shared props & layout", link: "/frontend/shared-props" },
{ text: "Fast pages", link: "/frontend/performance" },
],
},
],
Expand Down
Loading
Loading