Files
zeekay 5f73aae87d fix: restore Hanzo's identity on the converged tree
The rebase carried upstream's tree wholesale, which put back the artwork, the
outbound account-linking call and the licence text, and dropped the design
tokens and the public landing page. It also left the codemod's path rules
behind its content rules, so 2,653 frontend imports resolved to nothing.

LICENCE. Upstream's split licence overwrote ours and the codemod then renamed
the company inside it, so it read "Insights Inc." while carrying their terms.
It now carries the MIT Expat body with our notice above theirs -- MIT's one
condition is that their notice travels with the code, and rewriting it asserts
our copyright over their work. The ee/ preamble is dropped because ee/ does not
exist here. bin/debrand refuses to rewrite any LICENSE/NOTICE/COPYING, and
--check fails if their notice ever goes missing, so no future rule can launder
it silently.

PATHS AND CONTENT MUST AGREE. An import specifier is a path, so a content rule
that rewrites one needs a path rule that moves the other. Four had drifted:
`Lemon<Component>` (2,653 sites), `hogFunction`, a whole path component named
`hog`, and `hog-function-utils`. The scope rule needed the same fix in reverse
-- `@posthog/` only matched with its slash, so `path.resolve(dir, '@posthog')`
fell through to `@insights`, a scope we do not publish under, silently
resolving the storybook alias, the docker context and the brand asset copy to
nothing. Frontend imports that resolve to nothing: 2,886 -> 61, and what is
left is codegen output plus references into dropped products.

`lemon_squeezy` is a payments vendor, not our design system, so the Lemon rule
is anchored on a following capital. Lowercase `lemonBannerLogic` is left alone
because content leaves it alone.

ARTWORK. mascots.tsx returns null for all 15 exports -- the ~45 call sites
place a mascot beside real content, so a null component removes the drawing and
keeps the layout, which deleting the module would not. MascotMode was rendering
globally, on every avatar, in the toolbar and behind a settings toggle; all four
are gone. The confetti kept its trigger and lost its particles. The 404 and
access-denied illustrations are blanked. products/games was two mascot games
where the artwork was the whole product, so it is dropped rather than debranded.
No hedgehog artwork is left in the tree.

SECURITY. The account-linking view POSTed user email and name to a third-party
host we do not own, minted a JWT against it and redirected there. It is gone,
with its route and the link into it. PERMITTED_FORUM_DOMAINS is empty and typed,
so the gate that reads it as an allowlist fails closed.

DESIGN. --opacity-disabled is 0.8 in dark against 0.65 in light: dimming is
subtractive, so the ratio that reads as "unavailable" on white reads as "gone"
on black. Two sticky bars painted the app ground instead of the surface they
cover, which in dark mode is a black stripe across a raised panel. Measured in
headless Chromium against the compiled stylesheet, both themes: every sticky bar
now equals its surface, the ground ladder is #000 -> #212121 -> #262626 ->
#2e2e2e, the Notebook canvas still drops to the ground, the exporter fallback is
unchanged, and all 34 product accent colours survive with their values.

Anonymous / serves the landing page again instead of bouncing to SSO.
2026-08-01 18:21:30 -07:00

68 B
1x1px