Re-translates two i18next keys whose English values changed from
"subplebbit" to "community" in PR #816:
- subplebbit_offline_info: "The community might be offline and
publishing might fail."
- posts_last_synced_info: "Posts last synced {{time}}, the
community might be offline and publishing might fail."
Each non-English locale now uses the standard local term for an
online community (communauté, Community, comunidad, コミュニティ,
社区, etc.). Key names themselves are unchanged (the
subplebbit_* prefix stays — it's an internal i18next key).
Generated by spawning translator subagents in parallel via the
translate skill.
react-doctor.config.json takes precedence and already contains the
`diff: false` value plus ignore patterns for test files. Keeping the
shadow block in package.json was dead config that would silently
ignore any future edits a maintainer made there.
Add react-doctor 0.0.31 and knip 6.1.0 as dev dependencies with
matching scripts (doctor, doctor:score, doctor:verbose, knip,
knip:full). Port a knip config from 5chan with seedit-shaped
paths.
Update AGENTS.md task router and verification rules so that
React UI logic changes run yarn doctor and dependency changes
run yarn knip.
When use-default-subscriptions resolves to [] (the expected case
while seedit-default-subscriptions.json is empty or 404s), the
auto-subscribe effect was early-returning before removing the
account from the checking set. That kept isCheckingSubscriptions
true forever and prevented the "no subscriptions" empty state
from ever rendering on home.
Fix by ensuring removeCheckingAccount is always called once the
auto-subscribe pass completes, even when there is nothing to
auto-subscribe to.
Rename the hook file and exports from use-default-subplebbits to
use-default-subscriptions. Switch the fetch URL from
plebbit/lists default-multisub.json to bitsocialnet/lists
seedit-default-subscriptions.json.
A 404 from the new (not-yet-populated) list gracefully resolves
to empty defaults so new users see an empty subscription feed
(like a fresh Reddit account). The list will be populated later.
Port release-description skill across .claude / .cursor / .codex.
Align playbook content, skills, agents, and hooks with seedit
terminology (community, not directory or board).
Add AGENTS.md rules picked up from 5chan: vercel-react-best-practices
review, ready-for-review PR rule, agent model constraints,
playwright session policy, you-might-not-need-an-effect review.
- Use getCommunityIdentifier in every useCommunity / useCommunityStats
call site so hash-style (publicKey) community addresses are routed
to the correct CommunityIdentifier branch instead of always being
treated as { name }.
- Move the create-community redirect in community-settings.tsx out
of the render body and into useEffect to avoid the "cannot update
a component while rendering" warning and re-fire on every render.
- useMemo Object.keys(accountCommunities) in mod.tsx so feedOptions
and the three useFeed calls receive a stable communityAddresses
array.
- Simplify the tautological logo-avatar guard in header.tsx.
- (Verified flattenCommentsPages import resolves; left as-is.)
- (Comment import in mod.tsx confirmed from @bitsocial/...)
Cosmetic rename of local variables, prop names, type names, CSS classes,
function names, and code comments from the legacy `subplebbit` terminology
to `community` across components, hooks, stores, views, and utilities.
API protocol keys (e.g. `subplebbitAddress:` in publish options) are
intentionally preserved. A new `getCommentCommunityAddress` dual-read
helper in `comment-utils.ts` reads `communityAddress` first and falls
back to the legacy `subplebbitAddress` field for backward compat.
Renamed hook files:
- use-is-nsfw-subplebbit.ts → use-is-nsfw-community.ts
- use-is-broadly-nsfw-subplebbit.ts → use-is-broadly-nsfw-community.ts
Apply the broader subplebbit -> community rebrand on top of the
package switch:
- Rename hook usages (useSubplebbit -> useCommunity, useSubplebbits
-> useCommunities, useSubplebbitStats -> useCommunityStats,
useSubplebbitsStates -> useCommunitiesStates,
useAccountSubplebbits -> useAccountCommunities,
usePublishSubplebbitEdit -> usePublishCommunityEdit,
usePlebbitRpcSettings -> usePkcRpcSettings) and types (Subplebbit
-> Community, PublishSubplebbitEditOptions ->
PublishCommunityEditOptions).
- Rename seedit identifiers (variables, types, store names) from
subplebbit/Subplebbit to community/Community.
- git mv view directories, store files, hook files, and CSS modules
from subplebbit-* to community-*. Update all imports.
- Rename the React Router :subplebbitAddress route param to
:communityAddress (path /s/ unchanged).
- Update English translation values for community-related strings.
- Drop src/lib/bitsocial-react-hooks-compat.ts (no longer needed
now that @bitsocial/bitsocial-react-hooks exposes the community
names natively).
- Add src/hooks/use-community-identifier.ts and
src/lib/utils/address-utils.ts as small adapters for the new
CommunityIdentifier shape and short-address utility.
- Fix src/hooks/use-default-subplebbits.ts to import Community
instead of Subplebbit (PR #813 will rename the file in a
follow-up; tiny merge conflict expected on that one file).
Build, lint, and type-check all pass.
Mechanical scope rename across src/. Build is intentionally broken
at this commit — Phase 3 renames the symbols (useSubplebbit ->
useCommunity, etc.) to match the new package's API.
- Drop the @bitsocialnet/bitsocial-react-hooks tarball install in favor
of the canonical @bitsocial/bitsocial-react-hooks@0.1.2 from npm.
- Remove kubo direct dep (now bundled inside pkc-js via the hooks).
- Bump i18next 23 -> 25, react-i18next 13 -> 16,
i18next-http-backend 2 -> 3, @vitejs/plugin-react 4 -> 6 to
match 5chan.
- Remove the obsolete scripts/patch-bitsocial-react-hooks-esm.cjs
postinstall hook (only patched the old tarball layout).
- Update AGENTS.md package scope reference.
Vite's built-in server.open fired before portless was reachable and
used the wrong hardcoded URL, so yarn start opened a 404. Disable
vite's open when PORTLESS_URL is set and explicitly open the
branch-scoped URL from start-dev.js after HTTP 2xx/3xx readiness.
Upgrade Electron to 39.8.7 (align with 5chan), bump lodash to 4.18.0,
electron-forge to 7.8.0, and add resolutions for axios, protobufjs,
follow-redirects, node-forge, handlebars, brace-expansion, picomatch,
and @xmldom/xmldom.
Adopt branch-aware Portless app naming with numeric suffixes for repeated worktree runs, add a shared direct-Vite port resolver for PORTLESS=0, and keep the Electron bypass pinned to PORT=3000 so existing localhost-based dev flows still work.
Wrap setAccount in the compat layer so seedit keeps internal account fields during partial updates, and extend the install-time hooks patching to normalize legacy account communities data and guard role-sync lookups.
Swap the app to the latest bitsocial-react-hooks commit, add a local compatibility shim for the legacy subplebbit API surface, and keep the in-flight account-history improvements that now use hook-side paging/filtering.
Mirrors .cursor and .codex structure with Claude model assignments:
- haiku for lighter tasks (translator, browser-check, profiler)
- sonnet for standard tasks (code-quality, plan-implementer, etc.)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>