Tommaso Casaburi
292d3e35a4
fix(footer): rename contact link to contributors
2026-06-27 16:27:58 +07:00
Tommaso Casaburi and GitHub
c6d048ecd7
Review settings upgrades before applying defaults
...
Adds a review modal for settings upgrades, keeps the settings banner reviewable, and preserves explicit router settings during account import.
2026-06-26 17:14:31 +07:00
Tommaso Casaburi
6d9b5ff3ce
feat(settings): internationalize advanced settings and update RPC label to .bso
...
Replace hardcoded advanced settings strings with i18n keys and translate them across all 35 languages, including the Ethereum RPC tip for .bso domains.
2026-06-12 19:06:02 +07:00
Tommaso Casaburi and GitHub
17c63bb2e6
feat(reply modal): add sci tex preview button ( #1170 )
...
* feat(sci): add 4chan-style TeX support with MathJax on /sci/
- [math]/[eqn] tags typeset with MathJax 3 (lazy chunk, only on /sci/ with math present)
- 4chan-identical config: Safe mode, left-aligned eqn, neutered \color/\newcommand macros
- TeX button in reply modal title bar opens live TeX Preview modal
- /sci/ post form rules bullets for [math]/[eqn] usage and right-click source
- MathJax context menu on right-click (Show Math As > TeX Commands)
- woff fonts served from node_modules in dev and emitted into build
* feat(sci): finish TeX support: configmacros fix, preview preload, translations, tests
- add configmacros package so the 4chan macro neutering (\color, \newcommand, ...) applies
- preload MathJax when the TeX Preview opens, like 4chan
- stable closeModal callback for the preview modal
- pre-bundle mathjax components in vite optimizeDeps to avoid dev mid-session reload
- translate the 6 new TeX keys into all 35 languages
- markdown math segment component tests + math-tags unit tests
* feat(reply modal): add sci tex preview button
* fix(tex-preview): clear MathJax bookkeeping and pending typeset on close
Addresses Cursor Bugbot: the preview output was typeset via typesetMathElement but
never passed to clearMathElement on unmount, so repeated open/close cycles kept
detached nodes in MathJax's math list. Also cancels the pending debounce timer.
* fix(reply-modal): reset TeX preview state when the reply modal closes
Addresses CodeRabbit: showTexPreview persisted across close/reopen like the
bbcode preview flags, so the TeX preview would auto-open on the next reply.
2026-06-11 16:12:38 +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 Casaburi
04af198140
feat(directory): add submit board link
2026-06-07 22:47:09 +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 Casaburi
0f6d74592e
fix(flags): label Tor country flag
2026-06-04 17:18:35 +07:00
Tommaso Casaburi
be2b774382
fix(mod queue): show pending approval reasons directly
2026-06-03 18:53:11 +07:00
Tommaso Casaburi
95f3a54b9d
fix(post form): reject non-media file links
2026-06-03 17:10:37 +07:00
Tommaso Casaburi
d357514397
feat(home stats): load stats progressively
2026-06-03 14:47:51 +07:00
Tommaso Casaburi
0a601c9392
fix(post-form): auto-convert YouTube links to thumbnail URLs
...
Add a countdown notice and shared hook to replace YouTube watch links
with img.youtube.com thumbnails in post and reply forms, with i18n copy.
2026-06-02 14:59:14 +07:00
Tommaso Casaburi and GitHub
829b672053
fix(embed): restore youtube thumbnails and file-row labels ( #1148 )
...
* fix(comment-content): render reason text as comment content
* fix(post-form): use native browser styling for flash tag select
Exclude the flash tag dropdown from themed post-form select styling so it
renders with the browser's default select appearance, matching the flag selector.
* fix(p2p-stats): show peer flags for DNS6 relay hostnames
Extract embedded IPv6 addresses from dns6 multiaddrs so geo lookup and country flags work for relay peers that publish IPv6 via DNS hostnames.
* fix(flags): hide geolocation-only selectors on /int/ and /sp/
Country-only boards auto-publish geographic location flags without
showing a flag dropdown, matching existing /bant/ behavior.
* fix(embed): restore youtube thumbnails and file-row labels
Restore thumbnail-first previews for YouTube embeds in post media and markdown hover.
Desktop posts show File with the thumbnail image URL and a youtube video type label.
* fix(embed): address youtube thumbnail review feedback
Translate the youtube video label, handle mobile/music YouTube hosts as standard YouTube URLs, keep affected mocks current, and cap default Vitest workers to reduce local CPU spikes.
2026-06-01 12:57:17 +07:00
Tommaso Casaburi and GitHub
9b3a95dd95
feat(flash board): add SWF posting support ( #1145 )
2026-05-30 16:07:41 +07:00
Tommaso Casaburi and GitHub
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
271cb14ae6
Merge branch 'master' of github.com:bitsocialnet/5chan
...
# Conflicts:
# public/translations/ar/default.json
# public/translations/bn/default.json
# public/translations/cs/default.json
# public/translations/da/default.json
# public/translations/de/default.json
# public/translations/el/default.json
# public/translations/en/default.json
# public/translations/es/default.json
# public/translations/fa/default.json
# public/translations/fi/default.json
# public/translations/fil/default.json
# public/translations/fr/default.json
# public/translations/he/default.json
# public/translations/hi/default.json
# public/translations/hu/default.json
# public/translations/id/default.json
# public/translations/it/default.json
# public/translations/ja/default.json
# public/translations/ko/default.json
# public/translations/mr/default.json
# public/translations/nl/default.json
# public/translations/no/default.json
# public/translations/pl/default.json
# public/translations/pt/default.json
# public/translations/ro/default.json
# public/translations/ru/default.json
# public/translations/sq/default.json
# public/translations/sv/default.json
# public/translations/te/default.json
# public/translations/th/default.json
# public/translations/tr/default.json
# public/translations/uk/default.json
# public/translations/ur/default.json
# public/translations/vi/default.json
# public/translations/zh/default.json
2026-05-24 23:18:28 +07:00
Tommaso Casaburi and GitHub
f74b33f43b
feat(flags): add comment flags ( #1140 )
...
* feat(flags): add comment flags
* fix(flags): address review feedback
* fix(flags): clear stale flag publish data
2026-05-24 23:14:36 +07:00
Tommaso Casaburi
348e3393c7
feat(post): show pending approval reason
2026-05-24 17:06:03 +07:00
Tommaso Casaburi
f85c11f66c
chore(i18n): translate post form prompt and nothing found
...
Localize post_form_rules_faq_prompt and nothing_found across all supported languages.
2026-05-21 19:05:40 +07:00
Tommaso Casaburi
7305e40870
feat(post form): add rules and FAQ prompt
2026-05-21 18:55:36 +07:00
Tommaso Casaburi
56c4fdf3c1
fix(mod multiboard): show account import empty state
2026-05-21 17:37:18 +07:00
Tommaso Casaburi
a31c3b44d3
fix(board): warn on unverified addresses
2026-05-21 17:33:14 +07:00
Tommaso Casaburi
c8edc92983
fix(settings): clarify pure p2p gateway copy
2026-05-20 19:40:51 +07:00
Tommaso Casaburi
ca6e843a89
fix(mod queue): rename queue dismissal action
2026-05-20 14:48:07 +07:00
Tommaso Casaburi and GitHub
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
62cff4e207
fix(catalog): improve empty search state and footer layout
...
Show centered Nothing Found for catalog searches with no matches, mirror
search results labels at the bottom footer, split nav from the style row,
and drop the desktop catalog footer top margin.
2026-05-19 15:38:44 +07:00
Tommaso Casaburi
a86c523d17
fix(post form): block temporary media links
2026-05-16 16:11:22 +07:00
Tommaso Casaburi
cc096c02ae
Merge branch 'codex/fix/media-load-failure-alert'
...
# Conflicts:
# public/translations/ar/default.json
# public/translations/bn/default.json
# public/translations/cs/default.json
# public/translations/da/default.json
# public/translations/de/default.json
# public/translations/el/default.json
# public/translations/en/default.json
# public/translations/es/default.json
# public/translations/fa/default.json
# public/translations/fi/default.json
# public/translations/fil/default.json
# public/translations/fr/default.json
# public/translations/he/default.json
# public/translations/hi/default.json
# public/translations/hu/default.json
# public/translations/id/default.json
# public/translations/it/default.json
# public/translations/ja/default.json
# public/translations/ko/default.json
# public/translations/mr/default.json
# public/translations/nl/default.json
# public/translations/no/default.json
# public/translations/pl/default.json
# public/translations/pt/default.json
# public/translations/ro/default.json
# public/translations/ru/default.json
# public/translations/sq/default.json
# public/translations/sv/default.json
# public/translations/te/default.json
# public/translations/th/default.json
# public/translations/tr/default.json
# public/translations/uk/default.json
# public/translations/ur/default.json
# public/translations/vi/default.json
# public/translations/zh/default.json
2026-05-14 16:38:01 +07:00
Tommaso Casaburi
fe87808a90
fix(media): clarify failed external image embeds
2026-05-14 16:36:20 +07:00
Tommaso Casaburi
486ef39319
Merge branch 'codex/fix/pass-heading-case'
2026-05-14 12:45:39 +07:00
Tommaso Casaburi
3767923556
fix(pass): preserve heading casing
2026-05-14 12:45:01 +07:00
Tommaso Casaburi
8cb632f3db
fix(p2p stats): clarify browser peer data
2026-05-14 12:33:48 +07:00
Tommaso Casaburi
c8640a8010
fix(settings): show latest update feedback
2026-05-13 23:55:38 +07:00
Tommaso Casaburi
1b4f412906
docs(pass): clarify governance role
2026-05-09 23:52:58 +07:00
Tommaso Casaburi
0c0fd0b018
Merge branch 'codex/feature/p2p-stats-settings'
...
# Conflicts:
# package.json
# public/translations/ar/default.json
# public/translations/bn/default.json
# public/translations/cs/default.json
# public/translations/da/default.json
# public/translations/de/default.json
# public/translations/el/default.json
# public/translations/en/default.json
# public/translations/es/default.json
# public/translations/fa/default.json
# public/translations/fi/default.json
# public/translations/fil/default.json
# public/translations/fr/default.json
# public/translations/he/default.json
# public/translations/hi/default.json
# public/translations/hu/default.json
# public/translations/id/default.json
# public/translations/it/default.json
# public/translations/ja/default.json
# public/translations/ko/default.json
# public/translations/mr/default.json
# public/translations/nl/default.json
# public/translations/no/default.json
# public/translations/pl/default.json
# public/translations/pt/default.json
# public/translations/ro/default.json
# public/translations/ru/default.json
# public/translations/sq/default.json
# public/translations/sv/default.json
# public/translations/te/default.json
# public/translations/th/default.json
# public/translations/tr/default.json
# public/translations/uk/default.json
# public/translations/ur/default.json
# public/translations/vi/default.json
# public/translations/zh/default.json
# src/components/settings-modal/__tests__/settings-modal.test.tsx
# src/components/settings-modal/settings-modal.tsx
# yarn.lock
2026-05-07 16:59:44 +07:00
Tommaso Casaburi
14a4790c8b
feat(p2p settings): add browser p2p stats
2026-05-07 16:56:29 +07:00
Tommaso Casaburi
cb05a8b905
feat(challenge modal): remember trusted board websites
2026-05-06 19:05:26 +07:00
Tommaso Casaburi
db61ca09d4
chore(translations): localize media provider unavailable message
2026-05-01 22:52:55 +07:00
Tommaso Casaburi
7e1513b688
feat(media hosting): disable unreachable providers
2026-05-01 22:52:55 +07:00
Tommaso Casaburi
897e170485
fix(challenge modal): open iframe consent directly
2026-04-30 18:56:51 +07:00
Tommaso Casaburi
e54e8802c3
fix: link mod empty state to account import
2026-04-27 15:02:51 +07:00
Tommaso Casaburi
df01cbfb49
merge: codex/fix/all-active-sort
...
# Conflicts:
# public/translations/ar/default.json
# public/translations/bn/default.json
# public/translations/cs/default.json
# public/translations/da/default.json
# public/translations/de/default.json
# public/translations/el/default.json
# public/translations/en/default.json
# public/translations/es/default.json
# public/translations/fa/default.json
# public/translations/fi/default.json
# public/translations/fil/default.json
# public/translations/fr/default.json
# public/translations/he/default.json
# public/translations/hi/default.json
# public/translations/hu/default.json
# public/translations/id/default.json
# public/translations/it/default.json
# public/translations/ja/default.json
# public/translations/ko/default.json
# public/translations/mr/default.json
# public/translations/nl/default.json
# public/translations/no/default.json
# public/translations/pl/default.json
# public/translations/pt/default.json
# public/translations/ro/default.json
# public/translations/ru/default.json
# public/translations/sq/default.json
# public/translations/sv/default.json
# public/translations/te/default.json
# public/translations/th/default.json
# public/translations/tr/default.json
# public/translations/uk/default.json
# public/translations/ur/default.json
# public/translations/vi/default.json
# public/translations/zh/default.json
2026-04-18 16:01:00 +07:00
Tommaso Casaburi
49422591b8
fix(multiboards): restore stable time-filter suggestions
2026-04-18 15:58:27 +07:00
Tommaso Casaburi
d8944e3c7c
feat(pass): localize pass page copy
2026-04-17 15:11:15 +07:00
Tommaso Casaburi
b81bcd8c55
Merge branch 'codex/fix/pass-voting-copy'
2026-04-17 14:21:22 +07:00
Tommaso Casaburi
1c6cf3fc0f
feat(pass): add pass page and update voting copy
2026-04-17 14:21:10 +07:00
Tommaso Casaburi
4a755ac5b0
fix(i18n): add offline board warning copy
2026-04-17 13:34:19 +07:00
Tommaso Casaburi
ee7a5b5778
refactor(core): remove legacy plebbit terminology
2026-04-17 10:48:27 +07:00
Tommaso Casaburi
35a5cb2411
chore: add translations
2026-04-16 13:51:54 +07:00
Tommaso Casaburi
a2286aa68e
feat(app-update): add in-app update flow with native e2e coverage
2026-03-19 20:19:48 +08:00