Commit Graph
67 Commits
Author SHA1 Message Date
Tommaso CasaburiandGitHub da03239bb2 perf: reduce browsing rerenders and startup cost (#1189)
* chore(profiling): collect serializable react-scan reports

* perf(routing): rerender only when directory winner changes

* perf(zustand): remove shallow warning hot path

* perf(state): narrow directory lifecycle updates

* perf(home): avoid redundant stats render work

* perf(posts): isolate live loading subscriptions

* perf(chrome): skip unchanged shell rerenders

* fix(profiling): drop unsupported render metric

* perf(feeds): skip unchanged loading state renders

* perf(home): stop resolved stats collector renders

* chore(agent run): record rerender verification

* perf(home): defer stats requests until metadata resolves

* perf(startup): load protocol modules on demand

* chore(agent run): record acquisition and startup profiles
2026-07-30 00:29:12 +07:00
Tommaso CasaburiandGitHub a91c5b588b fix(community status): use sync lifecycle for availability (#1187)
* chore(deps): upgrade pkc-js to 0.0.72 and bitsocial-react-hooks to 0.1.31

Update bitsocial internals import paths for the new package dist layout.

* fix(community status): use sync lifecycle for availability

* fix(community status): handle terminal sync without cache

* fix(directory routing): resolve candidate sync aliases

* fix(directory routing): preserve fresh cached winners
2026-07-24 16:36:09 +07:00
Tommaso CasaburiandGitHub e5e46907d6 fix(routing): avoid nested hashes in shared links (#1185) 2026-07-11 00:09:30 +07:00
Tommaso Casaburi e2dc9413a0 fix(trash board): keep hidden special boards on canonical BSO identity
Resolve trash and other hidden special board routes to their canonical BSO
address and public key instead of stale directory aliases.
2026-07-07 23:45:13 +07:00
Tommaso CasaburiandGitHub 099fdd6f3e Add hidden trash board (#1183)
* feat(trash-board): add hidden trash board

* fix(trash-board): resolve special board transfer lookups

* fix(trash-board): exclude source aliases from transfers

* fix(trash-board): avoid hidden rules hash
2026-07-02 21:22:19 +07:00
Tommaso CasaburiandGitHub f1022fc2d9 fix: consume enriched account comments directly (#1178)
* fix: consume enriched account comments directly

* fix(account comments): use empty lookup patch
2026-06-24 16:23:42 +07:00
Tommaso CasaburiandGitHub 371de88e22 chore(architecture): finish refactor audit
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.
2026-06-23 18:48:47 +07:00
Tommaso Casaburi dcc47c7bbd feat(board-header): show subtitle on /all view
Add all_subtitle copy and render it in the board header when browsing
the aggregated all-directories feed.
2026-06-08 22:30:14 +07:00
Tommaso CasaburiandGitHub e082c7b428 fix(react): address Doctor findings (#1143)
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).
2026-05-29 17:09:07 +07:00
Tommaso Casaburi df0936a4f9 fix(ui): hardcode /all/ and /mod/ multiboard titles
Use fixed labels in the board header and mobile board selector instead of
directories metadata or translated mod copy.
2026-05-21 17:59:52 +07:00
Tommaso CasaburiandGitHub cda1f7519f Add board directory view (#1132)
* feat(directory): add board directory view

* fix(directory): populate board status

* style(directory): tighten board table

* docs(board manager): point board owners to manager

* fix(directory): show loading status

* style(directory): center board column in directory table

* perf(directory): cap board status checks

* style(directory): simplify board row links

* test(ci): stabilize coverage run

* test(ci): stabilize coverage harness

* test(ci): avoid async app flush act

* test(app): narrow layout harness coverage

* test(ci): stabilize app update distribution mock

* test(ci): preload app harness before route tests

* fix(directory): address final review findings
2026-05-19 23:34:33 +07:00
Tommaso Casaburi c046c542b6 chore(deps): use published bitsocial react hooks 2026-04-20 22:11:36 +07:00
Tommaso Casaburi 4cae9c3caa fix(board status): resolve offline indicators with strict community refs 2026-04-17 12:51:14 +07:00
Tommaso CasaburiandGitHub c2e8e169c2 fix(accounts): adapt 5chan to compact account history hooks (#1118)
* chore(cursor): use composer-2 for subagents

* fix(accounts): adapt 5chan to compact account history hooks

* fix(accounts): address 5chan account-history review findings
2026-03-20 21:25:57 +08:00
Tommaso CasaburiandGitHub aedee9fb83 feat(archive): implement comment.archived and add archive page (#1074)
* feat(archive): implement comment.archived and add archive page

Add isCommentArchived() utility, /board/:boardIdentifier/archive route,
archive view with filtered feed, and UI integration (board buttons, edit
menu, catalog row, post). Archived indicator on catalog and posts.

* fix(archive): address review feedback from Bugbot and CodeRabbit

Add missing i18n keys (archived, thread_archived, view, loading_archive),
add /archive/settings route, replace hardcoded English in archive.tsx, and
fix mobile test state.
2026-03-13 16:06:36 +08:00
Tommaso CasaburiandGitHub d7703953fb refactor: migrate 5chan to the community hooks API (#1073)
* refactor(community-api): migrate 5chan to community hooks

* fix(review): address PR feedback

* fix(review): preserve legacy board context fallbacks

* fix(review): address latest bot feedback

* fix(review): use communityAddress in edit menu privileges
2026-03-13 13:25:10 +08:00
plebeius 417482060d refactor: org name changed from bitsocialhq to bitsocialnet 2026-03-09 17:01:35 +08:00
plebeius 4508f589dd chore(deps): migrate from pkc-react-hooks to bitsocial-react-hooks 2026-03-05 17:14:23 +08:00
plebeius e556a9e662 chore(deps): replace plebbit/plebbit-react-hooks with bitsocialhq/pkc-react-hooks
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.
2026-02-28 15:02:56 +08:00
plebeius 4bdee0362d perf(bundle): replace plebbit-js imports with local utility, split chunks, fix CLS and rerenders
Eliminate direct @plebbit/plebbit-js (8.7MB) imports from all UI components by replacing
Plebbit.getShortAddress() with a local get-short-address utility. Add Vite manual chunks for
plebbit-js, plebbit-react-hooks, and react-spring/use-gesture. Fix catalog CLS by matching
skeleton to wrapper dimensions. Lazy-load ChallengeModal and ReplyModal. Add failed-URL cache
to useFetchGifFirstFrame, optimize useHide selector, and memoize useFeed options in mod-queue.
2026-02-26 16:42:36 +08:00
plebeius e51f5b968c refactor(react-doctor): raise score from 79 to 90 2026-02-24 15:15:44 +08:00
plebeius e0ed510fc6 perf(react-doctor): fix compiler-blocking patterns, raise score 72→81
Replace sync setState-in-effect with keyed remount and render-derived patterns in app, error-display, topbar-edit-modal, catalog-filters; use useCurrentTime() instead of Date.now() in hot paths; fix conditional hooks, passive scroll listeners, lodash path imports.
2026-02-18 15:31:01 +08:00
plebeius 901f40f6b8 feat(board-header): add hover tooltip for address subtitle 2026-02-12 18:15:11 +08:00
plebeius 18cea185e7 refactor: replace default lodash imports with named imports
Replaced `import _ from 'lodash'` with specific named imports (`capitalize`, `lowerCase`, `debounce`, `startCase`) across 18 files. This reduces bundle size and improves tree-shaking efficiency.
2026-02-11 19:01:09 +08:00
plebeius 63ee8aa168 refactor: rebrand default subplebbits to 5chan directories 2026-01-28 16:51:27 +08:00
plebeius fa32833b2a perf(components): prevent rerenders from updatingState
Use Zustand selectors with custom equality functions to only subscribe to specific fields needed by components, avoiding unnecessary rerenders when transient state like updatingState changes. Extract offline indicators into separate components to isolate rerenders. Memoize card components in catalog and popular threads views.
2026-01-02 16:42:16 +01:00
plebeius 4cb3bda38c fix: update Plebbit.getShortAddress calls to use object parameter 2025-12-24 13:29:09 +01:00
plebeius bb596bff0d feat(i18n): add translations for subscriptions subtitle
Replace hardcoded subscriptions subtitle string with i18next translation supporting pluralization across all 35 languages
2025-12-15 16:53:36 +01:00
plebeius 4f49ec6666 fix(board header): limit clickable area of subscriptions counter to text only 2025-11-14 13:14:34 +01:00
plebeius cc28224c91 feat(board header): make subscriptions subtitle clickable to go to subs settings 2025-11-14 13:05:52 +01:00
plebeius 1675ab7d40 feat(board-header): show subscription count in subscriptions view 2025-11-14 12:59:26 +01:00
plebeius e91a0494ae remove useless subtitle for multiboards 2025-11-13 12:21:10 +01:00
plebeius 12101fe75e feat: add Multiboards category with /subs/ and /all/ 2025-11-12 16:35:38 +01:00
plebeius d78fed1fda refactor(routing): migrate to directory-based board routing 2025-11-07 12:50:58 +01:00
plebeius f44b9aefbb feat(board-header): prioritize default subplebbit title over store title 2025-11-06 17:24:09 +01:00
plebeius f26da13c77 refactor: implement scalable asset manifest system for dynamic images
Created build-time script to generate TypeScript manifest from public/assets, avoiding import.meta.glob limitations. Images stay in public/ for scalability (supports hundreds), while components get type-safe auto-discovery. Manifest auto-regenerates before builds.
2025-11-01 19:39:22 +01:00
plebeius a92892a604 update vite glob syntax, simplify path handling 2025-11-01 17:25:38 +01:00
plebeius e350311308 refactor(board header): use dynamic banner discovery with Vite glob imports
Replaced hardcoded banner array with Vite's import.meta.glob to automatically discover all banner files at build time. Now supports unlimited banners without code changes. Works across all platforms (web, Electron, Android).
2025-11-01 16:46:51 +01:00
plebeius 07831cb8b0 feat(board header): add banners, add support to gif banners 2025-10-30 22:21:17 +01:00
plebeius 70eaaaf7e9 remove old banners 2025-10-27 15:01:36 +01:00
plebeius 7374465c4f fix(pending post page): prevent crash and ensure redirect to "not found" on invalid URL 2025-06-12 17:51:08 +02:00
Tom (plebeius.eth) 339a9bc18a fix(mod multisub): mod page was missing post form 2025-06-04 16:37:17 +02:00
Tom (plebeius.eth) bc80533740 fix(board header): subplebbit address could be too long 2025-06-04 14:54:11 +02:00
Tom (plebeius.eth) 6edbed8d16 add banner 2025-03-07 16:53:19 +01:00
Tom (plebeius.eth) dcb05ed3a0 perf: prioritize cached data from API, improving navigation speed and memory consumption 2025-03-06 13:15:33 +01:00
Tom (plebeius.eth) ba5753d85e feat: add p/mod feed for all subs the user moderates 2025-03-05 17:38:34 +01:00
Tom (plebeius.eth) 2df9a964e6 fix(board header): banner could change while subplebbit is loading 2025-02-24 12:21:59 +01:00
Tom (plebeius.eth) 1639600d7c add banner 2025-02-24 12:18:02 +01:00
Tom (plebeius.eth) 5e5cfd60c7 fix tooltips 2025-02-21 17:31:16 +01:00
Tom (plebeius.eth) eb3a630cc3 feat: add christmas theme 2024-12-24 17:13:12 +01:00