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.
Keep one-shot post and reply submissions guarded until the effect-driven publish settles, so duplicate clicks reuse the in-flight request instead of creating a second signed publish. Adds regression tests for post and reply duplicate-submit paths.
Keep the mod queue empty state visible while background P2P loading continues, reduce footer-driven rerenders, and preserve footer errors when retained queue history rows are rendered.
The release preflight ran yarn doctor --diff against the previous tag as a
hard gate, but many error-level diagnostics flag intentional patterns rather
than bugs (e.g. resetting preview state when the reply modal closes, mirroring
long-accepted code). Mark the step continue-on-error so it still runs and posts
annotations without blocking a release.
pkc-js's publishChallengeAnswers destructures { challengeAnswers } from its
argument, so passing a bare string[] left challengeAnswers undefined and
silently broke challenge submission (i.e. posting). Wrap answers in the object
form via a publishPublicationChallengeAnswers helper with error logging, and
align the ChallengePublication type with the real runtime signature.
The mac DMGs are now signed with a Developer ID and notarized, so Gatekeeper
no longer shows the "app is damaged" error and the xattr quarantine command
is no longer needed.
* feat(electron): sign and notarize mac release builds when Apple credentials are present
* fix(electron): work around codesign PID parsing for digit-leading app name in @electron/notarize
codesign interprets a bare '5chan.app' argument as process ID 5, so
@electron/notarize 2.5.0's pre-upload signature check fails with 'No such
process'. Backport the './' basename prefix from electron/notarize#245 as
a yarn patch until forge depends on notarize >= 3.x.
* docs(agent-playbooks): record codesign PID parsing surprise for digit-leading app name
* fix(ci): keep mac signing env consistent with certificate availability
Prefer the best available YouTube thumbnail, fall back cleanly when high-resolution images are unavailable, and keep the React Doctor PR gate scoped to newly introduced issues.