Commit Graph
651 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 Casaburi 27cc4767c6 fix(transfer): link trash transfer success to new post 2026-07-28 15:01:25 +07:00
Tommaso Casaburi c48ea43ee3 fix(directory): center loading ellipsis in status column
Add a centered loading ellipsis variant and use it for directory row loading states.
2026-07-25 15:57:34 +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 Casaburi 0ddf25bb44 fix(home stats): include replies in total post count 2026-07-23 16:27:59 +07:00
Tommaso Casaburi 829e90d65c fix(footer): point About link to 5chan app page 2026-07-20 16:34:47 +07:00
Tommaso Casaburi 87553414a8 fix(transfer): publish trash board transfers with canonical community name
Use the trash board address as communityAddress and communityName instead of the public key, while still passing communityPublicKey for identity.
2026-07-20 16:22:57 +07:00
Tommaso Casaburi 3431c26755 chore(data): replace plebeius.bso with bitsocialist.bso
Update board directory owners, known developer registry, and related tests to use the new bitsocialist.bso address.
2026-07-18 16:43:39 +07:00
Tommaso Casaburi cb15128ee8 fix(post): resolve thread community from CID and redirect stale routes
Fetch the comment community from the CID payload for initial useComment hints, and redirect directory thread URLs to the authoritative community instead of 404.
2026-07-17 16:32:01 +07:00
Tommaso CasaburiandGitHub e5e46907d6 fix(routing): avoid nested hashes in shared links (#1185) 2026-07-11 00:09:30 +07:00
Tommaso CasaburiandGitHub abe1e5a6a2 fix(post ids): never display account identity as a post user id (#1184)
* fix(post ids): never display account identity as a post user id

In per-post pseudonymity mode, local account comment data is overlaid on
published comments so author edit/delete controls keep working, but the
overlay also replaced the displayed User ID with the account author
address in logged-in thread views.

Split the two concerns: getCommentUserID now reads only the published
author.shortAddress, and preservePublishedUserID mirrors the published
ID back onto comments after any local account/edit overlay.

* test(post): cover published user id restore over edited comment overlay
2026-07-07 16:27:41 +07:00
Tommaso Casaburi d6f83e8abe fix(post transfer): publish trash with public key 2026-07-05 00:11:48 +07:00
Tommaso Casaburi 716d8d93a5 Merge branch 'codex/fix/mod-queue-trash-only' 2026-07-04 23:51:09 +07:00
Tommaso Casaburi 9dfd638b71 fix(mod queue): restrict trash action to trash board 2026-07-04 23:48:43 +07:00
Tommaso Casaburi 5111954081 fix: avoid pending post cleanup crash 2026-07-04 23:13:49 +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 b4a6f0a65a feat(mod queue): transfer posts across boards (#1182)
* 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
2026-07-02 14:52:06 +07:00
Tommaso CasaburiandGitHub ecb7f9e4cc fix(catalog): use search hashes for board routes
Use 4chan-style #s= catalog search hashes for redirected board search routes and quotelinks.
2026-06-27 17:45:38 +07:00
Tommaso Casaburi 51c0a16249 feat(directories): add /q/ feedback directory and link site footer
Register /q/ in directory defaults and board codes, ship the feedback
directory list, merge remote defaults with bundled fallbacks, and route
footer Feedback to /q/ instead of GitHub issues.
2026-06-26 18:12:05 +07:00
Tommaso Casaburi 2ff7b8bc88 fix(board): preserve feed order during hydration 2026-06-25 23:49:21 +07:00
Tommaso Casaburi fb004469e3 feat(p2p): enable pure browser p2p by default 2026-06-25 18:36:37 +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 cb74ba803d fix(account-data-editor): restore Ace load ordering 2026-06-22 12:58:02 +07:00
Tommaso Casaburi 87df18162c chore(release): v0.9.4 2026-06-18 19:07:21 +07:00
Tommaso CasaburiandGitHub eb47214f08 Fix empty board loading state and browser P2P patch (#1175)
* fix(board): show loaded empty boards

* fix(p2p): patch browser hooks runtime

* fix(board): stop flash loading for explicit empty boards

* fix(board): wait for feed on preloaded empty pages
2026-06-18 18:54:48 +07:00
Tommaso Casaburi 57805d60e5 Merge branch 'codex/fix/thread-author-controls' 2026-06-18 15:59:20 +07:00
Tommaso Casaburi 6297edb49f fix(post): restore thread author controls after publish navigation
Overlay local account comment author data on thread pages so edit/delete controls stay available after navigation from publish.
2026-06-18 15:59:14 +07:00
Tommaso Casaburi d2f058a5ed fix(home): point footer Blog link to bitsocial.net 2026-06-18 15:57:33 +07:00
Tommaso Casaburi f4eb1d28d2 chore(home): replace Telegram footer link with Blog
Reorder footer links and add Home; Blog points to bitsocial.app/blog?q=5chan.
2026-06-18 15:57:02 +07:00
Tommaso Casaburi 1278cf42c0 fix(pubsub): restore browser pure p2p publishing 2026-06-17 23:09:39 +07:00
Tommaso Casaburi 6006a658fb fix(rules): re-scroll directory hash when data refreshes
Remove the one-shot scroll guard so /rules#code anchors scroll again when directory data updates after the initial render.
2026-06-15 18:39:49 +07:00
Tommaso Casaburi f3565f0dda perf(mod queue): stabilize moderation subscriptions 2026-06-15 18:10:58 +07:00
Tommaso CasaburiandGitHub 33bb1d1356 perf(mod queue): stabilize empty loading state
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.
2026-06-14 20:38:25 +07:00
Tommaso Casaburi b0193b34be fix(archive): preserve button link text color on desktop
Exclude .button links from the nav unset rule and apply mobile button
spacing to anchor buttons so archive actions keep theme text color.
2026-06-10 16:47:31 +07:00
Tommaso Casaburi e9c729a9e3 fix(rules): use hash links for directory deep links
Switch rules navigation from /rules/:code paths to /rules#code hashes,
reject legacy subpaths, and ignore address hashes in markdown links.
2026-06-10 16:38:31 +07:00
Tommaso Casaburi 9de2e6a851 fix(failed-publish): keep bracket actions on one line
Replace mobile-only line breaks with CSS so retry/delete actions wrap
as a block without splitting bracket labels across lines.
2026-06-09 16:51:35 +07:00
Tommaso CasaburiandGitHub a3ff6b2e33 fix(mod queue): reset board filter on navigation (#1166) 2026-06-09 16:06:13 +07:00
Tommaso CasaburiandGitHub bd12b47db6 fix(pending-post): keep retrying failed posts on the pending route (#1161)
* fix(pending-post): keep retrying failed posts on the pending route

Retrying a failed post deletes the pending row before republishing, which
briefly leaves the pending comment non-addressable with no active challenge —
the same state PendingPost's abandoned-challenge guard uses to redirect back to
the board. A shared use-failed-post-retry-store marks the index being retried so
PendingPost skips that redirect until the republished row is created and its own
navigation to the new pending route takes over.

* fix(pending-post): harden retry flag lifecycle against abandoned-challenge race

Address Cursor Bugbot review on the retry flow. Clear the retry flag (and
isRetryRedirectPending) when the republish challenge is abandoned so an abandon
mid-retry falls through to the normal board redirect instead of stranding an
empty pending view. Also navigate to the new pending row before clearing the
flag in the redirect effect so PendingPost never observes an old-index route
with the flag already cleared.
2026-06-08 16:08:51 +07:00
Tommaso CasaburiandGitHub c2b222c4d5 fix(thread update): refresh stale reply caches (#1160)
* 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
2026-06-08 14:44:38 +07:00
Tommaso Casaburi 04af198140 feat(directory): add submit board link 2026-06-07 22:47:09 +07:00
Tommaso Casaburi bc67e961fc fix: use body color for brackets around inline action buttons
Wrap copy-error and failed-publish bracket characters in spans so they use body text color instead of inheriting the action button color.
2026-06-06 23:15:29 +07:00
Tommaso Casaburi 404a464310 feat: use s.5chan.app share links and remove report menu items
Copy share links as path-based s.5chan.app URLs so the share server can render social previews, rename the menu label, remove the stub report action, and update the FAQ.
2026-06-06 19:06:04 +07:00
Tommaso CasaburiandGitHub 9f58bf7e22 chore(deps): upgrade react to 19.2.7 and react types to 19.x (#1154)
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.
2026-06-05 18:43:28 +07:00
Tommaso CasaburiandGitHub 12977fa24a fix(mod-queue): rework excerpt hover preview, scope pending-age alerts (#1152)
Render the compact mod queue excerpt hover preview like the quote-link previews (clean read-only Post via useFloating, anchored to the right of the excerpt on desktop / below on mobile), cap its content at 350 chars, and scope the red pending-age timestamp to posts actually awaiting approval. Adds keyboard handlers to the span fallback.
2026-06-05 17:29:04 +07:00
Tommaso Casaburi 54f2cf2b84 fix(markdown): render moderation reason links 2026-06-04 15:54:15 +07:00
Tommaso CasaburiandGitHub 608402b5c8 fix(board): prevent transient no threads state (#1151)
* fix(board): prevent transient no threads state

* fix(board): scope raw thread fallback by sort

* fix(board): keep flash table loading during feed sync
2026-06-04 13:43:52 +07:00
Tommaso Casaburi be2b774382 fix(mod queue): show pending approval reasons directly 2026-06-03 18:53:11 +07:00
Tommaso Casaburi 72aca22723 fix(faq): scroll direct hash links 2026-06-03 17:06:24 +07:00
Tommaso Casaburi d357514397 feat(home stats): load stats progressively 2026-06-03 14:47:51 +07:00