13 KiB
P6-02 — Cross-application UX and workflow review
Companion regression correction
The first fresh full browser attempt recorded153 passes and four failures in named-controls-modal-state.spec.ts: its historical P4-02-D02 assertion deliberately required the company error to be hidden from the dialog. P6's verified error repair makes that expectation obsolete. The test now scopes the alert to the active company dialog and requires no aria-hidden ancestor, while preserving draft, no-write, keyboard/focus and subsequent CV/document assertions. The focused four theme/locale/width cases pass with no skips/retries; exact evidence. Final full regression is recorded separately in P6-05. This strengthens the intended current contract rather than weakening the assertion or masking a failure.
Fresh bounded repair result: 4/4 native EN/Bokmål company and language error/retry/persistence/reload workflows pass, retries0, skips0; portable feedback proof. The final complete521-unit run also passes. The first native company cases exposed generic English Axios500 text; the shared API helper now uses translated caller fallbacks for transport failures, while server validation and explicit cancellation/session explanations remain. Five actual-helper cases pass after2 localized RED cases. Company list/card dates and pending company-filter labels also reuse the established locale/translation owners. Full integrated native evidence follows in P6-05.
Scope and baseline
Review the existing approved navigation and complete task boundaries across shell, Jobs, job workspace, Dashboard/Analytics, Career source/CV variants and existing AI entry points. Retain Phase 3 information architecture, current32-route acceptance and all57 PRES contracts. Large remaining page migrations stay in the Phase7 handoff.
Authoritative inherited evidence is P5-15-06: backend1,033/frontend498/ordinary browser148/diagnostics3; scoped implemented-scope CONDITIONAL GO, full original scope NOT COMPLETE, production NO-GO. This source review is separate from fresh execution: the P6-05 manifest must record the current build/source, actual native results and count deltas. Listing an existing test is a coverage map, not a fresh PASS.
Workflow assessment and representative browser map
| Area and reviewed behavior | Actual source observation | Executable representative journey / preservation |
|---|---|---|
| Navigation, hierarchy, rail/mobile, heading focus | AppShell and App retain grouped Jobs/Career/Insights/Settings ownership and admin-only entries. No evidence supports a new IA. Existing public/auth/alias routes remain | shell-readiness: grouped shell/rail/mobile, every existing utility command, dirty editor Cancel, route focus and theme/locale. analytics-auth-repair: complete internal query/fragment return, expiry versus logout, denied/tampered targets. E02–E09 |
| Commands and keyboard | QuickCommandDialog retains six static commands and bounded job/company results,250ms search, abort on close/query change, Retry, IME-safe arrows/Home/End/Enter. Add opens reviewed form, company goes to existing edit query. Result count/selection uses existing polite region | shell-readiness: no-write command activation, keyboard/IME/error/retry/stale disposal; responsive audit: native focus/empty/Escape/workflow dialog. E07/E09/J03/J08. Spoken names/announcements remain manual |
| Table/Board, search/filter/saved view/sort/page | JobTable owns committed query and Table paging, jobsQuery normalizes shared filter semantics, KanbanBoard consumes full matching query. Table read is disabled while Board is active; view links clone existing query/hash. Density changes spacing, not feature visibility | board-presentation: every-page Table/Board ID parity, filtered movement/reload, search/custom-status/deletion, Back/Forward, alias and no duplicate active-view read. table-density: real sort/page/select/delete/Trash restore and phone actions. J05–J07/S03 |
| Frequent entry and return | Table and Board history store originating row/card ID; explicit workspace Back uses local from or Jobs and sends numeric focus. No mounted background list assumption. Full job page is existing complete entry; P5-05 preview host is deferred |
table-density, board-presentation and redesign-preservation: browser/explicit Back, retained query/view/page/focus, owned/foreign paths. J05/J07/W01 |
| Job details, sections, application status, timeline and artifacts | ApplicationWorkspacePage owns seven approved sections and Application CV/Letter/Answers/Submission, Timeline Activity/Correspondence. URL updates clone query/state. Letter/answers dirty blockers cover route/query navigation; Cancel preserves draft. Frozen packages and live artifacts remain distinct | job-overview, job-sections, redesign-preservation: canonical/legacy sections, independent partial failures, dirty Cancel/Discard, native capture/source mutation/archive ZIP. W01–W12; P2-D01 ordinary passing |
| Career source and CV override clarity | CvBuilderEditor labels selected CV scope and source navigation, keeps field inheritance/reset, long-tail/custom sections, one save/undo/history owner and editor/preview state. Career canonical editing is a different owner and remains Phase7 migration | cv-section-scope: source/override/reset/inherited updates, canonical/sibling readback, ordering/custom sections. responsive audit: existing /career?section=profile and Back. C01–C10/W05/E09 |
| CV save/history/template/preview/export | Settings history uses current source; frozen packages separately capture content. Preview uses original physical pagination and white paper inside themed chrome. Conflict retains/downloads draft; reload is reviewed, not silent overwrite | cv-readiness: revision collision/restore/conflict/download recovery and native original rendering corpus. cv-preview, cv-settings, cv-responsive: retained scroll/draft/pane/settings ownership. C05–C12 |
| Dashboard/Analytics scanability and provenance | DashboardView owns both report modes: independent summary/trend loaders, exact source/sample labels and values-table alternatives. Analytics6/12/24months is URL-owned; five Dashboard visibility flags are owner-local and do not hide Analytics. No fabricated metric or Phase8 widget system | dashboard-presentation, analytics-presentation: seeded exact values, period/history/query/readout/drill-downs, independent empty/error states, visibility reload/account separation. responsive audit: custom-status targets. S01/S02/J05/J09 |
| Existing AI tools | Context, manual invocation, generation versus review versus save/send and denied/unavailable behavior retain domain owners. Differences are identified in AI review; future P5-13 follows established presentation and authoritative validation without activation | Frontend/domain/HTTP tests mapped in AI review; no live model qualification. W03/W05/W06/W09/C03/C11/S04/E09 |
This map requires real loaded headings/fields/actions and request/readback assertions in the fresh suite. Static screenshots alone cannot establish navigation/dirty/retry/export semantics. Provider-backed discovery/mail/calendar and physical/AT acceptance stay explicitly bounded.
Specific friction and bounded corrections
| Finding and reproduction | Expected user outcome / bounded change | Evidence and limitation |
|---|---|---|
UX-01 company failed-save feedback: open Companies through row or command; edit contact/name; fail PUT /companies/{id}; submit from keyboard. Historical transient toast was outside modal's accessible subtree while draft remained |
A persistent error lives inside the same labelled dialog; Save retries the retained draft; successful save clears error/closes and persists. Reuse MUI Alert/safe API error helper; no data/save/protocol change | P6-01 source correction and focused unit evidence; two new EN/NB native cases in responsive audit require dialog alert, unchanged failed server state, retry200 and reload. Scoped P4-02-D02 feedback closure only; complete Company migration/reader acceptance remains open. J08/E08 |
UX-02 language save failure scope: change Settings language while PUT /auth/preferences/language fails. Local UI/localStorage intentionally change immediately; historical caller suppressed failure, leaving account preference stale without notice |
Existing toast infrastructure explains this device changed but account save failed, and offers deliberate Retry in the selected locale. Preserve immediate local change and original backend endpoint; no blind retry/revert/new save framework | P6-01, i18n provider unit evidence and two EN/NB native cases in responsive audit: local scope, visible error, retry204, reload retained. Does not diagnose RD11 language500 or RD12 notification locking. E08/S03 |
| UX-03 Settings panel associations: desktop tabs/narrow section selector must lead to one named active panel. Historical TabPanel has no tab/panel semantics | Bounded tab IDs/aria-controls/panel name and narrow labelled selector associations; preserve tab/draft lifetime and independent saves | P6-03 owns this cross-application semantic correction and its four theme/locale native cases. No repeated Settings visual migration. S03/E08 |
| UX-04 differing AI pending/retry/stale presentation | Retain explicit source/destination/review/manual workflow; document differences and qualify delayed responses before any shared extraction | AI review: source-level concern, not a manufactured native failure. No unqualified P5-13 UI or global AI framework |
| UX-05 repeated reads and large-result costs | Measure before proposing compatible request/memoisation/virtualisation changes; preserve complete results, error/draft behavior and owner boundaries | P6-04. Source candidates are not runtime timing or root-cause claims |
No major section is moved, new route fabricated, document renderer changed, save semantics merged or remaining Phase7 page migrated by this checkpoint. Existing intentional variation includes data tables versus readable editor text, document paper versus app theme, shell768 versus CV900 boundary, and review/apply versus explicit save/send.
Execution and outcome
Source audit and executable workflow mapping are recorded above. Fresh native/automated results and current commit/push identity are supplied by the P6-05 manifest and chronological ledger; a pending run must not be represented as passed. Company/language corrections require their actual focused and native results before scoped GO. Any final unexpected failure remains in the evidence with its disposition.
Human spoken-name/announcement/reading-order testing, physical touch/software keyboard/mobile AT, production provider/configuration/output and full-original-group acceptance remain NOT VERIFIED where absent. Keep RD01–RD28, P5-13/P5-05/followMode deferrals and Production NO-GO. The Phase7 handoff specifies remaining migrations; none starts here.