Repository navigation
perf(inertia): page audit skill, dev Server-Timing, fast-pages guide; background-tasks pages stop waiting on the broker - #825
Merged
Conversation
… background-tasks pages stop waiting on the broker - Development responses carry Server-Timing (app time, db time, SQL statement count); simple_module_db.query_stats exposes the count to tests. - skills/simple-module-page-perf: SKILL.md + scripts/page_audit, which audits every page (server, browser, phone width, UX checks) against budgets. - docs/frontend/performance.md: building pages that are fast and feel fast. - Background tasks: worker presence and the Workers snapshot are deferred props with same-size placeholders (server ~1,050 ms -> ~15-20 ms); links to the executions list use the canonical trailing-slash URL. - Users admin list: test pins a flat SQL count as rows grow. Claude-Session: https://claude.ai/code/session_01FXHA3ZJ5EgoJN4zXTAhBR2
…ops budget (first-load timing) Claude-Session: https://claude.ai/code/session_01FXHA3ZJ5EgoJN4zXTAhBR2
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Deploying simple-module-python with
|
| Latest commit: |
d9abd88
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://84edfd41.simple-module-python.pages.dev |
| Branch Preview URL: | https://perf-inertia-pages.simple-module-python.pages.dev |
…rtia-pages # Conflicts: # CHANGELOG.md
2 tasks
antosubash
added a commit
that referenced
this pull request
Nov 6, 2026
* fix(page-perf): align perf docs with code; simplify snapshot loader; rename audit test Post-merge review of #825 (maintainability pass). Claude-Session: https://claude.ai/code/session_01FXHA3ZJ5EgoJN4zXTAhBR2 * fix(page-perf): query tracking stops at exit; Workers refresh recovers a missing snapshot; audit fixes (UTF-8 sizes, unexpected redirects fail, CLS session windows, --max-pages) Correctness findings from a post-merge Codex review of #825. Claude-Session: https://claude.ai/code/session_01FXHA3ZJ5EgoJN4zXTAhBR2 * fix(page-perf): keep the newer worker snapshot when Refresh races the deferred load; percent-encoded paths are not redirects Second review pass on the #825 follow-up. Claude-Session: https://claude.ai/code/session_01FXHA3ZJ5EgoJN4zXTAhBR2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Audited every Inertia page in the dev host for speed and perceived speed, fixed what was slow, and shipped the tooling and guide so apps can do the same.
Audit (26 signed-in pages via menus + 2-level crawl, 4 public pages, 19-page production-build pass; SQLite, 2,000 users, 20,000 audit rows)
workersgroup) with same-size placeholders ("Checking for workers…" empty state, skeleton worker cards,aria-busy): server ~10–20 ms, CLS ≤ 0.002. Behaviour change:worker_presence/snapshotarrive in the deferred group, not the first response./admin/background-tasks(no slash), costing a redirect per "back" click./tenants/members|settingsmenu items redirect for a user with no active organisation (UX, not perf);/admin/settings/ships a 54 KBmodulesprop that its cross-module search needs.Added
Server-Timing: app;dur=…, db;dur=…;desc="N queries"header (ServerTimingMiddleware, right inside request logging) andsimple_module_db.query_stats(install_query_stats,track_queries) for tests.skills/simple-module-page-perf:SKILL.md+scripts/page_audit— signs in, discovers pages, measures server time/SQL/payload/props/deferred props (Inertia JSON with the client's headers), first load (FCP, LCP, CLS, JS/CSS bytes), click-through navigation (click → paint → deferred painted), phone-width overflow and UX checks (stuck loaders, unnamed controls, h1), against budgets; Markdown + JSON report, exit 1 on failure.docs/frontend/performance.md("Fast pages"): budgets, where time goes, measuring, server (DTOs, pagination, N+1, prop kinds, callables for partial reloads, shared props, canonical URLs, caching), client (chunks, lazy widgets, DOM size, filters), UX (progress, same-size placeholders, WhenVisible, distinct states, button states, polling, prefetch trade-off, phones), checklist.Test plan
make lint(ruff, ty, biome, tsc, file size, i18n, doc paths)make test-py— 7,848 passed; the one failure is the local/tmp/.gitenvironmental test (test_clean_target_is_not_in_repo), passes afterrmdir /tmp/.gitmake test-js— 894 passed (new Workers skeleton + Index "checking" tests)test_db_query_stats.py,test_hosting_server_timing.py,test_users_admin_list_query_count.py,test_skill_page_audit.py; background-tasks tests assert the deferred contract (first response never calls inspect)https://claude.ai/code/session_01FXHA3ZJ5EgoJN4zXTAhBR2