64 lines
3.2 KiB
Markdown
64 lines
3.2 KiB
Markdown
---
|
|
status: shipped
|
|
created: 2026-08-01
|
|
owner: product
|
|
---
|
|
|
|
# WebKit Task Dialog Rendering
|
|
|
|
## Why
|
|
|
|
People opening the Create Task dialog in Safari or a WebKit-backed Tauri app see softer,
|
|
lower-clarity text and controls than people opening the same Kandev surface in Chromium. The
|
|
dialog must remain visually sharp without removing the existing Chromium motion that already
|
|
renders correctly.
|
|
|
|
## What
|
|
|
|
- Kandev identifies actual WebKit runtimes before the application renders and exposes that result
|
|
as a non-persistent document rendering-engine marker.
|
|
- The Create Task dialog uses opacity-only open and close motion in WebKit; the animation does not
|
|
apply a transform to the text-bearing dialog surface.
|
|
- The Create Task dialog is centered without a transform in WebKit and remains above its overlay.
|
|
- Safari, macOS WKWebView, WebKitGTK, and browsers constrained to WebKit on iOS receive the WebKit
|
|
rendering path.
|
|
- Desktop Chromium, Android Chromium, Edge/WebView2, Firefox, and other non-WebKit engines retain
|
|
the existing Create Task dialog animation and positioning.
|
|
- The WebKit rendering path preserves the existing task-creation form, focus behavior, dismissal,
|
|
keyboard behavior, dimensions, internal scrolling, responsive full-height phone presentation,
|
|
and safe-area behavior.
|
|
- The Create Task dialog omits the generic top-right close control in every browser; the footer
|
|
Cancel action remains available for dismissal.
|
|
- The dialog does not reserve top padding for the removed control while retaining its side and
|
|
bottom spacing.
|
|
- Rendering-engine classification is runtime-only and does not add a user setting or persisted
|
|
preference.
|
|
|
|
## Failure modes
|
|
|
|
- If the runtime cannot be classified as WebKit, Kandev uses the existing default dialog rendering
|
|
rather than applying the workaround broadly.
|
|
- User-agent compatibility tokens such as desktop Chromium's `AppleWebKit` token must not classify
|
|
Blink as WebKit. iOS browser brands remain classified as WebKit because their underlying engine
|
|
is WebKit.
|
|
|
|
## Scenarios
|
|
|
|
- **GIVEN** Kandev is running in Safari, WKWebView, or WebKitGTK, **WHEN** the user opens Create
|
|
Task, **THEN** the dialog enters with opacity-only motion, has no transform on its text-bearing
|
|
surface, remains centered, and renders above the overlay.
|
|
- **GIVEN** Kandev is running in desktop Chrome or Edge/WebView2, **WHEN** the user opens Create
|
|
Task, **THEN** the existing scale-and-fade motion and centered geometry remain unchanged.
|
|
- **GIVEN** Kandev is running in an iOS browser, **WHEN** the user opens Create Task, **THEN** the
|
|
WebKit rendering path is selected even when the browser has a non-Safari brand.
|
|
- **GIVEN** Create Task is open in a narrow WebKit viewport, **WHEN** the user edits or scrolls the
|
|
form, **THEN** the dialog remains full-height, contained within the viewport, free of document
|
|
horizontal overflow, and exposes the same task-creation controls.
|
|
|
|
## Out of scope
|
|
|
|
- Changing dialog motion in Chromium or Firefox.
|
|
- Applying the workaround to dialogs other than Create Task without a separate reproduced need.
|
|
- Replacing Tauri's system WebView, changing desktop zoom behavior, or modifying bundled fonts.
|
|
- Adding browser-specific font-smoothing, forced GPU compositing, or `will-change` workarounds.
|