Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
ecece9e
Update changelog
cheeaun Jul 18, 2025
2ebc362
i18n updates (eu-ES) (#1219)
cheeaun Jul 25, 2025
4ee0928
i18n updates (lt-LT) (#1220)
cheeaun Jul 27, 2025
dba7c45
Kinda fix Chrome Android not showing camera when tapping on camera bu…
cheeaun Jul 28, 2025
55c378b
Add 'Recent searches'
cheeaun Jul 28, 2025
a1481f6
Show roles more prominently
cheeaun Jul 29, 2025
ccdd873
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fi-FI,fr-FR,g…
cheeaun Jul 29, 2025
755a226
i18n updates (es-ES,it-IT,pt-BR,pt-PT,ru-RU) (#1224)
cheeaun Jul 29, 2025
a881d5d
Make emoji's static for all name text
cheeaun Jul 31, 2025
6493bb7
Prevent replying to self when start compose
cheeaun Jul 31, 2025
fcab026
Update copies for quote posts
cheeaun Jul 31, 2025
a3d1fcd
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fi-FI,fr-FR,g…
cheeaun Jul 31, 2025
c72ed90
Test only change button colors when has hover
cheeaun Jul 31, 2025
2ef3982
Upgrade deps
cheeaun Jul 31, 2025
a5ed98e
i18n updates (es-ES,fi-FI,gl-ES,pt-BR,pt-PT,zh-CN) (#1228)
cheeaun Aug 1, 2025
20cbc05
Set reporters for playwright
cheeaun Aug 1, 2025
5d77a66
Unit test for locale-match
cheeaun Aug 1, 2025
e31c780
Don't need upload-artifact
cheeaun Aug 1, 2025
d56cf4c
Add config to disallow robots
cheeaun Aug 3, 2025
bb6da7f
Prevent undefined from showing up
cheeaun Aug 3, 2025
994fcc3
i18n updates (eu-ES,pl-PL) (#1231)
cheeaun Aug 3, 2025
01db13b
Upgrade deps
cheeaun Aug 4, 2025
354d7d0
Finally proper pluralize this
cheeaun Aug 5, 2025
738c20e
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fa-IR,fi-FI,f…
cheeaun Aug 5, 2025
17b973c
New translations (Galician)
cheeaun Aug 5, 2025
c7386aa
New translations (Ukrainian)
cheeaun Aug 5, 2025
8e49152
Changed CWs on replies to be kept if content is sensitive OR if there…
VirtualWolf Aug 5, 2025
f065b64
New translations (Spanish)
cheeaun Aug 5, 2025
a9fc59e
New translations (Finnish)
cheeaun Aug 5, 2025
dd34cf1
Changed the Content Warning field to be shown based solely on whether…
VirtualWolf Aug 6, 2025
7f9dfa2
Merge pull request #1236 from VirtualWolf/main
cheeaun Aug 6, 2025
b0a42ac
Who shrank the stats?
cheeaun Aug 7, 2025
49c7524
Okay still need this
cheeaun Aug 7, 2025
551e105
Merge pull request #1234 from cheeaun/l10n_main
cheeaun Aug 7, 2025
fe1070d
Update README.md
github-actions[bot] Aug 10, 2025
ae0172e
Upgrade deps
cheeaun Aug 12, 2025
40ceff3
Downgrade Vite to v7.0.6
cheeaun Aug 15, 2025
a25b0ec
Test more localized date time format
cheeaun Aug 15, 2025
336dd89
Upgrade deps
cheeaun Aug 15, 2025
29ce925
Fix alignment in recent searches
cheeaun Aug 20, 2025
f97c69c
Rewrite niceDateTime, extract DateTimeFormat
cheeaun Aug 20, 2025
ccec126
Don't need to update locales on runtime
cheeaun Aug 20, 2025
9bd77a7
Expose function for debugging
cheeaun Aug 20, 2025
2cde572
DRY the gradients
cheeaun Aug 20, 2025
e768965
Prevent long blocking task and checkDifferentLanguage running twice
cheeaun Aug 20, 2025
ac3d670
Upgrade preact & valtio
cheeaun Aug 20, 2025
d7f1807
Upgrade vite-plugin-pwa
cheeaun Aug 20, 2025
5bf47bc
Fix date-time-format test
cheeaun Aug 20, 2025
a9d4ade
i18n updates (eu-ES,it-IT,pl-PL,ru-RU) (#1239)
cheeaun Aug 21, 2025
8a8b814
Refactor thread badge
cheeaun Aug 22, 2025
a106a16
Reduce diff noise for .po changes
cheeaun Aug 22, 2025
20d97b2
i18n updates (eu-ES,fr-FR,it-IT,pl-PL,ru-RU) (#1244)
cheeaun Aug 22, 2025
55745f5
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,fa-IR,fi-FI,gl-ES,he-IL,j…
cheeaun Aug 22, 2025
75b8f0c
Prioritize Intl's locale instead of navigator.languages
cheeaun Aug 23, 2025
57ee92c
Experiment showing X months/years later
cheeaun Aug 23, 2025
56a239e
Limit threads count total to 100
cheeaun Aug 23, 2025
a1b3e70
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,fi-FI,fr-FR,he-IL,ja-JP,k…
cheeaun Aug 23, 2025
f918094
Don't show endorsements inside account sheet
cheeaun Aug 23, 2025
7c1d463
i18n updates (es-ES,fr-FR) (#1247)
cheeaun Aug 23, 2025
7a1e518
i18n updates (fi-FI,ru-RU) (#1248)
cheeaun Aug 23, 2025
e161dea
i18n updates (eo-UY,es-ES) (#1249)
cheeaun Aug 23, 2025
a53aa52
Make SVG icons more accessible?
cheeaun Aug 24, 2025
b2515fd
Try fix "Uncompiled message detected" warnings from Lingui
cheeaun Aug 24, 2025
363f07b
Upgrade deps except vite
cheeaun Aug 24, 2025
e862c0e
i18n updates (gl-ES) (#1250)
cheeaun Aug 26, 2025
1318424
Use more Date.parse and Date.now
cheeaun Aug 25, 2025
2cd3f7a
Refactor RelativeTimeFormat
cheeaun Aug 25, 2025
f8e215a
Don't need to show role as account-block is showing it
cheeaun Aug 25, 2025
9ccbe24
Fix cache key for DIFFERENT_LANG_CHECK
cheeaun Aug 25, 2025
1a25b32
Refactor components from status
cheeaun Aug 25, 2025
1336b23
Refactor components from compose
cheeaun Aug 26, 2025
f9a813e
Refactor components from account-info
cheeaun Aug 26, 2025
a7bb3e4
Update instances list
cheeaun Aug 27, 2025
0128524
Make custom emoji picker work for poll fields
cheeaun Aug 27, 2025
9675676
Make custom emoji picker work for CW field
cheeaun Aug 28, 2025
6e6b2ec
Make text-expander work for CW & poll fields
cheeaun Aug 29, 2025
a7aba45
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fa-IR,fi-FI,f…
cheeaun Aug 30, 2025
eab0d85
Fix undefined current.style
cheeaun Aug 30, 2025
e84a0a2
Fix missing menus due to last refactor
cheeaun Sep 1, 2025
dca6643
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,fi-FI,fr-FR,he-IL,ja-JP,k…
cheeaun Sep 1, 2025
dbca3c5
i18n updates (fi-FI,gl-ES,kab) (#1254)
cheeaun Sep 1, 2025
fdc722f
Initial composer relayout
cheeaun Sep 2, 2025
e3f645d
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,eu-ES,fi-FI,fr-FR,gl-ES,h…
cheeaun Sep 2, 2025
ad4125a
Try fix form getting squashed on Mobile Safari
cheeaun Sep 2, 2025
f11edf3
Revert "Try fix form getting squashed on Mobile Safari"
cheeaun Sep 3, 2025
76676ff
Better fix
cheeaun Sep 3, 2025
4b06c67
Only focus on last focused element if there's nothing in focus
cheeaun Sep 3, 2025
fe8ae64
i18n updates (eo-UY,es-ES,fi-FI,gl-ES) (#1256)
cheeaun Sep 3, 2025
4462227
Focus on textarea when maximize from composer button
cheeaun Sep 3, 2025
1cb0d7d
Fix title not working on Bookmarks page
cheeaun Sep 3, 2025
26c9fb5
Experiment showing small title when nav/tab bars collapsed
cheeaun Sep 3, 2025
41a9f82
Mobile Safari PWA is being annoying
cheeaun Sep 3, 2025
5f2c076
Revert "Mobile Safari PWA is being annoying"
cheeaun Sep 3, 2025
b1ec5ab
Revert "Experiment showing small title when nav/tab bars collapsed"
cheeaun Sep 3, 2025
23e2f59
Experiment showing more text in cards
cheeaun Sep 4, 2025
117ac38
Clean up styles for textarea
cheeaun Sep 4, 2025
3d37d63
Upgrade deps except vite
cheeaun Sep 4, 2025
fce09e5
Quick fix CW not working
cheeaun Sep 4, 2025
a8f858a
i18n updates (ru-RU) (#1258)
cheeaun Sep 5, 2025
f7a3fc7
i18n updates (es-ES) (#1259)
cheeaun Sep 7, 2025
870ae4f
Add reset scroll direction
cheeaun Sep 5, 2025
b614116
Try fix br hiding in .quote-inline
cheeaun Sep 6, 2025
887a5f4
Test increase clamp limit for .card-post
cheeaun Sep 7, 2025
3482796
New experiment: Edit History Snapshots
cheeaun Sep 7, 2025
7ee5a44
Add modal to open links
cheeaun Sep 8, 2025
1047667
Add bottom spacing for recent searches
cheeaun Sep 8, 2025
80cba2d
Experiment preview custom emoji image in media modal
cheeaun Sep 8, 2025
923451a
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,eo-UY,es-ES,eu-ES,fa-IR,fi-FI,f…
cheeaun Sep 8, 2025
226fd66
i18n updates (eo-UY,es-ES,fi-FI,pl-PL,zh-CN) (#1261)
cheeaun Sep 9, 2025
3054038
Add zoom buttons for custom emojis modal
cheeaun Sep 9, 2025
23ebc03
Test add JSON schema for env vars
cheeaun Sep 9, 2025
24120af
Fix formatting
cheeaun Sep 9, 2025
084c599
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,es-ES,eu-ES,fi-FI,fr-FR,gl-ES,h…
cheeaun Sep 9, 2025
3e4f7a8
Clean up with examples
cheeaun Sep 9, 2025
3475c30
Add missing default values
cheeaun Sep 9, 2025
8212e86
Continue my war against HDR images blinding my eyes
cheeaun Sep 9, 2025
0d00ae3
These .quote-inline's are getting pretty annoying
cheeaun Sep 9, 2025
52255b7
i18n updates (eo-UY,es-ES,eu-ES) (#1263)
cheeaun Sep 9, 2025
691955f
Fix regression bug: maxCreatedAt not working in Catchup
cheeaun Sep 11, 2025
a5f8dd4
Larger zoom buttons
cheeaun Sep 11, 2025
e49448f
i18n updates (ca-ES,es-ES,fi-FI,gl-ES,pl-PL) (#1264)
cheeaun Sep 11, 2025
79b6c7d
Make add button mobile-first
cheeaun Sep 12, 2025
2ca5db1
Might as well make Open link dialog look fun
cheeaun Sep 12, 2025
c84f36d
Experiment: show domain for non-native QPs
cheeaun Sep 13, 2025
306d6d3
Subtle hint for larger-than-rendered custom emojis
cheeaun Sep 15, 2025
9703291
Update QP revoked copy based on Mastodon's latest copy
cheeaun Sep 15, 2025
4433036
Fix cursor position in open link sheet
cheeaun Sep 15, 2025
1fb3c86
i18n updates (ar-SA,ca-ES,cs-CZ,de-DE,en,eo-UY,es-ES,eu-ES,fa-IR,fi-F…
cheeaun Sep 15, 2025
3bcacd8
Move QP below media
cheeaun Sep 17, 2025
0cbcb44
i18n updates (es-ES,fi-FI,gl-ES,pl-PL,ru-RU,zh-CN) (#1267)
cheeaun Sep 17, 2025
591c1ff
Fix .hiding quote-inline not working
cheeaun Sep 17, 2025
822d56a
Don't need max-width for QPs
cheeaun Sep 17, 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: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
*.po linguist-generated
readme-assets/** linguist-documentation

# Diff PO file, ignore line number changes, reduce diff noise
src/locales/en.po diff=po-filter
6 changes: 0 additions & 6 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,3 @@ jobs:
run: npx playwright install --with-deps webkit --only-shell
- name: Run Playwright tests
run: npm run test
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,14 @@ Recap: Mastodon v4.3 features (https://github.com/mastodon/mastodon/releases/tag
- 🧪 Sandbox https://mastodon.social/@cheeaun/114494995294330803
- 🐛 Bug fixes

## July 18, 2025

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

- 💬 Better display support for Mastodon v4.4's native quote posts
- 🧮 Math formatting for LaTeX
- 🐛 Bug fixes

<!--

## Next
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ Prerequisites: Node.js 20+
- `npm run fetch-instances` - Fetch instances list from [joinmastodon.org/servers](https://joinmastodon.org/servers), save it to `src/data/instances.json`
- `npm run sourcemap` - Run `source-map-explorer` on the production build
- `npm run messages:extract` - Extract messages from source files and update the locale message catalogs
- `npm run git:po-filter` - Configure `git` to use `po-filter` for diffing `.po` files

## Tech stack

Expand Down Expand Up @@ -282,6 +283,8 @@ Available variables:
- API key for [GIPHY](https://developers.giphy.com/). See [API docs](https://developers.giphy.com/docs/api/).
- If provided, a setting will appear for users to enable the GIF picker in the composer. Disabled by default.
- This is not self-hosted.
- `PHANPY_DISALLOW_ROBOTS` (optional, default: not set):
- Set to any value (`true`, `1`, etc) to override the robots.txt file and disallow all web crawlers from indexing the site

### Static site hosting

Expand Down Expand Up @@ -395,6 +398,7 @@ Costs involved in running and developing this web app:
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/17206524/medium/1b0a8f9eafe7326be6968c6aed14c872.png" alt="" width="16" height="16" /> seizeheures (Esperanto)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/12381015/medium/35e3557fd61d85f9a5b84545d9e3feb4.png" alt="" width="16" height="16" /> shuuji3 (Japanese)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/14565190/medium/79100599131b7776e9803e4b696915a3_default.png" alt="" width="16" height="16" /> Sky_NiniKo (French)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/17237304/medium/7954dfd36547e9d1f13266a52e9aa1b5_default.png" alt="" width="16" height="16" /> StasZin4 (Ukrainian)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/13143526/medium/30871da23d51d7e41bb02f3c92d7f104.png" alt="" width="16" height="16" /> Steffo99 (Italian)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/16532441/medium/1a47e8d80c95636e02d2260f6e233ca5.png" alt="" width="16" height="16" /> Su5hicz (Czech)
- <img src="https://crowdin-static.cf-downloads.crowdin.com/avatar/12579488/medium/699394d1acfe986a31532007534c7656.jpg" alt="" width="16" height="16" /> svetlemodry (Czech)
Expand Down
2 changes: 1 addition & 1 deletion biome.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.1.2/schema.json",
"$schema": "https://biomejs.dev/schemas/2.2.2/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
Expand Down
89 changes: 89 additions & 0 deletions env.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["PHANPY_WEBSITE", "PHANPY_CLIENT_NAME"],
"properties": {
"PHANPY_CLIENT_NAME": {
"type": "string",
"default": "Phanpy",
"minLength": 1,
"maxLength": 100,
"examples": ["Phanpy Dev", "Donphan"],
"description": "Client name that affects web page title, app title, OpenGraph card title, and client name for authentication"
},
"PHANPY_WEBSITE": {
"type": "string",
"default": "https://phanpy.social",
"format": "uri",
"description": "Canonical URL of the website, affects OpenGraph card URL and client URL for authentication"
},
"PHANPY_PRIVACY_POLICY_URL": {
"type": "string",
"default": "https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD",
"format": "uri",
"examples": ["https://mastodon.social/privacy-policy"],
"description": "URL of the privacy policy page"
},
"PHANPY_TRANSLANG_INSTANCES": {
"type": "string",
"separator": " ",
"default": "translang.phanpy.social",
"description": "Space-separated list of Translang instances for translation"
},
"PHANPY_DEFAULT_LANG": {
"type": "string",
"default": "en",
"examples": ["en-US", "zh-CN"],
"description": "Default language fallback after multiple detection methods"
},
"PHANPY_DEFAULT_INSTANCE": {
"type": "string",
"pattern": "^(?!https?://).*$",
"format": "hostname",
"examples": ["mastodon.social", "hachyderm.io"],
"description": "Default instance for log-in (Exclude https://)"
},
"PHANPY_DEFAULT_INSTANCE_REGISTRATION_URL": {
"type": "string",
"format": "uri",
"examples": ["https://mastodon.social/auth/sign_up"],
"description": "URL of the instance registration page"
},
"PHANPY_REFERRER_POLICY": {
"type": "string",
"default": "origin",
"enum": [
"no-referrer",
"no-referrer-when-downgrade",
"origin",
"origin-when-cross-origin",
"same-origin",
"strict-origin",
"strict-origin-when-cross-origin",
"unsafe-url"
],
"description": "Referrer policy for the site, applied with meta tag on client-side"
},
"PHANPY_IMG_ALT_API_URL": {
"type": "string",
"format": "uri",
"description": "API endpoint for self-hosted img-alt-api instance"
},
"PHANPY_GIPHY_API_KEY": {
"type": "string",
"description": "API key for GIPHY integration"
},
"PHANPY_DISALLOW_ROBOTS": {
"type": ["string", "boolean"],
"examples": ["true", "1"],
"description": "Set to any value to disallow all web crawlers from indexing the site"
},
"PHANPY_LINGVA_INSTANCES": {
"type": "string",
"separator": " ",
"deprecated": true,
"description": "DEPRECATED: Space-separated list of Lingva instances for translation"
}
},
"additionalProperties": false
}
Loading
Loading