Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
b56d3fa
Show the emoji shortcode in statuses when hovering, like Mastodon's n…
VirtualWolf Feb 25, 2025
e8de540
i18n updates (kab) (#1101)
cheeaun Mar 24, 2025
d608ee0
i18n updates (pl-PL) (#1102)
cheeaun Mar 26, 2025
7d8689b
i18n updates (ar-SA,pl-PL) (#1103)
cheeaun Apr 2, 2025
eb9f45c
Update README.md
github-actions[bot] Apr 6, 2025
da89b8c
Upgrade deps
cheeaun Apr 8, 2025
19e3912
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,eu-ES,fr-FR,pl-PL) (#1109)
cheeaun Apr 8, 2025
dfab372
i18n updates (fi-FI,gl-ES) (#1112)
cheeaun Apr 8, 2025
3032ac3
i18n updates (es-ES,pt-BR,pt-PT) (#1114)
cheeaun Apr 8, 2025
51260b6
i18n updates (it-IT,ru-RU) (#1115)
cheeaun Apr 9, 2025
cf27553
i18n updates (kab,pl-PL,zh-CN) (#1116)
cheeaun Apr 10, 2025
75a35b7
Initial support for API Versions
cheeaun Apr 8, 2025
ed41d4c
Initial work on 'blur' filter for posts
cheeaun Apr 9, 2025
2bce5d4
Handle more filter context for notifications
cheeaun Apr 9, 2025
937165e
Locale changes
cheeaun Apr 9, 2025
68bb3f2
Fix conflict between "always show media" vs blur filter
cheeaun Apr 9, 2025
db0ff83
Unfilter 'warn'-filtered posts
cheeaun Apr 10, 2025
9a706fd
Unfurl wafrn links
cheeaun Apr 13, 2025
ec4607a
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,eu-ES,fi-FI,fr-FR,he-IL,p…
cheeaun Apr 14, 2025
c149897
i18n updates (ca-ES,gl-ES,it-IT,pt-BR,pt-PT,zh-CN) (#1120)
cheeaun Apr 15, 2025
97384b5
Handle case when previewUrl is a video instead of thumbnail image
cheeaun Apr 16, 2025
c96bf47
Better scroll paddings
cheeaun Apr 16, 2025
9bec44b
Upgrade react-hotkeys-hooks
cheeaun Apr 16, 2025
80bddf1
Forgot prettier
cheeaun Apr 16, 2025
71e8d42
Fix unapplied styles
cheeaun Apr 16, 2025
0c9bf17
Merge branch 'cheeaun:main' into main
VirtualWolf Apr 17, 2025
ea2829d
Merge pull request #1064 from VirtualWolf/main
cheeaun Apr 17, 2025
c414993
i18n updates (eo-UY,es-ES,zh-TW) (#1122)
cheeaun Apr 18, 2025
b9fcd4d
DRY this part
cheeaun Apr 17, 2025
e45b4a8
Add "Copy post text" menu
cheeaun Apr 18, 2025
4719e2c
Forgot to add this
cheeaun Apr 19, 2025
e87f777
It's time for keyboard-layout-dependant shortcuts
cheeaun Apr 19, 2025
e5f8baa
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,eu-ES,fi-FI,fr-FR,he-IL,i…
cheeaun Apr 19, 2025
5d70a8b
i18n updates (fr-FR) (#1124)
cheeaun Apr 19, 2025
bcfd1ee
i18n updates (fi-FI,fr-FR,ru-RU,zh-CN) (#1125)
cheeaun Apr 19, 2025
61edf3d
Update supported languages
cheeaun Apr 19, 2025
75556b3
Move percentage threshold to build time
cheeaun Apr 20, 2025
de83092
Move percentage threshold to build time
cheeaun Apr 20, 2025
e586b77
Time to migrate away from Lingva
cheeaun Apr 21, 2025
0c2d125
Add SECURITY.md
cheeaun Apr 21, 2025
d1b3341
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fa-IR,fi-FI,f…
cheeaun Apr 22, 2025
76cf8d4
New translations (Catalan)
cheeaun Apr 22, 2025
ef4d43a
New translations (Russian)
cheeaun Apr 22, 2025
eec5830
New translations (Catalan)
cheeaun Apr 24, 2025
6ccd004
New translations (Catalan)
cheeaun Apr 24, 2025
295bb9b
New translations (Italian)
cheeaun Apr 24, 2025
ae05968
Fix target languages bug
cheeaun Apr 25, 2025
b01a3b2
Upgrade deps
cheeaun Apr 25, 2025
995190b
More doc changes for Lingva/TransLang
cheeaun Apr 25, 2025
c75a2bf
Merge pull request #1127 from cheeaun/l10n_main
cheeaun Apr 26, 2025
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
3 changes: 2 additions & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
PHANPY_CLIENT_NAME=Phanpy
PHANPY_WEBSITE=https://phanpy.social
PHANPY_LINGVA_INSTANCES="lingva.phanpy.social lingva.lunar.icu lingva.garudalinux.org translate.plausibility.cloud"
PHANPY_PRIVACY_POLICY_URL="https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD"
PHANPY_PRIVACY_POLICY_URL="https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD"
PHANPY_TRANSLANG_INSTANCES="translang.phanpy.social"
2 changes: 1 addition & 1 deletion PRIVACY.MD
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Phanpy is hosted on [Cloudflare Pages](https://pages.cloudflare.com/) as a stati

## Translations

Phanpy uses [Lingva API](https://github.com/cheeaun/lingva-api) and [Lingva Translate](https://github.com/thedaviddelta/lingva-translate) as fallbacks for translating post content, profile bio and media description.
Phanpy uses [TransLang API](https://github.com/cheeaun/translang-api) for translating post content, profile bio and media description. Read more about [TransLang API's privacy policy](https://github.com/cheeaun/translang-api/blob/main/PRIVACY.md).

## Error logging

Expand Down
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -238,11 +238,15 @@ Available variables:
- This is applied with the `<meta>` tag on the client-side.
- The policy can also be set with `Referrer-Policy` header configured on the server-side (not this variable).
- Note that since Phanpy uses hash-based URLs, the referrer does not include the hash part.
- `PHANPY_LINGVA_INSTANCES` (optional, space-separated list, default: `lingva.phanpy.social [...hard-coded list of fallback instances]`):
- `PHANPY_LINGVA_INSTANCES` (**DEPRECATED**, optional, space-separated list, default: `lingva.phanpy.social [...hard-coded list of fallback instances]`):
- Specify a space-separated list of instances. First will be used as default before falling back to the subsequent instances. If there's only 1 instance, means no fallback.
- May specify a self-hosted Lingva instance, powered by either [lingva-translate](https://github.com/thedaviddelta/lingva-translate) or [lingva-api](https://github.com/cheeaun/lingva-api)
- List of fallback instances hard-coded in `/.env`
- [↗️ List of lingva-translate instances](https://github.com/thedaviddelta/lingva-translate?tab=readme-ov-file#instances)
- `PHANPY_TRANSLANG_INSTANCES` (optional, space-separated list, default: `translang.phanpy.social`):
- Specify a space-separated list of instances. First will be used as default before falling back to the subsequent instances. If there's only 1 instance, means no fallback.
- May specify a self-hosted Translating instance, powered by [translang-api](https://github.com/cheeaun/translang-api).
- List of instances hard-coded in `/.env`
- `PHANPY_IMG_ALT_API_URL` (optional, no defaults):
- API endpoint for self-hosted instance of [img-alt-api](https://github.com/cheeaun/img-alt-api).
- If provided, a setting will appear for users to enable the image description generator in the composer. Disabled by default.
Expand All @@ -257,7 +261,11 @@ Try online search for "how to self-host static sites" as there are many ways to

#### Lingva-translate or lingva-api hosting

See documentation for [lingva-translate](https://github.com/thedaviddelta/lingva-translate) or [lingva-api](https://github.com/cheeaun/lingva-api).
⚠️ **DEPRECATED**. See documentation for [lingva-translate](https://github.com/thedaviddelta/lingva-translate) or [lingva-api](https://github.com/cheeaun/lingva-api).

#### Translang API hosting

See documentation for [translang-api](https://github.com/cheeaun/translang-api).

## Community deployments

Expand Down Expand Up @@ -370,6 +378,7 @@ Costs involved in running and developing this web app:
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/15982109/medium/9c03062bdc1d3c6d384dbfead97c26ba.jpeg" alt="" width="16" height="16" /> xabi_itzultzaile (Basque)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/16556017/medium/216e0f7a0c35b079920366939a3aaca7_default.png" alt="" width="16" height="16" /> xen4n (Ukrainian)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/16532657/medium/f309f319266e1ff95f3070eab0c9a9d9_default.png" alt="" width="16" height="16" /> xqueralt (Catalan)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/14360216/medium/7e48473691456fce95e1be687045377c.jpeg" alt="" width="16" height="16" /> Zet24 (Arabic)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/14041603/medium/6ab77a0467b06aeb49927c6d9c409f89.jpg" alt="" width="16" height="16" /> ZiriSut (Kabyle)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/16530601/medium/e1b6d5c24953b6405405c1ab33c0fa46.jpeg" alt="" width="16" height="16" /> zkreml (Czech)
<!-- i18n volunteers end -->
Expand Down
40 changes: 40 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Security Policy

## Supported Versions
Only the **latest production release** of Phanpy receives security updates. Always update to the newest production version for the best protection.

## Reporting a Vulnerability

**Please don’t discuss security issues in public GitHub issues.** Instead:

1. **GitHub Private Reporting** (preferred):
- Click ["Report a vulnerability"](https://github.com/cheeaun/phanpy/security/advisories/new) under the **Security** tab.
2. **Email**:
- Reach out to me directly at cheeaun@gmail.com

**Include**:
- Steps to reproduce the issue
- Which parts of Phanpy are affected
- How severe you think the impact could be

## Disclosure Policy

**Heads up:** I’m a solo maintainer working on Phanpy in my free time. While I take security seriously, I can’t promise enterprise-grade response times. Here’s how I’ll handle reports:

1. **Confirmation**: I’ll acknowledge reports when possible, but this might take weeks due to limited availability.
2. **Fixing**: Critical bugs will be prioritized, but fixes may take significant time. If it’s urgent, feel free to follow up.
3. **Public Disclosure**: Patched vulnerabilities will be disclosed once the fix is confirmed stable and most users have updated.

## Security Practices

### For Users

- Use Phanpy with a Mastodon instance that enforces **HTTPS**.
- Treat OAuth tokens like passwords – don’t share them!

### For Developers

- **Dependencies**: GitHub Dependabot alerts are enabled for vulnerability monitoring.
- **Code**:
- Basic input sanitization to prevent XSS.
- *Planned*: Improvements to client-side storage security (contributions welcome!).
Loading