Add CrawlProof ad units - #2
Conversation
Every placement is now text_link — a fluid 40px bar that carries its own "Sponsored" mark — and the square formats are gone entirely. The reason is not taste: every banner creative hard-codes its format's pixel width, so a narrower column CROPS it rather than reflowing, which makes a 300x250 in a content column broken on a phone rather than merely ugly. The obvious alternative — render a desktop banner and a mobile one and hide whichever does not fit — is wrong and expensive: both fill, and filling is what meters the impression, so the hidden one burns an impression nobody ever saw. A server cannot measure the viewport, so it picks one format that works at every width. banner_728x90 stays available for a board that knows its readers are on desktop, but it is never the default. Placements sit at the EDGES: under the forum list, under the topic list, under the last post. The one position inside the content — between posts — is off unless an admin asks for it, because it interrupts the only thing anyone came for. Header and footer bars are available and off. The unit itself has no chrome: no border, no card, no heading of its own, and a max width matched to the content column, so it reads as a footnote. Not merging PR #2. It stacks all four sizes at the bottom of <body> and loads ad.js from crawlproof.com — which this board's CSP (script-src 'self', no unsafe-inline) blocks outright, and ad.js renders its creative into a srcdoc iframe that would inherit that policy and show nothing, silently. The bundled plugin uses the cross-origin frame endpoint instead, which costs one frame-src entry and nothing else. 105 tests, 0 type errors.
|
Superseded — the slot is live on tsbb.dev, wired through the bundled Two reasons this particular patch could not be merged as-is: 1. The plugin uses 2. All four sizes stacked at the end of The plugin serves Slot |
PR #2 is merged and stays in the history; this takes out the part of it that could never have worked here. The four stacked units and the ad.js tag it added are inert on this board: the CSP is script-src 'self' with no 'unsafe-inline', so the script is blocked, and ad.js is what fills those divs — leaving four empty divs at the end of every page and a blocked request in every console. Two of the formats are also the fixed-width squares that crop in a content column. Ads are unaffected: they come from the bundled plugin over the cross-origin frame endpoint, which needs no script and costs one frame-src entry. This restores the test that caught it, which is the point of having it — a future PR adding ad.js will fail the same way rather than quietly shipping a page with dead markup and no ads. 111 tests, 0 type errors.
This PR adds the CrawlProof ad units so this site can show network ads and earn crypto for clicks.
178d4e1e-7970-4d25-ae84-ab1dd4327b23banner_300x250,banner_728x90,banner_320x50,text_linkpackages/ui/src/components/layout.tsbefore</body>. Move or delete any you don't want — empty units simply don't render.Each unit renders inside a sandboxed iframe and never blocks page load. Manage the slot at https://crawlproof.com/ads/slots