2.5 KiB
2.5 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec |
|---|---|---|---|---|---|---|
| 01-rendering-engine-marker | Classify the rendering engine | done | 1 | plan.md | ../../specs/ui/requirements/webkit-task-dialog-rendering.md |
Task 01: Classify the Rendering Engine
Acceptance
- Safari, WKWebView/WebKitGTK-shaped user agents, iOS branded browsers, and iPadOS desktop-mode
Safari UAs classify as
webkit, while Blink, WebView2, Firefox, unknown user agents, and iPadOS desktop-mode Chrome/Edge UAs carrying Blink tokens classify asother. - The document root receives
data-rendering-engine="webkit|other"before boot-payload loading and React rendering, without persistence or a user-visible setting. - Classification failure falls back to
otherand does not block application startup.
TDD sequence
- Add table-driven classifier and marker-helper tests, then run the focused Vitest command and confirm RED because the helper does not exist.
- Implement the smallest pure classifier and marker helper that satisfies the cases.
- Call the marker helper from
src/main.tsxbeforeloadBootPayload(). - Rerun the focused test and refactor only if naming or compatibility-token handling is unclear.
Files likely touched
apps/web/lib/browser/rendering-engine.tsapps/web/lib/browser/rendering-engine.test.tsapps/web/src/main.tsxdocs/plans/webkit-task-dialog-rendering/plan.mddocs/plans/webkit-task-dialog-rendering/task-01-rendering-engine-marker.md
Verification
Run from apps/web:
pnpm test -- lib/browser/rendering-engine.test.ts
Dependencies
None.
Parallelism
sequential. Task 02 consumes the exact root marker contract established here.
Inputs
- Classification and failure-mode requirements in
docs/specs/ui/requirements/webkit-task-dialog-rendering.md. - Existing early application bootstrap in
apps/web/src/main.tsx. - Existing navigator-mocking pattern in
apps/web/lib/keyboard/utils.test.ts. - Tauri's current macOS/Linux system-WebView boundary and Chromium/WebView2 exclusion requirement.
Risks
- Desktop Chromium includes the
AppleWebKitcompatibility token; never use that token alone. - iOS Chrome/Edge/Firefox brand tokens do not imply Blink/Gecko on iOS and must remain WebKit.
- Keep the helper DOM-injectable so unit tests do not need module-level global mutation.
Output contract
Report the observed RED failure, classifier cases added, files changed, final focused test result, remaining UA-classification risks, and updated task/plan statuses in this conversation.