Commit Graph
126 Commits
Author SHA1 Message Date
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 7fd3e3fd45 chore(media-upload): remove Postimages provider
Postimages cannot support WebView automation (site blocks automated uploads).
Imgur works reliably. Keep only Catbox and Imgur as supported providers.
2026-02-28 19:13:43 +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 cd71602730 feat(profiling): add react-scan via direct import for dev-only profiling 2026-02-26 16:02:19 +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 b20aae8244 fix(upload-automation): harden android and electron failure handling
Updated Android/Electron upload paths to fail deterministically and report consistent stage details, while removing unsafe stage casting and path/package mismatches. This keeps postimages automation behavior intact and makes failures easier to diagnose.
2026-02-20 16:52:35 +08:00
plebeius f1f5789118 feat(media-hosting): extend ProviderAttempt with stage/elapsedMs/matchedSelectors and parse plugin errors 2026-02-19 17:49:18 +08:00
plebeius 410b988fbd fix(upload): resolve electron file-path fallback and android provider automation stalls 2026-02-19 13:18:15 +08:00
plebeius afdf129c3e fix: resolve android plugin registration and electron upload runtime detection regressions 2026-02-18 20:13:28 +08:00
plebeius 96a4aaec0e feat(media-hosting): add multi-provider configurable upload with fallback
Add Random/Preferred/None modes, preferred provider selection, and provider-order fallback. Catbox/Imgur/PostImages on Android via WebView; Electron CDP automation for Imgur/PostImages. Hide upload controls on web runtime.
2026-02-18 18:51:02 +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 dedf18e199 perf(replies): progressive render, 500 replies/page, content-visibility
Set repliesPerPage to 500 to avoid Virtuoso pagination sort drift. Add useProgressiveRender with startTransition batching and CSS content-visibility for long reply lists.
2026-02-15 18:46:49 +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
plebeius c4b6c77d4c feat: render >>{number} as interactive quote links with hover preview
Added bidirectional `usePostNumberStore` for post number ↔ CID mapping, populated from thread views. Preprocesses `>>{number}` into markdown links, renders them via `NumberQuoteLink` and `ReplyQuotePreview`, and deduplicates against `quotedCids` when both refer to the same post.
2026-02-10 16:23:06 +08:00
plebeius 9d17213e66 fix(post): improve user ID display with domain detection and length limits 2026-02-10 14:06:43 +08:00
plebeius 41b7fee439 refactor(mod queue): rename routes from /queue to /modqueue 2026-02-09 17:42:23 +08:00
plebeius 63ee8aa168 refactor: rebrand default subplebbits to 5chan directories 2026-01-28 16:51:27 +08:00
plebeius 48d5decc51 missing hash 2026-01-19 16:06:12 +01:00
plebeius 70ba14591a feat: implement mod queue 2026-01-07 16:03:02 +01:00
plebeius c984e56249 feat(url-utils): replace p/ syntax with >>> cross-board references 2025-12-31 17:59:33 +01:00
plebeius d46d7edffe perf: preload theme button and background images on app startup 2025-12-29 13:55:20 +01:00
plebeius 0b573acf1d fix: resolve typescript errors in post menu components 2025-12-26 17:33:00 +01:00
plebeius 5e79ce91b6 refactor: remove description and rules mock posts
Removed all fake posts for subplebbit description and rules, including dedicated routes, components, and all related logic across the codebase. Board admins can now pin regular posts if they want to provide a description.
2025-12-23 19:14:25 +01:00
plebeius 23f245145c fix: validate thread share link cid
Ensure thread share links throw when cid is missing and require a cid in caller props so we never build /thread/undefined URLs.
2025-12-08 23:44:38 +01:00
plebeius c7d53bd9b5 fix: accept dynamic time filters in feed routes 2025-12-08 23:36:55 +01:00
plebeius 896ca4ad13 perf: implement LRU-cached persistent feed mounting to eliminate Virtuoso flash
Keep Board/Catalog feeds mounted outside React Router's control to prevent
Virtuoso from remounting when navigating to/from post pages. The feed is
hidden via CSS when viewing posts and shown again when returning, eliminating
the visible flash/displacement that occurred during scroll restoration.

- Add FeedCacheContainer to manage LRU cache of 2 feeds
- Modify Board/Catalog to accept cache props and visibility state
- Add route utilities for feed/post route detection
2025-12-08 22:40:16 +01:00
plebeius 698df59f19 perf(components): memoize post menus with minimal props 2025-12-05 17:38:17 +01:00
plebeius 41ffd2f65b feat(share-link): add description and rules link types 2025-11-30 22:43:48 +01:00
plebeius f01a1dcaa9 fix(media-utils): ignore blacklisted thumbnails
some sites don't show thumbnails, so the backend-side thumbnail fetching needs to be  disabled, or it might fetch non-thumbnails such as emojis
2025-11-26 23:13:40 +01:00
plebeius a7dc46fe2e feat: add iframe challenges (e.g. mintpass) 2025-11-26 22:09:03 +01:00
plebeius de7043c77d remove duplicate function, remove unused variables 2025-11-14 14:52:13 +01:00
plebeius 1b38335118 refactor: move board display from post info to media row in multiboard views 2025-11-14 14:32:59 +01:00
plebeius 12101fe75e feat: add Multiboards category with /subs/ and /all/ 2025-11-12 16:35:38 +01:00
plebeius 93859ec2f1 fix(routes): prevent malformed routes and fix cache invalidation 2025-11-07 18:34:06 +01:00
plebeius d78fed1fda refactor(routing): migrate to directory-based board routing 2025-11-07 12:50:58 +01:00