Pairing decrypts a Chromium browser's cookie store (PBKDF2-HMAC-SHA1 against its Keychain key, then AES-128-CBC) and injects the result into WKHTTPCookieStore. Only the configured apps' hosts and their sign-in hosts survive the filter. Browsers are offered most-recently-used first, since the first entry becomes the default and someone with four Chromium browsers installed wants the one they actually browse in. WKWebView defines window.Notification but it does nothing: constructing one throws no error and shows no banner, so a page believes it notified you. Measured on the machine as `api=function shim=no` before the shim was made unconditional; `from page: Odoo - Test notification -> raised` after. Anything on a page can be right-clicked away. The rule is re-asserted on every navigation, because the injected script only carries a snapshot from when the view was built and a selector added since would otherwise come back on reload. The top bar is gone. Navigation lives beside the cog, the nav carries the traffic lights, and two-finger swipe goes back and forward. The seed is now the real app list, scoped to exact hosts so a Drive link inside Gmail switches rather than being swallowed.
42 lines
1.8 KiB
XML
42 lines
1.8 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="1024" height="1024">
|
|
<!--
|
|
The app drawn as itself: a dark window, a sky rail down the left with one
|
|
active dot, and the tool it is showing beside it. Legible at 32px, where
|
|
all that survives is a dark tile with a blue edge and a bright mark.
|
|
-->
|
|
<defs>
|
|
<linearGradient id="tile" x1="0" y1="0" x2="0" y2="1">
|
|
<stop offset="0%" stop-color="#1e293b"/>
|
|
<stop offset="100%" stop-color="#0b1220"/>
|
|
</linearGradient>
|
|
<linearGradient id="rail" x1="0" y1="0" x2="0" y2="1">
|
|
<stop offset="0%" stop-color="#38bdf8"/>
|
|
<stop offset="100%" stop-color="#0284c7"/>
|
|
</linearGradient>
|
|
<clipPath id="tileClip">
|
|
<rect x="64" y="64" width="896" height="896" rx="205"/>
|
|
</clipPath>
|
|
</defs>
|
|
|
|
<rect x="64" y="64" width="896" height="896" rx="205" fill="url(#tile)"/>
|
|
|
|
<g clip-path="url(#tileClip)">
|
|
<!-- The nav, running the full height the way it does in the window. -->
|
|
<rect x="64" y="64" width="236" height="896" fill="url(#rail)"/>
|
|
|
|
<!-- Three apps; the lit one is the app you are in. -->
|
|
<circle cx="182" cy="330" r="37" fill="#ffffff"/>
|
|
<circle cx="182" cy="512" r="30" fill="#ffffff" opacity="0.5"/>
|
|
<circle cx="182" cy="694" r="30" fill="#ffffff" opacity="0.5"/>
|
|
|
|
<!-- The tool on the right, in the same rhythm as the dots. -->
|
|
<rect x="392" y="304" width="430" height="52" rx="26" fill="#94a3b8"/>
|
|
<rect x="392" y="486" width="344" height="52" rx="26" fill="#64748b"/>
|
|
<rect x="392" y="668" width="268" height="52" rx="26" fill="#475569"/>
|
|
</g>
|
|
|
|
<!-- A hairline lift, so the tile does not sit flat on a dark background. -->
|
|
<rect x="64" y="64" width="896" height="896" rx="205" fill="none"
|
|
stroke="#ffffff" stroke-opacity="0.10" stroke-width="3"/>
|
|
</svg>
|