Document D4a (iframe loads labeled main_frame), the --debug/--logs pair, and today's corrections
New Safari-Quirks entry D4a: webRequest reports every frame's document
load as main_frame with a raw 64-bit frameId, which made uBlock's strict
blocker hijack the tab over ad-iframe cookie syncs, plus the WebKit
weak-wrapper lesson that forced the fix onto the event prototype. D4
gains the main-frame-vs-subresource split with the live tabs-API
strict-blocking evidence. B4's Handling paragraph is brought back in
line with the source (the empty getURL arg IS lowercased) and gains the
port path. C3 and both Tampermonkey rows drop the sandbox-setter
misdiagnosis, a Firefox-only code path, and name the real remaining
suspects. The uBlock row records the live verifications and explains
the serverlist.txt console noise. CLI-Reference, Testing-and-Debugging
and Runtime-Shim document --debug conversions and the --logs reader.
Record the headless probe method that verified 1.11.7
Document the two Safari behaviors behind a login that never persisted
E13a: no webNavigation event reaches a listener the background added after it
evaluated, so the auth tab's redirect went unseen and every silent re-auth timed
out. E13b: neither minimized nor off-screen hides a window, so the flow keeps a
background tab. E14a: the owner's storage.session dies with its page, hence the
mirror. Plus the __c2sAuthLog record and how to read it from outside the browser.
Document the signing fixes in 1.11.4
Why a profile alone no longer nominates a team, the ad-hoc retry for a detected
team that cannot sign, and where xcodebuild actually writes its diagnostics.
Document the bridge transports, sender rules and world:"MAIN" fallback
Covers what 1.11.0 changed and why each piece is shaped the way it is: the two
transports into a converted background, the origin and tab a bridged sender
carries, the script-tag fallback for a world:"MAIN" entry Safari skipped, the
scoping rule on strict_min_version, and Safari's "Tab not found." teardown.
Adds Safari Quirks E9 and E10, updates E1, records the diagnostics in Testing
and Debugging, and moves Claude in Chrome to a verified login.
Record the four Honey fixes and how they were found
Honey converts and works now: popup renders, session is recognized. Four
shim bugs came out of it, none of them Honey-specific.
- B4 is new: Safari reports the UUID in different cases per API, and getURL
can only return one of them. Says why the fix moved onto the sender.
- C6 is new: no tab or window events reach a converted background page, so
an extension caching the selected tab from them stays blind, and the shim
now polls for it.
- B2 and F3 were wrong about ?tabId. It is our own injection, not Safari's,
and it no longer goes into action popups.
- Runtime-Shim's getURL and onMessage rows described the old lowercasing.
Also writes down the storage.local instrumentation used throughout, since
the background console was never reachable in that session and every
conclusion had to come from a log the popup could read.
Write down what made the Tampermonkey debugging expensive
Adds a Testing and Debugging section aimed at the cost of a live iteration, since
each one spends a person's convert, install, relaunch, permission grant and
copy-paste: write the end-to-end test from real captured shapes before the first
reinstall, never swallow errors or gate a diagnostic on the condition under test,
make diagnostics readable from the console the tester is actually in, verify the
artifact before theorising, keep viaduct's own channels off runtime.sendMessage,
treat a backfilled event as inert until proven otherwise, and label how well a
finding is evidenced before writing it down as fact.
Adds Safari Quirks A8 for the trap underneath most of it: host access defaults to
Ask and every reinstall resets it, which silences content scripts and tab and
navigation events together while leaving extension pages working, so a negative
result from an ungranted build looks exactly like a platform limitation.
Humanize wiki prose: remove em/en dashes and curly quotes
Replace em/en dashes with commas, colons, or sentence breaks per context,
and normalize curly quotes to straight. Dashes inside code blocks, diagrams,
and range expressions are preserved.
Add Viaduct CLI wiki
Contributor-grade documentation for viaduct-cli, verified against src/ and
grounded in the git history. 14 content pages plus Home, sidebar, and footer:
architecture, conversion pipeline, CLI reference, input handling, manifest
transform, analyzer, runtime shim, OAuth bridge, build/install, Safari quirks,
testing/debugging, limitations/FAQ, and a commit-grounded release history.