Commit Graph
143 Commits
Author SHA1 Message Date
Tommaso Casaburi 6ecf3c40d3 fix(thread): count user id tooltips from thread data
Replace the DOM-based user ID tooltip count with a deduped per-thread author map in `getThreadPostCountsByAuthor()`. This keeps mounted preview copies from doubling ID totals on desktop and mobile thread views.
2026-03-16 15:13:04 +08:00
Tommaso CasaburiandGitHub fd9ab19de3 fix(mod-queue): show board button from live roles (#1079)
* fix(mod-queue): show board button from live roles

* fix(mod-queue): require live role for board access
2026-03-13 16:37: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
Tommaso CasaburiandGitHub fe55e6f332 fix(quotes): resolve external quote links across boards (#1064) 2026-03-12 17:41:11 +08:00
Tommaso CasaburiandGitHub ef375e3578 fix(mobile): hide empty mobile reply backlink wrapper (#1060)
getRenderableMobileBacklinks() now filters mobile backlinks down to replies that can actually render, so ReplyBacklinks only mounts mobileReplyBacklinks when there is visible content. This adds a regression test for the gap where a newly published reply exists before it receives its post number.
2026-03-12 16:40:48 +08:00
Tommaso CasaburiandGitHub 6c03253cb4 fix(post): stop thread navigation from forcing OP alignment (#1052)
* 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
2026-03-11 18:43:36 +08:00
plebeius 773debece3 fix(post): avoid duplicate history entries on OP permalinks 2026-03-10 18:25:07 +08:00
Tommaso CasaburiandGitHub 6ed3708322 fix(post): align op permalinks to the outer thread container (#1050)
* fix(post): align op permalinks to the outer thread container

* perf(scroll-to-reply): stop interval when max attempts/duration reached
2026-03-10 18:08:20 +08:00
plebeius 6954b5bcc9 fix(replies): hide author-deleted replies from thread views 2026-03-09 21:10:56 +08:00
plebeius a20f131201 fix(mod-queue): preserve pending reject state after refresh 2026-03-09 19:05:29 +08:00
plebeius 417482060d refactor: org name changed from bitsocialhq to bitsocialnet 2026-03-09 17:01:35 +08:00
plebeius cf55eaa781 feat(markdown): make spoiler tags case-insensitive like BBCode 2026-03-09 15:31:53 +08:00
plebeius fabdd0efe5 fix: stabilize catalog filter coverage imports 2026-03-08 19:40:19 +08:00
plebeius 90a01057f2 chore(knip): trim dead exports and tool noise 2026-03-08 16:37:34 +08:00
plebeius b2137c7f91 test: expand markdown and post menu coverage
Adds focused regression coverage for quote previews, markdown link rendering, embed toggles, and desktop/mobile post-menu actions. It also fixes the undefined feed-state crash in use-state-string.ts and removes unnecessary runtime imports with import type.
2026-03-08 16:30:02 +08:00
plebeius dc5d23d8d9 test: expand hook and utility runtime coverage 2026-03-08 15:46:05 +08:00
plebeius 76eb4b537e test: expand honest whole-repo coverage
Adds broad coverage across stores, hooks, and runtime utilities while switching `vitest.config.ts` to an explicit whole-repo include list. This turns the coverage report into a real repo-wide baseline instead of an imported-file subset.
2026-03-08 13:59:38 +08:00
plebeius 0d34b477e4 test(settings): expand settings and route coverage
Added focused tests for settings flows, subscription behavior, and route helpers, and fixed the account import success path those tests exposed in account-settings.tsx.
2026-03-08 12:52:41 +08:00
plebeius 34e2c2bc4d fix: hold gif thumbnails until first frame is ready
Distinguish GIF frame loading from GIF frame failure in useFetchGifFirstFrame(), so thread and catalog thumbnails no longer render animated GIFs before the still frame arrives. Keep the existing animated fallback when the first-frame fetch actually fails.
2026-03-07 21:16:13 +08:00
plebeius 95088300bd refactor(routing): namespace board mod queue under board mod routes
Updated the canonical board mod queue URL to /:boardIdentifier/mod/queue and made legacy /:boardIdentifier/modqueue paths resolve to not found. Tightened route helpers so board-scoped mod URLs no longer fall through as generic board pages.
2026-03-07 16:02:19 +08:00
plebeius 58abae7e38 fix: handle purged posts in quote availability and mobile author counts 2026-03-07 13:52:48 +08:00
plebeius 1b9f69839d fix(routing): canonicalize board aliases in thread routes 2026-03-07 13:48:18 +08:00
plebeius 91615dbf47 feat(markdown): use BBCode-style [spoiler][/spoiler] tags 2026-03-06 20:54:11 +08:00
plebeius ec404569e7 fix(quotes): avoid striking unresolved quote links 2026-03-06 19:24:49 +08:00
plebeius 65731ceb3a fix(markdown): handle unavailable reply quote links 2026-03-06 14:55:40 +08:00
plebeius 4508f589dd chore(deps): migrate from pkc-react-hooks to bitsocial-react-hooks 2026-03-05 17:14:23 +08:00
plebeius 5fe2024a49 feat(home): clarify 5chan is serverless app, use current hostname for share links
- Homepage infobox: merged copy into single line explaining app nature and download link
- Share links (Copy direct link): use window.location.origin instead of hardcoded 5chan.app
- Settings version link: use current origin
- FAQ: add 'Is 5chan just this website?' entry under Basics
- Remove pleb.bz from CHAN_5_HOSTNAMES
2026-03-04 18:49:06 +08:00
plebeius e6afb041ae refactor(markdown): replace react-markdown with custom imageboard-style text parser 2026-03-04 15:20:06 +08:00
plebeius c9e9506ebd fix(replies-preview): stable sort when recency yields identical Infinity values 2026-03-01 19:05:36 +08:00
plebeius 75b66516fe refactor(replies): remove pinned-thread special handling for reply preview 2026-03-01 18:36:12 +08:00
plebeius 8296d70fd6 fix(string-utils): guard truncateWithEllipsisInMiddle for small maxLength and slice(-0) 2026-03-01 18:36:05 +08:00
plebeius f2264ba60c feat(post-desktop): truncate long file links with ellipsis in middle 2026-03-01 17:03:28 +08:00
plebeius ab32ad578c fix(challenge-utils): use console.log for success instead of console.warn 2026-02-28 20:10:41 +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 9253bad7a5 fix(board-replies): include pending and mod-queue account comments in 5-reply preview 2026-02-26 15:19:25 +08:00
plebeius 216073aee3 fix(quotes): scope post-number lookup by subplebbit, OP quote always navigates to thread
- numberToCid scoped by subplebbit address to fix wrong preview in /all/
- OP quote click navigates to thread page instead of highlighting card
2026-02-26 15:08:33 +08:00
plebeius fb9443a0f8 feat(settings): move account json editing to dedicated full editor route 2026-02-24 20:33:07 +08:00
plebeius 0ddb22f5fa feat(thread-stats): show board page number in post stats via cache-first lookup 2026-02-24 18:15:50 +08:00
plebeius 5bd1dc0e71 chore(cleanup): remove dead code and add android build to gitignore 2026-02-24 15:15:38 +08:00
plebeius 24d7b3e057 feat(catalog): add reply-count sorting mode 2026-02-23 17:09:26 +08:00
plebeius 0cb7b1a970 feat(blotter): replace board stats with changelog-backed blotter
Add static blotter snapshot, route /blotter, compact board blotter (Hide/Show All).
Include yarn blotter tooling and AGENTS rules so every changelog version has a
release line. 4chan-style table UI, subplebbit→board and plebchan→5chan in messages.
2026-02-22 19:37:49 +08:00
plebeius a13c72f888 perf: defer board reply fetching and remove nested mobile backlink fetch
Split useReplies in post-desktop.tsx and post-mobile.tsx into preview/full modes so board cards avoid full REPLIES_PER_PAGE fetches by default. Added replies-preview-utils.ts and switched mobile backlinks to use precomputed directRepliesByParentCid map instead of per-reply useReplies.
2026-02-22 16:53:01 +08:00
plebeius 8e6d81ba59 refactor(multiboards): remove time filter system end-to-end
Backend retention now keeps only recent posts, making the time filter UI
and newerThan filtering obsolete. Deleted use-time-filter hook, canonical
multiboard routes only, removed footer suggestions, dropped i18n keys.
2026-02-22 15:57:42 +08:00
plebeius 71fdbef1ea fix(feeds): force infinite scroll on multiboards and canonicalize page URLs 2026-02-22 14:24:45 +08:00
plebeius 60d2f6804d feat(board): default pagination with optional infinite scroll and URL-based page routing 2026-02-20 20:16:11 +08:00
plebeius dbbc83d369 feat: add shared cross-platform catbox media upload flow
Added `useFileUpload()` and `uploadToCatbox()` to centralize upload behavior and remove duplicated upload code from `post-form.tsx` and `reply-modal.tsx`. The flow now routes Android to `FileUploader`, Electron to hidden-input + catbox upload, and web to a translated fallback alert with consistent upload UI state.
2026-02-17 16:44:16 +08:00
plebeius bb4be3ff6b fix(challenge-utils): format challenge errors with board identifier 2026-02-16 15:13:52 +08:00
plebeius 9f14a63268 feat: populate quotedCids when publishing replies with quote references
Parse reply content for >>{postNumber} references, resolve post numbers to CIDs via usePostNumberStore, and include resolved CIDs in publishCommentOptions when publishing. Extracted quote handling into reply-quote-utils.ts for testability and clarity.
2026-02-11 16:07:01 +08:00
plebeius 702816f99b fix: include manual post-number quotes in reply backlinks
Backlink map generation now merges protocol-level quotedCids with parsed >>number references from reply content. Manual quotes are resolved through numberToCid from usePostNumberStore and deduplicated using Set. Centralized QUOTE_NUMBER_REGEX in url-utils to keep markdown conversion and backlink detection aligned.
2026-02-10 16:53:34 +08:00