Merge pull request #414 from plebbit/master

Development
This commit is contained in:
Tom (plebeius.eth)
2024-06-20 17:41:45 +02:00
committed by GitHub
25 changed files with 669 additions and 716 deletions
+9 -8
View File
@@ -1,5 +1,6 @@
# docs https://github.com/marketplace/actions/create-release
# docs https://github.com/ncipollo/release-action
# docs https://docs.github.com/en/actions/using-jobs/choosing-the-runner-for-a-job#choosing-github-hosted-runners
name: release
@@ -10,7 +11,7 @@ on:
jobs:
linux:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
permissions:
contents: write
steps:
@@ -21,7 +22,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-node@v2
with:
node-version: 16
node-version: 18
- run: yarn install --frozen-lockfile
# make sure the ipfs executable is executable
- run: node electron/download-ipfs && sudo chmod +x bin/linux/ipfs
@@ -40,7 +41,7 @@ jobs:
allowUpdates: true
mac:
runs-on: macOS-latest
runs-on: macOS-13
permissions:
contents: write
steps:
@@ -51,7 +52,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-node@v2
with:
node-version: 16
node-version: 18
# install missing dep for sqlite
- run: python3 -m ensurepip
@@ -75,7 +76,7 @@ jobs:
allowUpdates: true
windows:
runs-on: windows-latest
runs-on: windows-2022
permissions:
contents: write
steps:
@@ -86,7 +87,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-node@v2
with:
node-version: 16
node-version: 18
- run: yarn install --frozen-lockfile
- run: yarn build
- run: yarn electron:build:windows
@@ -103,7 +104,7 @@ jobs:
allowUpdates: true
android:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
permissions:
contents: write
steps:
@@ -120,7 +121,7 @@ jobs:
gradle-version: 7.6
- uses: actions/setup-node@v2
with:
node-version: 16
node-version: 18
- run: sudo apt install -y apksigner zipalign
# build react app
+231 -2
View File
@@ -1,3 +1,232 @@
## [0.2.1](https://github.com/plebbit/plebchan/compare/v0.2.0...v0.2.1) (2024-06-20)
### Bug Fixes
* incorrect assets path ([4cca4a5](https://github.com/plebbit/plebchan/commit/4cca4a58dd0a8e4913cb10e7ab7bd19b46b57146))
# [0.2.0](https://github.com/plebbit/plebchan/compare/v0.1.17...v0.2.0) (2024-06-20)
### Bug Fixes
* **app:** prevent scrollbar glitch on board layout routes, also hiding unnecessary scrollbar in home ([61f2344](https://github.com/plebbit/plebchan/commit/61f23443ca6c2d48b9fdddce7e78ef948bb5ca6a))
* audio elements were displaced in catalog ([9090c18](https://github.com/plebbit/plebchan/commit/9090c186528ce79cb3da1d14ec48bb6a054997ba))
* **board banner:** subplebbit short address was wrong ([c491b07](https://github.com/plebbit/plebchan/commit/c491b0729588cc6f58094bea269c945fc0429de6))
* **board buttons:** don't show subscribe button in multiboards ([22657ff](https://github.com/plebbit/plebchan/commit/22657ff90a709349597cf6fbc01ef58ba0da76db))
* **board buttons:** link for return button was broken ([7086d6b](https://github.com/plebbit/plebchan/commit/7086d6b77711b3f45f707fead2f89d2d6ae17c4f))
* **board buttons:** return button was broken, subscribe button shouldn't render in p/all and p/subscriptions ([6f003f9](https://github.com/plebbit/plebchan/commit/6f003f9c11bac3579b8cdab0e1d6fbfa7924550e))
* **board stats:** table warning, margin ([b6f38b5](https://github.com/plebbit/plebchan/commit/b6f38b532a5ed51e74c6b3a623b208a1f2efa0cc))
* **board:** don't show description and rules until feed loads ([0f07e1e](https://github.com/plebbit/plebchan/commit/0f07e1eedeb3ea9f23657739a410755ea71a07c0))
* **catalog filter:** force show op comment for text-only threads ([da86c2f](https://github.com/plebbit/plebchan/commit/da86c2f17f37068cc0cf026a486dd2266c6237c2))
* **catalog post:** display title inline ([9ebf3b7](https://github.com/plebbit/plebchan/commit/9ebf3b79b69cdd0a0947bc5fc26a182cdefab7f5))
* **catalog post:** don't render markdown embeds and hr ([05f7977](https://github.com/plebbit/plebchan/commit/05f79774671a5d681182572fdb95ab1a95323464))
* **catalog:** don't show description or rules if they are defined but empty ([e191e40](https://github.com/plebbit/plebchan/commit/e191e403dbfd0e81dd6e80252255e3226b30b2ce))
* **challenge modal:** disable draggable on mobile ([9c2036a](https://github.com/plebbit/plebchan/commit/9c2036a6a17534b00198a2c2eda1e46b5a6ed580))
* **challenge modal:** react-draggable requires nodeRef in React StrictMode ([ef1580e](https://github.com/plebbit/plebchan/commit/ef1580e8c0c269363f52fc23013359637bf134f7))
* **comment media:** only show link if valid, show webpage links on mobile ([b778b88](https://github.com/plebbit/plebchan/commit/b778b887081772d4e468146d08e814b4f287388a))
* **comment media:** rename, refactor, fix performance ([e8c60fc](https://github.com/plebbit/plebchan/commit/e8c60fc5bec7ce7ee2afa809b1192a979e129027))
* **crypto wallets:** update translation ([40a95fd](https://github.com/plebbit/plebchan/commit/40a95fd6d83640967d2569addce4ed34fafb0517))
* **description:** escape character wasn't excluded from translation ([7648ef1](https://github.com/plebbit/plebchan/commit/7648ef1432e0bb2ce4c9aa18e68f6987314f9779))
* don't consider 'anti' tag as nsfw tag ([62b4c71](https://github.com/plebbit/plebchan/commit/62b4c71eb5b2077f82b86d1496accd1211ec8e45))
* don't show 'sub might be offline' alert in multisubs ([937abf8](https://github.com/plebbit/plebchan/commit/937abf8dcac03c1f6c5134449c5552f043a779cb))
* don't show subplebbit stats in multiboard feeds ([c83169e](https://github.com/plebbit/plebchan/commit/c83169ea1276c58d26dff33c32f24642c61b1464))
* **edit menu:** fix input value warning ([f20a5f2](https://github.com/plebbit/plebchan/commit/f20a5f21f9d76ea8735dd22385b112a36b359a92))
* **edit menu:** mod and author edits were conflicting ([efc9a98](https://github.com/plebbit/plebchan/commit/efc9a98f47777c45f7ea54b2b2821aa6c6709714))
* **embed:** detect uppercase extension in link ([86738de](https://github.com/plebbit/plebchan/commit/86738de226a57ae0b85601fbf0eef4dc591a82df))
* **embeds:** pass origin to youtube or popular videos won't load ([e91bb58](https://github.com/plebbit/plebchan/commit/e91bb587a1cbfa20fcaa6dd9e180157b35cbf806))
* **feed:** show last 5 replies of thread in feed, not first 5 replies ([608aa63](https://github.com/plebbit/plebchan/commit/608aa632d4c6ac19b4065b18e2215b07ff5e9984))
* hiding/blocking comments wouldn't work because useBlock takes cid, not address ([743bd9b](https://github.com/plebbit/plebchan/commit/743bd9b4c8312da4897297d297b95eb1a7bec6e7))
* **home:** allow button and search bar to resize for other languages ([b13734a](https://github.com/plebbit/plebchan/commit/b13734aedf8a285e05a0dfe419c7dcd0b6fee301))
* **home:** update twitter link ([019972a](https://github.com/plebbit/plebchan/commit/019972a7ffb86de82ee74a131b1b304d83da9ca7))
* incorrect pathname check would scroll to reply unexpectedly ([81972c9](https://github.com/plebbit/plebchan/commit/81972c9c8551ee6e6bf4f8fe50c3957fd2cd83bf))
* **index.html:** add no-referrer meta tag to resolve CORP-related media access issues ([f25978f](https://github.com/plebbit/plebchan/commit/f25978f180a39054ec118b662a74f6c9b758fd3b))
* **index.html:** disable auto zoom on some mobile browsers ([c042611](https://github.com/plebbit/plebchan/commit/c0426116e2e9ffb594c9f4b4144ebd59ba347cdb))
* link type in post form should be next to link field ([a048887](https://github.com/plebbit/plebchan/commit/a048887a58bfcd312b5ad3bb052dbd0f4d17db64))
* **markdown:** remove spoiler text, there's no syntax for it yet ([3108107](https://github.com/plebbit/plebchan/commit/31081079bca4d490c094ea1999c0842252c170e1))
* **markdown:** show single break ([967f781](https://github.com/plebbit/plebchan/commit/967f781cfd43841582b26eaff00205dfa1adc302))
* **multisubs:** don't show subscribe button ([07af318](https://github.com/plebbit/plebchan/commit/07af3187c69bc0357a58d4bfef15525eef87a609))
* **not found:** check if subplebbitAddress is valid before displaying 'back to' buttton ([f7ce689](https://github.com/plebbit/plebchan/commit/f7ce6890ec183cc6d287f34dc2d7fc8c5d914ed1))
* **not found:** force yotsuba theme with ref, not with params in app because they can't be detected in app ([5e8d743](https://github.com/plebbit/plebchan/commit/5e8d7436f9b09b39d1a5b5e8e1e2d03292a2d6c8))
* only show catalog post preview on mouse over thumbnail ([a8e3ce8](https://github.com/plebbit/plebchan/commit/a8e3ce8429f4d119e74649577a18ce9b7639b12d))
* **pending post:** settings were not shown correctly ([ddd063f](https://github.com/plebbit/plebchan/commit/ddd063fdef245d6a76637ce7de83f56f753aca81))
* performance, logic ([3eb9c5c](https://github.com/plebbit/plebchan/commit/3eb9c5c20f604f8081b913e2577d84992fbfbd60))
* **popular threads box:** default to worksafe content and show 8 posts for single subplebbit ([c6a1283](https://github.com/plebbit/plebchan/commit/c6a1283b56b0953d9513d7aa32d0d8c59a5cdfee))
* position floating catalog post preview relative to thumbnail dimensions ([2a5ecf9](https://github.com/plebbit/plebchan/commit/2a5ecf90ee7372cc8aeb7d59ee14b29b3e8bb749))
* **post form:** close after publish, reset fields ([359031c](https://github.com/plebbit/plebchan/commit/359031c1df344a2eea81c571b1fceb60bca453e1))
* **post menu mobile:** close after hiding reply ([bbc3f30](https://github.com/plebbit/plebchan/commit/bbc3f30e18903b1fbfe076e2ed50b18976a68713))
* **post menu:** use floating ui to dynamically position dropdowns based on available space ([d964590](https://github.com/plebbit/plebchan/commit/d964590f544029ae126a5e0dd4fec9f44ee86845))
* **post mobile:** clearfix for floating media ([84dae0a](https://github.com/plebbit/plebchan/commit/84dae0a19bfc46205091b2b0677308b0ac6c0caa))
* **post:** break words on mobile to prevent overflow ([8e6aca6](https://github.com/plebbit/plebchan/commit/8e6aca6e324889bc7ef05e02de9c27c235d5b441))
* **post:** don't show replies in pending post page ([b785d00](https://github.com/plebbit/plebchan/commit/b785d00ec429214d6ca805941367b8e5b1c3c25d))
* **post:** limit displayName length ([607aad9](https://github.com/plebbit/plebchan/commit/607aad93796b567824ed38c8f1da7187f4e58393))
* **post:** post menu position was wrong on some browsers ([cc06d54](https://github.com/plebbit/plebchan/commit/cc06d54c81e89bf2b2a565e9dfd5bff67a08eb00))
* **post:** prioritize 'failed' state over 'pending' ([fc459d9](https://github.com/plebbit/plebchan/commit/fc459d9533505cd911760fb36e92a70e42d45c1d))
* **post:** remove margin to fix virtuoso glitch on desktop ([af75215](https://github.com/plebbit/plebchan/commit/af752159383b94d7c228e6e16f2518744b5ee6a8))
* **reply modal:** add minimal timeout to allow rerender when already opened ([05cc3c4](https://github.com/plebbit/plebchan/commit/05cc3c41740a96c64bd7b30e9c09a98c76cff3b5))
* **reply modal:** autofocus caused auto scroll to top on mobile ([952d446](https://github.com/plebbit/plebchan/commit/952d446c4d41a742139c543fdfc21fb32f4f26a9))
* **reply modal:** do nothing when clicking another cid while modal is opened ([4fa6f60](https://github.com/plebbit/plebchan/commit/4fa6f6079216b6e74c9fd1cf0616ea243bb91c75))
* **reply modal:** get mobile scroll position from hook before render ([1e91119](https://github.com/plebbit/plebchan/commit/1e9111968730f05adac0267cf4efdbd146042485))
* **reply modal:** improve c/parentCid styling in textarea ([148e6f1](https://github.com/plebbit/plebchan/commit/148e6f1989586db81222d80cb2cbf1d04e8932fd))
* **settings:** decode subplebbit address with emoji to fix pathname ([2ecedcc](https://github.com/plebbit/plebchan/commit/2ecedcc956b456b84966b8e1a148a878af8a083b))
* spoiler text wasn't rendering on mobile ([656c31c](https://github.com/plebbit/plebchan/commit/656c31c0132559cd23da09c3641cfaf1451b3c88))
* **subplebbit description:** prevent escaping characters in translation ([aac20c4](https://github.com/plebbit/plebchan/commit/aac20c4671bbd07cd6756217ff270510bbf2464c))
* **subscriptions:** show info if no subs found ([b07a06f](https://github.com/plebbit/plebchan/commit/b07a06fa129fd926201f3e6cb2310c40d38c3226))
* time filter appeared twice on mobile ([ae1b860](https://github.com/plebbit/plebchan/commit/ae1b860f3b4a9248399ec9bbf4d34cd5329af788))
* **topbar:** settings link would 404 ([1aff0d3](https://github.com/plebbit/plebchan/commit/1aff0d3adaec753e23a00276382b34641a88979b))
* **use-replies.ts:** flatten and display replies of replies not yet published ([6e20b86](https://github.com/plebbit/plebchan/commit/6e20b86b7bb0bdabd524154bce01152662ee9c9a))
* **use-replies.ts:** flatten comment pages ([087d4ab](https://github.com/plebbit/plebchan/commit/087d4ab738967d460e392daee291c220759bc473))
* **use-replies:** sort by timestamp and move pinned replies to the top ([8b000a0](https://github.com/plebbit/plebchan/commit/8b000a0bdb225040319829b8ae92d77aa1501b83))
* **use-subplebbits-stats:** hook would fetch the same stats if pending fetching ([79b660e](https://github.com/plebbit/plebchan/commit/79b660eaa02e3dac9923064b36013965be560844))
* **use-theme:** body css would bug out on navigation ([73f4136](https://github.com/plebbit/plebchan/commit/73f4136f535bc221c8f29abd2d29e991c09d6287))
* video thumbnails stuck on loading, post page overflow ([0036508](https://github.com/plebbit/plebchan/commit/00365086623dd05ea5a81be04790a68fba45bb25))
* wrong document titles ([19164db](https://github.com/plebbit/plebchan/commit/19164db606a71ea9dc2e293586d7b6c9ea52c444))
* wrong mobile value ([3a6d2f1](https://github.com/plebbit/plebchan/commit/3a6d2f16b0023607680c70929eb12dfaf888bb90))
* wrong route check, default time filter value, missing translation ([0831e75](https://github.com/plebbit/plebchan/commit/0831e757bb13aecf0ff3039b077fcf5f7b2fbae1))
### Features
* **account settings:** improve UI ([c31c0a4](https://github.com/plebbit/plebchan/commit/c31c0a4482943be76d2c372fcb919a64153da521))
* add '(You)' in quote links ([5f792f4](https://github.com/plebbit/plebchan/commit/5f792f40f059dc6dbfa1c572c4a3c6d56f9a2429))
* add 'not found' view ([5d124d2](https://github.com/plebbit/plebchan/commit/5d124d21211bec05cf0380bb58334871d6720fe9))
* add "hidden threads" counter and button in catalog and board view, store and hook ([fd092f1](https://github.com/plebbit/plebchan/commit/fd092f1bee9899a25167e156f7f82c40bfa9ba7e))
* add backlink highlight and scroll ([1911b62](https://github.com/plebbit/plebchan/commit/1911b623d9cbe56e9684ef4cef002f495ac1dd57))
* add board-banner ([b99e9f1](https://github.com/plebbit/plebchan/commit/b99e9f143b40c71d04147aec5634235a5704384a))
* add challenge modal ([cc5d042](https://github.com/plebbit/plebchan/commit/cc5d04288981ecbe2fec851d4669fcf874ddc216))
* add edit menu on mobile ([1d84526](https://github.com/plebbit/plebchan/commit/1d8452684b45f6ac4391591d49af6301ce385d9c))
* add floating quote preview to mobile replies ([84c0490](https://github.com/plebbit/plebchan/commit/84c04904f3ae370810a6ee66dd28ff6c1da6b928))
* add mod menu ([daaba0f](https://github.com/plebbit/plebchan/commit/daaba0f006b9b8f639775c1e6ff32f25485adb95))
* add new banner image ([a269e10](https://github.com/plebbit/plebchan/commit/a269e102e4c01aad8e4fbde27042dfde944d6ff7))
* add offline icon to board title, show alert before posting if sub appears offline ([a2c1ec4](https://github.com/plebbit/plebchan/commit/a2c1ec441f005562792185195b3a2d53bdfd6c54))
* add post-menu-mobile ([475d9ae](https://github.com/plebbit/plebchan/commit/475d9ae4166e887748e0211776dff7cb23e4db8a))
* add reply modal ([0962c10](https://github.com/plebbit/plebchan/commit/0962c10685e914162796526419ab315fa439bd5e))
* add spoiler image ([9f5f92f](https://github.com/plebbit/plebchan/commit/9f5f92f714a1305ce71fab78be5d962c3918d0d4))
* add spoiler text ([70a2045](https://github.com/plebbit/plebchan/commit/70a20450bbf37943038cc310d894c32fac8798af))
* add time filter to p/all and p/subscriptions ([15bffe8](https://github.com/plebbit/plebchan/commit/15bffe89bf7a82ef7d9d7b4c125136bd7bdeb87e))
* **android:** update icon ([0391b24](https://github.com/plebbit/plebchan/commit/0391b249df9b7b6ea882b13eff7ffecd369319de))
* **app:** add description and rules views ([a508059](https://github.com/plebbit/plebchan/commit/a508059af1dca5ab1c1d9c53c6c10522f44335e3))
* **app:** add pending post view ([394c7d8](https://github.com/plebbit/plebchan/commit/394c7d8a810fe8c2b95db4c656cd3f574d00b691))
* **app:** add post page ([dcd29a4](https://github.com/plebbit/plebchan/commit/dcd29a46bb4032a3de934f3409a643a5dd5b3e5c))
* **board buttons:** improve layout, increase dimensions of post form on mobile, add refresh buttons ([bc74a9f](https://github.com/plebbit/plebchan/commit/bc74a9ff77aa3dda194ac966a6d3cac505c100c1))
* **board nav:** add home and settings buttons ([9096eca](https://github.com/plebbit/plebchan/commit/9096eca4fbb8994a92fa5af087f9f63599af7f5f))
* **board nav:** add sticky header animation to mobile ([bb9d53f](https://github.com/plebbit/plebchan/commit/bb9d53f47c847159c2b25b2c5bbd2f64ca0c6cac))
* **board nav:** if in catalog view, navigate to select sub's catalog view ([32e95dd](https://github.com/plebbit/plebchan/commit/32e95dda525bb9d2b11b3ca43455027e3858660c))
* **board nav:** order board list by multisub category ([474dede](https://github.com/plebbit/plebchan/commit/474dede5db55c5e9ce2dec41518f1c544af5db57))
* **board nav:** update mobile navbar animation on scroll ([6a386fa](https://github.com/plebbit/plebchan/commit/6a386fa1747af83aedae72d85d0dd7a22bec7bcb))
* **board nav:** use titles from multisub ([6aa5f38](https://github.com/plebbit/plebchan/commit/6aa5f3806379eae435ab275e2446d937666048ff))
* **board:** add p/all and p/subscriptions ([86223bb](https://github.com/plebbit/plebchan/commit/86223bb249685d9147dd9b99229d62de95910ba8))
* **board:** add post form UI on desktop with link type previewer ([a5a7a97](https://github.com/plebbit/plebchan/commit/a5a7a97e4712c6f27fe028d604fd508b23728593))
* **board:** show error in feed near loading string ([4b2a602](https://github.com/plebbit/plebchan/commit/4b2a6025d39d70987dea62346ee40b8e7003f706))
* **catalog post:** add hidden style ([8959945](https://github.com/plebbit/plebchan/commit/89599457228a8835575ff9a18f1a755c2910396d))
* **catalog post:** add loading skeleton for image, "file deleted" fallback img ([2aa5dc0](https://github.com/plebbit/plebchan/commit/2aa5dc01eb0955af5829e426a1c4a9481f4b442e))
* **catalog post:** add spoiler styling and text, add markdown to content ([914a7de](https://github.com/plebbit/plebchan/commit/914a7dee185826fa1e77e1457af764ba186e7854))
* **catalog post:** allow selecting text in posts with media thumbnails ([a7c7464](https://github.com/plebbit/plebchan/commit/a7c74640779dbd729560b58644192cc31e5fb373))
* **catalog post:** close menu button with second click ([38e958b](https://github.com/plebbit/plebchan/commit/38e958bed8ba6b2c3943b7f5b0ecf2f29345e2fa))
* **catalog row:** add post menu button ([a6ae543](https://github.com/plebbit/plebchan/commit/a6ae543b4a589d8664f596a09a0e4c2c5a0d5fdc))
* **catalog:** add 'image size' and 'show OP comment' options ([7f3630e](https://github.com/plebbit/plebchan/commit/7f3630e28907c9dbd75d593f6b02910d6d128175))
* **catalog:** add catalog post previews ([88dcfca](https://github.com/plebbit/plebchan/commit/88dcfcaca8cdfb38d3bc3f25863451abefb0d1d2))
* **catalog:** add filter to hide text-only threads, turned on by default ([ce93915](https://github.com/plebbit/plebchan/commit/ce93915919041e00de43426a1fd08ef75b45834a))
* **catalog:** add filters modal for text-only posts, nsfw boards in p/all ([aa63ab0](https://github.com/plebbit/plebchan/commit/aa63ab0f1b69e0e4a6f7a2d685dd1ade9f53586d))
* **catalog:** add filters to mobile ([e860593](https://github.com/plebbit/plebchan/commit/e860593650715838b48ddc1170adab0808e70733))
* **catalog:** add media, styling ([65c99ab](https://github.com/plebbit/plebchan/commit/65c99ab1887a99d3bdaf04a7641c7883699a574a))
* **catalog:** add post menu ([572eb3b](https://github.com/plebbit/plebchan/commit/572eb3b4e203b870469543af37261d434bf7cf82))
* **catalog:** add refresh button ([9c9249d](https://github.com/plebbit/plebchan/commit/9c9249da94c9d6ca4b253aa7a49961f5509d5f62))
* **catalog:** add sorting option ([1ecb2ba](https://github.com/plebbit/plebchan/commit/1ecb2ba13dcf5b379b578a88c5efb5294de9b336))
* **catalog:** add sticky and closed icons ([2fc12bb](https://github.com/plebbit/plebchan/commit/2fc12bbafeba0d3802c0421ddac5912683c92b95))
* **catalog:** apply filter for text-only threads to rules and description ([d9234c4](https://github.com/plebbit/plebchan/commit/d9234c4e2a926c13fba62c78527896994b79c535))
* **crypto wallets setting:** improve UI ([65b3b99](https://github.com/plebbit/plebchan/commit/65b3b997fb7d44e11852fe12d36be3b9b625fa29))
* **edit menu:** add comment edit and delete for authors ([2fabd3c](https://github.com/plebbit/plebchan/commit/2fabd3cf549f53da890bb30557fcaa734d8de92a))
* **embed:** add support for soundcloud embeds, show webpage links on mobile, adjust audio embeds ([7dba08c](https://github.com/plebbit/plebchan/commit/7dba08ca00befd82d6a103f1cc36e03e55b3e495))
* **feed:** add description and rules ([dcf0dd9](https://github.com/plebbit/plebchan/commit/dcf0dd98e4b4857a0bba33a23c2b33ef4fec3e60))
* hide button for posts soft hides them persistently without blocking the cid ([67e3bc8](https://github.com/plebbit/plebchan/commit/67e3bc8d685711e042cb76f28e49e0ed7b88c07f))
* hide media if spoiler ([052476a](https://github.com/plebbit/plebchan/commit/052476ad1ad839cb56c17bfe271b6fbe82f5df1e))
* highlight reply if visible, render it as floating preview if not visible ([fc21d87](https://github.com/plebbit/plebchan/commit/fc21d876ff253a0dd14a5ba37683bfa854bc4230))
* **home:** add custom hook for stats functionality ([798dfc4](https://github.com/plebbit/plebchan/commit/798dfc424ff48823a19b4e978b1a7f67070d09af))
* **home:** add filter options to boards box ([8d4c440](https://github.com/plebbit/plebchan/commit/8d4c4404c3a66bf6d4f950b7e1f0c61009915e5d))
* **home:** add multisub boards with categories, subscriptions list, moderating boards list ([de81073](https://github.com/plebbit/plebchan/commit/de8107372f92082f891ce8e41fe7654ca491e4bb))
* **home:** add offline icon for subs in board list ([6b71d90](https://github.com/plebbit/plebchan/commit/6b71d9009af580b19cc813af6259d33ca6fc32fe))
* **home:** add options to popular threads box ([fabcc1d](https://github.com/plebbit/plebchan/commit/fabcc1d2e1448223bcb29434e613c8bf5707e349))
* **home:** add popular threads box ([02b287f](https://github.com/plebbit/plebchan/commit/02b287fc12a17ab4228c2fd140b630bee8f0941d))
* **home:** add version in footer ([4614e5d](https://github.com/plebbit/plebchan/commit/4614e5dbc49e794c3dba55816f38969f47da341b))
* **home:** in popular threads box, show more posts per sub depending on available subs ([98c52e6](https://github.com/plebbit/plebchan/commit/98c52e65daf8feba38a4c82b1f14fac62c5fc02f))
* **home:** mark board as nsfw if it has at least one of nsfw tags in multisub ([c33c546](https://github.com/plebbit/plebchan/commit/c33c54613dcf0f055fcd95fc33069d526922535a))
* **home:** user can connect to a sub with search bar ([568189b](https://github.com/plebbit/plebchan/commit/568189bfea9848fcaf5555157bf7309055f7e249))
* **home:** user can download desktop client from footer button ([e59a229](https://github.com/plebbit/plebchan/commit/e59a2290ab8c37db054e1a687d4019bc8789aa6c))
* **loading ellipsis:** improve animation ([eddc098](https://github.com/plebbit/plebchan/commit/eddc0982bb5c8cf1f086af4ca96b011de9146c3b))
* **media:** add support for audio links ([0a52944](https://github.com/plebbit/plebchan/commit/0a52944a07d0dff523f4e35704e4bd235e284e73))
* **multisubs:** add catalog view ([cc2a640](https://github.com/plebbit/plebchan/commit/cc2a640ae247845b2ee3bf9a4d94da513dd08b91))
* **multisubs:** add settings modal ([970c726](https://github.com/plebbit/plebchan/commit/970c726720f065c2c5790f42dde5c79b5817751b))
* **multisubs:** add subplebbit address in post info ([82fe238](https://github.com/plebbit/plebchan/commit/82fe23897992f31eb28848bb2831c01d02a33912))
* **p/all:** add description view ([09f05ac](https://github.com/plebbit/plebchan/commit/09f05ac8a0eb5b655e31f21e45c83e6e7ef8b57d))
* **p/all:** use multisub title, description and createdAt in mock description and board header ([11d1424](https://github.com/plebbit/plebchan/commit/11d1424c0a890b43a5fecb048d894d3c81b7340f))
* **post desktop:** add hide/unhide replies ([8b60172](https://github.com/plebbit/plebchan/commit/8b601726aeaffdabc6a55d129794e24aec96411e))
* **post form:** add on mobile ([3573b65](https://github.com/plebbit/plebchan/commit/3573b65ffa8f2f96df1c1a6c6e72e6194a939bed))
* **post form:** add reply publishing in post page ([cf7d59c](https://github.com/plebbit/plebchan/commit/cf7d59c9b86a2e33370b2a56d6821a1b0a0a4799))
* **post form:** add row for link type, add spoiler option ([6223cb0](https://github.com/plebbit/plebchan/commit/6223cb0b24fc2b74c42695e458ad768e8aaf7bcc))
* **post form:** enable posting from p/all or p/subscriptions ([797d665](https://github.com/plebbit/plebchan/commit/797d66515021a181ba7b8bc9ca92aab0bda6c4cd))
* **post form:** replace single return with double return on submit, because markdown is mandatory on plebbit, but a user from 4chan won't know that ([ccb75fc](https://github.com/plebbit/plebchan/commit/ccb75fcf3a6057a0a09e1fcd0456654a1af1bc00))
* **post menu:** add copy link button (share link) ([caacd77](https://github.com/plebbit/plebchan/commit/caacd77bbabc26aada1845c68791144797105e86))
* **post menu:** add reverse image search ([677407c](https://github.com/plebbit/plebchan/commit/677407cd52f5f25be24b56c20d500dda9692df81))
* **post mobile:** add hide and unhide posts and replies ([0c02a6b](https://github.com/plebbit/plebchan/commit/0c02a6b9b68e5f525a784b68cc294a8c6ac91948))
* **post page:** add view specific buttons ([f5fefd5](https://github.com/plebbit/plebchan/commit/f5fefd51cf537b41ae7bf14b085505824185f7ef))
* **post page:** scroll to top, show full content, no hide thread ([e960f79](https://github.com/plebbit/plebchan/commit/e960f791b98063da7f2b3bde40df41f5e8b80712))
* **post:** add 'this thread is closed" alert for locked, removed, deleted comments ([84f5555](https://github.com/plebbit/plebchan/commit/84f55557c1cd5c5b477990e8e1ba62801cbebc8f))
* **post:** add "file deleted" img on error ([1882446](https://github.com/plebbit/plebchan/commit/18824468d403d68e313d2223bd6083067d0c0ba4))
* **post:** add "show original" button to content edit ([e4febb9](https://github.com/plebbit/plebchan/commit/e4febb9df087cacbc495de235687e68d078d8194))
* **post:** add "time ago" tooltip to dates ([19222a6](https://github.com/plebbit/plebchan/commit/19222a66fe6a98160bf0c28be265a3411e15d160))
* **post:** add block options to mobile menu ([3206631](https://github.com/plebbit/plebchan/commit/3206631e897218b84e41fd6c33028c2760668e3a))
* **post:** add content, links, buttons, optimize for feed scroll ([67f9334](https://github.com/plebbit/plebchan/commit/67f93349dd137d27c0e361855a7117aba52b3e2a))
* **post:** add deleted and removed styling, mod reason, file deleted ([05a8e91](https://github.com/plebbit/plebchan/commit/05a8e913313b40c40f64ca737b57abf2f12af384))
* **post:** add embed button and media to links in post content detected as valid embed links ([6bfa899](https://github.com/plebbit/plebchan/commit/6bfa899722f7f2e627d823a11edcbb0a8b288d28))
* **post:** add floating preview of media from link in post content ([39a48c9](https://github.com/plebbit/plebchan/commit/39a48c95159b259b95e11c4ed3144633bcf29cb4))
* **post:** add links and media info, including embed ([d0a3e95](https://github.com/plebbit/plebchan/commit/d0a3e959fcc1f76a067b6f726a39ddf8796e5dc7))
* **post:** add mod role to display name ([ebf1e42](https://github.com/plebbit/plebchan/commit/ebf1e426f596dc6a4004c73982a8fe444fab6d91))
* **post:** add post info row, update themes ([992ed5d](https://github.com/plebbit/plebchan/commit/992ed5dbb02f15af6d2841c25333c0e3494b709d))
* **post:** add post menu component with links to other clients ([08cb073](https://github.com/plebbit/plebchan/commit/08cb0736daee6dabbc9f5e3ec0e6165ed008c04b))
* **post:** block posts via the minus button (to collapse) or via the post menu ([32f5220](https://github.com/plebbit/plebchan/commit/32f52200b74d7160a6fbd94e080cd4483c0ddb52))
* **post:** choose date/time format from translations locale ([d9ac34e](https://github.com/plebbit/plebchan/commit/d9ac34ef0f2400b3d1aa7088aa38d17dfc926b6c))
* **post:** don't show link if it's not a valid url ([3524803](https://github.com/plebbit/plebchan/commit/3524803196e49dc12e578c5d8c0b059f8fbba634))
* **replies:** add backlinks ([cbc99f4](https://github.com/plebbit/plebchan/commit/cbc99f42b04e0170d2f441624cdf3fe13d84965a))
* **replies:** sort by timestamp ([35572de](https://github.com/plebbit/plebchan/commit/35572ded55bc0736b4559afde480300b1ad426cb))
* **reply modal:** add c/parentCid above textarea, fix tomorrow theme ([5f3ff17](https://github.com/plebbit/plebchan/commit/5f3ff17eccf3bf875493d1b1a0f4d4723f046f32))
* **reply modal:** add link type previewer, spoiler option ([c5d55a9](https://github.com/plebbit/plebchan/commit/c5d55a9dd5e6b0d9072f34e9abe636ad1a121c50))
* **reply modal:** change displayName from name field, style focused inputs, translate title ([1e5c675](https://github.com/plebbit/plebchan/commit/1e5c675e95f9c7a9eb5f96204a4e4788cc32ab3b))
* **reply modal:** disable draggable on mobile and calculate absolute top position ([d6179d0](https://github.com/plebbit/plebchan/commit/d6179d0fdca562a376cf0fd8bb18f1fa9cc7144c))
* **reply modal:** show alert before posting if subplebbit might be offline ([d71889a](https://github.com/plebbit/plebchan/commit/d71889a3de40de6a0347c82cc7ece2b178e6be54))
* **reply:** add floating quote preview ([b44fb15](https://github.com/plebbit/plebchan/commit/b44fb150785ac7f04e73fb1e251eb25a635087b9))
* **settings:** add 'check for updates' button ([ca22841](https://github.com/plebbit/plebchan/commit/ca22841ea48114e5fbf143587911d0ae608da0c9))
* **settings:** add account data settings ([b2bfc24](https://github.com/plebbit/plebchan/commit/b2bfc2440da171e967fb3bc883df50c00fb32b80))
* **settings:** add blocked addresses setting ([42a6fb4](https://github.com/plebbit/plebchan/commit/42a6fb4a701898aae89657a98744290a423bad61))
* **settings:** add crypto wallets ([ae02eba](https://github.com/plebbit/plebchan/commit/ae02eba4df7253e4a01deb4a9a6065e71bc74e9d))
* **settings:** add expand all button ([91d2a5a](https://github.com/plebbit/plebchan/commit/91d2a5ae014dd8498cb9d3284904db333fb2bf5d))
* **settings:** add interface settings category ([d78924f](https://github.com/plebbit/plebchan/commit/d78924facbd6c86995ee5c21075a0416b555a799))
* **settings:** add plebbit options ([bf09de9](https://github.com/plebbit/plebchan/commit/bf09de98f9ddf68965252d975c3fad72a097428a))
* **subplebbit:** add automatic theme based on nsfw or sfw tags ([22c1acd](https://github.com/plebbit/plebchan/commit/22c1acdd3dbe29cab05626018538dd4361b28933))
* **subplebbit:** add feed, posts ([f1af55e](https://github.com/plebbit/plebchan/commit/f1af55edf0069da7c3f016d93b2a67b7b68ab4dc))
* **topbar:** add search bar ([e39c171](https://github.com/plebbit/plebchan/commit/e39c171eac566daa447153e8bb6f3a71b494dcc6))
### Performance Improvements
* abstract reply modal logic into hook for post page and board page ([ff8882c](https://github.com/plebbit/plebchan/commit/ff8882ce9c32aac0034a6b09b18979eca0d26d1b))
* **app:** limit load of subplebbit with preload of layout ([9626c6c](https://github.com/plebbit/plebchan/commit/9626c6c9d8a24859ea9a206c41c3cdb0785f5750))
* apply cachebuster to not found img and board banners ([1f4213a](https://github.com/plebbit/plebchan/commit/1f4213ae0bc7279b6ba3cf441611b3fb3f3d9ad6))
* **app:** memoize board layout, update subplebbit view ([f4dba57](https://github.com/plebbit/plebchan/commit/f4dba57945cc70e624d57cf770f06a5fb9294e4d))
* **app:** optimize subs loading as much as possible ([311896d](https://github.com/plebbit/plebchan/commit/311896d1220477e2979b9bb8bd09afb0688d1639))
* **board nav:** reduce animation rerenders with useRef ([3eabe70](https://github.com/plebbit/plebchan/commit/3eabe70e1cf4e393be551dccc2367f04542d3974))
* **catalog:** optimize feed row rendering ([34f79bf](https://github.com/plebbit/plebchan/commit/34f79bf67d2e0c92c9e9967ac805fadea7d819de))
* **feed:** optimize postsPerPage ([b1e3400](https://github.com/plebbit/plebchan/commit/b1e3400d4424e5a0314077df6bdc32ef87ec099a))
* improve responsiveness ([62b83bf](https://github.com/plebbit/plebchan/commit/62b83bf7ea236404fe5d4b421ad084560eb88574))
* **markdown:** memoize ([af5a544](https://github.com/plebbit/plebchan/commit/af5a5443a717755f94a4819909fd0ae280485ac3))
* **post:** load post components conditionally ([50df786](https://github.com/plebbit/plebchan/commit/50df786a86e5efa8baa21afd89464a30ced1a78b))
* rewrite plebchan completely ([c4a5cfe](https://github.com/plebbit/plebchan/commit/c4a5cfec49c54f00f13599dd082b1b7140b0ce87))
* **use-theme:** refactor for performance, fix initial theme load after refresh ([3bb1b2f](https://github.com/plebbit/plebchan/commit/3bb1b2f8c1895349d6685cb73b5ef7aa213a7795))
## [0.1.17](https://github.com/plebbit/plebchan/compare/v0.1.16...v0.1.17) (2023-12-20)
@@ -28,10 +257,10 @@
### Features
* add 'view on plebchan' links ([83c93c5](https://github.com/plebbit/plebchan/commit/83c93c5861cf96edfa9f0912eafa82f7c4d5ee80))
* add 'view on seedit' links ([83c93c5](https://github.com/plebbit/plebchan/commit/83c93c5861cf96edfa9f0912eafa82f7c4d5ee80))
* **electron:** add plebbit rpc ([03b9b82](https://github.com/plebbit/plebchan/commit/03b9b82a6fbecba4658cc68d43523b9e862da298))
* **SettingsModal:** add export/import full account data ([07daa4e](https://github.com/plebbit/plebchan/commit/07daa4eeb315d13f756e4196253fe02d8a989284))
* **share:** add plebchan to share button ([a13fe45](https://github.com/plebbit/plebchan/commit/a13fe45c6446527f52dac9dd25e32c4e23c364e3))
* **share:** add seedit to share button ([a13fe45](https://github.com/plebbit/plebchan/commit/a13fe45c6446527f52dac9dd25e32c4e23c364e3))
+8 -7
View File
@@ -1,9 +1,11 @@
// hook that runs after electron-build
const fs = require('fs-extra');
const path = require('path');
const { execSync } = require('child_process');
const rootPath = path.resolve(__dirname, '..');
import fs from 'fs-extra';
import path from 'path';
import { execSync } from 'child_process';
import packageJson from '../package.json' assert { type: 'json' };
import { fileURLToPath } from 'url';
const rootPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
const distFolderPath = path.resolve(rootPath, 'dist');
const addPortableToPortableExecutableFileName = () => {
@@ -21,9 +23,8 @@ const createHtmlArchive = () => {
if (process.platform !== 'linux') {
return;
}
const { version } = require('../package.json');
const zipBinPath = path.resolve(rootPath, 'node_modules', '7zip-bin', 'linux', 'x64', '7za');
const plebchanHtmlFolderName = `plebchan-html-${version}`;
const plebchanHtmlFolderName = `plebchan-html-${packageJson.version}`;
const outputFile = path.resolve(distFolderPath, `${plebchanHtmlFolderName}.zip`);
const inputFolder = path.resolve(rootPath, 'build');
try {
@@ -37,7 +38,7 @@ const createHtmlArchive = () => {
}
};
exports.default = async (buildResult) => {
export default async (buildResult) => {
addPortableToPortableExecutableFileName();
createHtmlArchive();
};
+9 -10
View File
@@ -1,11 +1,12 @@
// download the ipfs binaries before building the electron clients
const fs = require('fs-extra');
const ProgressBar = require('progress');
const https = require('https');
const decompress = require('decompress');
const path = require('path');
const ipfsClientsPath = path.join(__dirname, '..', 'bin');
import fs from 'fs-extra';
import ProgressBar from 'progress';
import https from 'https';
import decompress from 'decompress';
import path from 'path';
import { fileURLToPath } from 'url';
const ipfsClientsPath = path.join(path.dirname(fileURLToPath(import.meta.url)), '..', 'bin');
const ipfsClientWindowsPath = path.join(ipfsClientsPath, 'win');
const ipfsClientMacPath = path.join(ipfsClientsPath, 'mac');
const ipfsClientLinuxPath = path.join(ipfsClientsPath, 'linux');
@@ -98,14 +99,12 @@ const downloadAndExtract = async (url, destinationPath) => {
fs.removeSync(dowloadPath);
};
const downloadIpfsClients = async () => {
export const downloadIpfsClients = async () => {
await downloadAndExtract(ipfsClientWindowsUrl, ipfsClientWindowsPath);
await downloadAndExtract(ipfsClientMacUrl, ipfsClientMacPath);
await downloadAndExtract(ipfsClientLinuxPUrl, ipfsClientLinuxPath);
};
exports.downloadIpfsClients = downloadIpfsClients;
exports.default = async (context) => {
export default async (context) => {
await downloadIpfsClients();
};
+1 -1
View File
@@ -1,2 +1,2 @@
const downloadIpfsClients = require('./before-pack').downloadIpfsClients;
import { downloadIpfsClients } from './before-pack.js';
downloadIpfsClients();
+5 -4
View File
@@ -1,9 +1,10 @@
// require this file to log to file in case there's a crash
const envPaths = require('env-paths').default('plebbit', { suffix: false });
const util = require('util');
const fs = require('fs-extra');
const path = require('path');
import util from 'util';
import fs from 'fs-extra';
import path from 'path';
import EnvPaths from 'env-paths';
const envPaths = EnvPaths('plebbit', { suffix: false });
// previous version created a file instead of folder
// we should remove this at some point
+22 -13
View File
@@ -1,10 +1,15 @@
require('./log');
const { app, BrowserWindow, Menu, MenuItem, Tray, screen: electronScreen, shell, dialog } = require('electron');
const isDev = require('electron-is-dev');
const path = require('path');
const startIpfs = require('./start-ipfs');
const startPlebbitRpcServer = require('./start-plebbit-rpc');
const { URL } = require('node:url');
import './log.js';
import { app, BrowserWindow, Menu, MenuItem, Tray, screen as electronScreen, shell, dialog, nativeTheme, ipcMain } from 'electron';
import isDev from 'electron-is-dev';
import fs from 'fs';
import path from 'path';
import EnvPaths from 'env-paths';
import startIpfs from './start-ipfs.js';
import './start-plebbit-rpc.js';
import { URL, fileURLToPath } from 'node:url';
import contextMenu from 'electron-context-menu';
import packageJson from '../package.json' assert { type: 'json' };
const dirname = path.join(path.dirname(fileURLToPath(import.meta.url)));
let startIpfsError;
startIpfs.onError = (error) => {
@@ -16,6 +21,11 @@ startIpfs.onError = (error) => {
}
};
// send plebbit rpc auth key to renderer
const plebbitDataPath = !isDev ? EnvPaths('plebbit', { suffix: false }).data : path.join(dirname, '..', '.plebbit');
const plebbitRpcAuthKey = fs.readFileSync(path.join(plebbitDataPath, 'auth-key'), 'utf8');
ipcMain.on('get-plebbit-rpc-auth-key', (event) => event.reply('plebbit-rpc-auth-key', plebbitRpcAuthKey));
// use common user agent instead of electron so img, video, audio, iframe elements don't get blocked
// https://www.whatismybrowser.com/guides/the-latest-version/chrome
// https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome
@@ -23,10 +33,9 @@ startIpfs.onError = (error) => {
let fakeUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36';
if (process.platform === 'darwin') fakeUserAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36';
if (process.platform === 'linux') fakeUserAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36';
const realUserAgent = `plebchan/${require('../package.json').version}`;
const realUserAgent = `plebchan/${packageJson.version}`;
// add right click menu
const contextMenu = require('electron-context-menu');
contextMenu({
// prepend custom buttons to top
prepend: (defaultActions, parameters, browserWindow) => [
@@ -63,13 +72,13 @@ const createMainWindow = () => {
width: 1000,
height: 600,
show: false,
backgroundColor: '#fffee',
backgroundColor: nativeTheme.shouldUseDarkColors ? '#000000' : '#ffffff',
webPreferences: {
webSecurity: true, // must be true or iframe embeds like youtube can do remote code execution
nodeIntegration: false,
contextIsolation: true,
devTools: true, // TODO: change to isDev when no bugs left
preload: path.join(__dirname, 'preload.js'),
preload: path.join(dirname, 'preload.js'),
},
});
@@ -115,7 +124,7 @@ const createMainWindow = () => {
callback({ responseHeaders: details.responseHeaders });
});
const startURL = isDev ? 'http://localhost:3000' : `file://${path.join(__dirname, '../build/index.html')}`;
const startURL = isDev ? 'http://localhost:3000' : `file://${path.join(dirname, '../build/index.html')}`;
mainWindow.loadURL(startURL);
@@ -219,7 +228,7 @@ const createMainWindow = () => {
if (process.platform !== 'darwin') {
// tray
const trayIconPath = path.join(__dirname, '..', isDev ? 'public' : 'build', 'electron-tray-icon.png');
const trayIconPath = path.join(dirname, '..', isDev ? 'public' : 'build', 'electron-tray-icon.png');
const tray = new Tray(trayIconPath);
tray.setToolTip('plebchan');
const trayMenu = Menu.buildFromTemplate([
+5 -3
View File
@@ -1,4 +1,4 @@
const { contextBridge } = require('electron');
const { contextBridge, ipcRenderer } = require('electron');
// dev uses http://localhost, prod uses file://...index.html
const isDev = window.location.protocol === 'http:';
@@ -8,9 +8,11 @@ const defaultPlebbitOptions = {
};
contextBridge.exposeInMainWorld('defaultPlebbitOptions', defaultPlebbitOptions);
contextBridge.exposeInMainWorld('defaultMediaIpfsGatewayUrl', 'http://localhost:6473');
// expose a flag to indicate that we are running in electron
contextBridge.exposeInMainWorld('electron', { isElectron: true });
// receive plebbit rpc auth key from main
ipcRenderer.on('plebbit-rpc-auth-key', (event, plebbitRpcAuthKey) => contextBridge.exposeInMainWorld('plebbitRpcAuthKey', plebbitRpcAuthKey));
ipcRenderer.send('get-plebbit-rpc-auth-key');
// uncomment for logs
// localStorage.debug = 'plebbit-js:*,plebbit-react-hooks:*,plebchan:*'
+3 -3
View File
@@ -1,7 +1,7 @@
// use this proxy server to debug ipfs api requests made by electron
const http = require('http');
const httpProxy = require('http-proxy');
import http from 'http';
import httpProxy from 'http-proxy';
// start proxy
const proxy = httpProxy.createProxyServer({});
@@ -45,4 +45,4 @@ const start = ({ proxyPort, targetPort } = {}) => {
console.log(`proxy server listening on port ${proxyPort}`);
};
module.exports = { start };
export default { start };
+19 -11
View File
@@ -1,11 +1,14 @@
const isDev = require('electron-is-dev');
const path = require('path');
const { spawn } = require('child_process');
const fs = require('fs-extra');
const envPaths = require('env-paths').default('plebbit', { suffix: false });
const ps = require('node:process');
const proxyServer = require('./proxy-server');
const tcpPortUsed = require('tcp-port-used');
import isDev from 'electron-is-dev';
import path from 'path';
import { spawn } from 'child_process';
import fs from 'fs-extra';
import ps from 'node:process';
import proxyServer from './proxy-server.js';
import tcpPortUsed from 'tcp-port-used';
import EnvPaths from 'env-paths';
import { fileURLToPath } from 'url';
const dirname = path.join(path.dirname(fileURLToPath(import.meta.url)));
const envPaths = EnvPaths('plebbit', { suffix: false });
// use this custom function instead of spawnSync for better logging
// also spawnSync might have been causing crash on start on windows
@@ -37,8 +40,8 @@ const startIpfs = async () => {
if (process.platform === 'darwin') {
binFolderName = 'mac';
}
ipfsPath = path.join(__dirname, '..', 'bin', binFolderName, ipfsFileName);
ipfsDataPath = path.join(__dirname, '..', '.plebbit', 'ipfs');
ipfsPath = path.join(dirname, '..', 'bin', binFolderName, ipfsFileName);
ipfsDataPath = path.join(dirname, '..', '.plebbit', 'ipfs');
}
if (!fs.existsSync(ipfsPath)) {
@@ -104,6 +107,8 @@ const startIpfs = async () => {
});
};
const DefaultExport = {};
let pendingStart = false;
const start = async () => {
if (pendingStart) {
@@ -120,7 +125,7 @@ const start = async () => {
console.log('failed starting ipfs', e);
try {
// try to run exported onError callback, can be undefined
module.exports.onError(e)?.catch?.(console.log);
DefaultExport.onError(e)?.catch?.(console.log);
} catch (e) {}
}
pendingStart = false;
@@ -132,3 +137,6 @@ start();
setInterval(() => {
start();
}, 1000);
DefaultExport.start = start;
export default DefaultExport;
+12 -13
View File
@@ -1,20 +1,19 @@
const tcpPortUsed = require('tcp-port-used');
const { PlebbitWsServer } = require('@plebbit/plebbit-js/rpc');
const path = require('path');
const envPaths = require('env-paths').default('plebbit', { suffix: false });
const { randomBytes } = require('crypto');
const fs = require('fs-extra');
let isDev = true;
try {
isDev = require('electron-is-dev');
} catch (e) {}
import tcpPortUsed from 'tcp-port-used';
import EnvPaths from 'env-paths';
import { randomBytes } from 'crypto';
import fs from 'fs-extra';
import PlebbitRpc from '@plebbit/plebbit-js/dist/node/rpc/src/index.js';
import path from 'path';
import { fileURLToPath } from 'url';
import isDev from 'electron-is-dev';
const dirname = path.join(path.dirname(fileURLToPath(import.meta.url)));
const envPaths = EnvPaths('plebbit', { suffix: false });
// PLEB, always run plebbit rpc on this port so all clients can use it
const port = 9138;
const defaultPlebbitOptions = {
// find the user's OS data path
dataPath: !isDev ? envPaths.data : path.join(__dirname, '..', '.plebbit'),
dataPath: !isDev ? envPaths.data : path.join(dirname, '..', '.plebbit'),
ipfsHttpClientsOptions: ['http://localhost:5001/api/v0'],
// TODO: having to define pubsubHttpClientsOptions and ipfsHttpClientsOptions is a bug with plebbit-js
pubsubHttpClientsOptions: ['http://localhost:5001/api/v0'],
@@ -42,7 +41,7 @@ const start = async () => {
if (started) {
return;
}
const plebbitWebSocketServer = await PlebbitWsServer({ port, plebbitOptions: defaultPlebbitOptions, authKey: plebbitRpcAuthKey });
const plebbitWebSocketServer = await PlebbitRpc.PlebbitWsServer({ port, plebbitOptions: defaultPlebbitOptions, authKey: plebbitRpcAuthKey });
console.log(`plebbit rpc: listening on ws://localhost:${port} (local connections only)`);
console.log(`plebbit rpc: listening on ws://localhost:${port}/${plebbitRpcAuthKey} (secret auth key for remote connections)`);
+4 -3
View File
@@ -1,7 +1,8 @@
{
"name": "plebchan",
"version": "0.1.17",
"version": "0.2.1",
"description": "A GUI for plebbit similar to 4chan",
"type": "module",
"author": "plebeius.eth",
"private": true,
"dependencies": {
@@ -93,8 +94,8 @@
"cross-env": "7.0.3",
"cz-conventional-changelog": "3.3.0",
"decompress": "4.2.1",
"electron": "19.1.8",
"electron-builder": "23.0.9",
"electron": "28.2.3",
"electron-builder": "24.13.2",
"husky": "4.3.8",
"lint-staged": "12.3.8",
"wait-on": "7.0.1"
+5 -3
View File
@@ -1,6 +1,8 @@
const {execSync} = require('child_process')
const path = require('path')
const conventionalChangelog = path.join('node_modules', '.bin', 'conventional-changelog')
import {execSync} from 'child_process'
import path from 'path'
import {fileURLToPath} from 'url'
const dirname = path.join(path.dirname(fileURLToPath(import.meta.url)))
const conventionalChangelog = path.join(dirname, '..', 'node_modules', '.bin', 'conventional-changelog')
// sometimes release-count 1 is empty
let releaseChangelog =
@@ -2,13 +2,12 @@ import { useTranslation } from 'react-i18next';
import { Link, useLocation, useNavigate, useParams } from 'react-router-dom';
import { useAccountComment, useSubscribe } from '@plebbit/plebbit-react-hooks';
import { isAllView, isCatalogView, isPendingPostView, isPostPageView, isSubscriptionsView } from '../../lib/utils/view-utils';
import useSortingStore from '../../stores/use-sorting-store';
import useCatalogStyleStore from '../../stores/use-catalog-style-store';
import useFeedResetStore from '../../stores/use-feed-reset-store';
import useSortingStore from '../../stores/use-sorting-store';
import useTimeFilter from '../../hooks/use-time-filter';
import CatalogFilters from '../../views/catalog/catalog-filters/';
import styles from './board-buttons.module.css';
import useCatalogFiltersStore from '../../stores/use-catalog-filters-store';
import useCatalogStyleStore from '../../stores/use-catalog-style-store';
interface BoardButtonsProps {
address?: string | undefined;
+1 -1
View File
@@ -10,7 +10,7 @@ const totalBanners = 59;
const ImageBanner = () => {
const [imagePath] = useState(() => {
const randomBannerIndex = Math.floor(Math.random() * totalBanners) + 1;
return `/assets/banners/banner-${randomBannerIndex}.jpg`;
return `assets/banners/banner-${randomBannerIndex}.jpg`;
});
return <img src={imagePath} alt='' />;
+2 -2
View File
@@ -86,7 +86,7 @@ export const CatalogPostMedia = ({ commentMediaInfo, isOutOfFeed, linkWidth, lin
return (
<div className={hasError ? '' : styles.mediaWrapper} style={CSSProperties}>
{!isLoaded && !hasError && type !== 'video' && type !== 'audio' && <span className={styles.loadingSkeleton} />}
{hasError ? <img className={styles.fileDeleted} src='/assets/filedeleted-res.gif' alt='' /> : thumbnailComponent}
{hasError ? <img className={styles.fileDeleted} src='assets/filedeleted-res.gif' alt='' /> : thumbnailComponent}
</div>
);
};
@@ -223,7 +223,7 @@ const CatalogPost = ({ post }: { post: Comment }) => {
>
{threadIcons}
{spoiler ? (
<img src='/assets/spoiler.png' alt='' />
<img src='assets/spoiler.png' alt='' />
) : (
<CatalogPostMedia commentMediaInfo={commentMediaInfo} isOutOfFeed={isDescription || isRules} linkWidth={linkWidth} linkHeight={linkHeight} />
)}
@@ -7,7 +7,6 @@ import { getHostname } from '../../lib/utils/url-utils';
import useFetchGifFirstFrame from '../../hooks/use-fetch-gif-first-frame';
import useIsMobile from '../../hooks/use-is-mobile';
import Embed, { canEmbed } from '../embed';
import _ from 'lodash';
interface MediaProps {
commentMediaInfo?: CommentMediaInfo;
@@ -79,9 +78,9 @@ const Thumbnail = ({ commentMediaInfo, isFloatingEmbed, post, setShowThumbnail }
const linkWithoutThumbnail = url && new URL(url);
return hasError || isDeleted ? (
<img className={styles.fileDeleted} src='/assets/filedeleted-res.gif' alt='File deleted' />
<img className={styles.fileDeleted} src='assets/filedeleted-res.gif' alt='File deleted' />
) : spoiler ? (
<img className={styles.spoiler} src='/assets/spoiler.png' alt='' onClick={() => setShowThumbnail(false)} />
<img className={styles.spoiler} src='assets/spoiler.png' alt='' onClick={() => setShowThumbnail(false)} />
) : isOutOfFeed ? (
<span className={`${isFloatingEmbed ? styles.floatingEmbed : styles.subplebbitAvatar}`}>{thumbnailComponent}</span>
) : isMobile || isReply ? (
+7 -13
View File
@@ -86,12 +86,12 @@ const PostInfo = ({ openReplyModal, post, roles, isHidden }: PostProps) => {
)}
{pinned && (
<span className={`${styles.stickyIconWrapper} ${!locked && styles.addPaddingBeforeReply}`}>
<img src='/assets/icons/sticky.gif' alt='' className={styles.stickyIcon} title={t('sticky')} />
<img src='assets/icons/sticky.gif' alt='' className={styles.stickyIcon} title={t('sticky')} />
</span>
)}
{locked && (
<span className={`${styles.closedIconWrapper} ${styles.addPaddingBeforeReply} ${pinned && styles.addPaddingInBetween}`}>
<img src='/assets/icons/closed.gif' alt='' className={styles.closedIcon} title={t('closed')} />
<img src='assets/icons/closed.gif' alt='' className={styles.closedIcon} title={t('closed')} />
</span>
)}
{!isInPostView && !isReply && !isHidden && (
@@ -163,12 +163,11 @@ const PostMedia = ({ post }: PostProps) => {
};
const PostMessage = ({ post }: PostProps) => {
const { cid, deleted, edit, original, parentCid, postCid, reason, removed, spoiler, state, subplebbitAddress } = post || {};
const { cid, content, deleted, edit, original, parentCid, postCid, reason, removed, spoiler, state, subplebbitAddress } = post || {};
const { t } = useTranslation();
const params = useParams();
const location = useLocation();
const isInPostView = isPostPageView(location.pathname, params);
const [content, setContent] = useState(post?.content);
const [showOriginal, setShowOriginal] = useState(false);
const displayContent = content && !isInPostView && content.length > 1000 ? content?.slice(0, 1000) + '(...)' : content;
@@ -193,19 +192,14 @@ const PostMessage = ({ post }: PostProps) => {
<span className={styles.deletedContent}>{t('user_deleted_this_post')}</span>
) : (
<>
<Markdown content={displayContent} spoiler={spoiler} />
{!showOriginal && <Markdown content={displayContent} spoiler={spoiler} />}
{edit && original?.content !== post?.content && (
<span className={styles.editedInfo}>
{showOriginal && <Markdown content={original?.content} />}
<br />
(Edited at {getFormattedDate(edit?.timestamp)},{' '}
<span
className={styles.showOriginal}
onClick={() => {
setContent(showOriginal ? post?.content : original?.content);
setShowOriginal(!showOriginal);
}}
>
show {showOriginal ? 'edited' : 'original'}
<span className={styles.showOriginal} onClick={() => setShowOriginal(!showOriginal)}>
{showOriginal ? 'hide original' : 'show original'}
</span>
)
</span>
+7 -13
View File
@@ -58,12 +58,12 @@ const PostInfoAndMedia = ({ openReplyModal, post, roles }: PostProps) => {
{!(isDescription || isRules) && <span className={styles.address}>(u/{shortAddress || accountShortAddress})</span>}
{pinned && (
<span className={styles.stickyIconWrapper}>
<img src='/assets/icons/sticky.gif' alt='' className={styles.stickyIcon} title={t('sticky')} />
<img src='assets/icons/sticky.gif' alt='' className={styles.stickyIcon} title={t('sticky')} />
</span>
)}
{locked && (
<span className={`${styles.closedIconWrapper} ${pinned && styles.addPaddingInBetween}`}>
<img src='/assets/icons/closed.gif' alt='' className={styles.closedIcon} title={t('closed')} />
<img src='assets/icons/closed.gif' alt='' className={styles.closedIcon} title={t('closed')} />
</span>
)}
{title && (
@@ -119,8 +119,7 @@ const ReplyBacklinks = ({ post }: PostProps) => {
const PostMessageMobile = ({ post }: PostProps) => {
const { t } = useTranslation();
const { cid, deleted, edit, original, parentCid, postCid, reason, removed, spoiler, state, subplebbitAddress } = post || {};
const [content, setContent] = useState(post?.content);
const { cid, content, deleted, edit, original, parentCid, postCid, reason, removed, spoiler, state, subplebbitAddress } = post || {};
const [showOriginal, setShowOriginal] = useState(false);
const params = useParams();
@@ -150,19 +149,14 @@ const PostMessageMobile = ({ post }: PostProps) => {
<span className={styles.removedContent}>{t('user_deleted_this_post')}</span>
) : (
<>
<Markdown content={displayContent} spoiler={spoiler} />
{!showOriginal && <Markdown content={displayContent} spoiler={spoiler} />}
{edit && original?.content !== post?.content && (
<span className={styles.editedInfo}>
{showOriginal && <Markdown content={original?.content} />}
<br />
(Edited at {getFormattedDate(edit?.timestamp)},{' '}
<span
className={styles.showOriginal}
onClick={() => {
setContent(showOriginal ? post?.content : original?.content);
setShowOriginal(!showOriginal);
}}
>
show {showOriginal ? 'edited' : 'original'}
<span className={styles.showOriginal} onClick={() => setShowOriginal(!showOriginal)}>
{showOriginal ? 'hide original' : 'show original'}
</span>
)
</span>
+6 -2
View File
@@ -2,7 +2,7 @@ import { useState, useEffect } from 'react';
import { useLocation, useParams } from 'react-router-dom';
import { isAllView, isSubscriptionsView } from '../lib/utils/view-utils';
import useThemeStore from '../stores/use-theme-store';
import determineInitialTheme from './use-initial-theme';
import useInitialTheme from './use-initial-theme';
const useTheme = (): [string, (theme: string) => void] => {
const location = useLocation();
@@ -20,14 +20,18 @@ const useTheme = (): [string, (theme: string) => void] => {
load();
}, [loadThemes]);
const initialTheme = determineInitialTheme();
const initialTheme = useInitialTheme();
const [theme, setLocalTheme] = useState(initialTheme);
useEffect(() => {
const previousTheme = document.body.className;
document.body.classList.add(initialTheme);
return () => {
document.body.classList.remove(initialTheme);
if (previousTheme) {
document.body.classList.add(previousTheme);
}
};
}, [initialTheme]);
+1 -1
View File
@@ -68,7 +68,7 @@ const useFeedRows = (columnCount: number, feed: any, isFeedLoaded: boolean, subp
});
}
return _feed;
}, [feed, description, rules, address, isFeedLoaded, createdAt, title, shortAddress, avatarUrl, t, isInAllView, multisub]);
}, [feed, description, rules, address, isFeedLoaded, createdAt, title, shortAddress, avatarUrl, t, isInAllView, multisub, showTextOnlyThreads, suggested?.avatarUrl]);
const rows = useMemo(() => {
const rows = [];
+1 -1
View File
@@ -204,7 +204,7 @@ export const HomeLogo = () => {
return (
<Link to='/'>
<div className={styles.logo}>
<img alt='' src='/assets/logo/logo-transparent.png' />
<img alt='' src='assets/logo/logo-transparent.png' />
</div>
</Link>
);
+1 -1
View File
@@ -9,7 +9,7 @@ const totalNotFoundImages = 2;
const NotFoundImage = () => {
const [imagePath] = useState(() => {
const randomBannerIndex = Math.floor(Math.random() * totalNotFoundImages) + 1;
return `/assets/not-found/not-found-${randomBannerIndex}.jpg`;
return `assets/not-found/not-found-${randomBannerIndex}.jpg`;
});
return <img src={imagePath} alt='' />;
+306 -595
View File
File diff suppressed because it is too large Load Diff