* feat(mod queue): transfer posts across boards
* fix(mod queue): polish transfer modal and reason
* fix(mod queue): recover abandoned transfer challenges
* fix(mod queue): address transfer review feedback
* fix(mod queue): hide transfer for unavailable posts
* fix(mod queue): prevent repeat transfer submit
* fix(mod queue): sync transfer state with queue actions
* fix(mod queue): omit transfer temp index
* fix(mod queue): harden transfer failure states
* fix(mod queue): keep hidden transfer lock
* fix(mod queue): release hidden transfer lock
Merge the architecture audit refactors and follow-up UX fixes: remove release notes from generated LLM context, keep author edit controls delete-only, stabilize board refresh rendering, and address review feedback for role loading, refresh holds, moderation actions, and P2P stats polling.
* fix(thread update): refresh stale reply caches
Evict the current thread comment and known reply-page cache entries before manual refresh so stale local data does not keep replies hidden. Also defer broader multiboard suggestion feeds until the current /all time window is exhausted to reduce renderer pressure.
* fix(thread update): evict alternate reply page caches
* fix(board): hide stale time-window suggestions
Bump react and react-dom 19.1.2 -> 19.2.7 and @types/react and
@types/react-dom from v18 to v19. Keeps babel-plugin-react-compiler,
which is a separate build-time tool, not part of the React 19 runtime.
The @types v19 upgrade surfaced 21 type-only errors, all fixed without
runtime behavior changes:
- useRef<T>() now requires an explicit argument: pass undefined
- DOM element refs are RefObject<T | null>: widen PostFormFields and
AdvancedSettings ref prop types accordingly
- retype reply-modal onInput handler to FormEvent + currentTarget
- add a null guard for the boards-bar search input
- update test mocks for stricter cloneElement/forwardRef typings
Verified: type-check, lint, 1051 tests, and build pass; react-doctor
score unchanged at 54; browser smoke across Chromium/Firefox/WebKit
plus mobile viewport clean.
Accessibility/semantics pass aligned with React Doctor: role-based spans/divs become real buttons, role=status becomes <output>, modals use native <dialog>, author/peer flags render as <img>, and embed/challenge iframes are sandboxed. Includes review follow-ups: correct button chrome/centering/themed dialog colors and focus rings, the missing aria-label i18n keys (all languages), the Yandex image-search URL, clearer .bso setup steps, a keyboard-accessible image-search dropdown, and removal of the post-edit ('comment edited') display (mod edits unchanged).
* fix(thread-page): make thread auto updates opt-in
Wire `Auto` and `Update` to the same manual refresh path and cover the thread flow with an e2e harness.
* fix(thread-page): address PR review findings
* Update README.md
* fix(post): stop thread navigation from forcing OP alignment
Route-driven thread opens now use the normal top-of-page behavior, while explicit OP permalink intents carry a scrollThreadContainerCid state and resolve against the visible thread container only. The old spacer injection path is removed.
* fix(post): address PR review follow-ups
Core browsing flows around board controls, pagination, and thread pages were still largely unmeasured in the honest whole-repo report. That left route mismatches, cached-thread hydration, board action wiring, and mod-queue control regressions underprotected in CI.
bitsocialhq/pkc-react-hooks is a fork of plebbit-react-hooks that we're maintaining temporarily as an attempt to modernize the original repository using AI tools, possibly merging changes back into plebbit-react-hooks, which should also be rebranded to pkc-react-hooks eventually, under the org pkcprotocol.
Defer useReplies to hover-only in CatalogPost. Memo CatalogRow and Post. Remove useWindowWidth and autoUpdate from CatalogPost. Replace display:none with opacity for images. Add width/height to img tags in catalog-row and comment-media. Use Virtuoso for all rendering paths (infinite, finite, pagination). Optimize filteredComments with Set lookup. Add Vite manual chunks for markdown, virtuoso, floating-ui.
Removes avatar-settings component, avatar-visibility store, and all
avatar rendering from posts. Strips avatar from account JSON, renames
NFT gateway label to media IPFS gateway, removes Polygon RPC and
hide-avatars toggle. Deletes 6 avatar-related translation keys.
Set repliesPerPage to 500 to avoid Virtuoso pagination sort drift. Add useProgressiveRender with startTransition batching and CSS content-visibility for long reply lists.