feat(banner): per-campaign colour overrides and urgent alerts #182
Reference in New Issue
Block a user
Delete Branch "feature/banner-colors-urgent"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two banner additions for non-default campaigns.
Colour override (per campaign)
Background / text / link, in two sets — one for every theme, one for the dark theme only. The wire carries six trailing FlatBuffers strings on
BannerCampaign(backward-compatible); the client resolves the cascade (dark ← dark ?? all, light ← all) against the rendered theme and derives the strip border from the background in JS (no CSScolor-mix, for the old Android WebView floor). AdBanner applies them as inline CSS vars scoped to the strip, so nothing leaks past it.Urgent (per campaign)
Shown to everyone — bypassing paid / hint-wallet /
no_banner— and, while live, the only thing the strip shows (ordinary campaigns + the house default step aside). Resolved entirely server-side (computeActiveSetpreempt +bannerForeligibility skip); no wire field. No instant broadcast (per-user notify) — it lands on each viewer's nextprofile.get.Admin console (
/_gm/banners)Native colour pickers + a live light/dark preview of the strip, and an urgent toggle. The default campaign stays plain (no colours, never urgent) — enforced by the service and a DB CHECK.
Safety
Migration 00009 is additive (nullable colour columns +
bool DEFAULT false+ all-or-nothing / hex / default-plain CHECKs) — expand-contract, image-rollback-safe.Tests
ads unit (urgent preempt + colour validation), codec + resolver unit, gateway transcode, integration (colour round-trip + urgent bypass vs real Postgres). Docs: ARCHITECTURE §10, UI_DESIGN, FUNCTIONAL (+ru).
Review focus: visual sign-off of the strip colours (light + dark) and the console preview on the test contour once it deploys.