diff --git a/docs/redesign/phase-6/COMMITS.md b/docs/redesign/phase-6/COMMITS.md index 46f57e7..7e97b24 100644 --- a/docs/redesign/phase-6/COMMITS.md +++ b/docs/redesign/phase-6/COMMITS.md @@ -10,6 +10,7 @@ Every completed logical unit is pushed to `codex/ui-redesign-phase4`, without fo | P6-01 shared semantic/contrast/panel corrections | `a94ea0a4a4695d1c196366ac39793a901485e919` | Final521 units/85 suites, type/lint/build and4 native Settings cases green; normal push, HEAD=origin | | P6-02 cross-application save/retry and localisation corrections | `c135d03602fd273658cfa1c087491c7442060c6a` | Company/language native4/4 with persistence after retry/reload; final521 units; normal push, HEAD=origin | | P6-02 companion: replace historical hidden-error assertion with accessible dialog contract | `81e30e3da9e36e4cb0271122711fddc7b28b75e3` | Four affected theme/locale/width workflows pass; strengthened alert/draft/no-write/focus assertions; normal push, HEAD=origin, main unchanged | +| P6-03 responsive/accessibility/localisation review and bounded Career label correction | `bd47214bdcd74336788dca0f294b8ddb9403cac1` | Fresh521/85 units, types/lint/build, native label2/2 and combined panel/label6/6;18 inspected baseline/before-after images; normal push, live remote=HEAD, main unchanged | ## Current execution evidence diff --git a/docs/redesign/phase-6/EXECUTION_PLAN.md b/docs/redesign/phase-6/EXECUTION_PLAN.md index 0e73923..8afd31f 100644 --- a/docs/redesign/phase-6/EXECUTION_PLAN.md +++ b/docs/redesign/phase-6/EXECUTION_PLAN.md @@ -14,7 +14,7 @@ Fetched development HEAD/remote: `9d6d29dba4733778e478909d4ff74a25409b3115`, `co - [x] **P6-01:** Shared semantic/contrast/tab associations verified; final521 unit cases and4 native panel cases pass. Pushed `a94ea0a`, remote=HEAD; full native cross-route acceptance follows in P6-05. - [x] **P6-02:** Navigation/query/history/source/override and AI boundaries reviewed; company dialog and account-language failures retain drafts/local choice and translated retry. Native4/4 passes including real persistence/reload. Pushed `c135d03`, remote=HEAD. - [x] **P6-03:** Recorded attributed EN/Bokmål, theme, responsive, keyboard, zoom and axe baseline with all incomplete categories retained; inspected fourteen baseline and four label before/after images. Bounded mobile label repair has native RED→GREEN2/2 and final Settings/label6/6. Fresh521 units/types/lint/build pass; integrated acceptance follows in P6-05. Human M01–M13 and physical-device acceptance remain unverified. Push receipt follows in the ledger. -- [ ] **P6-04:** Record production bundle bytes and reproducible native route/data/long-CV performance, requests, long tasks/CLS and memory where tooling supports them. Audit shared consumers and O(N) scaling; optimize only a demonstrated bounded cause. Do not invent budgets. Commit/push measured findings. +- [x] **P6-04:** Fresh post-CSS native diagnostic1/1 records bundle/source provenance, route/client/query/search/long-CV observations and complete200/1,000 Board membership. Actual-provider regression in521-unit corpus disproves toast-induced company refetch; no speculative memoization. Reuse/source/fetch audit and finite scaling limits recorded. Push receipt follows in the ledger; integrated evidence follows in P6-05. - [ ] **P6-05:** Run fresh full frontend/backend/browser/sidecar/security/HTTP/rendering lanes, explain count changes, reconcile 57 groups, record secret/link/whitespace/build evidence and every commit/push. Report independent Phase 6, production and Phase 7 decisions; prepare migration order and mandatory dependencies. Commit/push final acceptance. ## Review focus diff --git a/docs/redesign/phase-6/p6-04/README.md b/docs/redesign/phase-6/p6-04/README.md new file mode 100644 index 0000000..c7aad55 --- /dev/null +++ b/docs/redesign/phase-6/p6-04/README.md @@ -0,0 +1,79 @@ +# P6-04 — Performance and component reuse review + +## Scope, baseline and evidence method + +Measure representative existing workflows and audit real reuse/fetch/save/preview owners before proposing changes. The [Phase5 final scope](../../phase-5/p5-15/p5-15-06/README.md) supplies historical finite Board200/1,000 membership and render observations, native CV16/36 and Settings8/24 output, and retained reliability debt. Its1,040/1,612ms Board render measurements are historical single-run data, not a budget or directly comparable current result. No supported-load/CPU/memory/latency budget was previously approved. + +Fresh native measurement is owned by the [responsive audit performance case](../../../../job-tracker-ui/e2e/responsive-accessibility-audit.spec.ts). The current post-Career-spacing-repair run records Chromium 151.0.7922.34, a1280×720 CSS-pixel viewport, Windows `win32`, production static export, Release API, isolated synthetic SQLite, `prebuiltExport: true` and `serverReuseAllowed: false` from the actual invocation. It records hard-navigation time to the stated assertion, network requests/resource transfer/duration, long-task/layout-shift observations and CDP heap/DOM/layout/task metrics. Counts and exact API-to-rendered ID parity are asserted at200 and1,000; the separate unchanged diagnostics lane checks its seeded collection. Filtering never silently caps the Board. + +The performance case covers initial Jobs, Dashboard, Analytics6/24months, job details, long-CV initial settled preview, CV-only edit including existing800ms autosave, Board API/render at200/1,000, corresponding Table navigation and filtered Board. A heading-only ready milestone measures route presentation, not complete report/list data settling; CV and Board milestones wait for the stated actual preview/count. Hard navigation includes boot/auth and is distinct from client route transitions, search debounce and React rendering counts. Single-run CDP heap samples cannot establish a memory leak or physical-device capacity. + +The extended diagnostic measures actual client Board→Table→Board activation while retaining994 matches, typed search through the existing debounce to exactly one result, and Jobs→Dashboard navigation to the real1,000 tracked-job value. An unchanged document `performance.timeOrigin` proves these are client transitions. Request paths include query strings for these interactions. The retained first153/157 ordinary attempt loaded an earlier diagnostic before that test-only extension. The fresh post-CSS standalone run includes the extension; the final159-case full run is now executing with the same extended case. Extension adds evidence within the existing browser case, not an application change or another case count. Final integrated acceptance remains separate until its actual result is recorded. + +Two preliminary diagnostic failures are retained: the Dashboard's determinate onboarding progress indicator was incorrectly treated as a loading indicator, and identical profile bullets normalized to a one-page document. The fixture now supplies eight distinct roles with four uniquely identified bullets each and asserts actual multi-page readiness. These were diagnostic milestone/fixture corrections, not product defects, renderer changes or relaxed pagination assertions. + +**The fresh post-CSS standalone diagnostic passes1/1, with zero skips/retries/flaky results.** [Performance manifest](evidence/performance.json) and [exact command/results](../p6-05/evidence/performance-results.json) record the2026-10-11 08:46:49.646–08:47:46.501 UTC invocation, raw report SHA-256 `53d65dfd5a7352a90bddc788114fb2d7ae3fd8aba9e1a53375a5f4bffe1c8f8a`. Its browser report started08:46:50.191 UTC and lasted56.276seconds. Integrated regression is separate in the [aggregate validation](../p6-05/evidence/validation.json). No comparative optimization or supported-load budget is claimed. + +| Measured workflow / milestone | Observed milliseconds | +|---|---:| +| Initial Jobs heading plus successful list response | 673 | +| Dashboard tracked-job link plus stats response | 905 | +| Analytics6 /24months heading plus stats response | 767 /770 | +| Job workspace heading plus owned workspace response | 923 | +| Four-page CV: all visible page frames ready, preview not busy | 1,326 | +| CV-only edit persisted and Saved, including existing autosave delay | 996 | +| Complete Board200 /1,000 API-to-DOM membership | 1,026 /1,657 | +| Table200 /1,000 heading plus list response | 571 /589 | +| Filtered Board194 /994 cards | 958 /1,611 | +| Client Board→Table /Table→Board, retaining994 matches | 319 /695 | +| Typed search through debounce to exactly one matching card | 1,490 | +| Client Jobs→Dashboard with1,000 tracked-job metric | 184 | + +Board200 response is237,273 bytes/24ms; Board1,000 is1,181,982 bytes/21ms. Board render long tasks are73/92/96ms versus63/397/264ms, with zero observed eligible layout shift at the Board milestones. Initial Jobs records a137ms long task and sampled shift0.0546968994; long-CV initialisation records a52ms long task and shift0.0128848606. Dashboard performs two reminder reads and two auth/me reads from separate shell/onboarding/report owners and records shift0.0867047106 at its ready milestone. Recorded shifts vary by route and sampling milestone; they remain observations rather than a full-session CLS certification. Automated action times include control activation/assertion overhead. These finite results preserve uncapped membership but justify separately scoped Board capacity and report-read/layout investigations. + +The third preliminary failure was a diagnostic literal expecting `1000` rather than the existing English-formatted `1,000` accessible Dashboard metric. It is corrected without changing the metric or formatter; that failure's complete output folder/report/log is archived. The two earliest diagnostic failures retain exact reports/logs but some old attachment paths were overwritten before complete-folder archival was added. + +## Static exported bundle snapshot + +Source-review inspection of the existing local export found buildID `nlP_a9RD_LvG_Wn2riffj`,53 JavaScript files and **3,233,467 aggregate raw bytes** under `out/_next/static`. This export predates current Phase6 corrections and has no verified current-source provenance. The five largest chunks were432,558;417,647;257,695;228,034;207,255raw bytes; individually gzip-compressing the first produced128,684bytes. These are static artifact observations, not initial-route transfer, effective server compression or current-build measurements. Summing lazy chunks does not describe first load. + +The actual `.next/build-manifest.json` is ignored/generated and must be sampled again after the final production build rather than committed or treated as a stable documentation link. [App](../../../../job-tracker-ui/src/App.tsx) already lazily imports the main private domain routes, AddJobModal/commands and other substantial surfaces; [JobTable](../../../../job-tracker-ui/src/components/JobTable.tsx) separately lazily imports KanbanBoard. Suspense boundaries exist. No evidence currently justifies another framework/chunking/dependency rewrite. Fresh bundle/network observations belong in the manifest, with actual SHA/build identification. + +Current verified production build `2LDblja_XnSBWSuY6ys_V` has53 exported JS files:3,234,867 aggregate raw bytes and940,065 summed individual gzip bytes. The manifest records every chunk SHA256; these include initial and lazy assets. Local browser routing blocks non-local network and affects caching, so hard-navigation resource transfers do not certify deployed compression or warm-cache behavior. The older unverified export above is attributed history and not a matched before/after comparison. + +ResourceTiming reports zero `transferSize` for the cross-origin API entries because that measurement is unavailable; it does not imply zero-byte API responses. The separate Board `bytes` field counts actual response-body bytes. Exported JavaScript totals and same-origin resource timing have their own stated scope. CDP heap/DOM values include retained navigation/iframe documents and are context snapshots, not isolated route footprints, allocation totals or a leak diagnosis. Layout-shift observations end at the stated milestone, not the full session lifetime; no unsupported pass/fail budget is attached to them. + +## Fetch, computation and preview source audit + +| Actual owner | Existing efficiency/protection | Candidate or legitimate repeated work; required evidence before change | +|---|---|---| +| Jobs [JobTable](../../../../job-tracker-ui/src/components/JobTable.tsx)/[KanbanBoard](../../../../job-tracker-ui/src/components/KanbanBoard.tsx)/[jobsQuery](../../../../job-tracker-ui/src/jobsQuery.ts) | Shared normalized committed filters;250ms debounced Board query; Table loader disabled in Board; page-owned Table read; memoized row models/selection/group derivation and latest-resource sequence | Board is complete-array O(N) response/render plus grouped array sorting; no virtualization/cap. Native request/membership/timing/DOM/heap observations at200/1,000 establish finite envelope. Bigger backend projection/virtualization is a separately scoped compatible design, not implied by a slow-looking screenshot | +| [DashboardView](../../../../job-tracker-ui/src/components/DashboardView.tsx)/Analytics | One report owner; summary stats/overview/reminders parallel, independent trends analytics/tags/tag-trends parallel; charts derived via useMemo; Analytics skips reminder feed and uses URL months | Shell independently requests the same reminder feed for its badge on mount/60second interval. This source overlap serves two responsibilities; measure actual requests/bytes and error/lifetime needs before sharing a cache. Month changes should not be miscounted as initial duplicates; no fabricated new metrics | +| [useViewResource](../../../../job-tracker-ui/src/hooks/useViewResource.ts) | Latest-request sequence prevents superseded results, keeps existing data during refresh, normalizes401/403 versus unavailable errors, enabled loader boundary | Dependency changes rerun load intentionally; loaderref prevents callback identity alone from being the dependency. No transport-abort/memory-leak claim follows from this hook; retain existing shared Axios session/owner cancellation. Replacing all loaders is unsupported | +| [useCompanies](../../../../job-tracker-ui/src/hooks/useCompanies.ts) | Owner-keyed module cache and shared inflight request, auth-user event invalidation, explicit cache-bust reload | Other dedicated Companies/command screens have distinct reads. Do not create shared cross-account cache or assume every company loader can be merged; compare freshness/invalidation/command cancellation consumers first | +| Job [ApplicationWorkspacePage](../../../../job-tracker-ui/src/views/ApplicationWorkspacePage.tsx)/ApplicationAssets/ApplicationIntelligence | Overview load by job; sections own real artifact/intelligence reads; component boundaries keep drafts/history/provider operations separate | Source-level duplicate-like attachment/CV reads can have legitimate consumer/lifetime semantics. Legacy `useJobWorkspaceBaseData` is not evidence of mounted production work without an actual caller. Measure the current routed workspace; do not optimize unreachable historical hooks | +| [CvBuilderEditor](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx) | Variant/themes/outline load in parallel;300ms preview debounce/request sequence, retained latest good HTML/error/Retry,800ms save debounce/serialized queue/version conflict. Content stays mounted;900px pane switch changes visibility, not editor identity. Existing hidden physical ruler/paginated pages preserve rendering fidelity | Long document has one hidden measurement iframe plus page iframes with complete generated HTML. Layout/heap/long-task cost needs actual measured page count/fixture and source-equivalent exports. No needless remount/global renderer/virtualization change merely to reduce iframe count; keep original16/36+8/24 oracle | +| [I18nProvider](../../../../job-tracker-ui/src/i18n/I18nProvider.tsx) and locale-aware read consumers | Source-review baseline defines `t` inline, recreated whenever provider renders; locale/error text intentionally refreshes on locale change | **PF-01 tested hypothesis:** feedback toast triggers another locale-dependent load. The actual-provider/CompaniesTable regression observes one initial GET, no extra GET after toast, then exactly one locale-driven GET after switching to NB. The tested trigger is disproven; no translator memoisation/source change is justified | +| [ToastProvider](../../../../job-tracker-ui/src/toast.tsx) | Stable useCallback toast and memoized context value; measured bottom clearance prevents controls being obscured | [Real-provider stability test](../../../../job-tracker-ui/src/locale-fetch-stability.test.tsx) confirms its toast update does not repeat the tested Companies read. Do not infer an automatic fetch loop from inline `t` alone or generalize one route to every possible provider rerender | + +The source baseline's exact `[t]` request/resource consumers include CompaniesTable, RemindersView, NotificationsPopover, SessionsSettingsCard, SettingsView, TwoFactorSettingsCard, AdminAuditPage, AdminSystemPage, CareerProfilePage, CorrespondenceInboxPage, CvBuilderPage, OfferComparisonPage, OperationsPage and ProfilePage. Dashboard resources, JobTable/Board and job asset/intelligence/workspace callbacks also include translator dependencies alongside real state. ImportExportJobs has a harmless `[t]` memo, not a network effect. These are a caller map, not measured redundant requests. The tested toast trigger adds none; retain current dependencies and genuine locale/error-text refresh behavior. + +## Component reuse and maintainability + +| Pattern | Reuse decision / preservation boundary | +|---|---| +| Page hierarchy, section surfaces, controls and feedback | Retain PageHeader/PageSection, semantic theme, MUI Button/TextField/Table/Dialog/Drawer, ViewStateNotice and existing toast/confirm/prompt. P6 scoped company error/language feedback and Settings semantics use those owners. No new presentation framework or duplicate notification stack | +| Resource/state loaders | useViewResource and domain-local useAsset/useIntelligence overlap superficially; their retry/cancellation/setData/save consumers differ. No consolidation solely to reduce line count. Fresh evidence of a repeated failure or real shared behavior is required before extraction | +| Dashboard/Analytics reports | Existing shared DashboardView reporting mode is already reuse; no duplicate chart fetching owner/new chart library | +| Jobs/Table/Board | Shared query semantics and density remain, with table versus full-board data shape intentionally distinct. Sharing state never means one API response or capped Board membership | +| CV editor/library/templates | Existing CvTemplateGallery/CvCustomizeTab/settings client are reused; one editor/save/history/renderer remains. Printed templates keep their own physical tokens; app density does not change PDF layout | +| AI review | [Domain differences](../p6-02/AI_REVIEW.md) preserve explicit source/destination, draft versus persisted item versus autosave and stale token protection. Share layout only after proving all consumers; no universal Apply or automatic model invocation | +| Settings/account/providers/admin | Existing independent subcard/API scopes and roles remain. Remaining legacy page presentation migrates in Phase7; aggregate admin metrics/new Notifications/Documents projections require real contracts first | + +## Bounded outcome and remaining work + +This checkpoint supplies source findings and the executed reproducible native baseline. Runtime timings, large-result bytes, resource observations, long tasks/layout shifts and heap snapshots belong to the fresh manifests. No invented performance budget, unbounded capacity claim, React rerender count, comparative gain or leak diagnosis is supplied. + +PF-01 has a meaningful read-count/localisation regression using the actual provider/Companies owner; its toast-trigger hypothesis is disproven and existing source is retained. It is included in the final521-case frontend run (85 suites), separately from the native diagnostic. Measured shell/report request overlap is retained for bounded owner/freshness-aware investigation rather than an unqualified cache. Leave major backend/Board/document optimization to an explicit supported-workload design. + +Retain [Board/reliability/manual/rendering debt](../../phase-5/p5-15/p5-15-04/DEBT_DISPOSITION.md), historical language/notification/Rules500 causes, IF-CV-UNSAVED-01 and production font/device/ingress/recovery gates. Original document/page/source/owner/proposal contracts are protected by the [57-group matrix](../p6-05/PRESERVATION.md). Current commit/push verification is the [Phase6 ledger](../COMMITS.md). Production stays NO-GO; no Phase7 or Phase8 implementation occurs here. diff --git a/docs/redesign/phase-6/p6-04/evidence/performance.json b/docs/redesign/phase-6/p6-04/evidence/performance.json new file mode 100644 index 0000000..408c125 --- /dev/null +++ b/docs/redesign/phase-6/p6-04/evidence/performance.json @@ -0,0 +1,2861 @@ +{ + "browserVersion": "151.0.7922.34", + "viewport": { + "width": 1280, + "height": 720 + }, + "environment": { + "platform": "win32", + "application": "production static export", + "prebuiltExport": true, + "serverReuseAllowed": false, + "database": "isolated synthetic SQLite from native test configuration", + "api": "Release API from native test configuration" + }, + "observations": [ + { + "name": "initial Jobs load", + "path": "/jobs", + "readyMs": 673, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/companies", + "GET /api/jobapplications" + ], + "browser": { + "navigation": { + "responseEndMs": 10, + "domContentLoadedMs": 26.700000002980232, + "loadMs": 80.79999999701977 + }, + "longTasks": [ + 137 + ], + "layoutShift": 0.0546968994140625, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 11.299999997019768, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 11.700000002980232, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 28.5, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 32.5, + "transferSize": 228334 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 32.099999994039536, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 32, + "transferSize": 10186 + }, + { + "path": "/css2", + "durationMs": 8.299999997019768, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 32.20000000298023, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 19.5, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 22.099999994039536, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 22.399999991059303, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 22.299999997019768, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 24.700000002980232, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 25.200000002980232, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 26.400000005960464, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 27.799999997019768, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 29.099999994039536, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 27.799999997019768, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 30.30000001192093, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 30.900000005960464, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 18.5, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 18, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 50.30000001192093, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 23.399999991059303, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 95.3999999910593, + "transferSize": 25102 + }, + { + "path": "/api/companies", + "durationMs": 79.90000000596046, + "transferSize": 0 + }, + { + "path": "/api/jobapplications", + "durationMs": 100.29999999701977, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 5.700000002980232, + "transferSize": 5134 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 2 + }, + { + "name": "Nodes", + "value": 2280 + }, + { + "name": "LayoutCount", + "value": 8 + }, + { + "name": "RecalcStyleCount", + "value": 12 + }, + { + "name": "TaskDuration", + "value": 0.461887 + }, + { + "name": "JSHeapUsedSize", + "value": 17468472 + } + ] + }, + { + "name": "Dashboard", + "path": "/dashboard", + "readyMs": 905, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/auth/me", + "GET /api/career/profile", + "GET /api/gmail/status", + "GET /api/microsoft-graph/status", + "GET /api/imap/status", + "GET /api/jobapplications/stats", + "GET /api/jobapplications/analytics-overview", + "GET /api/jobapplications/reminders", + "GET /api/jobapplications/analytics", + "GET /api/jobapplications/tags", + "GET /api/jobapplications/tag-trends", + "GET /api/companies" + ], + "browser": { + "navigation": { + "responseEndMs": 7.0999999940395355, + "domContentLoadedMs": 21.700000002980232, + "loadMs": 45.5 + }, + "longTasks": [], + "layoutShift": 0.08670471064249674, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.5, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 7.799999997019768, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 14.099999994039536, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 23.299999997019768, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 23.200000002980232, + "transferSize": 228334 + }, + { + "path": "/css2", + "durationMs": 5, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 23.400000005960464, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 23.30000001192093, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 16.200000002980232, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 22.700000002980232, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 22.899999991059303, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 23.299999997019768, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 22.900000005960464, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 23.5, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 25.700000002980232, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 31.80000001192093, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 31.399999991059303, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 30.600000008940697, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 31.399999991059303, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 33.400000005960464, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 50.5, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 53, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 54.6000000089407, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 50.70000000298023, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/06atlj-is-s1r.js", + "durationMs": 34.29999999701977, + "transferSize": 34065 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 33.80000001192093, + "transferSize": 25102 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 5, + "transferSize": 5134 + }, + { + "path": "/api/auth/me", + "durationMs": 21.100000008940697, + "transferSize": 0 + }, + { + "path": "/api/career/profile", + "durationMs": 29.299999997019768, + "transferSize": 0 + }, + { + "path": "/api/gmail/status", + "durationMs": 41.19999998807907, + "transferSize": 0 + }, + { + "path": "/api/microsoft-graph/status", + "durationMs": 39.19999998807907, + "transferSize": 0 + }, + { + "path": "/api/imap/status", + "durationMs": 41.599999994039536, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/stats", + "durationMs": 58.79999999701977, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/analytics-overview", + "durationMs": 87.5, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 30.900000005960464, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/analytics", + "durationMs": 43.5, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/tags", + "durationMs": 47.3999999910593, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/tag-trends", + "durationMs": 49.599999994039536, + "transferSize": 0 + }, + { + "path": "/api/companies", + "durationMs": 39.5, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 1 + }, + { + "name": "Nodes", + "value": 2038 + }, + { + "name": "LayoutCount", + "value": 12 + }, + { + "name": "RecalcStyleCount", + "value": 29 + }, + { + "name": "TaskDuration", + "value": 0.293221 + }, + { + "name": "JSHeapUsedSize", + "value": 15857776 + } + ] + }, + { + "name": "Analytics 6 months", + "path": "/analytics?months=6", + "readyMs": 767, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/jobapplications/stats", + "GET /api/jobapplications/analytics-overview", + "GET /api/jobapplications/analytics", + "GET /api/jobapplications/tags", + "GET /api/jobapplications/tag-trends", + "GET /api/companies" + ], + "browser": { + "navigation": { + "responseEndMs": 5.799999997019768, + "domContentLoadedMs": 20.799999997019768, + "loadMs": 42.400000005960464 + }, + "longTasks": [], + "layoutShift": 0.18452199808756511, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.799999997019768, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 8, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 17, + "transferSize": 177987 + }, + { + "path": "/css2", + "durationMs": 5.5, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 22, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 21.299999997019768, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 21.799999997019768, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 21.599999994039536, + "transferSize": 228334 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 13.799999997019768, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 20.69999998807907, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 21.099999994039536, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 21.400000005960464, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 21.399999991059303, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 22.400000005960464, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 24.600000008940697, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 28.299999997019768, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 28, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 27.700000002980232, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 27.899999991059303, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 28.700000002980232, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 13.299999997019768, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 15.799999997019768, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 14.599999994039536, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 13.900000005960464, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3q6k02svdfjz4.js", + "durationMs": 36.5, + "transferSize": 545 + }, + { + "path": "/_next/static/chunks/06atlj-is-s1r.js", + "durationMs": 36.1000000089407, + "transferSize": 34065 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 36.20000000298023, + "transferSize": 25102 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 4.799999997019768, + "transferSize": 5134 + }, + { + "path": "/api/jobapplications/stats", + "durationMs": 14.700000002980232, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/analytics-overview", + "durationMs": 20, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/analytics", + "durationMs": 17.399999991059303, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/tags", + "durationMs": 19.30000001192093, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/tag-trends", + "durationMs": 18.400000005960464, + "transferSize": 0 + }, + { + "path": "/api/companies", + "durationMs": 17.399999991059303, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 3 + }, + { + "name": "Nodes", + "value": 3808 + }, + { + "name": "LayoutCount", + "value": 9 + }, + { + "name": "RecalcStyleCount", + "value": 14 + }, + { + "name": "TaskDuration", + "value": 0.217181 + }, + { + "name": "JSHeapUsedSize", + "value": 13212340 + } + ] + }, + { + "name": "Analytics 24 months", + "path": "/analytics?months=24", + "readyMs": 770, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/jobapplications/stats", + "GET /api/jobapplications/analytics-overview", + "GET /api/jobapplications/analytics", + "GET /api/jobapplications/tags", + "GET /api/jobapplications/tag-trends", + "GET /api/companies" + ], + "browser": { + "navigation": { + "responseEndMs": 4.799999997019768, + "domContentLoadedMs": 18, + "loadMs": 41 + }, + "longTasks": [], + "layoutShift": 0.012757975260416665, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 6.800000011920929, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 7.4000000059604645, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 20.80000001192093, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 21.299999997019768, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 21.599999994039536, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 21, + "transferSize": 228334 + }, + { + "path": "/css2", + "durationMs": 4.799999997019768, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 21.700000002980232, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 11.700000002980232, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 17.299999997019768, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 17.200000002980232, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 17.700000002980232, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 17.700000002980232, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 19.299999997019768, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 21, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 23.69999998807907, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 23.799999997019768, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 22.80000001192093, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 24.700000002980232, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 25.299999997019768, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 14.799999997019768, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 14.900000005960464, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 14.5, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 13.099999994039536, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3q6k02svdfjz4.js", + "durationMs": 32.20000000298023, + "transferSize": 545 + }, + { + "path": "/_next/static/chunks/06atlj-is-s1r.js", + "durationMs": 31.69999998807907, + "transferSize": 34065 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 31.599999994039536, + "transferSize": 25102 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 4.100000008940697, + "transferSize": 5134 + }, + { + "path": "/api/jobapplications/stats", + "durationMs": 15.899999991059303, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/analytics-overview", + "durationMs": 20, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/analytics", + "durationMs": 17.900000005960464, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/tags", + "durationMs": 17.200000002980232, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/tag-trends", + "durationMs": 17.799999997019768, + "transferSize": 0 + }, + { + "path": "/api/companies", + "durationMs": 16.799999997019768, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 3 + }, + { + "name": "Nodes", + "value": 3639 + }, + { + "name": "LayoutCount", + "value": 8 + }, + { + "name": "RecalcStyleCount", + "value": 14 + }, + { + "name": "TaskDuration", + "value": 0.203272 + }, + { + "name": "JSHeapUsedSize", + "value": 40714364 + } + ] + }, + { + "name": "Job details", + "path": "/jobs/1", + "readyMs": 923, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/jobapplications/1/status-suggestion", + "GET /api/companies", + "GET /api/jobapplications/1/workspace" + ], + "browser": { + "navigation": { + "responseEndMs": 3.7999999970197678, + "domContentLoadedMs": 16.899999991059303, + "loadMs": 37.3999999910593 + }, + "longTasks": [], + "layoutShift": 0.040129313151041665, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.799999997019768, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 8.099999994039536, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 14.399999991059303, + "transferSize": 177987 + }, + { + "path": "/css2", + "durationMs": 4.9000000059604645, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 21.30000001192093, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 20.900000005960464, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 21.30000001192093, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 19.700000002980232, + "transferSize": 228334 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 15, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 19.400000005960464, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 19.399999991059303, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 19.69999998807907, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 20, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 21.100000008940697, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 22.099999994039536, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 24.799999997019768, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 25, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 25.099999994039536, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 25.599999994039536, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 26.200000002980232, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 13.099999994039536, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 14.700000002980232, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 14.299999997019768, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 13.900000005960464, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/2q65uitl2oksj.js", + "durationMs": 35.599999994039536, + "transferSize": 17534 + }, + { + "path": "/_next/static/chunks/39qtpg2zpb1d8.js", + "durationMs": 36.79999999701977, + "transferSize": 38256 + }, + { + "path": "/_next/static/chunks/3gf4f1j6l-alg.js", + "durationMs": 36.5, + "transferSize": 118455 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 36.599999994039536, + "transferSize": 25102 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 3.6000000089406967, + "transferSize": 5134 + }, + { + "path": "/api/jobapplications/1/status-suggestion", + "durationMs": 34.20000000298023, + "transferSize": 0 + }, + { + "path": "/api/companies", + "durationMs": 15.299999997019768, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/1/workspace", + "durationMs": 133.1000000089407, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 1 + }, + { + "name": "Nodes", + "value": 1774 + }, + { + "name": "LayoutCount", + "value": 9 + }, + { + "name": "RecalcStyleCount", + "value": 21 + }, + { + "name": "TaskDuration", + "value": 0.255207 + }, + { + "name": "JSHeapUsedSize", + "value": 15831984 + } + ] + }, + { + "name": "Long CV initialization", + "path": "/career/builder/1", + "readyMs": 1326, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/cv/variants/1", + "GET /api/cv/themes", + "GET /api/cv/outline", + "GET /api/companies", + "POST /api/cv/preview" + ], + "browser": { + "navigation": { + "responseEndMs": 5.200000002980232, + "domContentLoadedMs": 18.200000002980232, + "loadMs": 38 + }, + "longTasks": [ + 52 + ], + "layoutShift": 0.012884860568576389, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.5, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 7.799999997019768, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 12.699999988079071, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 19.19999998807907, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 19.19999998807907, + "transferSize": 228334 + }, + { + "path": "/css2", + "durationMs": 5.200000002980232, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 19.299999997019768, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 19.200000002980232, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 16.099999994039536, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 16.700000002980232, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 19.399999991059303, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 20.799999997019768, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 20.700000002980232, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 21, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 21.80000001192093, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 23, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 22, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 25.200000002980232, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 25.600000008940697, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 26, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 13.200000002980232, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 16.5, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 15.5, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 14.200000002980232, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3y9_6i44vsn5e.js", + "durationMs": 36.900000005960464, + "transferSize": 12792 + }, + { + "path": "/_next/static/chunks/1-bjgejrqfcdt.js", + "durationMs": 37.5, + "transferSize": 69975 + }, + { + "path": "/_next/static/chunks/39qtpg2zpb1d8.js", + "durationMs": 37.20000000298023, + "transferSize": 38256 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 36.79999999701977, + "transferSize": 25102 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 12.600000008940697, + "transferSize": 5134 + }, + { + "path": "/api/cv/variants/1", + "durationMs": 20.700000002980232, + "transferSize": 0 + }, + { + "path": "/api/cv/themes", + "durationMs": 20.799999997019768, + "transferSize": 0 + }, + { + "path": "/api/cv/outline", + "durationMs": 28.599999994039536, + "transferSize": 0 + }, + { + "path": "/api/companies", + "durationMs": 13.799999997019768, + "transferSize": 0 + }, + { + "path": "/api/cv/preview", + "durationMs": 29, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 9 + }, + { + "name": "Nodes", + "value": 4575 + }, + { + "name": "LayoutCount", + "value": 32 + }, + { + "name": "RecalcStyleCount", + "value": 45 + }, + { + "name": "TaskDuration", + "value": 0.491766 + }, + { + "name": "JSHeapUsedSize", + "value": 43664700 + } + ] + }, + { + "name": "Long CV visible pagination", + "pages": 4 + }, + { + "name": "CV section editing including existing autosave debounce", + "persistedMs": 996 + }, + { + "name": "Board 200 API", + "apiMs": 24, + "bytes": 237273 + }, + { + "name": "Board 200 render", + "path": "/jobs?view=board", + "readyMs": 1026, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/companies", + "GET /api/jobapplications/board" + ], + "browser": { + "navigation": { + "responseEndMs": 6.300000011920929, + "domContentLoadedMs": 22.80000001192093, + "loadMs": 44.900000005960464 + }, + "longTasks": [ + 73, + 92, + 96 + ], + "layoutShift": 0, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.799999997019768, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 8.200000002980232, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 14.200000002980232, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 23.5, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 24.099999994039536, + "transferSize": 228334 + }, + { + "path": "/css2", + "durationMs": 4.5999999940395355, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 23.599999994039536, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 24.700000002980232, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 14, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 18.900000005960464, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 18.899999991059303, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 19.299999997019768, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 19.700000002980232, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 18.900000005960464, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 20.799999997019768, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 24.299999997019768, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 24.599999994039536, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 23.299999997019768, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 25, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 26.900000005960464, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 14, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 14.400000005960464, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 14.700000002980232, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 12.899999991059303, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3wi4ei8dsihay.js", + "durationMs": 55.79999999701977, + "transferSize": 11965 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 54.599999994039536, + "transferSize": 25102 + }, + { + "path": "/api/companies", + "durationMs": 38, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 6.0999999940395355, + "transferSize": 5134 + }, + { + "path": "/api/jobapplications/board", + "durationMs": 14.300000011920929, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 8 + }, + { + "name": "Nodes", + "value": 13718 + }, + { + "name": "LayoutCount", + "value": 10 + }, + { + "name": "RecalcStyleCount", + "value": 30 + }, + { + "name": "TaskDuration", + "value": 0.491151 + }, + { + "name": "JSHeapUsedSize", + "value": 54209672 + } + ] + }, + { + "name": "Table 200", + "path": "/jobs?view=table", + "readyMs": 571, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/companies", + "GET /api/jobapplications" + ], + "browser": { + "navigation": { + "responseEndMs": 4.700000002980232, + "domContentLoadedMs": 19.700000002980232, + "loadMs": 42.599999994039536 + }, + "longTasks": [ + 78 + ], + "layoutShift": 0.0546968994140625, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.5999999940395355, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 7.799999997019768, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 16.599999994039536, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 21.5, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 21.5, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 22.299999997019768, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 21.69999998807907, + "transferSize": 228334 + }, + { + "path": "/css2", + "durationMs": 4.700000002980232, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 11.100000008940697, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 18.5, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 18, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 19, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 19, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 26.299999997019768, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 27.700000002980232, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 27.399999991059303, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 26.600000008940697, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 27.100000008940697, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 26.899999991059303, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 30.299999997019768, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 11.799999997019768, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 13.899999991059303, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 13.600000008940697, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 11.700000002980232, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 58, + "transferSize": 25102 + }, + { + "path": "/api/companies", + "durationMs": 38.3999999910593, + "transferSize": 0 + }, + { + "path": "/api/jobapplications", + "durationMs": 39, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 5.299999997019768, + "transferSize": 5134 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 1 + }, + { + "name": "Nodes", + "value": 3164 + }, + { + "name": "LayoutCount", + "value": 8 + }, + { + "name": "RecalcStyleCount", + "value": 12 + }, + { + "name": "TaskDuration", + "value": 0.294775 + }, + { + "name": "JSHeapUsedSize", + "value": 23576440 + } + ] + }, + { + "name": "Filtered Board 200", + "path": "/jobs?view=board&q=Phase6%20capacity", + "readyMs": 958, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/companies", + "GET /api/jobapplications/board" + ], + "browser": { + "navigation": { + "responseEndMs": 4.299999997019768, + "domContentLoadedMs": 17.799999997019768, + "loadMs": 37 + }, + "longTasks": [ + 69, + 84, + 67 + ], + "layoutShift": 0, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.199999988079071, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 7.299999997019768, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 12.599999994039536, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 18.099999994039536, + "transferSize": 228334 + }, + { + "path": "/css2", + "durationMs": 5, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 17.900000005960464, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 19.100000008940697, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 19, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 12.400000005960464, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 17.599999994039536, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 18.200000002980232, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 18.299999997019768, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 18.5, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 19, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 21.5, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 26.399999991059303, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 25.599999994039536, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 25.200000002980232, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 26.200000002980232, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 26.599999994039536, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 13, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 15.400000005960464, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 15.300000011920929, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 14.100000008940697, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3wi4ei8dsihay.js", + "durationMs": 52.29999999701977, + "transferSize": 11965 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 51.099999994039536, + "transferSize": 25102 + }, + { + "path": "/api/companies", + "durationMs": 33.80000001192093, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 5.799999997019768, + "transferSize": 5134 + }, + { + "path": "/api/jobapplications/board", + "durationMs": 20.400000005960464, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 1 + }, + { + "name": "Nodes", + "value": 8857 + }, + { + "name": "LayoutCount", + "value": 10 + }, + { + "name": "RecalcStyleCount", + "value": 30 + }, + { + "name": "TaskDuration", + "value": 0.450646 + }, + { + "name": "JSHeapUsedSize", + "value": 36210488 + } + ] + }, + { + "name": "Board 1000 API", + "apiMs": 21, + "bytes": 1181982 + }, + { + "name": "Board 1000 render", + "path": "/jobs?view=board", + "readyMs": 1657, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/companies", + "GET /api/jobapplications/board" + ], + "browser": { + "navigation": { + "responseEndMs": 5.5999999940395355, + "domContentLoadedMs": 20.399999991059303, + "loadMs": 41.099999994039536 + }, + "longTasks": [ + 63, + 397, + 264 + ], + "layoutShift": 0, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 7.4000000059604645, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 7.5999999940395355, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 13.900000005960464, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 22.200000002980232, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 22, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 21.900000005960464, + "transferSize": 228334 + }, + { + "path": "/css2", + "durationMs": 4.5, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 22.100000008940697, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 11.400000005960464, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 17, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 17.099999994039536, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 17.100000008940697, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 17.700000002980232, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 19.299999997019768, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 19.599999994039536, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 22.599999994039536, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 22.400000005960464, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 22, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 22.799999997019768, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 24, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 11.400000005960464, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 13.099999994039536, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 13, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 10.5, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3wi4ei8dsihay.js", + "durationMs": 49.20000000298023, + "transferSize": 11965 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 48, + "transferSize": 25102 + }, + { + "path": "/api/companies", + "durationMs": 32.099999994039536, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 7.799999997019768, + "transferSize": 5134 + }, + { + "path": "/api/jobapplications/board", + "durationMs": 23.5, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 2 + }, + { + "name": "Nodes", + "value": 48391 + }, + { + "name": "LayoutCount", + "value": 10 + }, + { + "name": "RecalcStyleCount", + "value": 32 + }, + { + "name": "TaskDuration", + "value": 1.132442 + }, + { + "name": "JSHeapUsedSize", + "value": 114574748 + } + ] + }, + { + "name": "Table 1000", + "path": "/jobs?view=table", + "readyMs": 589, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/companies", + "GET /api/jobapplications" + ], + "browser": { + "navigation": { + "responseEndMs": 4.899999991059303, + "domContentLoadedMs": 26.19999998807907, + "loadMs": 49.8999999910593 + }, + "longTasks": [ + 79 + ], + "layoutShift": 0.0546968994140625, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 8.600000008940697, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 8.799999997019768, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 23.099999994039536, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 23.400000005960464, + "transferSize": 228334 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 22.80000001192093, + "transferSize": 10186 + }, + { + "path": "/css2", + "durationMs": 5.700000002980232, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 23.899999991059303, + "transferSize": 5185 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 23.799999997019768, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 12.099999994039536, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 17, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 17.099999994039536, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 17.200000002980232, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 17.299999997019768, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 17.900000005960464, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 20.799999997019768, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 23.799999997019768, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 23.5, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 23.099999994039536, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 23.5, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 25.30000001192093, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 11.299999997019768, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 13.399999991059303, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 13.199999988079071, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 11.599999994039536, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 59.5, + "transferSize": 25102 + }, + { + "path": "/api/companies", + "durationMs": 39.20000000298023, + "transferSize": 0 + }, + { + "path": "/api/jobapplications", + "durationMs": 40.900000005960464, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 5.299999997019768, + "transferSize": 5134 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 4 + }, + { + "name": "Nodes", + "value": 51583 + }, + { + "name": "LayoutCount", + "value": 8 + }, + { + "name": "RecalcStyleCount", + "value": 12 + }, + { + "name": "TaskDuration", + "value": 0.308042 + }, + { + "name": "JSHeapUsedSize", + "value": 23116668 + } + ] + }, + { + "name": "Filtered Board 1000", + "path": "/jobs?view=board&q=Phase6%20capacity", + "readyMs": 1611, + "requests": [ + "GET /api/auth/config", + "GET /api/auth/me", + "GET /api/jobapplications/reminders", + "GET /api/notifications/unread-count", + "GET /api/companies", + "GET /api/jobapplications/board" + ], + "browser": { + "navigation": { + "responseEndMs": 5, + "domContentLoadedMs": 26.200000002980232, + "loadMs": 44.599999994039536 + }, + "longTasks": [ + 64, + 359, + 273 + ], + "layoutShift": 0, + "resources": [ + { + "path": "/_next/static/chunks/1xwc-b795syag.css", + "durationMs": 12.5, + "transferSize": 593 + }, + { + "path": "/_next/static/chunks/0w3y5uv0hr947.js", + "durationMs": 13, + "transferSize": 23983 + }, + { + "path": "/_next/static/chunks/turbopack-14p19yf3yful3.js", + "durationMs": 23, + "transferSize": 10186 + }, + { + "path": "/_next/static/chunks/2vlvgi2hbk32a.js", + "durationMs": 23.200000002980232, + "transferSize": 177987 + }, + { + "path": "/_next/static/chunks/2vlttipo05xfv.js", + "durationMs": 23.799999997019768, + "transferSize": 19857 + }, + { + "path": "/_next/static/chunks/3pd_mozp76yih.js", + "durationMs": 23.5, + "transferSize": 228334 + }, + { + "path": "/_next/static/chunks/1mg7pt-4l7_l-.js", + "durationMs": 23.900000005960464, + "transferSize": 5185 + }, + { + "path": "/css2", + "durationMs": 9.399999991059303, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/2b6agan5w-ebg.js", + "durationMs": 8.700000002980232, + "transferSize": 3064 + }, + { + "path": "/_next/static/chunks/0lfuwd98rim9r.js", + "durationMs": 16.900000005960464, + "transferSize": 28385 + }, + { + "path": "/_next/static/chunks/3t4zlerpupcoq.js", + "durationMs": 17.200000002980232, + "transferSize": 25652 + }, + { + "path": "/_next/static/chunks/0f20amr0-m-zl.js", + "durationMs": 17.5, + "transferSize": 49716 + }, + { + "path": "/_next/static/chunks/1jhpn3g6nuazw.js", + "durationMs": 18.69999998807907, + "transferSize": 45606 + }, + { + "path": "/_next/static/chunks/406gm9r2rgjcf.js", + "durationMs": 19.299999997019768, + "transferSize": 158395 + }, + { + "path": "/_next/static/chunks/3gaa3basak6o6.js", + "durationMs": 20.600000008940697, + "transferSize": 432986 + }, + { + "path": "/_next/static/chunks/2v-7nhj_bzbm_.js", + "durationMs": 23.400000005960464, + "transferSize": 257995 + }, + { + "path": "/_next/static/chunks/02mwb4hjks52g.js", + "durationMs": 22.799999997019768, + "transferSize": 54194 + }, + { + "path": "/_next/static/chunks/08ydkbcc5f93r.js", + "durationMs": 23.599999994039536, + "transferSize": 142244 + }, + { + "path": "/_next/static/chunks/0ukezoa7o8ndc.js", + "durationMs": 25.299999997019768, + "transferSize": 93514 + }, + { + "path": "/_next/static/chunks/0hq8d8g_25ypl.js", + "durationMs": 25.69999998807907, + "transferSize": 207615 + }, + { + "path": "/api/auth/config", + "durationMs": 11.900000005960464, + "transferSize": 0 + }, + { + "path": "/api/auth/me", + "durationMs": 13.700000002980232, + "transferSize": 0 + }, + { + "path": "/api/jobapplications/reminders", + "durationMs": 13.299999997019768, + "transferSize": 0 + }, + { + "path": "/api/notifications/unread-count", + "durationMs": 11.900000005960464, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3wi4ei8dsihay.js", + "durationMs": 49.400000005960464, + "transferSize": 11965 + }, + { + "path": "/_next/static/chunks/1ocp5iwqw5t8n.js", + "durationMs": 48.79999999701977, + "transferSize": 25102 + }, + { + "path": "/api/companies", + "durationMs": 32.20000000298023, + "transferSize": 0 + }, + { + "path": "/_next/static/chunks/3dq3l-or19e0_.js", + "durationMs": 6, + "transferSize": 5134 + }, + { + "path": "/api/jobapplications/board", + "durationMs": 21.399999991059303, + "transferSize": 0 + } + ] + }, + "metrics": [ + { + "name": "Documents", + "value": 1 + }, + { + "name": "Nodes", + "value": 39265 + }, + { + "name": "LayoutCount", + "value": 10 + }, + { + "name": "RecalcStyleCount", + "value": 31 + }, + { + "name": "TaskDuration", + "value": 1.127235 + }, + { + "name": "JSHeapUsedSize", + "value": 98997660 + } + ] + }, + { + "name": "Client Board to Table retaining the large query", + "readyMs": 319 + }, + { + "name": "Client Table to Board retaining the large query", + "readyMs": 695 + }, + { + "name": "Large Jobs search including existing debounce", + "readyMs": 1490 + }, + { + "name": "Client Jobs to Dashboard navigation", + "readyMs": 184 + }, + { + "name": "Client interactions request queries; unchanged document timeOrigin", + "timeOrigin": 1791708461270.6, + "requests": [ + "GET /api/jobapplications?page=1&pageSize=15&q=Phase6+capacity&includeDeleted=false&sortBy=dateApplied&sortDir=desc", + "GET /api/jobapplications/board?q=Phase6+capacity&status=All&location=&needsFollowUp=false&includeDeleted=false&sortBy=dateApplied&sortDir=desc", + "GET /api/jobapplications/board?q=Phase6+capacity+1000&status=All&location=&needsFollowUp=false&includeDeleted=false&sortBy=dateApplied&sortDir=desc", + "GET /api/auth/me", + "GET /api/career/profile", + "GET /api/gmail/status", + "GET /api/microsoft-graph/status", + "GET /api/imap/status", + "GET /api/jobapplications/stats", + "GET /api/jobapplications/analytics-overview", + "GET /api/jobapplications/reminders?upcomingDays=14", + "GET /api/jobapplications/analytics?months=12", + "GET /api/jobapplications/tags?limit=10", + "GET /api/jobapplications/tag-trends?months=12&limit=5" + ] + } + ], + "limits": [ + "Single reproducible diagnostic, no production budget or device qualification", + "Hard-navigation measurements include boot/auth; no React render-count inference", + "CDP heap samples are observations, not a leak diagnosis" + ], + "bundle": { + "buildId": "2LDblja_XnSBWSuY6ys_V", + "allExportedJsFiles": 53, + "allExportedJsRawBytes": 3234867, + "sumIndividualGzipBytes": 940065, + "files": [ + { + "path": "_next/static/2LDblja_XnSBWSuY6ys_V/_buildManifest.js", + "rawBytes": 219, + "sha256": "9476e0afd3f9da68a64e6ec58631191fd3eaca62c9f5a377e7517fe9a89e59ea" + }, + { + "path": "_next/static/2LDblja_XnSBWSuY6ys_V/_clientMiddlewareManifest.js", + "rawBytes": 96, + "sha256": "5483e3295dc35dfe29ea932efc85341c916f10ff78ff5b0e965e003710893a4a" + }, + { + "path": "_next/static/2LDblja_XnSBWSuY6ys_V/_ssgManifest.js", + "rawBytes": 80, + "sha256": "678f6ce2cb80b1fe72fc67e7412be6e2ab6ada083111b64f7c40d35e3cba5e00" + }, + { + "path": "_next/static/chunks/02mwb4hjks52g.js", + "rawBytes": 53894, + "sha256": "e131c5847ddf632dab1d077fa638a06af4728ad88163bccc93a9d9ed30e8be94" + }, + { + "path": "_next/static/chunks/06atlj-is-s1r.js", + "rawBytes": 33765, + "sha256": "b58194b79ffc588d284e157ea9c3a9603f6812be9af2b389343388a1312161c2" + }, + { + "path": "_next/static/chunks/08ydkbcc5f93r.js", + "rawBytes": 141944, + "sha256": "6b660d5f902d33aad41e6f326a9869e54a489a21181753862ac6abe71f8eba40" + }, + { + "path": "_next/static/chunks/091poeh_7k8jp.js", + "rawBytes": 17603, + "sha256": "a6aacb5594c32836ed8721a00d462c9a4003c1fcf1baae401dbaf063109df392" + }, + { + "path": "_next/static/chunks/0cz1d0mv5g_q7.js", + "rawBytes": 112594, + "sha256": "0973c1d64c88adc8e3c950410cb58b288f72118d5965b78049438deb8f2f9683" + }, + { + "path": "_next/static/chunks/0f20amr0-m-zl.js", + "rawBytes": 49416, + "sha256": "70b0fb6db2fa0749d01768823746641975bfc42a65e133a2b138e4aae0ba660b" + }, + { + "path": "_next/static/chunks/0hq8d8g_25ypl.js", + "rawBytes": 207315, + "sha256": "68e5b6d347e40c834f30c868cd0442770d4f887e4c157a859b396bb8d2bbd68e" + }, + { + "path": "_next/static/chunks/0lfuwd98rim9r.js", + "rawBytes": 28085, + "sha256": "db3216f3501d53c517031483d281466eb08c5054d83bb0d5009731e5fbaf3a1f" + }, + { + "path": "_next/static/chunks/0m7vi4hs61md9.js", + "rawBytes": 32405, + "sha256": "b098d60b98930bfa895489a42ae534227e2e44e2c888aaa1a139fadbe700d119" + }, + { + "path": "_next/static/chunks/0nb4syhs2ze1s.js", + "rawBytes": 1112, + "sha256": "20b2e2f1195168f16752da3fe651e6d6f0e2561b0139de4042e7faee590114a7" + }, + { + "path": "_next/static/chunks/0ukezoa7o8ndc.js", + "rawBytes": 93214, + "sha256": "5db931cc982644111ce41e983f5dfdb7c111154fd63590316f5db3b610240d73" + }, + { + "path": "_next/static/chunks/0w3y5uv0hr947.js", + "rawBytes": 23683, + "sha256": "94b0774abaaa0aaf1f6f324d72982fcec39061a97602b8d27d7550e2076ab0c0" + }, + { + "path": "_next/static/chunks/0xj7pytmwb27r.js", + "rawBytes": 2312, + "sha256": "83ba726bbf10cc9eb7375f21db41ccb59491ef31cd0031e0bd3fde67c49ed547" + }, + { + "path": "_next/static/chunks/1-bjgejrqfcdt.js", + "rawBytes": 69675, + "sha256": "f3eb6b9bfc32c1e454abcf45ba3217afff46c2feb8d35de6a689b8e12bb95717" + }, + { + "path": "_next/static/chunks/100y3nigll5ap.js", + "rawBytes": 7081, + "sha256": "49c825c42cc40fbf26b5780f710234537974fd99792119db43ffc29c666141ae" + }, + { + "path": "_next/static/chunks/1bo5vruln9ro7.js", + "rawBytes": 32051, + "sha256": "d3c3fd8cd9086e741993371e2a1c847f9262a11c5ff4ac15ca956143a8ad68e2" + }, + { + "path": "_next/static/chunks/1emuuo-0m8vez.js", + "rawBytes": 17565, + "sha256": "4c21bf2a07fcdc992e3e74d65c78b33bb6c44a14298f641aa0008aa8f2187416" + }, + { + "path": "_next/static/chunks/1gs80ji4dteqt.js", + "rawBytes": 51841, + "sha256": "5ad59535cd1f59d778ade13976aba059997c69d6ba5d892236f6d6d0cf995d1b" + }, + { + "path": "_next/static/chunks/1jhpn3g6nuazw.js", + "rawBytes": 45306, + "sha256": "f4aefb7dd17514ff4fa66d3e1f51e3b817de5748b56f38c1032bdc3afd8b16a0" + }, + { + "path": "_next/static/chunks/1mg7pt-4l7_l-.js", + "rawBytes": 4885, + "sha256": "beb177620b7135aee02437aaac7b96685588f5830da6af1f66d2d0d5988dc54b" + }, + { + "path": "_next/static/chunks/1ocp5iwqw5t8n.js", + "rawBytes": 24802, + "sha256": "5770e4f6c9b589511b855e40fd717ee066d543fa6e4e6cc54cc5bd252bbe47a1" + }, + { + "path": "_next/static/chunks/1ookeyi94iiwv.js", + "rawBytes": 4800, + "sha256": "883db2ccfca25d90c8b00472e71c3c2c4c068460911ef850f7a9e9e9f19fcbe9" + }, + { + "path": "_next/static/chunks/1owxpom4r3xpr.js", + "rawBytes": 3560, + "sha256": "372368d3aba84cb4a23eca2694bc554d50575b341a8b73e2074c4fac820beb7b" + }, + { + "path": "_next/static/chunks/1wn9plf_g3dwv.js", + "rawBytes": 39663, + "sha256": "a56a34c253983d23225447640cd7ee4a6a4e6ed62d83577640e3d557cc0be6d5" + }, + { + "path": "_next/static/chunks/2b6agan5w-ebg.js", + "rawBytes": 2764, + "sha256": "650489e7311700a71e87493c0a5949981cfe29dbf9db39f8cb42eaf0a7cbc3c4" + }, + { + "path": "_next/static/chunks/2e2n0wy891_-d.js", + "rawBytes": 14467, + "sha256": "3436d9be1827de975577e7fcc84eaf322dcd2ab163c3534fd4b485814e7e831f" + }, + { + "path": "_next/static/chunks/2hhjn96fczjvs.js", + "rawBytes": 41242, + "sha256": "589c85f58bad63587b2822add77b37080bc573a1f7ad90f8d3e691a22f095456" + }, + { + "path": "_next/static/chunks/2q65uitl2oksj.js", + "rawBytes": 17234, + "sha256": "f47d839bc4ca7396d870f0b27c9b0bb070860b978ab137c576927effb9720192" + }, + { + "path": "_next/static/chunks/2v-7nhj_bzbm_.js", + "rawBytes": 257695, + "sha256": "9ab216ce1bb8719e5a8b25599faa075e49e4b8d4baf0b7f5cc598a7244cdab7e" + }, + { + "path": "_next/static/chunks/2vlttipo05xfv.js", + "rawBytes": 19557, + "sha256": "a17d6235f5f3d618b8d0c03fcafe6ee624088571c8b29f1f6d8800f8f57bccf2" + }, + { + "path": "_next/static/chunks/2vlvgi2hbk32a.js", + "rawBytes": 177687, + "sha256": "10157c67f2fdbecef54efa23ba15ea21513f773af8787b594e87133c45a45cd1" + }, + { + "path": "_next/static/chunks/3--i00i4av4q_.js", + "rawBytes": 24247, + "sha256": "79902e86c8d920115cba0abc6e6b787eca1d8aa59b687a94ce889f270a3cf600" + }, + { + "path": "_next/static/chunks/3-8sli__93ru0.js", + "rawBytes": 4110, + "sha256": "a76c7a411c8352b9b9b1ce07e737b496f5e4023e399c27aa04007e88754c3f0a" + }, + { + "path": "_next/static/chunks/31nkei43jjbv6.js", + "rawBytes": 11304, + "sha256": "396e43ac57c3488d26b3dda208f3a23a4d3e0d2d527e9553fdef7932210753d2" + }, + { + "path": "_next/static/chunks/36ye_rsle3sbd.js", + "rawBytes": 52798, + "sha256": "3063ce62420a0f79be4cb3f959b98466d67b482c65a440bc494299c66b70b631" + }, + { + "path": "_next/static/chunks/37meciyo382wi.js", + "rawBytes": 37660, + "sha256": "ee566c17d3a36255ed809db045ae5fafcc49fa0df68d3d769b988bd1a01c3a90" + }, + { + "path": "_next/static/chunks/39qtpg2zpb1d8.js", + "rawBytes": 37956, + "sha256": "b7e1066bd4d6cd5cf6c2448bf89c5a008e5c189e58b7b7b25791b9bdb100f39c" + }, + { + "path": "_next/static/chunks/3d1sq_9gctax5.js", + "rawBytes": 6155, + "sha256": "98b9561a1ee4177229295eca3efa72ff36466f1b392f617af26a15817f402cba" + }, + { + "path": "_next/static/chunks/3dq3l-or19e0_.js", + "rawBytes": 4834, + "sha256": "1f05bc4dd91710507a63e773b3a878f7925765e568f673aa17cb7cdc8d1e2c68" + }, + { + "path": "_next/static/chunks/3gaa3basak6o6.js", + "rawBytes": 432686, + "sha256": "711d4d6abc7c51346ca5783a52e371745e2cc200c26dedd8607bcec72ad5435a" + }, + { + "path": "_next/static/chunks/3gf4f1j6l-alg.js", + "rawBytes": 118155, + "sha256": "30ed0f30bd9de0f1229caa107a98ce7e5695227ac4b9e7f3272f7b10eaa866dd" + }, + { + "path": "_next/static/chunks/3nrlrkxac2pon.js", + "rawBytes": 11919, + "sha256": "751243327443f5ccdd8b5f3df50b32ab3d2744dcdf7e40b002b7f432f34b06f6" + }, + { + "path": "_next/static/chunks/3oic_1dun0n0c.js", + "rawBytes": 417662, + "sha256": "dc3c80dcc93f8d7bc5209cb6310dcf035cdcadc9630cdcc9663032af5788f55c" + }, + { + "path": "_next/static/chunks/3pd_mozp76yih.js", + "rawBytes": 228034, + "sha256": "0f1d6719ed49d8ac6f2b98974dd1be831982bcea2b1955efb97b2bf178fdce18" + }, + { + "path": "_next/static/chunks/3q6k02svdfjz4.js", + "rawBytes": 245, + "sha256": "55a0099595493aff2d0a121d91ef55d4e7748180ad87bd0ed077d6ab84586f62" + }, + { + "path": "_next/static/chunks/3t4zlerpupcoq.js", + "rawBytes": 25352, + "sha256": "b1b1cc211c58922939677aaad111dd106a98ffd9e08a40dff208f8c4d9e7a95b" + }, + { + "path": "_next/static/chunks/3wi4ei8dsihay.js", + "rawBytes": 11665, + "sha256": "56ff128469b14721092d27a5644f1eb532bd3d81430edccc854817ce0cfaedc5" + }, + { + "path": "_next/static/chunks/3y9_6i44vsn5e.js", + "rawBytes": 12492, + "sha256": "8344e681e09c997ec542b3342f5beb2df4be04381cad079fa44112b60b813d93" + }, + { + "path": "_next/static/chunks/406gm9r2rgjcf.js", + "rawBytes": 158095, + "sha256": "c165b5e9dced109c6faf32b8bdcbe2050471f67c5bc37c8349404827d4575ca1" + }, + { + "path": "_next/static/chunks/turbopack-14p19yf3yful3.js", + "rawBytes": 9886, + "sha256": "79ab929130be94debf628997bd7a90fa07b385be7eb4a27928068daa4f597706" + } + ], + "limit": "All lazy/initial exported chunks; not initial-route transfer or actual server compression" + } +} diff --git a/docs/redesign/phase-6/p6-05/evidence/performance-results.json b/docs/redesign/phase-6/p6-05/evidence/performance-results.json new file mode 100644 index 0000000..1c476e4 --- /dev/null +++ b/docs/redesign/phase-6/p6-05/evidence/performance-results.json @@ -0,0 +1,53 @@ +{ + "command": { + "name": "performance", + "command": [ + "rtk", + "proxy", + "node", + "node_modules/@playwright/test/cli.js", + "test", + "e2e/responsive-accessibility-audit.spec.ts", + "--grep", + "P6-04", + "--retries=0", + "--reporter=list,json", + "--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase6\\current\\ui\\performance-results" + ], + "startedUtc": "2026-10-11T08:46:49.646192+00:00", + "finishedUtc": "2026-10-11T08:47:46.501493+00:00", + "exitCode": 0, + "stats": { + "startTime": "2026-10-11T08:46:50.191Z", + "duration": 56275.971, + "expected": 1, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + } + }, + "reportSha256": "53d65dfd5a7352a90bddc788114fb2d7ae3fd8aba9e1a53375a5f4bffe1c8f8a", + "logSha256": "0b774fcc9d69b1f71841275a08b0786f909c5b555e896d12ee1742e9241da34a", + "stats": { + "startTime": "2026-10-11T08:46:50.191Z", + "duration": 56275.971, + "expected": 1, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "cases": [ + { + "title": "[P6-04] measured native route, long CV and complete large Board workflows", + "expectedStatus": "passed", + "status": "expected", + "results": [ + { + "status": "passed", + "retry": 0, + "durationMs": 49047 + } + ] + } + ] +} diff --git a/docs/roadmap/todo.md b/docs/roadmap/todo.md index 74938ec..7251e3b 100644 --- a/docs/roadmap/todo.md +++ b/docs/roadmap/todo.md @@ -75,4 +75,5 @@ Completed phase items are intentionally omitted here; their evidence remains in - [x] P6-01 shared corrections, pushed `a94ea0a`. - [x] P6-02 workflow/save/retry/localisation review, pushed `c135d03`. - [x] P6-03 bounded responsive/accessibility/localisation review and mobile Career label correction; native2/2 label and6/6 panel/label cases pass. Manual reader/device requirements remain open; push receipt follows in [Phase 6](../redesign/phase-6/COMMITS.md). -- [ ] P6-04 performance/reuse; P6-05 integrated acceptance/handoff. Track completed evidence and push hashes in [Phase 6](../redesign/phase-6/README.md). No Phase 7 implementation or production deployment. +- [x] P6-04 performance/reuse baseline; standalone native1/1 and actual-provider fetch regression pass. O(N) Board capacity remains qualified; push receipt follows in [Phase 6](../redesign/phase-6/COMMITS.md). +- [ ] P6-05 integrated acceptance/handoff. Track completed evidence and push hashes in [Phase 6](../redesign/phase-6/README.md). No Phase 7 implementation or production deployment. diff --git a/job-tracker-ui/src/locale-fetch-stability.test.tsx b/job-tracker-ui/src/locale-fetch-stability.test.tsx new file mode 100644 index 0000000..58b44ca --- /dev/null +++ b/job-tracker-ui/src/locale-fetch-stability.test.tsx @@ -0,0 +1,29 @@ +import React from "react"; +import "@testing-library/jest-dom"; +import { fireEvent, render, screen, waitFor } from "@testing-library/react"; +import { MemoryRouter } from "react-router-dom"; +import { api } from "./api"; +import CompaniesTable from "./components/CompaniesTable"; +import { I18nProvider, useI18n } from "./i18n/I18nProvider"; +import { ToastProvider, useToast } from "./toast"; + +function Actions() { + const { toast } = useToast(); + const { setLanguage } = useI18n(); + return <>; +} + +test("feedback does not reload company data; changing locale still reloads translated states", async () => { + localStorage.clear(); + (api.get as jest.Mock).mockResolvedValue({ data: [{ id: 3, name: "Acme" }] }); + render(); + await screen.findByRole("button", { name: "Edit: Acme" }); + const reads = () => (api.get as jest.Mock).mock.calls.filter(([url]) => url === "/companies").length; + expect(reads()).toBe(1); + fireEvent.click(screen.getByRole("button", { name: "Show feedback" })); + expect(await screen.findByRole("alert")).toHaveTextContent("Saved"); + expect(reads()).toBe(1); + fireEvent.click(screen.getByRole("button", { name: "Change language" })); + await screen.findByRole("button", { name: "Rediger: Acme" }); + await waitFor(() => expect(reads()).toBe(2)); +});