Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
8d61bab
Possible fix for YIP exit too early
cheeaun Jan 8, 2026
0d4da31
Group mention+quote notification
cheeaun Jan 8, 2026
8e55e68
i18n updates (de-DE) (#1409)
cheeaun Jan 9, 2026
11f426b
Update README.md
github-actions[bot] Jan 11, 2026
97a3638
i18n updates (de-DE,pl-PL) (#1410)
cheeaun Jan 11, 2026
2cd3eac
Prevent flicker
cheeaun Jan 10, 2026
7baeffa
Add legend for YIP
cheeaun Jan 12, 2026
8a2ebe7
Source maps for rollbar
cheeaun Jan 12, 2026
f1ebbfb
Better icons consistency
cheeaun Jan 12, 2026
47ff705
Show pencil if post is edited
cheeaun Jan 12, 2026
9fb2a3c
Prevent enter in CW field
cheeaun Jan 12, 2026
61e9d9b
My formatter conflicted
cheeaun Jan 12, 2026
a133de7
Trying this rollbar stuff if it works
cheeaun Jan 12, 2026
85f373a
Slightly better text size control
cheeaun Jan 13, 2026
ebbacb6
Try again without globs
cheeaun Jan 13, 2026
1360544
More fixes
cheeaun Jan 13, 2026
f078cf4
Try node 24
cheeaun Jan 13, 2026
ddc1045
Only run on own repo
cheeaun Jan 13, 2026
479a9f9
Upgrade the actions, and npm used
cheeaun Jan 13, 2026
e3f2760
Fix wrong changelog
cheeaun Jan 13, 2026
ed50226
Don't unfurl if not URL
cheeaun Jan 14, 2026
eb7d5da
Fix handling admin.sign_up (grouped) notification
cheeaun Jan 15, 2026
d2eea75
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fa-IR,fi-FI,f…
cheeaun Jan 15, 2026
3e2c8a2
Out-of-band hashtags
cheeaun Jan 16, 2026
b4003e0
i18n updates (ca-ES,es-ES,gl-ES,it-IT) (#1415)
cheeaun Jan 16, 2026
60ddb51
Upgrade deps
cheeaun Jan 19, 2026
189fc18
Fix keyboard shortcuts not working after upgrade react-hotkeys-hook
cheeaun Jan 20, 2026
1dd27d6
'o' for open media
cheeaun Jan 20, 2026
3237d66
Add few more go sequence keys
cheeaun Jan 20, 2026
8fde66c
Fix the o shortcut not working as expected
cheeaun Jan 20, 2026
64dd629
Remove overscroll-behavior
cheeaun Jan 20, 2026
175a37f
Fix formatting
cheeaun Jan 20, 2026
2046f32
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fa-IR,fi-FI,f…
cheeaun Jan 20, 2026
50ed0d0
i18n updates (es-ES,fi-FI,gl-ES,zh-CN) (#1417)
cheeaun Jan 21, 2026
903be2b
Poll improvements
cheeaun Jan 22, 2026
1593213
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,eu-ES,fi-FI,fr-FR,he-IL,i…
cheeaun Jan 22, 2026
c3e126d
Try fix perf for super long polls
cheeaun Jan 23, 2026
0cb1102
Another attempt for perf
cheeaun Jan 23, 2026
c8d6c51
Only need perf when truncated
cheeaun Jan 23, 2026
84db074
Batch render long polls
cheeaun Jan 23, 2026
67d221b
Make sure there's height
cheeaun Jan 23, 2026
a81265d
i18n updates (es-ES,fi-FI,gl-ES,it-IT) (#1421)
cheeaun Jan 23, 2026
102b48d
New landing page design
cheeaun Jan 29, 2026
34106bc
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fa-IR,fi-FI,f…
cheeaun Jan 29, 2026
05bf6ff
Fix crash on Mobile Safari
cheeaun Jan 29, 2026
a7a6b13
Time to s/instance/server
cheeaun Jan 29, 2026
45dc045
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,eu-ES,fi-FI,fr-FR,he-IL,i…
cheeaun Jan 29, 2026
ba19caa
i18n updates (es-ES,fi-FI) (#1426)
cheeaun Jan 29, 2026
ce9527d
i18n updates (gl-ES,tr-TR) (#1427)
cheeaun Jan 29, 2026
e9bce98
i18n updates (pl-PL) (#1429)
cheeaun Jan 29, 2026
b112ce1
Time for AuthRoute
cheeaun Jan 30, 2026
55685ec
Possible fix
cheeaun Jan 31, 2026
841f9ce
Use loose equality
cheeaun Jan 31, 2026
af53561
i18n updates (pt-BR) (#1430)
cheeaun Jan 31, 2026
8c9d303
Update README
cheeaun Jan 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .github/workflows/prodtag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
ref: production
# - run: git tag "`date +%Y.%m.%d`.`git rev-parse --short HEAD`" $(git rev-parse HEAD)
# - run: git push --tags
- uses: actions/setup-node@v3
- uses: actions/setup-node@v6
with:
node-version: 20
node-version: 24
cache: "npm"
- run: npm ci && npm run build
- run: cd dist && zip -r ../phanpy-dist.zip . && tar -czf ../phanpy-dist.tar.gz . && cd ..
- id: tag_name
Expand Down
73 changes: 73 additions & 0 deletions .github/workflows/rollbar-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Deploy to Rollbar

on:
push:
branches:
- main

jobs:
rollbar-deploy:
if: github.repository == 'cheeaun/phanpy'
concurrency:
group: rollbar-deploy
cancel-in-progress: true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Build
run: npm run build

- name: Get commit info
id: commit
run: |
COMMIT_HASH=$(git rev-parse --short HEAD)
echo "version=$COMMIT_HASH" >> $GITHUB_OUTPUT

- name: Gather source map paths
id: maps
run: |
set -e
# Find all .js.map files under dist and produce a space-separated list
SOURCE_MAPS=$(find dist -type f -name '*.js.map' -print | tr '\n' ' ' | sed -E 's/ $//' || true)
if [ -z "$SOURCE_MAPS" ]; then
echo "No source maps found under dist"
echo "source_maps=" >> $GITHUB_OUTPUT
echo "minified_urls=" >> $GITHUB_OUTPUT
exit 0
fi

# Derive minified URLs from each map file. Preserve path under `dist`.
HOST_BASE="https://dev.phanpy.social"
MINIFIED_URLS=""
for map_path in $SOURCE_MAPS; do
rel_path=${map_path#dist/}
minified_rel_path=${rel_path%.map}
if [ -z "$MINIFIED_URLS" ]; then
MINIFIED_URLS="$HOST_BASE/$minified_rel_path"
else
MINIFIED_URLS="$MINIFIED_URLS $HOST_BASE/$minified_rel_path"
fi
done

echo "source_maps=$SOURCE_MAPS" >> $GITHUB_OUTPUT
echo "minified_urls=$MINIFIED_URLS" >> $GITHUB_OUTPUT

- name: Deploy to Rollbar
uses: rollbar/github-deploy-action@2.1.2
env:
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
with:
environment: "development"
version: ${{ steps.commit.outputs.version }}
source_maps: ${{ steps.maps.outputs.source_maps }}
minified_urls: ${{ steps.maps.outputs.minified_urls }}
Comment thread Fixed
Comment on lines +10 to +73

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 5 months ago

To fix the problem, we should explicitly set the GITHUB_TOKEN permissions for this workflow/job to the minimum required. This workflow only needs to read the repository contents (for actions/checkout and to access the code being built). It does not create or modify issues, PRs, releases, or contents, so contents: read is sufficient.

The best fix is to add a permissions block at the job level under rollbar-deploy: so it applies only to this job without affecting any other jobs that might be added later. Concretely, in .github/workflows/rollbar-deploy.yml, insert:

    permissions:
      contents: read

indented to align with if:, concurrency:, and runs-on:. No additional imports or methods are needed because this is a configuration-only change.

Suggested changeset 1
.github/workflows/rollbar-deploy.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/rollbar-deploy.yml b/.github/workflows/rollbar-deploy.yml
--- a/.github/workflows/rollbar-deploy.yml
+++ b/.github/workflows/rollbar-deploy.yml
@@ -8,6 +8,8 @@
 jobs:
   rollbar-deploy:
     if: github.repository == 'cheeaun/phanpy'
+    permissions:
+      contents: read
     concurrency:
       group: rollbar-deploy
       cancel-in-progress: true
EOF
@@ -8,6 +8,8 @@
jobs:
rollbar-deploy:
if: github.repository == 'cheeaun/phanpy'
permissions:
contents: read
concurrency:
group: rollbar-deploy
cancel-in-progress: true
Copilot is powered by AI and may make mistakes. Always verify output.
Unable to commit as this autofix suggestion is now outdated
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,6 @@ src/locales/*.js
/playwright-report/
/blob-report/
/playwright/.cache/

# Generated mock screenshots
/mock-screenshots/
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ For non-Mastodon servers:

📢 https://mastodon.social/@cheeaun/113272683452140213

- 💬 5 new languages: Dutch, Esperanto, Galician, Italian, Japanese
- 💬 4 new languages: Dutch, Esperanto, Italian, Japanese
- 🐛 Bug fixes

Recap: Mastodon v4.3 features (https://github.com/mastodon/mastodon/releases/tag/v4.3.0) already supported on Phanpy:
Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ Users can change the language in the settings, which sets the `localStorage` key
- [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat) - e.g. "2 days ago", "in 2 days"
- [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) - e.g. "1,000", "10K"
- [`Intl.DisplayNames`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames) - e.g. "English" (`en`) in Traditional Chinese (`zh-Hant`) is "英文"
- [`Intl.ListFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat) - e.g. "A, B, and C"
- [`Intl.Locale`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) (with polyfill for older browsers)
- [`Intl.Segmenter`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter) (with polyfill for older browsers)

Expand Down Expand Up @@ -208,13 +209,17 @@ Two ways (choose one):

### Easy way

❌ NOT recommended.

Go to [Releases](https://github.com/cheeaun/phanpy/releases) and download the latest `phanpy-dist.zip` or `phanpy-dist.tar.gz`. It's pre-built so don't need to run any install/build commands. Extract it. Serve the folder of extracted files.

> [!IMPORTANT]
> Text translations connect to an **external service** (`translang.phanpy.social`).

### Custom-build way

✅ Recommended.

Requires [Node.js](https://nodejs.org/).

Download or `git clone` this repository. Use `production` branch for *stable* releases, `main` for *latest*. Build it by running `npm run build` (after `npm install`). Serve the `dist` folder.
Expand Down Expand Up @@ -336,6 +341,8 @@ These are self-hosted by other wonderful folks.

> Note: Add yours by creating a pull request.

There's also a mobile app wrapper by [@fantinel@hachyderm.io](https://hachyderm.io/@fantinel) called **iPhanpy**: https://github.com/matfantinel/iphanpy

## Costs

Costs involved in running and developing this web app:
Expand Down Expand Up @@ -402,6 +409,7 @@ Costs involved in running and developing this web app:
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/14158861/medium/ba1ff31dc5743b067ea6685f735229a5_default.png" alt="" width="16" height="16" /> MrWillCom (Chinese Simplified)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/15652333/medium/7f36f289f9e2fe41d89ad534a1047f0e.png" alt="" width="16" height="16" /> nclm (French)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/17450186/medium/6f5768f64963379c7ddfdccd53572c60.jpeg" alt="" width="16" height="16" /> NiklasA95 (German)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/17520602/medium/884e58f3a2e7c836f594759b9dee40bf_default.png" alt="" width="16" height="16" /> Nortix08 (German)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/15000639/medium/ebbf0bb7d5027a1903d11b7f5f34f65b.jpeg" alt="" width="16" height="16" /> nycterent (Lithuanian)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/16539461/medium/2f41b9f0b802c1d200a6ab62167a7229_default.png" alt="" width="16" height="16" /> pazpi (Italian)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/15399796/medium/d7fd8457394d2c795771b72396b75099.png" alt="" width="16" height="16" /> poesty (Chinese Simplified)
Expand Down Expand Up @@ -477,6 +485,7 @@ And here I am. Building a Mastodon web client.
- [Masto-FE (🦥 flavour)](https://masto-fe.superseriousbusiness.org)
- [pl-fe](https://pl.mkljczk.pl)
- [Mangane](https://github.com/BDX-town/Mangane)
- [Fedideck](https://fedideck.app/)
- [TheDesk](https://github.com/cutls/TheDesk) (archived)
- [More...](https://github.com/hueyy/awesome-mastodon/#clients)

Expand Down
Binary file modified design/logo.af
Binary file not shown.
Loading
Loading