Commit graph

6 commits

Author SHA1 Message Date
e9000107f6 staff-tags: fix member list tags never landing, bump to 1.0.8
UserRow is React.memo()-wrapped, so every row shares one inner render
function. The old afterJSX+afterRendered approach registered a new
self-unpatching hook on that shared function per row; since every
currently-stacked hook fires on any row's actual render (not just its
own), pairing broke almost immediately and hooks piled up unbounded,
eventually breaking member list rendering outright (confirmed live).
Replaced with a single persistent after() patch on the shared inner
render function, reading props fresh from args[0] each call - same
pattern chat.ts already uses successfully for getTagProperties.
2026-08-09 00:25:29 -04:00
d5e2c25e15 staff-tags: fix afterRendered crash on memo-wrapped components, bump to 1.0.7
Confirmed live: opening the member list crashed with "TypeError: target is
not callable" inside React's renderWithHooks. afterRendered patched
element.type directly, which works for plain function components but not
for UserRow (React.memo()-wrapped): patching the non-callable memo wrapper
object replaces it with a proxy whose *own* stub is callable, which makes
`typeof element.type === 'function'` true even though the real value is a
memo object - React's reconciler checks that before checking $$typeof, so it
takes the plain-function-component path and calls the proxy directly, whose
apply trap forwards to Reflect.apply(realMemoWrapper, ...) and throws, since
the real wrapper was never callable.

Fix: detect a memo-wrapped type and patch its inner .type (the actual render
function memo hides) instead of the wrapper itself - genuinely callable, and
leaves the wrapper's own shape untouched so React's type detection stays
correct. Shared in lib/afterRendered.ts, so it fixes UserRow now and any
future memo-wrapped target automatically.
2026-08-08 22:51:28 -04:00
980f1b33eb Bump versions for the author-name change (staff-tags 1.0.6, next-eval-checks 1.0.5) 2026-08-08 22:38:15 -04:00
ce57431385 Show author as Rosie instead of everestmcarthur 2026-08-08 22:37:41 -04:00
0439a6a67b staff-tags: fix UserRow/HeaderName lookups, bump to 1.0.5
Two of the three previously-broken module lookups now have well-evidenced
fixes (from live sweeps run during an earlier debugging session that were
never actually applied to the code):

- details.tsx: UserRow is React.memo()-wrapped, so a plain withName('UserRow')
  can never match it (memo wrapper objects have no .name). Added
  withMemoDefaultName (lib/filters.ts), a custom filter checking the wrapper's
  inner .type.name instead, matching on the full module namespace so the
  callback gets the wrapper itself - the exact reference afterJSX needs.

- name.tsx: HeaderName doesn't exist under that name anymore; ChannelHeader
  is the confirmed replacement (a plain, non-memo function, found via a
  name-sweep).

DisplayName (the message-author-name row) remains unresolved - never found
under any name across two live sweep sessions, likely inlined into a bigger
component now. Left as a documented, still-guarded no-op rather than guessed
at.
2026-08-08 20:56:46 -04:00
869556245c Import revenge-next-plugs working tree
Includes the already-applied package.json fix (build/build:dev/generate-index/serve
now invoke @revenge-mod/plugin-cli via bun directly, bypassing its broken
node-shebang delegation that crashed both bun run build and Gradle's
packageAllPlugins).
2026-08-08 18:42:50 -04:00