From d8c144884843f26acf4be3edc1ec7d05b2c19fa5 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Sat, 8 Aug 2026 19:38:42 +0800 Subject: [PATCH 01/37] Update changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65f2a0bccf..143150673b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,12 @@ --> +## August 8, 2026 + +📢 https://mastodon.social/@cheeaun/117059654961927208 + +- 🐛 Bug fixes + ## June 22, 2026 📢 https://mastodon.social/@cheeaun/116793733342092207 From d8a96ea2cb679c7497cd418c024ce8e72662a23c Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Sat, 8 Aug 2026 19:40:18 +0800 Subject: [PATCH 02/37] Add link to Phandroid --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e8cfced78e..d9565b1b9e 100644 --- a/README.md +++ b/README.md @@ -340,7 +340,9 @@ 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 +There are also mobile app wrappers: +- **[iPhanpy](https://github.com/matfantinel/iphanpy)** by [@fantinel@hachyderm.io](https://hachyderm.io/@fantinel) (iOS) — [App Store](https://apps.apple.com/app/iphanpy-for-mastodon/id6755365082) +- **[Phandroid](https://code.umrath.dev/thoralf/Phandroid)** by [@thoralf@gruene.social](https://gruene.social/@thoralf) (Android) — [Installation](https://code.umrath.dev/thoralf/Phandroid#installation) ## Costs From 116bdbbebe4ab69ba359949532f739de56481a33 Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Sun, 9 Aug 2026 13:49:55 +0800 Subject: [PATCH 03/37] i18n updates (en,fa-IR) (#1578) * Update catalog data * New translations (Persian) --------- Co-authored-by: github-actions[bot] --- src/data/catalogs.json | 2 +- src/locales/fa-IR.po | 154 ++++++++++++++++++++--------------------- 2 files changed, 78 insertions(+), 78 deletions(-) diff --git a/src/data/catalogs.json b/src/data/catalogs.json index 2b00b9fdc6..2d7f5284f2 100644 --- a/src/data/catalogs.json +++ b/src/data/catalogs.json @@ -24,7 +24,7 @@ "code": "de-DE", "nativeName": "Deutsch", "name": "German", - "completion": 92, + "completion": 94, "listed": true }, { diff --git a/src/locales/fa-IR.po b/src/locales/fa-IR.po index c2e6c77b07..81c6efe699 100644 --- a/src/locales/fa-IR.po +++ b/src/locales/fa-IR.po @@ -8,7 +8,7 @@ msgstr "" "Language: fa\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-06-24 14:12\n" +"PO-Revision-Date: 2026-08-09 05:49\n" "Last-Translator: \n" "Language-Team: Persian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -63,18 +63,18 @@ msgstr "شما را پی میگیرد" #. placeholder {0}: shortenNumber(followersCount) #. placeholder {1}: shortenNumber(followersCount) -#: src/components/account-block.jsx:283 +#: src/components/account-block.jsx:286 msgid "{followersCount, plural, one {<0>{0} follower} other {<1>{1} followers}}" msgstr "" -#: src/components/account-block.jsx:309 +#: src/components/account-block.jsx:311 #: src/components/account-info.jsx:778 msgid "Verified" msgstr "تاییدشده" #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) -#: src/components/account-block.jsx:325 +#: src/components/account-block.jsx:327 #: src/components/account-info.jsx:917 msgid "Joined <0>{0}" msgstr "عضو شده<0>{0}" @@ -89,7 +89,7 @@ msgstr "سامانهٔ نام دامنه" #: src/components/account-info-mini.jsx:57 #: src/components/account-info.jsx:800 -#: src/components/compose.jsx:2055 +#: src/components/compose.jsx:2071 #: src/pages/settings.jsx:308 #: src/utils/visibility-text.jsx:7 msgid "Followers" @@ -144,7 +144,7 @@ msgstr "برو به صفحهٔ حساب کاربری" #: src/components/timeline.jsx:663 #: src/components/timeline2.jsx:701 #: src/pages/home.jsx:237 -#: src/pages/notifications.jsx:1069 +#: src/pages/notifications.jsx:1073 #: src/pages/status.jsx:1270 #: src/pages/status.jsx:1746 msgid "Try again" @@ -174,7 +174,7 @@ msgstr "" #: src/components/related-actions.jsx:896 #: src/components/shortcuts-settings.jsx:1099 msgid "QR code" -msgstr "" +msgstr "کد QR" #: src/components/account-info.jsx:652 msgid "Go to original profile page" @@ -280,7 +280,7 @@ msgstr "نمایش اطلاعات فرسته" #: src/components/collection-add-account.jsx:133 #: src/components/collection-add-edit.jsx:40 #: src/components/collection-manage-accounts.jsx:111 -#: src/components/compose.jsx:1128 +#: src/components/compose.jsx:1144 #: src/components/custom-emojis-modal.jsx:282 #: src/components/drafts.jsx:57 #: src/components/edit-profile-sheet.jsx:262 @@ -316,7 +316,7 @@ msgstr "نمایش اطلاعات فرسته" #: src/pages/catchup.jsx:1731 #: src/pages/filters.jsx:225 #: src/pages/list.jsx:302 -#: src/pages/notifications.jsx:1113 +#: src/pages/notifications.jsx:1117 #: src/pages/scheduled-posts.jsx:288 #: src/pages/settings.jsx:100 #: src/pages/status.jsx:1684 @@ -402,7 +402,7 @@ msgstr "" #: src/components/collection-add-account.jsx:197 #: src/components/compose-poll.jsx:80 -#: src/components/compose.jsx:1763 +#: src/components/compose.jsx:1779 #: src/components/mention-modal.jsx:221 #: src/components/shortcuts-settings.jsx:732 #: src/pages/list.jsx:388 @@ -459,7 +459,7 @@ msgid "Mark as sensitive" msgstr "" #: src/components/collection-add-edit.jsx:183 -#: src/components/compose.jsx:2043 +#: src/components/compose.jsx:2059 #: src/pages/collection.jsx:686 #: src/pages/settings.jsx:302 #: src/utils/visibility-text.jsx:4 @@ -478,7 +478,7 @@ msgstr "" #: src/components/quote-settings-sheet.jsx:92 #: src/components/shortcuts-settings.jsx:732 #: src/pages/filters.jsx:572 -#: src/pages/notifications.jsx:1185 +#: src/pages/notifications.jsx:1189 msgid "Save" msgstr "ذخیره" @@ -642,7 +642,7 @@ msgid "{0, plural, one {File {1} is not supported.} other {Files {2} are not sup msgstr "" #: src/components/compose.jsx:294 -#: src/components/compose.jsx:2189 +#: src/components/compose.jsx:2205 #: src/components/file-picker-input.jsx:47 msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}" msgstr "{maxMediaAttachments, plural, one {فقط میتوانید تا ۱ پرونده الصاق کنید.} other {فقط میتوانید تا # پرونده الصاق کنید.}}" @@ -651,69 +651,69 @@ msgstr "{maxMediaAttachments, plural, one {فقط میتوانید تا ۱ پر msgid "You have unsaved changes. Discard this post?" msgstr "شما تغییرات ذخیره‌نشده دارید. این فرسته را رها میکنید؟" -#: src/components/compose.jsx:1108 +#: src/components/compose.jsx:1124 msgid "Pop out" msgstr "" -#: src/components/compose.jsx:1116 +#: src/components/compose.jsx:1132 msgid "Minimize" msgstr "کوچک‌کردن" -#: src/components/compose.jsx:1152 +#: src/components/compose.jsx:1168 msgid "Looks like you closed the parent window." msgstr "انگار شما پنجرهٔ اصلی را بستید." -#: src/components/compose.jsx:1159 +#: src/components/compose.jsx:1175 msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." msgstr "انگار شما در حال حاضر یک زمینهٔ نوشتن در پنجرهٔ مادر دارید که در حال حاضر درحال انتشار است. لطفا صبر کنید تا تمام شود و بعدا دوباره تلاش کنید." -#: src/components/compose.jsx:1164 +#: src/components/compose.jsx:1180 msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" msgstr "انگار شما در حال حاضر یک زمینهٔ نوشتن در پنجرهٔ مادر دارید. وارد شدن به این پنجره تغییراتی که در پنجرهٔ مادر انجام داده‌اید را رها میکند. ادامه میدهید؟" -#: src/components/compose.jsx:1210 +#: src/components/compose.jsx:1226 msgid "Pop in" msgstr "" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') -#: src/components/compose.jsx:1220 +#: src/components/compose.jsx:1236 msgid "Replying to @{0}’s post (<0>{1})" msgstr "درحال پاسخ دادن به فرستهٔ @{0} (<0>{1})" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username -#: src/components/compose.jsx:1232 +#: src/components/compose.jsx:1248 msgid "Replying to @{0}’s post" msgstr "درحال پاسخ دادن به فرستهٔ @{0}" -#: src/components/compose.jsx:1247 +#: src/components/compose.jsx:1263 msgid "Editing source post" msgstr "ویرایش فرستهٔ منبع" -#: src/components/compose.jsx:1316 +#: src/components/compose.jsx:1332 msgid "Poll must have at least 2 options" msgstr "نظرسنجی حداقل باید ۲ گزینه داشته باشد" -#: src/components/compose.jsx:1320 +#: src/components/compose.jsx:1336 msgid "Some poll choices are empty" msgstr "بعضی گزینه‌های نظرسنجی خالی هستند" -#: src/components/compose.jsx:1333 +#: src/components/compose.jsx:1349 msgid "Some media have no descriptions. Continue?" msgstr "بعضی از رسانه‌ها شرح ندارند. ادامه میدهید؟" -#: src/components/compose.jsx:1390 +#: src/components/compose.jsx:1406 msgid "Attachment #{i} failed" msgstr "پیوست #{i} شکست خورد" -#: src/components/compose.jsx:1519 +#: src/components/compose.jsx:1535 #: src/components/status.jsx:2564 #: src/components/timeline.jsx:1062 msgid "Content warning" msgstr "هشدار محتوا" -#: src/components/compose.jsx:1551 -#: src/components/compose.jsx:1697 +#: src/components/compose.jsx:1567 +#: src/components/compose.jsx:1713 #: src/components/edit-profile-sheet.jsx:692 #: src/components/import-accounts-selection.jsx:175 #: src/components/open-link-sheet.jsx:74 @@ -722,79 +722,79 @@ msgstr "هشدار محتوا" msgid "Cancel" msgstr "لغو" -#: src/components/compose.jsx:1559 +#: src/components/compose.jsx:1575 msgid "Post your reply" msgstr "پاسختان را بفرستید" -#: src/components/compose.jsx:1561 +#: src/components/compose.jsx:1577 msgid "Edit your post" msgstr "فرسته‌تان را ویرایش کنید" -#: src/components/compose.jsx:1563 +#: src/components/compose.jsx:1579 msgid "Ask a question" msgstr "" -#: src/components/compose.jsx:1564 +#: src/components/compose.jsx:1580 msgid "What are you doing?" msgstr "چکار میکنید؟" -#: src/components/compose.jsx:1637 +#: src/components/compose.jsx:1653 msgid "Mark media as sensitive" msgstr "علامت‌گذاری رسانه به عنوان حساس" -#: src/components/compose.jsx:1677 +#: src/components/compose.jsx:1693 msgid "Posting on <0/>" msgstr "" -#: src/components/compose.jsx:1975 +#: src/components/compose.jsx:1991 #: src/components/quote-settings-sheet.jsx:82 #: src/components/status.jsx:301 #: src/pages/settings.jsx:350 msgid "Anyone can quote" msgstr "" -#: src/components/compose.jsx:1978 +#: src/components/compose.jsx:1994 #: src/components/quote-settings-sheet.jsx:85 #: src/components/status.jsx:302 #: src/pages/settings.jsx:353 msgid "Your followers can quote" msgstr "" -#: src/components/compose.jsx:1981 +#: src/components/compose.jsx:1997 #: src/components/quote-settings-sheet.jsx:88 #: src/components/status.jsx:303 #: src/pages/settings.jsx:356 msgid "Only you can quote" msgstr "" -#: src/components/compose.jsx:2021 +#: src/components/compose.jsx:2037 msgid "Quotes can't be embedded in private mentions." msgstr "" -#: src/components/compose.jsx:2048 +#: src/components/compose.jsx:2064 #: src/components/nav-menu.jsx:367 #: src/components/shortcuts-settings.jsx:168 #: src/utils/visibility-text.jsx:5 msgid "Local" msgstr "محلی" -#: src/components/compose.jsx:2052 +#: src/components/compose.jsx:2068 #: src/pages/settings.jsx:305 #: src/utils/visibility-text.jsx:6 msgid "Quiet public" msgstr "" -#: src/components/compose.jsx:2058 +#: src/components/compose.jsx:2074 #: src/components/status.jsx:2443 #: src/utils/visibility-text.jsx:8 msgid "Private mention" msgstr "اشارهٔ خصوصی" -#: src/components/compose.jsx:2114 +#: src/components/compose.jsx:2130 msgid "Schedule" msgstr "" -#: src/components/compose.jsx:2116 +#: src/components/compose.jsx:2132 #: src/components/keyboard-shortcuts-help.jsx:165 #: src/components/status.jsx:1107 #: src/components/status.jsx:1156 @@ -805,20 +805,20 @@ msgstr "" msgid "Reply" msgstr "پاسخ دادن" -#: src/components/compose.jsx:2118 +#: src/components/compose.jsx:2134 msgid "Update" msgstr "بروزرسانی" -#: src/components/compose.jsx:2119 +#: src/components/compose.jsx:2135 msgctxt "Submit button in composer" msgid "Post" msgstr "ارسال" -#: src/components/compose.jsx:2201 +#: src/components/compose.jsx:2217 msgid "Downloading GIF…" msgstr "بارگیری جیف…" -#: src/components/compose.jsx:2225 +#: src/components/compose.jsx:2241 msgid "Failed to download GIF" msgstr "بارگیری جیف ناموفق بود" @@ -1056,7 +1056,7 @@ msgid "No featured profiles." msgstr "" #: src/components/follow-request-buttons.jsx:45 -#: src/pages/notifications.jsx:1169 +#: src/pages/notifications.jsx:1173 msgid "Accept" msgstr "قبول کردن" @@ -1065,7 +1065,7 @@ msgid "Reject" msgstr "رد کردن" #: src/components/follow-request-buttons.jsx:79 -#: src/pages/notifications.jsx:1455 +#: src/pages/notifications.jsx:1459 msgid "Accepted" msgstr "قبول شده" @@ -1086,7 +1086,7 @@ msgstr "حساب‌های کاربری" #: src/components/timeline.jsx:628 #: src/pages/account-collections.jsx:234 #: src/pages/list.jsx:321 -#: src/pages/notifications.jsx:1093 +#: src/pages/notifications.jsx:1097 #: src/pages/search.jsx:550 #: src/pages/status.jsx:1717 msgid "Show more…" @@ -1277,7 +1277,7 @@ msgstr "<0>مهار + <1>ورود یا <2>⌘ + <3>ورود" #: src/components/keyboard-shortcuts-help.jsx:161 #: src/components/nav-menu.jsx:352 -#: src/components/search-form.jsx:208 +#: src/components/search-form.jsx:211 #: src/components/shortcuts-settings.jsx:54 #: src/components/shortcuts-settings.jsx:182 #: src/pages/search.jsx:55 @@ -1389,21 +1389,21 @@ msgstr "ناتوان در حذف سیاهه." msgid "Posts on this list are hidden from Home/Following" msgstr "" -#: src/components/math-block.jsx:132 +#: src/components/math-block.jsx:141 msgid "Unable to format math" msgstr "" -#: src/components/math-block.jsx:146 +#: src/components/math-block.jsx:155 msgid "Math expressions found." msgstr "" #. Action to switch from rendered math back to raw (LaTeX) markup -#: src/components/math-block.jsx:149 +#: src/components/math-block.jsx:158 msgid "Show markup" msgstr "" #. Action to render math expressions from raw (LaTeX) markup -#: src/components/math-block.jsx:154 +#: src/components/math-block.jsx:163 msgid "Format math" msgstr "" @@ -1553,7 +1553,7 @@ msgstr "پالایش‌شده: {filterTitleStr}" msgid "Filtered" msgstr "پالایش‌شده" -#: src/components/media.jsx:533 +#: src/components/media.jsx:567 msgid "Open file" msgstr "" @@ -2178,7 +2178,7 @@ msgid "Cleared recent searches" msgstr "" #: src/components/recent-searches.jsx:49 -#: src/components/search-form.jsx:333 +#: src/components/search-form.jsx:336 msgid "Recent searches" msgstr "" @@ -2547,11 +2547,11 @@ msgstr "" msgid "{query} <0>‒ accounts, hashtags & posts" msgstr "{query} <0>‒ حساب‌های کاربری، برچسب‌ها و فرسته‌ها" -#: src/components/search-form.jsx:139 +#: src/components/search-form.jsx:142 msgid "Look up <0>{query}" msgstr "بررسی کردن <0>{query}" -#: src/components/search-form.jsx:366 +#: src/components/search-form.jsx:369 #: src/pages/home.jsx:260 msgid "See all" msgstr "دیدن همه" @@ -4212,7 +4212,7 @@ msgid "Bot accounts" msgstr "" #: src/pages/notifications.jsx:764 -#: src/pages/notifications.jsx:1117 +#: src/pages/notifications.jsx:1121 msgid "Notifications settings" msgstr "تنظیمات آگهی‌ها" @@ -4252,72 +4252,72 @@ msgstr "امروز" msgid "You're all caught up." msgstr "" -#: src/pages/notifications.jsx:1017 +#: src/pages/notifications.jsx:1021 msgid "Yesterday" msgstr "دیروز" -#: src/pages/notifications.jsx:1065 +#: src/pages/notifications.jsx:1069 msgid "Unable to load notifications" msgstr "ناتوان در بارگذاری آگاهی‌ها" -#: src/pages/notifications.jsx:1148 +#: src/pages/notifications.jsx:1152 msgid "Notifications settings updated" msgstr "تنظیمات آگاهی‌ها بارگذاری شدند" -#: src/pages/notifications.jsx:1156 +#: src/pages/notifications.jsx:1160 msgid "Filter notifications from:" msgstr "" -#: src/pages/notifications.jsx:1172 +#: src/pages/notifications.jsx:1176 msgid "Filter" msgstr "پالایش کردن" -#: src/pages/notifications.jsx:1175 +#: src/pages/notifications.jsx:1179 msgid "Ignore" msgstr "نادیده گرفتن" #. placeholder {0}: niceDateTime(updatedAtDate) -#: src/pages/notifications.jsx:1248 +#: src/pages/notifications.jsx:1252 msgid "Updated <0>{0}" msgstr "بروزشده <0>{0}" #. placeholder {0}: account.username -#: src/pages/notifications.jsx:1316 +#: src/pages/notifications.jsx:1320 msgid "View notifications from <0>@{0}" msgstr "نمایش آگاهی‌ها از <0>@{0}" #. placeholder {0}: account.username -#: src/pages/notifications.jsx:1337 +#: src/pages/notifications.jsx:1341 msgid "Notifications from <0>@{0}" msgstr "آگاهی‌ها از <0>@{0}" #. placeholder {0}: request.account.username -#: src/pages/notifications.jsx:1406 +#: src/pages/notifications.jsx:1410 msgid "Notifications from @{0} will not be filtered from now on." msgstr "آگاهی‌ها از @{0} از الآن پالایش نخواهند شد." -#: src/pages/notifications.jsx:1411 +#: src/pages/notifications.jsx:1415 msgid "Unable to accept notification request" msgstr "ناتوان در قبول کردن درخواست آگاهی" -#: src/pages/notifications.jsx:1416 +#: src/pages/notifications.jsx:1420 msgid "Allow" msgstr "اجازه دادن" #. placeholder {0}: request.account.username -#: src/pages/notifications.jsx:1437 +#: src/pages/notifications.jsx:1441 msgid "Notifications from @{0} will not show up in Filtered notifications from now on." msgstr "" -#: src/pages/notifications.jsx:1442 +#: src/pages/notifications.jsx:1446 msgid "Unable to dismiss notification request" msgstr "ناتوان در رد کردن درخواست آگاهی" -#: src/pages/notifications.jsx:1447 +#: src/pages/notifications.jsx:1451 msgid "Dismiss" msgstr "رد کردن" -#: src/pages/notifications.jsx:1462 +#: src/pages/notifications.jsx:1466 msgid "Dismissed" msgstr "رد شد" From ccac344ff622ff73ee62b2bf43b985ca52bb39b7 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Mon, 10 Aug 2026 13:09:51 +0800 Subject: [PATCH 04/37] Upgrade deps --- package-lock.json | 1464 ++++++++--------------- package.json | 70 +- src/utils/useThrottledResizeObserver.js | 2 +- 3 files changed, 539 insertions(+), 997 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf01f2f1ab..58cf75b4ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,73 +9,74 @@ "version": "0.1.0", "hasInstallScript": true, "dependencies": { - "@formatjs/intl-localematcher": "~0.8.10", - "@formatjs/intl-segmenter": "~12.2.10", - "@formkit/auto-animate": "~0.9.0", + "@formatjs/intl-localematcher": "~0.8.13", + "@formatjs/intl-segmenter": "~12.2.13", + "@formkit/auto-animate": "~0.10.0", "@github/text-expander-element": "~2.9.4", - "@iconify-json/mingcute": "~1.2.7", + "@iconify-json/mingcute": "~1.2.8", "@justinribeiro/lite-youtube": "~1.9.0", - "@lingui/detect-locale": "~6.4.0", - "@lingui/react": "~6.4.0", + "@lingui/detect-locale": "~6.6.0", + "@lingui/react": "~6.6.0", "@szhsin/react-menu": "~4.5.2", "chroma-js": "~3.2.0", "compare-versions": "~6.1.1", - "exifreader": "~4.41.0", + "exifreader": "~4.42.0", "fast-blurhash": "~1.2.0", - "fast-equals": "~6.0.0", + "fast-equals": "~6.0.2", "flexsearch": "~0.8.212", - "fuse.js": "~7.4.2", + "fuse.js": "~7.5.0", "gifuct-js": "~2.1.2", "html-prettify": "~1.0.7", - "idb-keyval": "~6.2.6", + "idb-keyval": "~6.3.0", "intl-locale-textinfo-polyfill": "~3.0.0", "js-cookie": "~3.0.8", "just-debounce-it": "~3.2.0", "lz-string": "~1.5.0", - "masto": "~7.12.0", - "micro-memoize": "~5.1.1", - "p-queue": "~9.3.0", + "masto": "~8.0.0", + "micro-memoize": "~5.1.2", + "p-queue": "~9.3.3", "p-retry": "~8.0.0", - "preact": "10.29.3", + "preact": "10.29.8", "punycode": "~2.3.1", "qr": "~0.6.0", "react-hotkeys-hook": "~5.2.4", - "react-intersection-observer": "~10.0.3", + "react-intersection-observer": "~11.0.0", "react-router-dom": "6.6.2", - "react-zoom-pan-pinch": "~4.0.3", + "react-zoom-pan-pinch": "~4.0.4", "swiped-events": "~1.2.0", - "temml": "~0.13.3", + "temml": "~0.13.4", "tinyld": "~1.3.4", "toastify-js": "~1.12.0", "uid": "~2.0.2", "use-debounce": "~10.1.1", "use-long-press": "~3.3.0", - "use-resize-observer": "~9.1.0", + "use-resize-observer": "~10.0.0", "valtio": "2.3.2", "web-haptics": "~0.0.6" }, "devDependencies": { - "@emnapi/core": "~1.11.1", - "@emnapi/runtime": "~1.11.1", - "@iconify/utils": "~3.1.3", - "@lingui/babel-plugin-lingui-macro": "~6.4.0", - "@lingui/cli": "~6.4.0", - "@lingui/vite-plugin": "~6.4.0", - "@playwright/test": "~1.61.1", - "@preact/preset-vite": "~2.10.5", - "@types/node": "~26.1.0", - "oxfmt": "~0.57.0", - "postcss": "~8.5.16", + "@babel/plugin-transform-runtime": "7.29.7", + "@emnapi/core": "~1.11.3", + "@emnapi/runtime": "~1.11.3", + "@iconify/utils": "~3.1.4", + "@lingui/babel-plugin-lingui-macro": "~6.6.0", + "@lingui/cli": "~6.6.0", + "@lingui/vite-plugin": "~6.6.0", + "@playwright/test": "~1.62.1", + "@preact/preset-vite": "~2.10.6", + "@types/node": "~26.2.0", + "oxfmt": "~0.62.0", + "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", "postcss-preset-env": "~11.3.2", - "sonda": "~0.13.1", + "sonda": "~0.14.0", "twitter-text": "~3.1.0", - "vite": "~8.1.2", + "vite": "~8.2.1", "vite-plugin-generate-file": "~0.3.1", "vite-plugin-html-config": "~2.0.2", "vite-plugin-pwa": "~1.3.0", "vite-plugin-remove-console": "~2.2.0", - "vite-plugin-run": "~0.9.0", + "vite-plugin-run": "~0.9.1", "workbox-cacheable-response": "~7.4.1", "workbox-expiration": "~7.4.1", "workbox-navigation-preload": "~7.4.1", @@ -133,6 +134,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", @@ -147,6 +149,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -156,6 +159,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", @@ -186,6 +190,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.29.7", @@ -215,6 +220,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.29.7", @@ -288,6 +294,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -311,6 +318,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.29.7", @@ -324,6 +332,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.29.7", @@ -414,6 +423,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -423,6 +433,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -432,6 +443,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -456,6 +468,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/template": "^7.29.7", @@ -469,6 +482,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/types": "^7.29.7" @@ -1403,6 +1417,41 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz", + "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", @@ -1666,6 +1715,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", @@ -1680,6 +1730,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", @@ -1698,6 +1749,7 @@ "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -3155,20 +3207,20 @@ } }, "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz", + "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", "dev": true, "license": "MIT", "dependencies": { - "@emnapi/wasi-threads": "1.2.2", + "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "dev": true, "license": "MIT", "dependencies": { @@ -3176,9 +3228,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", + "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", "dev": true, "license": "MIT", "dependencies": { @@ -3186,33 +3238,33 @@ } }, "node_modules/@formatjs/fast-memoize": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.1.6.tgz", - "integrity": "sha512-H5aexk1Le7T9TPmscacZ+1pR6CTa2n1wq+HDVGXhH8TzUlQQpeXzZs91dRtmFHrbeNbjPFPfQujUqm7MHgVoXQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.1.7.tgz", + "integrity": "sha512-zXfhLpvA6T7+efdt9JLbBwZ00tT7NsBMDVnDu8rpHeNNv8KfRZAMo2gkG0k9lK/Nzc//3kJ9pImsfuJxk3KhUA==", "license": "MIT" }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.8.10.tgz", - "integrity": "sha512-P/IC3qws3jH+1fEs+o0RIFgXKRaQlFehjS5W0FPAqdo6hgzawLl+eD0q0JjheQ3XtoOe5n8WSYfX06KQZI/QJA==", + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.8.13.tgz", + "integrity": "sha512-kHEAFOkeJSPNi7c5PaKaRjxcBrJwzzt81ifUu+8uve1EDW/VJl83KsxmqgqNZLzcFEhSliZGvx3+pk/RH0IOmg==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "3.1.6" + "@formatjs/fast-memoize": "3.1.7" } }, "node_modules/@formatjs/intl-segmenter": { - "version": "12.2.10", - "resolved": "https://registry.npmjs.org/@formatjs/intl-segmenter/-/intl-segmenter-12.2.10.tgz", - "integrity": "sha512-GjzmeSuSgvLMOfte87TgmdfrmSdE6HYmZRvqzMteUMQJHyD61ejPFa7T+oGnruX9kCAqMjPNMrsaMIk1hcvQbg==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@formatjs/intl-segmenter/-/intl-segmenter-12.2.13.tgz", + "integrity": "sha512-jhxNn6FnvlIOYzn+VG4xRjcLRrLHlDGoRd723YuwdsNHZRvvcC4qvnh5xC5udSv0CiwbBKnPY3OzDNni2NxqIw==", "license": "MIT", "dependencies": { - "@formatjs/intl-localematcher": "0.8.10" + "@formatjs/intl-localematcher": "0.8.13" } }, "node_modules/@formkit/auto-animate": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.9.0.tgz", - "integrity": "sha512-VhP4zEAacXS3dfTpJpJ88QdLqMTcabMg0jwpOSxZ/VzfQVfl3GkZSCZThhGC5uhq/TxPHPzW0dzr4H9Bb1OgKA==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.10.0.tgz", + "integrity": "sha512-KGomRttjUfORuPUaR/ZGQw+6xfMrTM+sxnILv7JAd9AmabU9rg9i6gF/iC0Ih+QpKCubJpCA/1DX9UHKE8cX+A==", "license": "MIT" }, "node_modules/@github/combobox-nav": { @@ -3232,9 +3284,9 @@ } }, "node_modules/@iconify-json/mingcute": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@iconify-json/mingcute/-/mingcute-1.2.7.tgz", - "integrity": "sha512-bp4z6F53KAQp99aSL7qPCHL7HWUNGMNKIhfo/dx9pwVHiad/WusUbTOFXEZfpA44syJPzSOxa3O6Pwiq7qZz1g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@iconify-json/mingcute/-/mingcute-1.2.8.tgz", + "integrity": "sha512-J8VXpRwTpx5yzOzyhx3T4IXnfXIKTWFl3rZ9okcW4c+NMMuwkLvdmM4rkjB83tnYIhg5+kkeMpmw8tvSnxd4rQ==", "license": "Apache-2.0", "dependencies": { "@iconify/types": "*" @@ -3247,9 +3299,9 @@ "license": "MIT" }, "node_modules/@iconify/utils": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.3.tgz", - "integrity": "sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.4.tgz", + "integrity": "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==", "dev": true, "license": "MIT", "dependencies": { @@ -3301,6 +3353,7 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", @@ -3311,6 +3364,7 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -3321,6 +3375,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3341,24 +3396,20 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "devOptional": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@juggle/resize-observer": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", - "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", - "license": "Apache-2.0" - }, "node_modules/@justinribeiro/lite-youtube": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@justinribeiro/lite-youtube/-/lite-youtube-1.9.0.tgz", @@ -3366,37 +3417,47 @@ "license": "MIT" }, "node_modules/@lingui/babel-plugin-extract-messages": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-6.4.0.tgz", - "integrity": "sha512-b9NatQFU1h0muPCC0QGdSVKE/OEdR4w9FQrKAOFYwH0eF7pD2ArafqyqG6xsw2E+7w4PlZQjzOhihQMxI8a6sA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-6.6.0.tgz", + "integrity": "sha512-QfCS4SjZYvVZFaiF44e/mLsdzCqQvRSGoVJWkb8nc51FkNpOZkwFLiwLtRnWgvm0ce7GeG51czMsG7RFPPCXqw==", "dev": true, "license": "MIT", "dependencies": { - "@lingui/conf": "6.4.0" + "@lingui/conf": "6.6.0" }, "engines": { "node": ">=22.19.0" } }, "node_modules/@lingui/babel-plugin-lingui-macro": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-lingui-macro/-/babel-plugin-lingui-macro-6.4.0.tgz", - "integrity": "sha512-V15kARtjzWgLga/6LOTMMki5pv3F42m9BX8jdI1mBg4yCo1cS0B3szfoBqoveFs7x+nh0iuEPAKcM9lVdSYadw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-lingui-macro/-/babel-plugin-lingui-macro-6.6.0.tgz", + "integrity": "sha512-FEBrnIx66lAeD9LGueRIen8IEj+aT7bDaMVmPNIITQNBCm2iC4mNcUtEV1/rAaVpfKKnh5uTdQowWmddB2D7iw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.20.12", - "@babel/types": "^7.20.7", - "@lingui/conf": "6.4.0", - "@lingui/message-utils": "6.4.0" + "@lingui/conf": "6.6.0", + "@lingui/message-utils": "6.6.0" }, "engines": { "node": ">=22.19.0" + }, + "peerDependencies": { + "@babel/core": "^7.20.12 || ^8.0.0", + "@babel/types": "^7.20.7 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@babel/types": { + "optional": true + } } }, "node_modules/@lingui/cli": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-6.4.0.tgz", - "integrity": "sha512-OqtEPHFmgQlyroQMmpnda6QRnfAqlAYnRVZpZSX3rZpwwaHI1pD7T1EQoK8n7kin9TGhitc1J33wFom7o/+yyg==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-6.6.0.tgz", + "integrity": "sha512-XtsWns8/m5Rtj+Gwr9j3SqPTk9bVztAbdJ6cbDG2qDFwSpGiXLxqxhqbam4cywjlxYMudsyNQ7E6DPPSgL4x8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3404,16 +3465,15 @@ "@babel/generator": "^7.28.5", "@babel/parser": "^7.22.0", "@babel/types": "^7.21.2", - "@lingui/babel-plugin-extract-messages": "6.4.0", - "@lingui/babel-plugin-lingui-macro": "6.4.0", - "@lingui/conf": "6.4.0", - "@lingui/core": "6.4.0", - "@lingui/format-po": "6.4.0", - "@lingui/message-utils": "6.4.0", + "@lingui/babel-plugin-extract-messages": "6.6.0", + "@lingui/babel-plugin-lingui-macro": "6.6.0", + "@lingui/conf": "6.6.0", + "@lingui/core": "6.6.0", + "@lingui/format-po": "6.6.0", + "@lingui/message-utils": "6.6.0", "chokidar": "5.0.0", "cli-table3": "^0.6.5", "commander": "^14.0.2", - "esbuild": "^0.25.1", "jiti": "^2.6.1", "micromatch": "^4.0.7", "ms": "^2.1.3", @@ -3428,496 +3488,24 @@ }, "engines": { "node": ">=22.19.0" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@lingui/cli/node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "esbuild": "^0.28.1", + "rolldown": "^1.0.0" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" + "peerDependenciesMeta": { + "esbuild": { + "optional": true + }, + "rolldown": { + "optional": true + } } }, "node_modules/@lingui/conf": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-6.4.0.tgz", - "integrity": "sha512-C+THkLbda72//6dL7QAVyaxIxOnag8mGWKqrMsyIUHgZpStE05KiF8HDwTCMNiaeQmQPym/D8fVm7m8jCau3EA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-6.6.0.tgz", + "integrity": "sha512-4NUxQh6VXZSBocAKATuJJ6+dOF/M3OTd5WtbND7eSi5tZtVKF0qFMcKFfx8aiUJFo+KP/wYnBBiDPvPLkJvqcA==", "license": "MIT", "dependencies": { "jest-validate": "^29.4.3", @@ -3930,13 +3518,13 @@ } }, "node_modules/@lingui/core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/core/-/core-6.4.0.tgz", - "integrity": "sha512-DVbgp9tn07t3iByH6snsn1WaM8PxjDacOqf45oLVXyIti98PmXadO2UkO+NgCybHSqm3+7GGV4zTr4777Cc9nA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/core/-/core-6.6.0.tgz", + "integrity": "sha512-vqL7LkU2iDAHcaHYzFGbdYovHLdHamG0Zh7r5F9O7C1J1sEPZSMQfkddk2FFeSZHy5j7Na7hzIGGJTZutgiZRg==", "license": "MIT", "dependencies": { - "@lingui/babel-plugin-lingui-macro": "6.4.0", - "@lingui/message-utils": "6.4.0" + "@lingui/babel-plugin-lingui-macro": "6.6.0", + "@lingui/message-utils": "6.6.0" }, "engines": { "node": ">=22.19.0" @@ -3951,23 +3539,23 @@ } }, "node_modules/@lingui/detect-locale": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/detect-locale/-/detect-locale-6.4.0.tgz", - "integrity": "sha512-cj2J8k9PwlbnyZfZ3YN1B+dPJMcQ7AK3MlAw8QDezrVlq5lWESudLClpNjpDF1jqf7H3aWF5rhMPCT8DO5uMNQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/detect-locale/-/detect-locale-6.6.0.tgz", + "integrity": "sha512-QUplAyyZZh3LD3vycCV7eFxTsq2LI8T9n9kBRJXfYpjhzyjptK0WIzewEzStDLL2X39wNc6cAlmymjFE9Arwtg==", "license": "MIT", "engines": { "node": ">=22.19.0" } }, "node_modules/@lingui/format-po": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/format-po/-/format-po-6.4.0.tgz", - "integrity": "sha512-tu5aNalW9u+xjmcAlNEjfw4ahzMHFeC4nKz+zYHcv44Drpy9/bWnrr5j7Pi4rc9u4PILtXikwAsLh28u284WiA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/format-po/-/format-po-6.6.0.tgz", + "integrity": "sha512-vOUYBYC+81Gl/tJWqEMM2ah+W06M3zWjb78qNwRtl3UhNhoDbduZpNayDQ7RoEA9NtxNQ75Fx7946+0GPnHy7Q==", "dev": true, "license": "MIT", "dependencies": { - "@lingui/conf": "6.4.0", - "@lingui/message-utils": "6.4.0", + "@lingui/conf": "6.6.0", + "@lingui/message-utils": "6.6.0", "pofile-ts": "^4.0.3" }, "engines": { @@ -3975,9 +3563,9 @@ } }, "node_modules/@lingui/message-utils": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/message-utils/-/message-utils-6.4.0.tgz", - "integrity": "sha512-Bkt2V7vI57/CEVyJCO+93jssN2MhLJ07M6S0d16tHvigNftP5Ndl+2xX1HKWD6eozidc5lOeTZMtrEL9jzXEsg==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/message-utils/-/message-utils-6.6.0.tgz", + "integrity": "sha512-XkEcuMjIUjq7KZfTe83jP6UWQvKskpae/Ve7E8M8HEJ3TujHIPLzKn/quEmot6pKRtGwYxQzktGRfs2sPcZaqg==", "license": "MIT", "dependencies": { "@messageformat/date-skeleton": "^1.1.0", @@ -3989,13 +3577,14 @@ } }, "node_modules/@lingui/react": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/react/-/react-6.4.0.tgz", - "integrity": "sha512-9ui7O/K/X+AXN7TdSEbKq//sNLAJ42dk1GftzAcHL58jKv3CnEyKOPJb2S0L/Ez6li8I0O4KKgRn1BK0Qk/Jqg==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/react/-/react-6.6.0.tgz", + "integrity": "sha512-oRZvm8nx47wQB7Y4tQ4K78Ba0Ta0wJLRpT7125zW3J1wq++hMfc9XMqemCau2IDVtCMHGHdlLPiBeyFSIq/0Rw==", "license": "MIT", "dependencies": { - "@lingui/babel-plugin-lingui-macro": "6.4.0", - "@lingui/core": "6.4.0" + "@lingui/babel-plugin-lingui-macro": "6.6.0", + "@lingui/core": "6.6.0", + "use-sync-external-store": "^1.6.0" }, "engines": { "node": ">=22.19.0" @@ -4011,20 +3600,20 @@ } }, "node_modules/@lingui/vite-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@lingui/vite-plugin/-/vite-plugin-6.4.0.tgz", - "integrity": "sha512-15ogZWydII5TbWwTJJGfJF9OpATxiIbJGearfBv+tj13uv3TlKwLGdmpn/GV8COY8v0irKr7dfdyfxYvxLxSZQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@lingui/vite-plugin/-/vite-plugin-6.6.0.tgz", + "integrity": "sha512-1kZMeGNk5hYQzrEPA3RcXQKb106VC26GqxpXpjVIhS4r2sT4c4gztk70T65VSwyZ7Uyc1pIpXxys3uY2DTfHKw==", "dev": true, "license": "MIT", "dependencies": { - "@lingui/cli": "6.4.0", - "@lingui/conf": "6.4.0" + "@lingui/cli": "6.6.0", + "@lingui/conf": "6.6.0" }, "engines": { "node": ">=22.19.0" }, "peerDependencies": { - "@babel/core": "^7.29.0 || ^8.0.0-rc.1", + "@babel/core": "^7.29.0 || ^8.0.0", "@lingui/babel-plugin-lingui-macro": "^5 || ^6", "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "rolldown": "^1.0.0-rc.5", @@ -4069,29 +3658,10 @@ "moo": "^0.5.1" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@oxc-project/types": { - "version": "0.137.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz", - "integrity": "sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==", + "version": "0.143.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.143.0.tgz", + "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", "dev": true, "license": "MIT", "funding": { @@ -4099,9 +3669,9 @@ } }, "node_modules/@oxfmt/binding-android-arm-eabi": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.57.0.tgz", - "integrity": "sha512-qVBsEO+KugOsCmUHcO8iqNnqc65p7PCKpCs8M66mPZ+Ri+CWbcpoQOEJBg2OTu03+0qu++NK1jj6IzvQVs0Sig==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.62.0.tgz", + "integrity": "sha512-pdsv0C4gPjJ8H1+sd8u0BDx+yLACTL+rgeMIOL1ln4ihSnhw8CWXtYWgvcSkyTfgGBIzFKab+d8rx9Xl4en/Kw==", "cpu": [ "arm" ], @@ -4116,9 +3686,9 @@ } }, "node_modules/@oxfmt/binding-android-arm64": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.57.0.tgz", - "integrity": "sha512-mp6PibWbao3aizijcheOeHQaYEhcUAt8pwLniYbtLfHxL/psFF0BykAwCj+s3c6qIpa8yN8keZICWrqtZ70w8g==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.62.0.tgz", + "integrity": "sha512-WC3YQ7uS/KtDrjmqwBviwFKe9qeoi+eXx8aX1z/ffG23Md75myjrJaQqTuJvdOLPoa4EYTjDWH0dHXfwulCVog==", "cpu": [ "arm64" ], @@ -4133,9 +3703,9 @@ } }, "node_modules/@oxfmt/binding-darwin-arm64": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.57.0.tgz", - "integrity": "sha512-T+0stuCBqmUVY+aMIvrgXhzGhHO3sD5tNiiEcYqgSdPsnukskQqn2u5qOVD0sv1l7RLdFS5Z/f5Wi9Ktyjr3Eg==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.62.0.tgz", + "integrity": "sha512-GM8Yf3LjjaR1I8PD0SfeoIlwhsh9GvSF+cQ8sf624Yxnjsyumn95aFzYfKJVefblfDIiOAnZ7QVm2sa21Er/0Q==", "cpu": [ "arm64" ], @@ -4150,9 +3720,9 @@ } }, "node_modules/@oxfmt/binding-darwin-x64": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.57.0.tgz", - "integrity": "sha512-O+3JbqWs/mCI2oi4xfhRO2IVPFJNDDEBV8Odo+ZpmsUOeKJfjXoNH7nDmBEQcDgK7NfjDIyE7kRgYSZcTLDO0A==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.62.0.tgz", + "integrity": "sha512-d5THp7F8bCxLqNogEXDORRsQD6dosf3EyFtnXfBer6v+8tGdcWIjoDX9WaXrrF/26zOmL8qHpPTKCEvpBDmZkQ==", "cpu": [ "x64" ], @@ -4167,9 +3737,9 @@ } }, "node_modules/@oxfmt/binding-freebsd-x64": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.57.0.tgz", - "integrity": "sha512-pxwhxVC+JkLX9twOQ/8C/vbuOQcMZyKIDmiRDZfO7yITuVcIdZCiLRqqf4QOxb2+8FWrRXzQpm+1DBKcMpHSSQ==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.62.0.tgz", + "integrity": "sha512-1DnrtXGZooOZ0fHgAXZUaDQzBVh1CM2MNW4oBXyQ2aWKvCHjyljvT9fgBkOM0fEOb96X5eqtcfJ0YUVt9jj66g==", "cpu": [ "x64" ], @@ -4184,9 +3754,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-gnueabihf": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.57.0.tgz", - "integrity": "sha512-pxBU4zH2imB/MDBfth2rOMeVxXUMjRQLCazagwLARIFH3hVlxZJBlM4nSnHXaIHJK4/qezoFCIORN6AY8Mra4A==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.62.0.tgz", + "integrity": "sha512-4pQDHOYRH+Huqe0StIaWyvk2CVl/aTaqSrbZpA3/pLS2xH24ME7lBgYprhQF2fRkHBzhGGGKliwxFsDdHwx59g==", "cpu": [ "arm" ], @@ -4201,9 +3771,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-musleabihf": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.57.0.tgz", - "integrity": "sha512-JAprOzt8tycYou36ZgEw14DlRHTiN8qdtKANdV3VZIRIvTI/lh/cX13c9pJ/EnDk2GT3FASH7KvCgQ2AufAifQ==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.62.0.tgz", + "integrity": "sha512-X0jAaZJFMCVKhB6YyWVTQ/wN2DLsBcZKSMqTS76bF6riT+XZdtg2FPEdjDvdVbunO9cG+tWiVaEs4Zs38lxYog==", "cpu": [ "arm" ], @@ -4218,9 +3788,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-gnu": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.57.0.tgz", - "integrity": "sha512-ajtjaxSaj9xl4BW7REt+Cef/ttzbAq00Bq4z7JUDZEfgFXdwSjH8K9bF+IcIJzZB9lKqMfQ4eHuSFOvvlvtqOg==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.62.0.tgz", + "integrity": "sha512-682Z8T5s8T5ATArYtsejKvbIfd8LEAXyyDkKkoZVq8HND7Vx8TYLlrDjDSeYfodMeVwHOgkj13lJYR8cj6vUSg==", "cpu": [ "arm64" ], @@ -4238,9 +3808,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-musl": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.57.0.tgz", - "integrity": "sha512-p4Y/+RYk9Bk5WO+zHSUXAClRmZ2fbJCejMuCAsU2HhyME4jqf6Ftt/mJYEwIah1wGCBDYOB7wEGV1x5bCEZ6hA==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.62.0.tgz", + "integrity": "sha512-lk25fAl7KWaLWVJcW0CHEXB7QlQZtx5eDkjpaGMK0hzXTjUe0Wmlu8IKuFHoviSOcEJedRTs4VE/506VqGxGew==", "cpu": [ "arm64" ], @@ -4258,9 +3828,9 @@ } }, "node_modules/@oxfmt/binding-linux-ppc64-gnu": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.57.0.tgz", - "integrity": "sha512-By6tRALAZsno0F4zedmtG+wdMvJiJmJoXM4d3+A9zHE4HRXLqXITwRH8mgrlcXc5yJM2g2W3riRPwTYdgemZLQ==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.62.0.tgz", + "integrity": "sha512-SFyNqHQLwySceWNLhiSldx7wPXRAzP0L0WcW9GegP3uWrpZGJiZlQO85NbHAFPEfxR9PhZ9qSnZryEh7+v+4Gw==", "cpu": [ "ppc64" ], @@ -4278,9 +3848,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-gnu": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.57.0.tgz", - "integrity": "sha512-skYeG+RgvyzspqVEBsEprL90OYYZfoVNqB3HcCNR6QDJyXKOzfDRT3zncnHmUaFluIlBHuY23mU1b5WGgR98hA==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.62.0.tgz", + "integrity": "sha512-KYj55C1ywJfHo6+aKDuEmUtVEdJALsC5GwayDGsI6FGz2GxFqNr/mA8nxVsNbJzm7sE5MRqTQ9ziImSzhYXysA==", "cpu": [ "riscv64" ], @@ -4298,9 +3868,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-musl": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.57.0.tgz", - "integrity": "sha512-FFgACrZOXAXUh5KQh2mt1CDOVOZmn+QzHP71wM9QobNwyQvoFfyAeefVUltW83g3sm7LTiH3yfFqLLVUpA5ZFQ==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.62.0.tgz", + "integrity": "sha512-BhZDNo5GOU5nC378RhD0/XpvaEBHsH3HLgJp8YZX3A0InC7oivzA63HsRmiXFLtLSHAstEVrDf6fbC7Rs8Jh/A==", "cpu": [ "riscv64" ], @@ -4318,9 +3888,9 @@ } }, "node_modules/@oxfmt/binding-linux-s390x-gnu": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.57.0.tgz", - "integrity": "sha512-Nm/BAOfQeFiiKd502mZn/GAVKJwtd0RdCg17G3Wz/WSOIQmDi3+7/SZH4BHn1Ye5KvTVH3ua8WvfwLLycNIuvA==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.62.0.tgz", + "integrity": "sha512-UyAFmyHkgSgUJ/wOM4p3U8AC2yAFvRH5PNBs7TnK0fObTT/XSWcdr/lAzPSWaekHaZFaMeFZyk9n93Joq3J93A==", "cpu": [ "s390x" ], @@ -4338,9 +3908,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-gnu": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.57.0.tgz", - "integrity": "sha512-BiSy5Ku3mQqyxS6YIqAJgd403wEUWvI7kerfzPxc2l/txZVmZM0pSj7oDM+4bGBExowxOi7o73jEam1W0EDTZg==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.62.0.tgz", + "integrity": "sha512-1iYMP0leytWazFubD/WnINJuIrzRPuoL1aWEJdlGezEzDbTxcd29R4r8IUzP2oWeKst5V02uMJgR2NILlPlG6w==", "cpu": [ "x64" ], @@ -4358,9 +3928,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-musl": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.57.0.tgz", - "integrity": "sha512-BCRkJiotz5s9afLYD2LuMvzAoDYx9H17E/YbDyu4xK7l4zHDPeny9ErSXL//i/nJyaOwRk08x4b8cgJC00+JDg==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.62.0.tgz", + "integrity": "sha512-4rA/URtJSTVNVAQz6Q8wf7SaRvOXVy+TizriT9hs/Y1XhLR/R+92uWKRQG8yFWRAIEBbFHJ6WevQcl/G9SXEfw==", "cpu": [ "x64" ], @@ -4378,9 +3948,9 @@ } }, "node_modules/@oxfmt/binding-openharmony-arm64": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.57.0.tgz", - "integrity": "sha512-4Oaxe1qrGgXfpCJ1C/ERJ2iCtV2rN1R79ga9fsfyVHfSQRu/hVW780u2KDqZWFZ/iGTHODJji0JemxqFZ63eIQ==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.62.0.tgz", + "integrity": "sha512-mSZuFHU2ar1KLUjXpI2QBQcJ1VsOB3mOCgQXuXCpKs19dgh4u+OaovNfrWDfiJb+ihJ2+f7YFcaO9bS2dlTCXA==", "cpu": [ "arm64" ], @@ -4395,9 +3965,9 @@ } }, "node_modules/@oxfmt/binding-win32-arm64-msvc": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.57.0.tgz", - "integrity": "sha512-MYLAsDnhdNsSGheLYhWgbk0vfIrlS84iQYun/y21fX6u0jj8iBtYtbpZMdiqYeuf8U12eVPUjVY2xE2NrCfJ0g==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.62.0.tgz", + "integrity": "sha512-OfwuhkcjDlqC4EgDojtiV9mzpLqeB9KqTOWPOjLEYBVdDCVSxqW3qzp/xcIxsbtI0UgGCnKvAqYKyY25kf5JZw==", "cpu": [ "arm64" ], @@ -4412,9 +3982,9 @@ } }, "node_modules/@oxfmt/binding-win32-ia32-msvc": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.57.0.tgz", - "integrity": "sha512-PBwdzZALJY/jcCx2E6is0yu+cuVXeySTDmwuseD+9j0mHqlRNxwlKgsyRTBed/woPeqfVfuXfWjoq4Cx2Zt3Eg==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.62.0.tgz", + "integrity": "sha512-P9uDDNFRzghO3X8QAzhkjKhK7JvtABsVn8UYtFX7uor12IAnwNt8nNIctvfWj1JkQU/kE+fmLRPiw7XlrIHsZw==", "cpu": [ "ia32" ], @@ -4429,9 +3999,9 @@ } }, "node_modules/@oxfmt/binding-win32-x64-msvc": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.57.0.tgz", - "integrity": "sha512-bQJdH9i4RRfw55jm7+8/xS7GzHLLTbHx4huhrrDxQJaJtbSDbsyOnODvP1ftT7EG0KFKAYO2S+q6AcioXODx8w==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.62.0.tgz", + "integrity": "sha512-dlI5SY7XYQCiCBafntWagCR6HcAJB/NpsLtdlPx8x08+Osz8Ok1HHz1GZuusegCe/VoJ6pAnF5a4pd5OZAq7qQ==", "cpu": [ "x64" ], @@ -4446,25 +4016,25 @@ } }, "node_modules/@playwright/test": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.61.1.tgz", - "integrity": "sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz", + "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.61.1" + "playwright": "1.62.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@preact/preset-vite": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.10.5.tgz", - "integrity": "sha512-p0vJpxiVO7KWWazWny3LUZ+saXyZKWv6Ju0bYMWNJRp2YveufRPgSUB1C4MTqGJfz07EehMgfN+AJNwQy+w6Iw==", + "version": "2.10.6", + "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.10.6.tgz", + "integrity": "sha512-ZZ5RIT2ZVXg8UxRA8VZpoT8CdpDG7RFIqOT4bELqNBp85+HKvQBbgmh3gsoW1UOQXx26TLe+ZRNKI7q281Kckw==", "dev": true, "license": "MIT", "dependencies": { @@ -4563,9 +4133,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz", - "integrity": "sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz", + "integrity": "sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==", "cpu": [ "arm64" ], @@ -4580,9 +4150,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz", - "integrity": "sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==", "cpu": [ "arm64" ], @@ -4597,9 +4167,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz", - "integrity": "sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==", "cpu": [ "x64" ], @@ -4614,9 +4184,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz", - "integrity": "sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz", + "integrity": "sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==", "cpu": [ "x64" ], @@ -4631,9 +4201,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz", - "integrity": "sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz", + "integrity": "sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==", "cpu": [ "arm" ], @@ -4648,9 +4218,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz", - "integrity": "sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz", + "integrity": "sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==", "cpu": [ "arm64" ], @@ -4668,9 +4238,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz", - "integrity": "sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz", + "integrity": "sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==", "cpu": [ "arm64" ], @@ -4688,9 +4258,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz", - "integrity": "sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz", + "integrity": "sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==", "cpu": [ "ppc64" ], @@ -4708,9 +4278,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz", - "integrity": "sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz", + "integrity": "sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==", "cpu": [ "s390x" ], @@ -4728,9 +4298,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz", - "integrity": "sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz", + "integrity": "sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==", "cpu": [ "x64" ], @@ -4748,9 +4318,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz", - "integrity": "sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz", + "integrity": "sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==", "cpu": [ "x64" ], @@ -4768,9 +4338,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz", - "integrity": "sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz", + "integrity": "sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==", "cpu": [ "arm64" ], @@ -4784,29 +4354,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz", - "integrity": "sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz", - "integrity": "sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz", + "integrity": "sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==", "cpu": [ "arm64" ], @@ -4821,9 +4372,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz", - "integrity": "sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz", + "integrity": "sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==", "cpu": [ "x64" ], @@ -5354,9 +4905,9 @@ ] }, "node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "version": "0.27.12", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.12.tgz", + "integrity": "sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==", "license": "MIT" }, "node_modules/@szhsin/react-menu": { @@ -5388,17 +4939,6 @@ "node": ">=12" } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", @@ -5431,9 +4971,9 @@ } }, "node_modules/@types/node": { - "version": "26.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz", - "integrity": "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==", + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz", + "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==", "license": "MIT", "dependencies": { "undici-types": "~8.3.0" @@ -5722,6 +5262,7 @@ "version": "2.10.29", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", + "devOptional": true, "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -5764,6 +5305,7 @@ "version": "4.28.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "devOptional": true, "funding": [ { "type": "opencollective", @@ -5866,6 +5408,7 @@ "version": "1.0.30001792", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", + "devOptional": true, "funding": [ { "type": "opencollective", @@ -6019,6 +5562,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true, "license": "MIT" }, "node_modules/core-js": { @@ -6264,6 +5808,7 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "devOptional": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -6436,6 +5981,7 @@ "version": "1.5.355", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.355.tgz", "integrity": "sha512-LUPZhKzZPYSPme1jEYohpkA+ybYCJztr1quAdBd7E7h3+VOBVcKkwwtBJu41nrjawrRzfb8mtMfzWozoaK0ZIQ==", + "devOptional": true, "license": "ISC" }, "node_modules/emoji-regex": { @@ -6609,6 +6155,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -6657,9 +6204,9 @@ "license": "MIT" }, "node_modules/exifreader": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/exifreader/-/exifreader-4.41.0.tgz", - "integrity": "sha512-P3nPeh6GWs5D5RZdRZ6q/LorHPmmeDgKsowduqRabtTFiqMD2bc5eTN+Dhq00O9BCuV2eksu3oOJh4ZaZvkK0A==", + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/exifreader/-/exifreader-4.42.0.tgz", + "integrity": "sha512-dvjmG8KvSoMvFCG7XaH+kRgBXUTZxWibdm6ThyjcZbA18pAALPRaLcletWg8wAeYo1E1j46q5cuTsLQJipOqsA==", "hasInstallScript": true, "license": "MPL-2.0", "bin": { @@ -6683,9 +6230,9 @@ "license": "MIT" }, "node_modules/fast-equals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-6.0.0.tgz", - "integrity": "sha512-PFhhIGgdM79r5Uztdj9Zb6Tt1zKafqVfdMGwVca1z5z6fbX7DmsySSuJd8HiP6I1j505DCS83cLxo5rmSNeVEA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-6.0.2.tgz", + "integrity": "sha512-sAjhj9ZhOxYCGiNMnZLaucOqf5ZeFnHNoKoAZiD9thhJ0N8RP85qJK759/97C/3L7NzzmGVB5uiX9AUpySZmUQ==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -6910,9 +6457,9 @@ } }, "node_modules/fuse.js": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.4.2.tgz", - "integrity": "sha512-LVbzjD4WA6UP5B1UnP8wuaXJiLnqMdM/E4fiJXTJ5haJ5b/MBNsK29h2fm6swEoQaVQjvYFWKLE2RanyZIoRVQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.5.0.tgz", + "integrity": "sha512-sQtrEfA+ez/3G0cCZecF70oqpCRttCexYUG4mUrtWL49ULUzUyxokt5kyqwtKzj1270RaKih+hcP3qLcumccow==", "license": "Apache-2.0", "engines": { "node": ">=10" @@ -6936,6 +6483,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -7245,9 +6793,9 @@ "license": "ISC" }, "node_modules/idb-keyval": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.6.tgz", - "integrity": "sha512-FY64UEhw+5liMzMQ1R9Mw6AF0+wyBrg1CIA1z4CjI/EvT5ty/SvQcWZgd8s9sgaNhX10Y8UzScTh89tEAls5nA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.3.0.tgz", + "integrity": "sha512-um+2dgAWmYsu615EXpWVwSmapJhON0G43t3Ka/EVaohzPQXSMqKEqeDK/oIW3Ow+BXaF2PvSc+oBTFp793A5Ow==", "license": "Apache-2.0" }, "node_modules/import-meta-resolve": { @@ -7753,15 +7301,6 @@ "dev": true, "license": "ISC" }, - "node_modules/isomorphic-ws": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", - "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, "node_modules/jackspeak": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", @@ -7882,6 +7421,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "devOptional": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -7901,6 +7441,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "devOptional": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -7955,9 +7496,9 @@ } }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -7971,23 +7512,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -8006,9 +7547,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -8027,9 +7568,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -8048,9 +7589,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -8069,9 +7610,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -8090,9 +7631,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], @@ -8114,9 +7655,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], @@ -8138,9 +7679,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], @@ -8162,9 +7703,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], @@ -8186,9 +7727,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -8207,9 +7748,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -8287,6 +7828,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "devOptional": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -8312,16 +7854,17 @@ } }, "node_modules/masto": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/masto/-/masto-7.12.0.tgz", - "integrity": "sha512-hSqRfaqVhtaRB3+lSJ4YusqBZ/tj4/gtzS0PXZgrg2JLiDFLmsBdmuyVVF2c+QlKSMEKo7grVh3dN8TX1TECVw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/masto/-/masto-8.0.0.tgz", + "integrity": "sha512-S5fD1qmw4tUjCWWJ1/UN1te2l6Sf0rZZY4SfGS6WgLcmPv3T2ygGO/Dd2LjHeiaQpxZgSk17beeMDDs4VtPh7w==", "license": "MIT", "dependencies": { "change-case": "^5.4.4", "events-to-async": "^2.0.2", - "isomorphic-ws": "^5.0.0", - "ts-custom-error": "^3.3.1", - "ws": "^8.18.3" + "ts-custom-error": "^3.3.1" + }, + "engines": { + "node": ">=22.0.0" } }, "node_modules/math-intrinsics": { @@ -8335,12 +7878,12 @@ } }, "node_modules/micro-memoize": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-5.1.1.tgz", - "integrity": "sha512-QDwluos8YeMijiKxZGwaV4f4tzj0soS6+xcsJhJ3+4wdEIHMyKbIKVUziebOgWX3e6yiijdoaHo+9tyhbnaWXA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-5.1.2.tgz", + "integrity": "sha512-dbWHvnmuOCClNkneO6OIIXjEUJCIE0Ftar4DE36aJzXw3SqJCbgGTRxrbjrHq8fR+O3nZiLZmXdODczOnifK6w==", "license": "MIT", "dependencies": { - "fast-equals": "^5.3.3", + "fast-equals": "^5.4.0", "fast-stringify": "^4.0.0" } }, @@ -8449,12 +7992,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "devOptional": true, "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { @@ -8485,6 +8029,7 @@ "version": "2.0.44", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", + "devOptional": true, "license": "MIT" }, "node_modules/normalize-path": { @@ -8670,9 +8215,9 @@ } }, "node_modules/oxfmt": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.57.0.tgz", - "integrity": "sha512-ZB7Bi+rGDSqmVIo9jwcLyFgjxXvQhDdU+jx+ZrVy6VRiVXK2+CHc4hO3J4dUQjHe7V0ymHB+MDuv5z+NhK07HA==", + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.62.0.tgz", + "integrity": "sha512-vxgGHTmnDU9j4CX7dDBLzxgmHxfda/yPcgJkGCMUSCwRmz+euo/V08xXLNgXTeqAB9Fhf3Pe2nO1RNKLCVgphQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8688,25 +8233,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxfmt/binding-android-arm-eabi": "0.57.0", - "@oxfmt/binding-android-arm64": "0.57.0", - "@oxfmt/binding-darwin-arm64": "0.57.0", - "@oxfmt/binding-darwin-x64": "0.57.0", - "@oxfmt/binding-freebsd-x64": "0.57.0", - "@oxfmt/binding-linux-arm-gnueabihf": "0.57.0", - "@oxfmt/binding-linux-arm-musleabihf": "0.57.0", - "@oxfmt/binding-linux-arm64-gnu": "0.57.0", - "@oxfmt/binding-linux-arm64-musl": "0.57.0", - "@oxfmt/binding-linux-ppc64-gnu": "0.57.0", - "@oxfmt/binding-linux-riscv64-gnu": "0.57.0", - "@oxfmt/binding-linux-riscv64-musl": "0.57.0", - "@oxfmt/binding-linux-s390x-gnu": "0.57.0", - "@oxfmt/binding-linux-x64-gnu": "0.57.0", - "@oxfmt/binding-linux-x64-musl": "0.57.0", - "@oxfmt/binding-openharmony-arm64": "0.57.0", - "@oxfmt/binding-win32-arm64-msvc": "0.57.0", - "@oxfmt/binding-win32-ia32-msvc": "0.57.0", - "@oxfmt/binding-win32-x64-msvc": "0.57.0" + "@oxfmt/binding-android-arm-eabi": "0.62.0", + "@oxfmt/binding-android-arm64": "0.62.0", + "@oxfmt/binding-darwin-arm64": "0.62.0", + "@oxfmt/binding-darwin-x64": "0.62.0", + "@oxfmt/binding-freebsd-x64": "0.62.0", + "@oxfmt/binding-linux-arm-gnueabihf": "0.62.0", + "@oxfmt/binding-linux-arm-musleabihf": "0.62.0", + "@oxfmt/binding-linux-arm64-gnu": "0.62.0", + "@oxfmt/binding-linux-arm64-musl": "0.62.0", + "@oxfmt/binding-linux-ppc64-gnu": "0.62.0", + "@oxfmt/binding-linux-riscv64-gnu": "0.62.0", + "@oxfmt/binding-linux-riscv64-musl": "0.62.0", + "@oxfmt/binding-linux-s390x-gnu": "0.62.0", + "@oxfmt/binding-linux-x64-gnu": "0.62.0", + "@oxfmt/binding-linux-x64-musl": "0.62.0", + "@oxfmt/binding-openharmony-arm64": "0.62.0", + "@oxfmt/binding-win32-arm64-msvc": "0.62.0", + "@oxfmt/binding-win32-ia32-msvc": "0.62.0", + "@oxfmt/binding-win32-x64-msvc": "0.62.0" }, "peerDependencies": { "svelte": "^5.0.0", @@ -8722,9 +8267,9 @@ } }, "node_modules/p-queue": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.0.tgz", - "integrity": "sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.3.tgz", + "integrity": "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.4", @@ -8826,12 +8371,13 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "devOptional": true, "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "engines": { @@ -8842,35 +8388,35 @@ } }, "node_modules/playwright": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz", - "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.61.1" + "playwright-core": "1.62.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.61.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz", - "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", "dev": true, "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/pofile-ts": { @@ -8894,9 +8440,9 @@ } }, "node_modules/postcss": { - "version": "8.5.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", - "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { @@ -8914,7 +8460,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.12", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -9681,13 +9227,21 @@ "license": "MIT" }, "node_modules/preact": { - "version": "10.29.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.3.tgz", - "integrity": "sha512-D9NL1GAnJZhc3RndVs4gDdxEeU9TcHgywMrhhOsnpdlvFjdbx0gAsLUnH6JEhlJH5giL7Tx5biWPUSEXE/HPzw==", + "version": "10.29.8", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.8.tgz", + "integrity": "sha512-ej2aVZ+vZ8WO7tvlQWRM9N63A0KzF9q4mWJfDUHgYaIofWY9hu74QdnQrjoPMmZi2/nZ5gN0bJCQF49xQqx09Q==", "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" + }, + "peerDependencies": { + "preact-render-to-string": ">=5" + }, + "peerDependenciesMeta": { + "preact-render-to-string": { + "optional": true + } } }, "node_modules/pretty-bytes": { @@ -9817,9 +9371,9 @@ } }, "node_modules/react-intersection-observer": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-10.0.3.tgz", - "integrity": "sha512-luICLMbs0zxTO/70Zy7K5jOXkABPEVSAF8T3FdZUlctsrIaPLmx8TZe2SSA+CY2HGWfz2INyNTnp82pxNNsShA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-11.0.0.tgz", + "integrity": "sha512-tF2PjXa//GcUmkCIcZR2qGsj6HwnuunFQdgeJ89BwFE6epB7E9yIzdr018H1khxG7DiMpIDvAne1GKQMFwn+fw==", "license": "MIT", "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0", @@ -9880,9 +9434,9 @@ } }, "node_modules/react-zoom-pan-pinch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-4.0.3.tgz", - "integrity": "sha512-N2Hi6L78fFmhRra+ORpFSW7WST5x6kxpOPplIvtB0b7b+U2anpo1z1wLgaWRPS2kUSqcraRG+JgBCIlDJnqqAg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-4.0.4.tgz", + "integrity": "sha512-P0D7lfNHyJCNuUozoVdt0WNWcQ34ZbbD71B8pb+UtF7Th8MKBnxYiPApDfPZZmr+Gk0l0WmGTXL8R36JirHcQQ==", "license": "MIT", "engines": { "node": ">=8", @@ -10059,13 +9613,13 @@ } }, "node_modules/rolldown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.3.tgz", - "integrity": "sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.3.tgz", + "integrity": "sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.137.0", + "@oxc-project/types": "=0.143.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -10075,21 +9629,20 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.3", - "@rolldown/binding-darwin-arm64": "1.1.3", - "@rolldown/binding-darwin-x64": "1.1.3", - "@rolldown/binding-freebsd-x64": "1.1.3", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.3", - "@rolldown/binding-linux-arm64-gnu": "1.1.3", - "@rolldown/binding-linux-arm64-musl": "1.1.3", - "@rolldown/binding-linux-ppc64-gnu": "1.1.3", - "@rolldown/binding-linux-s390x-gnu": "1.1.3", - "@rolldown/binding-linux-x64-gnu": "1.1.3", - "@rolldown/binding-linux-x64-musl": "1.1.3", - "@rolldown/binding-openharmony-arm64": "1.1.3", - "@rolldown/binding-wasm32-wasi": "1.1.3", - "@rolldown/binding-win32-arm64-msvc": "1.1.3", - "@rolldown/binding-win32-x64-msvc": "1.1.3" + "@rolldown/binding-android-arm64": "1.2.3", + "@rolldown/binding-darwin-arm64": "1.2.3", + "@rolldown/binding-darwin-x64": "1.2.3", + "@rolldown/binding-freebsd-x64": "1.2.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.3", + "@rolldown/binding-linux-arm64-gnu": "1.2.3", + "@rolldown/binding-linux-arm64-musl": "1.2.3", + "@rolldown/binding-linux-ppc64-gnu": "1.2.3", + "@rolldown/binding-linux-s390x-gnu": "1.2.3", + "@rolldown/binding-linux-x64-gnu": "1.2.3", + "@rolldown/binding-linux-x64-musl": "1.2.3", + "@rolldown/binding-openharmony-arm64": "1.2.3", + "@rolldown/binding-win32-arm64-msvc": "1.2.3", + "@rolldown/binding-win32-x64-msvc": "1.2.3" } }, "node_modules/rollup": { @@ -10213,6 +9766,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -10410,9 +9964,9 @@ } }, "node_modules/sonda": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/sonda/-/sonda-0.13.1.tgz", - "integrity": "sha512-ocQ4bSr1IaalYphlSga5UlHkywAqOm79ojfmGe8brKgHFMrqPPSjyzz0YDVpPOh9u4VbE5omYY4C9trJSUtzLg==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/sonda/-/sonda-0.14.0.tgz", + "integrity": "sha512-NAneRzAkk8KTW1G/Z8n3kUIUjZ8u6B1yRGq1onkD+D93CSOq/aTRVkHHutD/9R6M72Jei3AIpCbkSr8tjzZVdw==", "dev": true, "license": "MIT", "dependencies": { @@ -10676,9 +10230,9 @@ "license": "MIT" }, "node_modules/temml": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/temml/-/temml-0.13.3.tgz", - "integrity": "sha512-GLNEdf5qBWux3adbOxFus4jlds8nCdEIkkKq99m/4GGTfqnsjlVlK/i371Ux7yYSg/WNmOyAkNT/GJlZoJ0v+w==", + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/temml/-/temml-0.13.4.tgz", + "integrity": "sha512-k1yolMBswx34Jw9hZn5Xh2/GBlwqlW+wiN7QaUYUMhSa1ypfti6rlCfSmCxWyooxH1G32C/Z+qVvgAsBOELZBQ==", "license": "MIT", "engines": { "node": ">=18.13.0" @@ -11080,6 +10634,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "devOptional": true, "funding": [ { "type": "opencollective", @@ -11128,16 +10683,21 @@ } }, "node_modules/use-resize-observer": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", - "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-10.0.0.tgz", + "integrity": "sha512-bR6D9uOoNB51isaK3yFs12+0Ue81jwHawsvdIyOIq5o+4ekmHn4U207IlBf3zc0fLHckhXLQtFl8moEOKcGGAQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=18.2" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", "license": "MIT", - "dependencies": { - "@juggle/resize-observer": "^3.3.1" - }, "peerDependencies": { - "react": "16.8.0 - 18", - "react-dom": "16.8.0 - 18" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util-deprecate": { @@ -11172,16 +10732,16 @@ } }, "node_modules/vite": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.2.tgz", - "integrity": "sha512-6YYPbRXTxx6bRXmOn7XdnQAy5DQNHhDgtjhDHI13oe4pY93kkcdGJWxpGwOm++/Wh0QpQhDrpIoVMrmrsI5AGQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", + "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", "dev": true, "license": "MIT", "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.4", - "postcss": "^8.5.16", - "rolldown": "~1.1.3", + "lightningcss": "^1.33.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.25", + "rolldown": "~1.2.1", "tinyglobby": "^0.2.17" }, "bin": { @@ -11198,7 +10758,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.4.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -11314,9 +10874,9 @@ "license": "MIT" }, "node_modules/vite-plugin-run": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/vite-plugin-run/-/vite-plugin-run-0.9.0.tgz", - "integrity": "sha512-Y2jaKIPtnAiQu46LJ798JV5gHRBRzGocOBX/RspfRsDbHZts/oYsvx2vQNxFLqxd0k69j4lQokYZ8dKDAqiTgA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/vite-plugin-run/-/vite-plugin-run-0.9.1.tgz", + "integrity": "sha512-0WtCNNwJM2iBbYcNfmQjHdQGluZuyKRIXM62MY+x3B4TVuCgA6pChMUFjzD1dxrQwgEl5f6duhY4ewweV7vQJw==", "dev": true, "license": "MIT", "dependencies": { @@ -11787,31 +11347,11 @@ "workbox-core": "7.4.1" } }, - "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "devOptional": true, "license": "ISC" }, "node_modules/yoctocolors": { diff --git a/package.json b/package.json index 8c3758af24..3acd2557df 100644 --- a/package.json +++ b/package.json @@ -29,73 +29,74 @@ "generate-icons": "node scripts/generate-icons.js" }, "dependencies": { - "@formatjs/intl-localematcher": "~0.8.10", - "@formatjs/intl-segmenter": "~12.2.10", - "@formkit/auto-animate": "~0.9.0", + "@formatjs/intl-localematcher": "~0.8.13", + "@formatjs/intl-segmenter": "~12.2.13", + "@formkit/auto-animate": "~0.10.0", "@github/text-expander-element": "~2.9.4", - "@iconify-json/mingcute": "~1.2.7", + "@iconify-json/mingcute": "~1.2.8", "@justinribeiro/lite-youtube": "~1.9.0", - "@lingui/detect-locale": "~6.4.0", - "@lingui/react": "~6.4.0", + "@lingui/detect-locale": "~6.6.0", + "@lingui/react": "~6.6.0", "@szhsin/react-menu": "~4.5.2", "chroma-js": "~3.2.0", "compare-versions": "~6.1.1", - "exifreader": "~4.41.0", + "exifreader": "~4.42.0", "fast-blurhash": "~1.2.0", - "fast-equals": "~6.0.0", + "fast-equals": "~6.0.2", "flexsearch": "~0.8.212", - "fuse.js": "~7.4.2", + "fuse.js": "~7.5.0", "gifuct-js": "~2.1.2", "html-prettify": "~1.0.7", - "idb-keyval": "~6.2.6", + "idb-keyval": "~6.3.0", "intl-locale-textinfo-polyfill": "~3.0.0", "js-cookie": "~3.0.8", "just-debounce-it": "~3.2.0", "lz-string": "~1.5.0", - "masto": "~7.12.0", - "micro-memoize": "~5.1.1", - "p-queue": "~9.3.0", + "masto": "~8.0.0", + "micro-memoize": "~5.1.2", + "p-queue": "~9.3.3", "p-retry": "~8.0.0", - "preact": "10.29.3", + "preact": "10.29.8", "punycode": "~2.3.1", "qr": "~0.6.0", "react-hotkeys-hook": "~5.2.4", - "react-intersection-observer": "~10.0.3", + "react-intersection-observer": "~11.0.0", "react-router-dom": "6.6.2", - "react-zoom-pan-pinch": "~4.0.3", + "react-zoom-pan-pinch": "~4.0.4", "swiped-events": "~1.2.0", - "temml": "~0.13.3", + "temml": "~0.13.4", "tinyld": "~1.3.4", "toastify-js": "~1.12.0", "uid": "~2.0.2", "use-debounce": "~10.1.1", "use-long-press": "~3.3.0", - "use-resize-observer": "~9.1.0", + "use-resize-observer": "~10.0.0", "valtio": "2.3.2", "web-haptics": "~0.0.6" }, "devDependencies": { - "@emnapi/core": "~1.11.1", - "@emnapi/runtime": "~1.11.1", - "@iconify/utils": "~3.1.3", - "@lingui/babel-plugin-lingui-macro": "~6.4.0", - "@lingui/cli": "~6.4.0", - "@lingui/vite-plugin": "~6.4.0", - "@playwright/test": "~1.61.1", - "@preact/preset-vite": "~2.10.5", - "@types/node": "~26.1.0", - "oxfmt": "~0.57.0", - "postcss": "~8.5.16", + "@babel/plugin-transform-runtime": "7.29.7", + "@emnapi/core": "~1.11.3", + "@emnapi/runtime": "~1.11.3", + "@iconify/utils": "~3.1.4", + "@lingui/babel-plugin-lingui-macro": "~6.6.0", + "@lingui/cli": "~6.6.0", + "@lingui/vite-plugin": "~6.6.0", + "@playwright/test": "~1.62.1", + "@preact/preset-vite": "~2.10.6", + "@types/node": "~26.2.0", + "oxfmt": "~0.62.0", + "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", "postcss-preset-env": "~11.3.2", - "sonda": "~0.13.1", + "sonda": "~0.14.0", "twitter-text": "~3.1.0", - "vite": "~8.1.2", + "vite": "~8.2.1", "vite-plugin-generate-file": "~0.3.1", "vite-plugin-html-config": "~2.0.2", "vite-plugin-pwa": "~1.3.0", "vite-plugin-remove-console": "~2.2.0", - "vite-plugin-run": "~0.9.0", + "vite-plugin-run": "~0.9.1", "workbox-cacheable-response": "~7.4.1", "workbox-expiration": "~7.4.1", "workbox-navigation-preload": "~7.4.1", @@ -105,7 +106,8 @@ }, "//notes": [ "@emnapi/core and @emnapi/runtime are temporary fixes for https://github.com/napi-rs/napi-rs/issues/3174", - "playwright uses @types/node" + "playwright uses @types/node", + "@babel/plugin-transform-runtime pins the 7.x line so npm doesn't auto-install 8.x (which requires @babel/core@^8) as an optional peer of @rolldown/plugin-babel from @lingui/vite-plugin" ], "postcss": { "plugins": { @@ -144,7 +146,7 @@ }, "allowScripts": { "core-js@2.6.12": true, - "exifreader@4.41.0": true, + "exifreader@4.42.0": true, "esbuild@0.25.12": true, "fsevents@2.3.2": true, "fsevents@2.3.3": true diff --git a/src/utils/useThrottledResizeObserver.js b/src/utils/useThrottledResizeObserver.js index 53f703ffca..c8e409b671 100644 --- a/src/utils/useThrottledResizeObserver.js +++ b/src/utils/useThrottledResizeObserver.js @@ -1,5 +1,5 @@ import { useThrottledCallback } from 'use-debounce'; -import useResizeObserver from 'use-resize-observer'; +import { useResizeObserver } from 'use-resize-observer'; export default function useThrottledResizeObserver(opts = {}) { const onResize = useThrottledCallback(opts.onResize, 300); From 8e7aac2511f0ff67fcf4dcbfe536138bb7c4f113 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 05:12:07 +0000 Subject: [PATCH 05/37] [autofix.ci] apply automated fixes --- src/app.css | 8 ++++---- src/components/status.css | 26 +++++++++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/app.css b/src/app.css index 04b87b45b5..1ee5ff2e21 100644 --- a/src/app.css +++ b/src/app.css @@ -1012,8 +1012,8 @@ a[href^='http'][rel*='nofollow']:visited:not(:has(div)) { } .timeline:not(.flat) { > li.timeline-item-container-type-thread.timeline-item-container-middle:not( - .timeline-item-diff-author - ) { + .timeline-item-diff-author + ) { > :is(.status-link, .status-focus) { > .status > .container { > .meta { @@ -1100,8 +1100,8 @@ a[href^='http'][rel*='nofollow']:visited:not(:has(div)) { } } .status-link:active:not( - :has(:is(.media, .poll, .card, .status-card-link, button):active) -) { + :has(:is(.media, .poll, .card, .status-card-link, button):active) + ) { filter: brightness(0.95); } diff --git a/src/components/status.css b/src/components/status.css index 66d26d3140..8ba74699c4 100644 --- a/src/components/status.css +++ b/src/components/status.css @@ -806,13 +806,13 @@ } .status .content-container.has-spoiler:not(.show-spoiler) .spoiler-button { ~ *:not( - .content.truncated, - .media-container, - .media-first-container, - .card, - .media-figure-multiple, - .spoiler-media-button - ), + .content.truncated, + .media-container, + .media-first-container, + .card, + .media-figure-multiple, + .spoiler-media-button + ), ~ .card .meta-container { opacity: 0.2; text-decoration-thickness: 1.5em; @@ -836,12 +836,12 @@ } ~ *:not( - .media-container, - .media-first-container, - .card, - .media-figure-multiple, - .spoiler-media-button - ), + .media-container, + .media-first-container, + .card, + .media-figure-multiple, + .spoiler-media-button + ), ~ .card .meta-container { img, video { From bf29df45cc906cb5c88b090d54951b8cd3bd5f9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 16 Aug 2026 00:02:37 +0000 Subject: [PATCH 06/37] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d9565b1b9e..bcab3ca8c3 100644 --- a/README.md +++ b/README.md @@ -417,6 +417,7 @@ Costs involved in running and developing this web app: - mojosoeun (Korean) - moreal (Korean) - MrWillCom (Chinese Simplified) +- Mvtbh (Persian) - nclm (French) - NiklasA95 (German) - Nortix08 (German) From 2a7b570a0f202fda5b80c4a91196fde5d34d0184 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Mon, 17 Aug 2026 12:57:49 +0800 Subject: [PATCH 07/37] Remove hard-coded dist/ --- vite.config.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/vite.config.js b/vite.config.js index bc80af6237..c5fc0c6ed7 100644 --- a/vite.config.js +++ b/vite.config.js @@ -221,7 +221,7 @@ export default defineConfig(({ command }) => { { // https://developers.cloudflare.com/pages/configuration/early-hints/ name: 'generate-headers', - writeBundle(_, bundle) { + writeBundle(options, bundle) { const cssFiles = Object.keys(bundle).filter((file) => file.endsWith('.css'), ); @@ -229,10 +229,7 @@ export default defineConfig(({ command }) => { const links = cssFiles .map((file) => ` Link: <${file}>; rel=preload; as=style`) .join('\n'); - fs.writeFileSync( - resolve(__dirname, 'dist/_headers'), - `/\n${links}`, - ); + fs.writeFileSync(resolve(options.dir, '_headers'), `/\n${links}`); } }, }, From 9c63d509136b777331b070ea73d6692914050253 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Mon, 17 Aug 2026 13:02:24 +0800 Subject: [PATCH 08/37] Upgrade deps --- package-lock.json | 528 +++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 267 insertions(+), 267 deletions(-) diff --git a/package-lock.json b/package-lock.json index 58cf75b4ae..4e7413923f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@szhsin/react-menu": "~4.5.2", "chroma-js": "~3.2.0", "compare-versions": "~6.1.1", - "exifreader": "~4.42.0", + "exifreader": "~4.43.0", "fast-blurhash": "~1.2.0", "fast-equals": "~6.0.2", "flexsearch": "~0.8.212", @@ -65,10 +65,10 @@ "@playwright/test": "~1.62.1", "@preact/preset-vite": "~2.10.6", "@types/node": "~26.2.0", - "oxfmt": "~0.62.0", + "oxfmt": "~0.63.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", - "postcss-preset-env": "~11.3.2", + "postcss-preset-env": "~11.4.0", "sonda": "~0.14.0", "twitter-text": "~3.1.0", "vite": "~8.2.1", @@ -1795,9 +1795,9 @@ } }, "node_modules/@csstools/color-helpers": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.0.tgz", - "integrity": "sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.1.tgz", + "integrity": "sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==", "dev": true, "funding": [ { @@ -1815,9 +1815,9 @@ } }, "node_modules/@csstools/css-calc": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.2.1.tgz", - "integrity": "sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.3.0.tgz", + "integrity": "sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==", "dev": true, "funding": [ { @@ -1839,9 +1839,9 @@ } }, "node_modules/@csstools/css-color-parser": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.9.tgz", - "integrity": "sha512-paQcIaOO53Rk5+YrBaBjm/SgrV4INImjo2BT1DtQRYr+XeTRbeAYlS+jxXp9drqvKmtFnWRJKIalDLhZZDu42A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.2.0.tgz", + "integrity": "sha512-5+5LEmFuY1AjXdYhmgjTJogtQnP1evJ1zrBZGUNZ0thkpwnnmKxcHdAMn/OtFjAb25zA+jKDVYVRl+5G7rjv1A==", "dev": true, "funding": [ { @@ -1855,8 +1855,8 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^6.1.0", - "@csstools/css-calc": "^3.2.1" + "@csstools/color-helpers": "^6.1.1", + "@csstools/css-calc": "^3.3.0" }, "engines": { "node": ">=20.19.0" @@ -1934,9 +1934,9 @@ } }, "node_modules/@csstools/postcss-alpha-function": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-2.0.7.tgz", - "integrity": "sha512-ueQMpNJfsIUqyOd38Kjc3c7rTaXDLKn0qr9krteAFx3fsSuawXQePAQ02AI5+RbMpdibv+Mfcs4d0AUl/SULsQ==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-2.0.9.tgz", + "integrity": "sha512-/rw75/xf60Ecz7ZsU11cOJLw0tfbL+aR9g7soEWZO1mrfhZZ+ODJYqXbMEJmr2Qc2ZMPlGKn7R5aUP6yo+wWgQ==", "dev": true, "funding": [ { @@ -1950,10 +1950,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -1991,9 +1991,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-5.0.6.tgz", - "integrity": "sha512-CHWuCfTg7afbSFMgVajmF1WU/bJ1rGBKGCj3L3tolDXZpQG2ZCQRu10ozfk1I10By9aRqQ43FTnAiDwBnbC+Hg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-5.0.8.tgz", + "integrity": "sha512-3T4mwaiip1VqAMQn6ncLqB3tIGCRZH0xLgN1ZJvsyPQcKo3N/xaTq8zJpWHYQ/upTnxFXd3nT4u1/QxJ5cN1RQ==", "dev": true, "funding": [ { @@ -2007,10 +2007,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2021,9 +2021,9 @@ } }, "node_modules/@csstools/postcss-color-function-display-p3-linear": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-2.0.6.tgz", - "integrity": "sha512-65C1CF/d9/ULr7dwmE5TBrRYZVa5sWLZX7mlR7WcBl1YwSYA8ntOvAhEEZmq8B2rBgosrOjZcDLnvFQuGaoRcA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-2.0.8.tgz", + "integrity": "sha512-uXazBO+QoRoZ8UJqFT7MvPi4nPfh5UK5MffoXSIeRjMuHEMtz/VZqGAyskl/JolsikOCAmUlnNzpQ9VdXan2Vg==", "dev": true, "funding": [ { @@ -2037,10 +2037,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2051,9 +2051,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-4.0.6.tgz", - "integrity": "sha512-gWXS+Qx4GnIq4lRvBcabAcGF5IBkfcbZ7uoUvQw/3+JYDQVkD8SoKIFRoYhwKAOm+zTDJRYLMsjxWieBh9xOZw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-4.0.8.tgz", + "integrity": "sha512-P6OncUFcry06u2N9nLzGihysKv+13Dg1uRD6nYldOKQGAkQ1yDqUWsPahVFSuBeXzL6nrewz0RY7GLNG3MOQog==", "dev": true, "funding": [ { @@ -2067,10 +2067,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2081,9 +2081,9 @@ } }, "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-2.0.6.tgz", - "integrity": "sha512-+bL0RlSDLM/02Z2JgxMK2AIas8IIL4fQkFsjETmMIXFSmOH+iRx1YEKyMbc3SogmiR8zJ41Eid7Q8+bxj7+2Dg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-2.0.8.tgz", + "integrity": "sha512-6DqDF2eXaxdPAWqvIE8n8O02U24UsAqSPwsxsZ4yqF3XIksTqGnsvfgjY2tdXd7NNLonO5wUtELPClz/TKmvhw==", "dev": true, "funding": [ { @@ -2097,10 +2097,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2138,9 +2138,9 @@ } }, "node_modules/@csstools/postcss-content-alt-text": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-3.0.2.tgz", - "integrity": "sha512-LUT1eKBzb71pmky0ke2OHJHdcqHl1vtl++qzJei5FioMVWDzxVApElTZsoFwbqV8Et+UmxzieOuhwomuyRullw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-3.0.3.tgz", + "integrity": "sha512-60L0Xf5De+FEXSXsJ6U95LRBZlHxthsBeefNcF1mDzxZUwplxSQnIlmTyo5DTiupkPWwi4Sl9aN80eT0SyxwMw==", "dev": true, "funding": [ { @@ -2156,7 +2156,7 @@ "dependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2167,9 +2167,9 @@ } }, "node_modules/@csstools/postcss-contrast-color-function": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-3.0.6.tgz", - "integrity": "sha512-7H+LLv2+A5q/l9TdWLnLB7ZgMT92aOVImzVpYSHg9pCEHSeskbqssn05rKb+ysouRM8rbg649Q2g2kIKFqLYvQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-3.0.8.tgz", + "integrity": "sha512-a7eMC53NjU6w/tlvj7mZGrBZ0Igori24s/gS2tbvKmRRpy2E1zmWJqKcpF4aAKWxd4bg6OcQqrauVRkEI1rZUw==", "dev": true, "funding": [ { @@ -2183,10 +2183,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2197,9 +2197,9 @@ } }, "node_modules/@csstools/postcss-exponential-functions": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-3.0.3.tgz", - "integrity": "sha512-mB/NoeHLBHh0LZiVSrFdRDA/NxSfmg4tSN9117IJH9bdC2BzSTVgc82h3Gu/sdBXay6kDH2sA7fbkTigMiEi2A==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-3.0.4.tgz", + "integrity": "sha512-5B1606FXRwW92nHX83MR96tqIyvUusUPsU6mT7NydYiejBwqvpH7gREKbl5f+szITqNKm6Nx4m4AGdvL9zkfoA==", "dev": true, "funding": [ { @@ -2213,7 +2213,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^3.2.1", + "@csstools/css-calc": "^3.3.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -2278,9 +2278,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-3.0.6.tgz", - "integrity": "sha512-lopCMFvN6ohy33lLmOY46matUrpL1ymVGOyebflzMb44pXoGy+f27glXCXz0PfQmfv8On3a8eVTIQfkX7nf6gQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-3.0.8.tgz", + "integrity": "sha512-9hEL++lqLOq4PImXPyzbcIMDFMs54EeK20KIHYzYrgWSZQh+nuLxVVvn5OPaNcBf1fgNq3zZeROzI4C4WtYA/A==", "dev": true, "funding": [ { @@ -2294,7 +2294,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -2306,9 +2306,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-6.0.6.tgz", - "integrity": "sha512-n23eZrwg8/XT6Ml42AAMd1PqRSm1LlrcGL+cbflpjL84xVZcWsXtHeKVzufg2uxICGnB4/t/iGa4XnOfySusEA==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-6.0.8.tgz", + "integrity": "sha512-30xf5WObqKmVExI4HKJuiUJsH0pV8qIhXwwDnyezaXxlzwpwwZTiY53EMM+ZEx+gErKJdb+60ZLeVKKxhCXrAQ==", "dev": true, "funding": [ { @@ -2322,10 +2322,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2336,9 +2336,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-5.0.6.tgz", - "integrity": "sha512-KO1PBdiyzsxVOnripQbdMF8jXlBym3CtwEWHGQWfjRB2Q7BIU6sE9GGv2OrgG3TyqPOz5BgAwackYlYlVeHWvA==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-5.0.8.tgz", + "integrity": "sha512-HGBlvdYj0ecvKvFB/l0hXQLKyNpEZyDZJjCOpJsd1koHo4SLaf/D/F65wNDkld7jsHMbOLkPfi/3Gm7Qv7vewQ==", "dev": true, "funding": [ { @@ -2352,10 +2352,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2366,9 +2366,9 @@ } }, "node_modules/@csstools/postcss-ic-unit": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-5.0.2.tgz", - "integrity": "sha512-1Wcp0ACoGKImCL9mYm6EIdqtT2JuJoeFp/06Efa6pRT0y3elLgF3jYer+c3+qUoBhV/2uDKtfWrCwAkHJ0CB9w==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-5.0.3.tgz", + "integrity": "sha512-LkyT+OUkEJPL9bBbLDwM/Jhwy8iI38wgqYe2pyAVTLDmtJlHaOsiGg8fPL6mE/o/Vxoesr44j5OknrCFPnojTw==", "dev": true, "funding": [ { @@ -2382,7 +2382,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0", "postcss-value-parser": "^4.2.0" }, @@ -2394,9 +2394,9 @@ } }, "node_modules/@csstools/postcss-image-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-image-function/-/postcss-image-function-1.0.1.tgz", - "integrity": "sha512-6V7+8npoBxVgO3JbIdKqI6eo1NAIQtO0oNSfLSgH439WYB43/kM+GneG4elkgglRo1ppgVhjXxmNqhI+K4pEzg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-image-function/-/postcss-image-function-1.0.2.tgz", + "integrity": "sha512-P6y1oL5tBnJRitYe4FmHnW4zoDd5grCFWOnEsTkfAXhTJCy+lZ1wqUuluDIT2JYnhwKrOcyBmWEN/qFB9SlGHQ==", "dev": true, "funding": [ { @@ -2412,7 +2412,7 @@ "dependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2473,9 +2473,9 @@ } }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-3.0.2.tgz", - "integrity": "sha512-Fu6si5QhRrT5lP7nmXxfowR8zNkYrqoolsWOZxPZBZpVTdoEKazN6v+K53vPcy1EM4Mlj6tSaEjMu4gAwC8yqw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-3.0.3.tgz", + "integrity": "sha512-5P5Y3q0cRNSYh662IJCuzNY/25WKzMGPMpL5f7PQcoNEH6OD9J1lAAK0DakLiopwnJ3dD1Qe2vkC8Yl2GUrZOQ==", "dev": true, "funding": [ { @@ -2491,7 +2491,7 @@ "dependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2624,9 +2624,9 @@ } }, "node_modules/@csstools/postcss-media-minmax": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-3.0.3.tgz", - "integrity": "sha512-ch1tNS+1QayiHTGsyc53zv3AzrSd0zigjbkfLxoeuzzJyn32+P3V7em3u5vLVnqLMzBbEZK//GI13EVTIPRdDA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-3.0.4.tgz", + "integrity": "sha512-f3V1TsBXGR/TamldN75OMKSVKxvlqvEatn2ipiir/4KTNpB4x5+AsYc3OTtpH6nJQOEHP9n+d3y0k78MRt+SLQ==", "dev": true, "funding": [ { @@ -2640,7 +2640,7 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-calc": "^3.2.1", + "@csstools/css-calc": "^3.3.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/media-query-list-parser": "^5.0.0" @@ -2761,9 +2761,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-5.0.6.tgz", - "integrity": "sha512-6yZ+OySSaBybv12OfgKFBgCK1Se2mBbhh9eIDbUdWGHJUXZPQoLbtPj8S6Wg0lqe0nTqKgY/l8Ir9lHrm2TUBQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-5.0.8.tgz", + "integrity": "sha512-ZxdD+Z/1rZYOsmU3TB1ufUZrtKngB9zrh5/3llzwFMA5ffk95db0YaURgAA4OToJzvmYUrVv+TY+dcTkxYjlGg==", "dev": true, "funding": [ { @@ -2777,10 +2777,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2814,9 +2814,9 @@ } }, "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-5.1.1.tgz", - "integrity": "sha512-b9+lusgVDTHXRBgYKE9s0RKUyEn6Q/knmMDmYmSrkZjtpb0Nd71pBtgVMf9tSpOIb0K8hyzeyy6JyKFqg5rBJw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-5.1.2.tgz", + "integrity": "sha512-aGHhh/haanBUxYTqr+mXC52iCNuG/p68CSqz3aoQyqSAgwyxNQGofFYwWo7sd8iQUS8BDoQ/khkPb4ymGyt3aw==", "dev": true, "funding": [ { @@ -2867,9 +2867,9 @@ } }, "node_modules/@csstools/postcss-random-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-3.0.3.tgz", - "integrity": "sha512-0EScyKxscGonwpi30Hj9DEAr0X8D2eDhOqqayQXE91gIqGli9UT+deLYqoogZLOy5GT+ncqltMqztc/q+0UkhA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-4.0.0.tgz", + "integrity": "sha512-tuPgeglK6Fh0bKstx4sSa4V6NG69ioUtSzcy3R7z5ZbJdKVfU9TqUBfpmT4JnfXfBdbs8vKOnPN04iT4/gkSKQ==", "dev": true, "funding": [ { @@ -2883,7 +2883,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^3.2.1", + "@csstools/css-calc": "^3.3.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -2895,9 +2895,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-4.0.6.tgz", - "integrity": "sha512-4SUC+qfJE/8sV62oo/fcxNKSBgiSVqE8c7f9TBwvNY3WnD0YHJyEM3eIjXn1CxbMNl7gR6uBVuLuJB3xgr/O1w==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-4.0.8.tgz", + "integrity": "sha512-PUk4ZqNMTVcKRlAD1XXVVzUPJjUtZQKvxPM1O2Z5UC7OCdzqM+FfKDx8rhuOk9lwGvOtFpia8S9rC6p7oGIpfw==", "dev": true, "funding": [ { @@ -2911,10 +2911,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -2951,9 +2951,9 @@ } }, "node_modules/@csstools/postcss-sign-functions": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-2.0.3.tgz", - "integrity": "sha512-2BCPwlpeQweTC/8S8oQFYhYD5kxYkiroLf3AUJV2kVoKkSZ+4WM4rSwySXlKrqXL8HfCryAwVrJg7B0jr/RnOw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-2.0.4.tgz", + "integrity": "sha512-vHfgUnPoKNF687H7ycoisAvoFYBq71X90N7pHclouRUUwZRea8XIJVo+Cq0jgRJEzv9vx+X7XEl+arTqns/C/A==", "dev": true, "funding": [ { @@ -2967,7 +2967,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^3.2.1", + "@csstools/css-calc": "^3.3.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -2979,9 +2979,9 @@ } }, "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-5.0.3.tgz", - "integrity": "sha512-nXMFQBz5Pi2LLG02iqm2k+scrqwtqJT9ta/gN8S79oBZ23M0E7O3wDJ20//3z5Q6HU5e+K0n+SmmxN6iWtbm6w==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-5.0.4.tgz", + "integrity": "sha512-Wpgrsx1spMx4fJnTs/I6vZyKjw0Jf3RmScRb53RQtXBMHsJEXM1/YmtQ/4vRBpiYyrSrUgvoKaGJCl8p51zQFQ==", "dev": true, "funding": [ { @@ -2995,7 +2995,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^3.2.1", + "@csstools/css-calc": "^3.3.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -3060,9 +3060,9 @@ } }, "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-5.0.4.tgz", - "integrity": "sha512-LHQL1a0CW0j3oBEivwgp1Gqv+VUppWpEyedM9GBzE6yIT6tnZqY9v0ADX1jO6IptTZTdrnBwM+dveDIuUP+pTA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-5.0.5.tgz", + "integrity": "sha512-BIpgsIO72M/ioe0LfRcqYWi/Dm+ym8RRaQMVRdEKrad4Yqql+xFdqKaUjbOHWL8jpsmiZkbi/fXQdal1HlnjAQ==", "dev": true, "funding": [ { @@ -3076,7 +3076,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/color-helpers": "^6.1.0", + "@csstools/color-helpers": "^6.1.1", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -3087,9 +3087,9 @@ } }, "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-5.0.3.tgz", - "integrity": "sha512-p9LTvLj+DFpl5RHbG/X9QGwg7BoMOBsRBZqsUAKKVvCw7MRCsk1P1llTUR/MW5nyZ4IsjFGDtDwTTj1reJjxvg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-5.0.4.tgz", + "integrity": "sha512-0fC7JEKkC0abryfLVZrYVQyhWqfkaq4qsaSeK+Zy/q2abna0bOuPwV+zO9vu3B6+0pHMf5rEgwcPDiOZAp8UGA==", "dev": true, "funding": [ { @@ -3103,7 +3103,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^3.2.1", + "@csstools/css-calc": "^3.3.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -3138,9 +3138,9 @@ } }, "node_modules/@csstools/selector-resolve-nested": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.0.tgz", - "integrity": "sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.1.tgz", + "integrity": "sha512-j3vdQu0XwLME5qOTWxm8cnmvsf423R2YL6DbKklCHZwkDm7UdKNu6RPlw4REIJhSlKBICY3B70/7QZdicLqZgg==", "dev": true, "funding": [ { @@ -3669,9 +3669,9 @@ } }, "node_modules/@oxfmt/binding-android-arm-eabi": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.62.0.tgz", - "integrity": "sha512-pdsv0C4gPjJ8H1+sd8u0BDx+yLACTL+rgeMIOL1ln4ihSnhw8CWXtYWgvcSkyTfgGBIzFKab+d8rx9Xl4en/Kw==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.63.0.tgz", + "integrity": "sha512-YmRth4ZPGgEXcgmkhvANbC9uD67dxmSobW7DQuyt5tOBOKvPnIpk5SVHBj88E+7wMNRI2FhqaDbOhQFBix+b8A==", "cpu": [ "arm" ], @@ -3686,9 +3686,9 @@ } }, "node_modules/@oxfmt/binding-android-arm64": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.62.0.tgz", - "integrity": "sha512-WC3YQ7uS/KtDrjmqwBviwFKe9qeoi+eXx8aX1z/ffG23Md75myjrJaQqTuJvdOLPoa4EYTjDWH0dHXfwulCVog==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.63.0.tgz", + "integrity": "sha512-icbahX8X2X3sRamOMecvdYeZXWjPDazRDIfvWfy7Ca1nc/ZDT2Y9k5Nt7s46EqFd7NQPdgk+CM3/SgIT5LPCaQ==", "cpu": [ "arm64" ], @@ -3703,9 +3703,9 @@ } }, "node_modules/@oxfmt/binding-darwin-arm64": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.62.0.tgz", - "integrity": "sha512-GM8Yf3LjjaR1I8PD0SfeoIlwhsh9GvSF+cQ8sf624Yxnjsyumn95aFzYfKJVefblfDIiOAnZ7QVm2sa21Er/0Q==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.63.0.tgz", + "integrity": "sha512-WV+Ze5v5gI2qoj8jpAovt8KBTW8pjEz/AiMXXjeTQS+Bmf/MmZXTS40S8xNPDszX+W8WDv2Bbk6qKrMTtUGu1A==", "cpu": [ "arm64" ], @@ -3720,9 +3720,9 @@ } }, "node_modules/@oxfmt/binding-darwin-x64": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.62.0.tgz", - "integrity": "sha512-d5THp7F8bCxLqNogEXDORRsQD6dosf3EyFtnXfBer6v+8tGdcWIjoDX9WaXrrF/26zOmL8qHpPTKCEvpBDmZkQ==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.63.0.tgz", + "integrity": "sha512-CJGSBdDxXOWIpoFXHpverimCvz084KA7L483rqJ44c3jDtzv6d4qOSoR/V9ywSHfV+Ks1lwIj2P49BFhunLNAA==", "cpu": [ "x64" ], @@ -3737,9 +3737,9 @@ } }, "node_modules/@oxfmt/binding-freebsd-x64": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.62.0.tgz", - "integrity": "sha512-1DnrtXGZooOZ0fHgAXZUaDQzBVh1CM2MNW4oBXyQ2aWKvCHjyljvT9fgBkOM0fEOb96X5eqtcfJ0YUVt9jj66g==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.63.0.tgz", + "integrity": "sha512-BDfKY+KhL2078cgswBBFQPAYuxCy93bS/iC5frdSeSbTLcGrR6VC2hsuPTanoJmg84+wSyWl0wWC1eR+uTnkRg==", "cpu": [ "x64" ], @@ -3754,9 +3754,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-gnueabihf": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.62.0.tgz", - "integrity": "sha512-4pQDHOYRH+Huqe0StIaWyvk2CVl/aTaqSrbZpA3/pLS2xH24ME7lBgYprhQF2fRkHBzhGGGKliwxFsDdHwx59g==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.63.0.tgz", + "integrity": "sha512-Ov1cQEXT4mj7cojAokWSS1eoxkoyvbDfAbxNsGIKY2o36kvdAaFzPxRN6NxFRk9fD72B8oCoTTX/NuYTUWlpsg==", "cpu": [ "arm" ], @@ -3771,9 +3771,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-musleabihf": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.62.0.tgz", - "integrity": "sha512-X0jAaZJFMCVKhB6YyWVTQ/wN2DLsBcZKSMqTS76bF6riT+XZdtg2FPEdjDvdVbunO9cG+tWiVaEs4Zs38lxYog==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.63.0.tgz", + "integrity": "sha512-0LE7ro3+6L79jcMANycAZfRaC7zxr9YZ2+vEL5uMD9QlEep+rS/r1kSJsnuLl991NXJZD60euh0PC1GHrR20vw==", "cpu": [ "arm" ], @@ -3788,9 +3788,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-gnu": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.62.0.tgz", - "integrity": "sha512-682Z8T5s8T5ATArYtsejKvbIfd8LEAXyyDkKkoZVq8HND7Vx8TYLlrDjDSeYfodMeVwHOgkj13lJYR8cj6vUSg==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.63.0.tgz", + "integrity": "sha512-izPk+2Z4gjuZK32Fqh5qXoMpT/2NXzLh++ob57HiEiVSQZ1iYXu8EKMzb+K5AvWyIEXhdDIt7ADjGGtFhkT9Bw==", "cpu": [ "arm64" ], @@ -3808,9 +3808,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-musl": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.62.0.tgz", - "integrity": "sha512-lk25fAl7KWaLWVJcW0CHEXB7QlQZtx5eDkjpaGMK0hzXTjUe0Wmlu8IKuFHoviSOcEJedRTs4VE/506VqGxGew==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.63.0.tgz", + "integrity": "sha512-alPmbOuWXFXiSo+lOtv6X71C7SYMEDW2WVvywOvf9BwKgEhSNGhMTLeFVSjKUMCamcjbbgVdsWF8GN1uy8xshg==", "cpu": [ "arm64" ], @@ -3828,9 +3828,9 @@ } }, "node_modules/@oxfmt/binding-linux-ppc64-gnu": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.62.0.tgz", - "integrity": "sha512-SFyNqHQLwySceWNLhiSldx7wPXRAzP0L0WcW9GegP3uWrpZGJiZlQO85NbHAFPEfxR9PhZ9qSnZryEh7+v+4Gw==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.63.0.tgz", + "integrity": "sha512-BdzCPvolJc4AWZ+YMzgUDJcDzbQWrFjYuqBHoNHNqP1aCaluQRJNs4k3vNU5IG7vTpjf9zeD73D7MFM1TecZpg==", "cpu": [ "ppc64" ], @@ -3848,9 +3848,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-gnu": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.62.0.tgz", - "integrity": "sha512-KYj55C1ywJfHo6+aKDuEmUtVEdJALsC5GwayDGsI6FGz2GxFqNr/mA8nxVsNbJzm7sE5MRqTQ9ziImSzhYXysA==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.63.0.tgz", + "integrity": "sha512-7sIgfLzqtNKSkMGsGVyRpHwpjNezRg2XONvUOheFZs95TSZpM0JAuPpA8KrQFsWc4wPU95roX2O69JgH8igOgw==", "cpu": [ "riscv64" ], @@ -3868,9 +3868,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-musl": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.62.0.tgz", - "integrity": "sha512-BhZDNo5GOU5nC378RhD0/XpvaEBHsH3HLgJp8YZX3A0InC7oivzA63HsRmiXFLtLSHAstEVrDf6fbC7Rs8Jh/A==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.63.0.tgz", + "integrity": "sha512-9Tcg0y0WcVa6Mm9AgcgFMseDS+VkFJZpKZ8We9SpDY4gg5jewSwln+0sO04QLcTS1BtfDl9MwR+NfID8L7PUTg==", "cpu": [ "riscv64" ], @@ -3888,9 +3888,9 @@ } }, "node_modules/@oxfmt/binding-linux-s390x-gnu": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.62.0.tgz", - "integrity": "sha512-UyAFmyHkgSgUJ/wOM4p3U8AC2yAFvRH5PNBs7TnK0fObTT/XSWcdr/lAzPSWaekHaZFaMeFZyk9n93Joq3J93A==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.63.0.tgz", + "integrity": "sha512-qWKC1pEOpx1qYhXaugPhHUeXwSfqEOk2wJH2LqVXGPV5iQYfdAZdt+d2XDiX4DTSWA2QDMUcFB+wEORh3Xn/sA==", "cpu": [ "s390x" ], @@ -3908,9 +3908,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-gnu": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.62.0.tgz", - "integrity": "sha512-1iYMP0leytWazFubD/WnINJuIrzRPuoL1aWEJdlGezEzDbTxcd29R4r8IUzP2oWeKst5V02uMJgR2NILlPlG6w==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.63.0.tgz", + "integrity": "sha512-S9wXYOiGSqYGS4Fx/TFsY+xDd/7dE5s+rUgbA4TsHiVF9e8J3ZcKmP7dsP/7iqLI9Wz7Ic7TzEr3mdthRCTdrA==", "cpu": [ "x64" ], @@ -3928,9 +3928,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-musl": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.62.0.tgz", - "integrity": "sha512-4rA/URtJSTVNVAQz6Q8wf7SaRvOXVy+TizriT9hs/Y1XhLR/R+92uWKRQG8yFWRAIEBbFHJ6WevQcl/G9SXEfw==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.63.0.tgz", + "integrity": "sha512-5eGyTJuMZNwBSHCivXt8Yuta6GeTYksOPXRk2MIhajiyFGQx7bjaHIwY+ZusAoFHhT157A9x6sktLjYo9D5oMQ==", "cpu": [ "x64" ], @@ -3948,9 +3948,9 @@ } }, "node_modules/@oxfmt/binding-openharmony-arm64": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.62.0.tgz", - "integrity": "sha512-mSZuFHU2ar1KLUjXpI2QBQcJ1VsOB3mOCgQXuXCpKs19dgh4u+OaovNfrWDfiJb+ihJ2+f7YFcaO9bS2dlTCXA==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.63.0.tgz", + "integrity": "sha512-Rz7hx+Dv3DoW/S6pwVAyjfFXp7/trdQ1zg+vNmsdsdDNlUccugp4XNqambSuEAeP0DaG9k72AtNyfDXCEg0AGw==", "cpu": [ "arm64" ], @@ -3965,9 +3965,9 @@ } }, "node_modules/@oxfmt/binding-win32-arm64-msvc": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.62.0.tgz", - "integrity": "sha512-OfwuhkcjDlqC4EgDojtiV9mzpLqeB9KqTOWPOjLEYBVdDCVSxqW3qzp/xcIxsbtI0UgGCnKvAqYKyY25kf5JZw==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.63.0.tgz", + "integrity": "sha512-T/IuizKN9mr4Xw6YYnptkXRNdLkyIlUZ7c8zfTOBpoytZyJ1BAsMUvsMDEx0X4YvSMpaivm+DR8112rQfzC25g==", "cpu": [ "arm64" ], @@ -3982,9 +3982,9 @@ } }, "node_modules/@oxfmt/binding-win32-ia32-msvc": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.62.0.tgz", - "integrity": "sha512-P9uDDNFRzghO3X8QAzhkjKhK7JvtABsVn8UYtFX7uor12IAnwNt8nNIctvfWj1JkQU/kE+fmLRPiw7XlrIHsZw==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.63.0.tgz", + "integrity": "sha512-XjrO5FJ5Wl9vsAxtCP1G/eaeT6y1K2s9CICUHGE42cEjou32/J6S+B1KnrOAboj6E7uhJnwPbRSvznWcxNdA0g==", "cpu": [ "ia32" ], @@ -3999,9 +3999,9 @@ } }, "node_modules/@oxfmt/binding-win32-x64-msvc": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.62.0.tgz", - "integrity": "sha512-dlI5SY7XYQCiCBafntWagCR6HcAJB/NpsLtdlPx8x08+Osz8Ok1HHz1GZuusegCe/VoJ6pAnF5a4pd5OZAq7qQ==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.63.0.tgz", + "integrity": "sha512-sgsHCQy432OTQH4Ikk3tZptp3GqwnhwUDuY0loBH41zyHWfMZY9v8Dy78wsnSofHejvFozZGgJgBB1A0LQRwMQ==", "cpu": [ "x64" ], @@ -5614,9 +5614,9 @@ } }, "node_modules/css-blank-pseudo": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-8.0.1.tgz", - "integrity": "sha512-C5B2e5hCM4llrQkUms+KnWEMVW8K1n2XvX9G7ppfMZJQ7KAS/4rNnkP1Cs+HhWriOz1mWWTMFD4j1J7s31Dgug==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-8.0.2.tgz", + "integrity": "sha512-slkPVai9igcMmQqbbb6j1Y2PI6kSyKHKYspouvZbU74ZepumYlFmPEDGJWULh1dLtYyPMHoVqFwOByrSBvOq2g==", "dev": true, "funding": [ { @@ -5640,9 +5640,9 @@ } }, "node_modules/css-has-pseudo": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-8.0.0.tgz", - "integrity": "sha512-Uz/bsHRbOeir/5Oeuz85tq/yLJLxX+3dpoRdjNTshs6jjqwUg8XaEZGDd0ci3fw7l53Srw0EkJ8mYan0eW5uGQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-8.0.1.tgz", + "integrity": "sha512-rbAA5luesIpXfRwc88KfJtaLQ2TTFmoUAU1AnolV8GHr+Z796hICAErTZl/PLnif/X18UoteT8G8fnmol3e0rQ==", "dev": true, "funding": [ { @@ -5668,9 +5668,9 @@ } }, "node_modules/css-prefers-color-scheme": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-11.0.0.tgz", - "integrity": "sha512-fv0mgtwUhh2m9iio3Kxc2CkrogjIaRdMFaaqyzSFdii17JF4cfPyMNX72B15ZW2Nrr/NZUpxI4dec1VMHYJvdw==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-11.0.1.tgz", + "integrity": "sha512-JjBlS/GDGlqUBXS5duzFsSOMF5NJmnd11tGggppuhZeur7c1DEFWMw4xDPrUlRzfKt6AectVaiV622dZXpOPHA==", "dev": true, "funding": [ { @@ -6204,9 +6204,9 @@ "license": "MIT" }, "node_modules/exifreader": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/exifreader/-/exifreader-4.42.0.tgz", - "integrity": "sha512-dvjmG8KvSoMvFCG7XaH+kRgBXUTZxWibdm6ThyjcZbA18pAALPRaLcletWg8wAeYo1E1j46q5cuTsLQJipOqsA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/exifreader/-/exifreader-4.43.0.tgz", + "integrity": "sha512-Ssi/NzA5HZ9RQ43USwrlT+t/g0hDHJoFOs5BvN6jolnBvToXnTVQCUDhdvqXix/ff1bIR58AG9/YYwTf1dthgw==", "hasInstallScript": true, "license": "MPL-2.0", "bin": { @@ -8215,9 +8215,9 @@ } }, "node_modules/oxfmt": { - "version": "0.62.0", - "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.62.0.tgz", - "integrity": "sha512-vxgGHTmnDU9j4CX7dDBLzxgmHxfda/yPcgJkGCMUSCwRmz+euo/V08xXLNgXTeqAB9Fhf3Pe2nO1RNKLCVgphQ==", + "version": "0.63.0", + "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.63.0.tgz", + "integrity": "sha512-kgdDwv35wvVf6554U2Ab8Jnd0zTM+TsEQWwaB70RAjK3gICFAFGO+2Hd3Be27GMoXj3XRL9IKSNRVl7KBQL6iw==", "dev": true, "license": "MIT", "dependencies": { @@ -8233,25 +8233,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxfmt/binding-android-arm-eabi": "0.62.0", - "@oxfmt/binding-android-arm64": "0.62.0", - "@oxfmt/binding-darwin-arm64": "0.62.0", - "@oxfmt/binding-darwin-x64": "0.62.0", - "@oxfmt/binding-freebsd-x64": "0.62.0", - "@oxfmt/binding-linux-arm-gnueabihf": "0.62.0", - "@oxfmt/binding-linux-arm-musleabihf": "0.62.0", - "@oxfmt/binding-linux-arm64-gnu": "0.62.0", - "@oxfmt/binding-linux-arm64-musl": "0.62.0", - "@oxfmt/binding-linux-ppc64-gnu": "0.62.0", - "@oxfmt/binding-linux-riscv64-gnu": "0.62.0", - "@oxfmt/binding-linux-riscv64-musl": "0.62.0", - "@oxfmt/binding-linux-s390x-gnu": "0.62.0", - "@oxfmt/binding-linux-x64-gnu": "0.62.0", - "@oxfmt/binding-linux-x64-musl": "0.62.0", - "@oxfmt/binding-openharmony-arm64": "0.62.0", - "@oxfmt/binding-win32-arm64-msvc": "0.62.0", - "@oxfmt/binding-win32-ia32-msvc": "0.62.0", - "@oxfmt/binding-win32-x64-msvc": "0.62.0" + "@oxfmt/binding-android-arm-eabi": "0.63.0", + "@oxfmt/binding-android-arm64": "0.63.0", + "@oxfmt/binding-darwin-arm64": "0.63.0", + "@oxfmt/binding-darwin-x64": "0.63.0", + "@oxfmt/binding-freebsd-x64": "0.63.0", + "@oxfmt/binding-linux-arm-gnueabihf": "0.63.0", + "@oxfmt/binding-linux-arm-musleabihf": "0.63.0", + "@oxfmt/binding-linux-arm64-gnu": "0.63.0", + "@oxfmt/binding-linux-arm64-musl": "0.63.0", + "@oxfmt/binding-linux-ppc64-gnu": "0.63.0", + "@oxfmt/binding-linux-riscv64-gnu": "0.63.0", + "@oxfmt/binding-linux-riscv64-musl": "0.63.0", + "@oxfmt/binding-linux-s390x-gnu": "0.63.0", + "@oxfmt/binding-linux-x64-gnu": "0.63.0", + "@oxfmt/binding-linux-x64-musl": "0.63.0", + "@oxfmt/binding-openharmony-arm64": "0.63.0", + "@oxfmt/binding-win32-arm64-msvc": "0.63.0", + "@oxfmt/binding-win32-ia32-msvc": "0.63.0", + "@oxfmt/binding-win32-x64-msvc": "0.63.0" }, "peerDependencies": { "svelte": "^5.0.0", @@ -8511,9 +8511,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-8.0.6.tgz", - "integrity": "sha512-JwHsQNb/zzjRN/RFdhWWb3bk6WiNs7KW85+vYtLP1YVL6MgPQn/2qNMgFrjD8Ymg+wfP3XlwtSrYUI+K4zPvHA==", + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-8.0.8.tgz", + "integrity": "sha512-xca5kF3C1QNRaanxiZ/CF1KMUxC3xT6BYQ2tPJTKEoKE4+iDfvLjV2DVQozHeIbnJC8Etcwrr2ycyCIuYxA30g==", "dev": true, "funding": [ { @@ -8527,10 +8527,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -8735,9 +8735,9 @@ } }, "node_modules/postcss-double-position-gradients": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-7.0.2.tgz", - "integrity": "sha512-X62YBNOxoCVvoUpV3uxdg5h86nbzJwF0ogLrgHUL73YsX8FJ5pGeOxRuaUcqhHxQ4wcoKY+O55lJAyCGsxZLJA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-7.0.3.tgz", + "integrity": "sha512-cOW0WTgcIyIAqCKPNt9pESfNecYGpqBI8Y5PwDhtggoMCwwbOJ5mF5WcHZSGT6Zkj76vILAjuvl5r7O5A9uqtg==", "dev": true, "funding": [ { @@ -8751,7 +8751,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0", "postcss-value-parser": "^4.2.0" }, @@ -8789,9 +8789,9 @@ } }, "node_modules/postcss-focus-within": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-10.0.0.tgz", - "integrity": "sha512-dvql0fzUTG+gcJYp+KTbag5vAjuo94LDYZHkqDV1rnf5gPGer1v/SrmIZBdvKU8moep3HbcbujqGjzSb3DL53Q==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-10.0.1.tgz", + "integrity": "sha512-A5w/D1q/PR6eRqXwwLZPNxNYMSbLOgelxHw2I/HAV4+okY8bxvafbrmuoy+xPuWSXahpVoUO2aw72PYlYEXXAg==", "dev": true, "funding": [ { @@ -8875,9 +8875,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-8.0.6.tgz", - "integrity": "sha512-zFU65d+uKFTdkvJWPpEMgRwY0gh7RN5FD4aWfLxbeXeAkITSpODG6nH2GKAdbnA4jWjyPac1lw8osw+1ATMcWg==", + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-8.0.8.tgz", + "integrity": "sha512-szBEKkYQ58IufK2h7rKSbS3ZYjZG+Owl/o/nn/UGALqkdn1HTI5IVXIPrFGL7Vb1FXH5RzSgCbBu47pT5os5Uw==", "dev": true, "funding": [ { @@ -8891,10 +8891,10 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.1.9", + "@csstools/css-color-parser": "^4.2.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/utilities": "^3.0.0" }, "engines": { @@ -8931,9 +8931,9 @@ } }, "node_modules/postcss-nesting": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-14.0.0.tgz", - "integrity": "sha512-YGFOfVrjxYfeGTS5XctP1WCI5hu8Lr9SmntjfRC+iX5hCihEO+QZl9Ra+pkjqkgoVdDKvb2JccpElcowhZtzpw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-14.0.1.tgz", + "integrity": "sha512-80MH7KcmMtb7ffSBX82uZwnogltubaXF0sagu+OGD8M9jViR3ngRgCdoTzKCvKEtllB0MW2U7Rgfcub5fR1Bug==", "dev": true, "funding": [ { @@ -8947,7 +8947,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/selector-resolve-nested": "^4.0.0", + "@csstools/selector-resolve-nested": "^4.0.1", "@csstools/selector-specificity": "^6.0.0", "postcss-selector-parser": "^7.1.1" }, @@ -9044,9 +9044,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-11.3.2.tgz", - "integrity": "sha512-O7aA42UBH/89RkGy1YXgJqb+LxZ2+zvR8bHn9qyYcYc+lOo4g9TuIpb75nZT1tN77Bd6pX3DMZ+eYohS4MfKQg==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-11.4.0.tgz", + "integrity": "sha512-KFhGWarjnlul+1BHEz+Kv5H7UGNQUpQJ3C8rXW79UIREszo+xb1SU+V9tRNLeBwFOIBCn+ozC87DFpgPHpqfUQ==", "dev": true, "funding": [ { @@ -9060,74 +9060,74 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-alpha-function": "^2.0.7", + "@csstools/postcss-alpha-function": "^2.0.9", "@csstools/postcss-cascade-layers": "^6.0.0", - "@csstools/postcss-color-function": "^5.0.6", - "@csstools/postcss-color-function-display-p3-linear": "^2.0.6", - "@csstools/postcss-color-mix-function": "^4.0.6", - "@csstools/postcss-color-mix-variadic-function-arguments": "^2.0.6", + "@csstools/postcss-color-function": "^5.0.8", + "@csstools/postcss-color-function-display-p3-linear": "^2.0.8", + "@csstools/postcss-color-mix-function": "^4.0.8", + "@csstools/postcss-color-mix-variadic-function-arguments": "^2.0.8", "@csstools/postcss-container-rule-prelude-list": "^1.0.1", - "@csstools/postcss-content-alt-text": "^3.0.2", - "@csstools/postcss-contrast-color-function": "^3.0.6", - "@csstools/postcss-exponential-functions": "^3.0.3", + "@csstools/postcss-content-alt-text": "^3.0.3", + "@csstools/postcss-contrast-color-function": "^3.0.8", + "@csstools/postcss-exponential-functions": "^3.0.4", "@csstools/postcss-font-format-keywords": "^5.0.0", "@csstools/postcss-font-width-property": "^1.0.0", - "@csstools/postcss-gamut-mapping": "^3.0.6", - "@csstools/postcss-gradients-interpolation-method": "^6.0.6", - "@csstools/postcss-hwb-function": "^5.0.6", - "@csstools/postcss-ic-unit": "^5.0.2", - "@csstools/postcss-image-function": "^1.0.1", + "@csstools/postcss-gamut-mapping": "^3.0.8", + "@csstools/postcss-gradients-interpolation-method": "^6.0.8", + "@csstools/postcss-hwb-function": "^5.0.8", + "@csstools/postcss-ic-unit": "^5.0.3", + "@csstools/postcss-image-function": "^1.0.2", "@csstools/postcss-initial": "^3.0.0", "@csstools/postcss-is-pseudo-class": "^6.0.0", - "@csstools/postcss-light-dark-function": "^3.0.2", + "@csstools/postcss-light-dark-function": "^3.0.3", "@csstools/postcss-logical-float-and-clear": "^4.0.0", "@csstools/postcss-logical-overflow": "^3.0.0", "@csstools/postcss-logical-overscroll-behavior": "^3.0.0", "@csstools/postcss-logical-resize": "^4.0.0", "@csstools/postcss-logical-viewport-units": "^4.0.0", - "@csstools/postcss-media-minmax": "^3.0.3", + "@csstools/postcss-media-minmax": "^3.0.4", "@csstools/postcss-media-queries-aspect-ratio-number-values": "^4.0.0", "@csstools/postcss-mixins": "^1.0.0", "@csstools/postcss-nested-calc": "^5.0.0", "@csstools/postcss-normalize-display-values": "^5.0.1", - "@csstools/postcss-oklab-function": "^5.0.6", + "@csstools/postcss-oklab-function": "^5.0.8", "@csstools/postcss-position-area-property": "^2.0.0", - "@csstools/postcss-progressive-custom-properties": "^5.1.1", + "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/postcss-property-rule-prelude-list": "^2.0.0", - "@csstools/postcss-random-function": "^3.0.3", - "@csstools/postcss-relative-color-syntax": "^4.0.6", + "@csstools/postcss-random-function": "^4.0.0", + "@csstools/postcss-relative-color-syntax": "^4.0.8", "@csstools/postcss-scope-pseudo-class": "^5.0.0", - "@csstools/postcss-sign-functions": "^2.0.3", - "@csstools/postcss-stepped-value-functions": "^5.0.3", + "@csstools/postcss-sign-functions": "^2.0.4", + "@csstools/postcss-stepped-value-functions": "^5.0.4", "@csstools/postcss-syntax-descriptor-syntax-production": "^2.0.0", "@csstools/postcss-system-ui-font-family": "^2.0.0", - "@csstools/postcss-text-decoration-shorthand": "^5.0.4", - "@csstools/postcss-trigonometric-functions": "^5.0.3", + "@csstools/postcss-text-decoration-shorthand": "^5.0.5", + "@csstools/postcss-trigonometric-functions": "^5.0.4", "@csstools/postcss-unset-value": "^5.0.0", "autoprefixer": "^10.5.0", "browserslist": "^4.28.1", - "css-blank-pseudo": "^8.0.1", - "css-has-pseudo": "^8.0.0", - "css-prefers-color-scheme": "^11.0.0", + "css-blank-pseudo": "^8.0.2", + "css-has-pseudo": "^8.0.1", + "css-prefers-color-scheme": "^11.0.1", "cssdb": "^8.9.0", "postcss-attribute-case-insensitive": "^8.0.0", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^8.0.6", + "postcss-color-functional-notation": "^8.0.8", "postcss-color-hex-alpha": "^11.0.0", "postcss-color-rebeccapurple": "^11.0.0", "postcss-custom-media": "^12.0.1", "postcss-custom-properties": "^15.0.1", "postcss-custom-selectors": "^9.0.1", "postcss-dir-pseudo-class": "^10.0.0", - "postcss-double-position-gradients": "^7.0.2", + "postcss-double-position-gradients": "^7.0.3", "postcss-focus-visible": "^11.0.0", - "postcss-focus-within": "^10.0.0", + "postcss-focus-within": "^10.0.1", "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^7.0.0", "postcss-image-set-function": "^8.0.0", - "postcss-lab-function": "^8.0.6", + "postcss-lab-function": "^8.0.8", "postcss-logical": "^9.0.0", - "postcss-nesting": "^14.0.0", + "postcss-nesting": "^14.0.1", "postcss-opacity-percentage": "^3.0.0", "postcss-overflow-shorthand": "^7.0.0", "postcss-page-break": "^3.0.4", diff --git a/package.json b/package.json index 3acd2557df..056d95446e 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@szhsin/react-menu": "~4.5.2", "chroma-js": "~3.2.0", "compare-versions": "~6.1.1", - "exifreader": "~4.42.0", + "exifreader": "~4.43.0", "fast-blurhash": "~1.2.0", "fast-equals": "~6.0.2", "flexsearch": "~0.8.212", @@ -85,10 +85,10 @@ "@playwright/test": "~1.62.1", "@preact/preset-vite": "~2.10.6", "@types/node": "~26.2.0", - "oxfmt": "~0.62.0", + "oxfmt": "~0.63.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", - "postcss-preset-env": "~11.3.2", + "postcss-preset-env": "~11.4.0", "sonda": "~0.14.0", "twitter-text": "~3.1.0", "vite": "~8.2.1", From 7e9d27f1ff52518fb47164fd0bd98e909af6e0c1 Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Tue, 18 Aug 2026 00:17:07 +0800 Subject: [PATCH 09/37] i18n updates (eo-UY,fa-IR) (#1579) * New translations (Persian) * New translations (Esperanto) --- src/locales/eo-UY.po | 198 +++++++++++++++++++++---------------------- src/locales/fa-IR.po | 14 +-- 2 files changed, 106 insertions(+), 106 deletions(-) diff --git a/src/locales/eo-UY.po b/src/locales/eo-UY.po index f2c2f1f5ec..9388308859 100644 --- a/src/locales/eo-UY.po +++ b/src/locales/eo-UY.po @@ -8,7 +8,7 @@ msgstr "" "Language: eo\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-06-24 14:12\n" +"PO-Revision-Date: 2026-08-17 16:16\n" "Last-Translator: \n" "Language-Team: Esperanto\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -29,7 +29,7 @@ msgstr "Afiŝoj: {0}" #: src/components/account-block.jsx:211 msgid "Last active: {date}" -msgstr "" +msgstr "Laste aktiva: {date}" #: src/components/account-block.jsx:229 #: src/components/account-info.jsx:730 @@ -63,18 +63,18 @@ msgstr "Sekvas vin" #. placeholder {0}: shortenNumber(followersCount) #. placeholder {1}: shortenNumber(followersCount) -#: src/components/account-block.jsx:283 +#: src/components/account-block.jsx:286 msgid "{followersCount, plural, one {<0>{0} follower} other {<1>{1} followers}}" -msgstr "" +msgstr "{followersCount, plural, one {<0>{0} sekvanto} other {<1>{1} sekvantoj}}" -#: src/components/account-block.jsx:309 +#: src/components/account-block.jsx:311 #: src/components/account-info.jsx:778 msgid "Verified" msgstr "Kontrolita" #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) -#: src/components/account-block.jsx:325 +#: src/components/account-block.jsx:327 #: src/components/account-info.jsx:917 msgid "Joined <0>{0}" msgstr "Aliĝis <0>{0}" @@ -89,7 +89,7 @@ msgstr "servila domajna nomo" #: src/components/account-info-mini.jsx:57 #: src/components/account-info.jsx:800 -#: src/components/compose.jsx:2055 +#: src/components/compose.jsx:2071 #: src/pages/settings.jsx:308 #: src/utils/visibility-text.jsx:7 msgid "Followers" @@ -107,7 +107,7 @@ msgstr "Ĉi tiu uzanto elektis ne disponebligi ĉi tiun informon." #: src/components/account-info-mini.jsx:67 #: src/components/account-info.jsx:827 msgid "{followersCount, plural, one {<0>{0} Follower} other {<1>{1} Followers}}" -msgstr "" +msgstr "{followersCount, plural, one {<0>{0} sekvanto} other {<1>{1} sekvantoj}}" #. js-lingui-explicit-id #: src/components/account-info-mini.jsx:93 @@ -144,7 +144,7 @@ msgstr "Iri al konta paĝo" #: src/components/timeline.jsx:663 #: src/components/timeline2.jsx:701 #: src/pages/home.jsx:237 -#: src/pages/notifications.jsx:1069 +#: src/pages/notifications.jsx:1073 #: src/pages/status.jsx:1270 #: src/pages/status.jsx:1746 msgid "Try again" @@ -204,7 +204,7 @@ msgstr "Memore" #. placeholder {3}: ( postingStats.boosts / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', }) #: src/components/account-info.jsx:952 msgid "{0} original posts, {1} replies, {2} quotes, {3} boosts" -msgstr "" +msgstr "{0} originalaj afiŝoj, {1} respondoj, {2} citaĵoj, {3} diskonigoj" #. placeholder {0}: ( postingStats.originals / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', }) #. placeholder {1}: ( postingStats.replies / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', }) @@ -234,7 +234,7 @@ msgstr "{0, plural, one {Lasta afiŝo en la pasinta(j) jaro(j)} other {Lastaj {1 #: src/pages/catchup.jsx:73 #: src/pages/year-in-posts.jsx:1390 msgid "Original" -msgstr "Originala" +msgstr "Originalaj" #: src/components/account-info.jsx:1064 #: src/components/status.jsx:2832 @@ -280,7 +280,7 @@ msgstr "Vidi afiŝo-statistikojn" #: src/components/collection-add-account.jsx:133 #: src/components/collection-add-edit.jsx:40 #: src/components/collection-manage-accounts.jsx:111 -#: src/components/compose.jsx:1128 +#: src/components/compose.jsx:1144 #: src/components/custom-emojis-modal.jsx:282 #: src/components/drafts.jsx:57 #: src/components/edit-profile-sheet.jsx:262 @@ -316,7 +316,7 @@ msgstr "Vidi afiŝo-statistikojn" #: src/pages/catchup.jsx:1731 #: src/pages/filters.jsx:225 #: src/pages/list.jsx:302 -#: src/pages/notifications.jsx:1113 +#: src/pages/notifications.jsx:1117 #: src/pages/scheduled-posts.jsx:288 #: src/pages/settings.jsx:100 #: src/pages/status.jsx:1684 @@ -402,7 +402,7 @@ msgstr "Serĉi kontojn" #: src/components/collection-add-account.jsx:197 #: src/components/compose-poll.jsx:80 -#: src/components/compose.jsx:1763 +#: src/components/compose.jsx:1779 #: src/components/mention-modal.jsx:221 #: src/components/shortcuts-settings.jsx:732 #: src/pages/list.jsx:388 @@ -459,7 +459,7 @@ msgid "Mark as sensitive" msgstr "" #: src/components/collection-add-edit.jsx:183 -#: src/components/compose.jsx:2043 +#: src/components/compose.jsx:2059 #: src/pages/collection.jsx:686 #: src/pages/settings.jsx:302 #: src/utils/visibility-text.jsx:4 @@ -478,7 +478,7 @@ msgstr "" #: src/components/quote-settings-sheet.jsx:92 #: src/components/shortcuts-settings.jsx:732 #: src/pages/filters.jsx:572 -#: src/pages/notifications.jsx:1185 +#: src/pages/notifications.jsx:1189 msgid "Save" msgstr "Konservi" @@ -632,7 +632,7 @@ msgstr "Aldoni enhavan averton" #: src/components/compose.jsx:130 msgid "Schedule post" -msgstr "Planu afiŝon" +msgstr "Plani afiŝon" #. placeholder {0}: unsupportedFiles.length #. placeholder {1}: unsupportedFiles[0].name @@ -642,7 +642,7 @@ msgid "{0, plural, one {File {1} is not supported.} other {Files {2} are not sup msgstr "{0, plural, one {La dosiero {1} ne estas subtenata.} other {La dosieroj {2} ne estas subtenataj.}}" #: src/components/compose.jsx:294 -#: src/components/compose.jsx:2189 +#: src/components/compose.jsx:2205 #: src/components/file-picker-input.jsx:47 msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}" msgstr "{maxMediaAttachments, plural, one {Vi povas nur kunsendi ĝis 1 dosieron.} other {Vi povas nur kunsendi ĝis # dosierojn.}}" @@ -651,69 +651,69 @@ msgstr "{maxMediaAttachments, plural, one {Vi povas nur kunsendi ĝis 1 dosieron msgid "You have unsaved changes. Discard this post?" msgstr "Vi havas nekonservitajn ŝanĝojn. Ĉu forĵeti ĉi tiun afiŝon?" -#: src/components/compose.jsx:1108 +#: src/components/compose.jsx:1124 msgid "Pop out" msgstr "Foriri" -#: src/components/compose.jsx:1116 +#: src/components/compose.jsx:1132 msgid "Minimize" msgstr "Minimumigi" -#: src/components/compose.jsx:1152 +#: src/components/compose.jsx:1168 msgid "Looks like you closed the parent window." msgstr "Ŝajnas, ke vi fermis la patran fenestron." -#: src/components/compose.jsx:1159 +#: src/components/compose.jsx:1175 msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." msgstr "Ŝajnas, ke vi jam havas redaktan fenestron malfermita en la ĉefa fenestro kaj vi nun publikigas. Bonvolu atendi, ke ĝi estos publikigita kaj provu denove poste." -#: src/components/compose.jsx:1164 +#: src/components/compose.jsx:1180 msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" msgstr "Ŝajnas, ke vi jam havas redaktan fenestron malfermitan en la ĉefa fenestro. Enirante ĉi tiun fenestron forĵetos la ŝanĝojn kiujn vi faris. Ĉu daŭrigi?" -#: src/components/compose.jsx:1210 +#: src/components/compose.jsx:1226 msgid "Pop in" msgstr "Montri" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') -#: src/components/compose.jsx:1220 +#: src/components/compose.jsx:1236 msgid "Replying to @{0}’s post (<0>{1})" msgstr "Respondante al la afiŝo de @{0} (<0>{1})" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username -#: src/components/compose.jsx:1232 +#: src/components/compose.jsx:1248 msgid "Replying to @{0}’s post" msgstr "Respondante al la afiŝo de @{0}" -#: src/components/compose.jsx:1247 +#: src/components/compose.jsx:1263 msgid "Editing source post" msgstr "Redaktante la originalan afiŝon" -#: src/components/compose.jsx:1316 +#: src/components/compose.jsx:1332 msgid "Poll must have at least 2 options" msgstr "Balotenketo devas havi almenaŭ 2 eblojn" -#: src/components/compose.jsx:1320 +#: src/components/compose.jsx:1336 msgid "Some poll choices are empty" msgstr "Iuj elektoj de balotado estas malplenaj" -#: src/components/compose.jsx:1333 +#: src/components/compose.jsx:1349 msgid "Some media have no descriptions. Continue?" msgstr "Iuj plurmedioj ne havas priskribojn. Ĉu daŭrigi?" -#: src/components/compose.jsx:1390 +#: src/components/compose.jsx:1406 msgid "Attachment #{i} failed" msgstr "Eraro aldonante #{i}" -#: src/components/compose.jsx:1519 +#: src/components/compose.jsx:1535 #: src/components/status.jsx:2564 #: src/components/timeline.jsx:1062 msgid "Content warning" msgstr "Enhavaverto" -#: src/components/compose.jsx:1551 -#: src/components/compose.jsx:1697 +#: src/components/compose.jsx:1567 +#: src/components/compose.jsx:1713 #: src/components/edit-profile-sheet.jsx:692 #: src/components/import-accounts-selection.jsx:175 #: src/components/open-link-sheet.jsx:74 @@ -722,79 +722,79 @@ msgstr "Enhavaverto" msgid "Cancel" msgstr "Nuligi" -#: src/components/compose.jsx:1559 +#: src/components/compose.jsx:1575 msgid "Post your reply" msgstr "Afiŝi vian respondon" -#: src/components/compose.jsx:1561 +#: src/components/compose.jsx:1577 msgid "Edit your post" msgstr "Redakti vian afiŝon" -#: src/components/compose.jsx:1563 +#: src/components/compose.jsx:1579 msgid "Ask a question" msgstr "Faru demandon" -#: src/components/compose.jsx:1564 +#: src/components/compose.jsx:1580 msgid "What are you doing?" msgstr "Kion vi pensas?" -#: src/components/compose.jsx:1637 +#: src/components/compose.jsx:1653 msgid "Mark media as sensitive" msgstr "Aldoni averton de enhavo" -#: src/components/compose.jsx:1677 +#: src/components/compose.jsx:1693 msgid "Posting on <0/>" -msgstr "Afiŝi la <0/>" +msgstr "Afiŝado ĉe <0/>" -#: src/components/compose.jsx:1975 +#: src/components/compose.jsx:1991 #: src/components/quote-settings-sheet.jsx:82 #: src/components/status.jsx:301 #: src/pages/settings.jsx:350 msgid "Anyone can quote" msgstr "Iu ajn povas citi" -#: src/components/compose.jsx:1978 +#: src/components/compose.jsx:1994 #: src/components/quote-settings-sheet.jsx:85 #: src/components/status.jsx:302 #: src/pages/settings.jsx:353 msgid "Your followers can quote" msgstr "Viaj sekvantoj povas citi" -#: src/components/compose.jsx:1981 +#: src/components/compose.jsx:1997 #: src/components/quote-settings-sheet.jsx:88 #: src/components/status.jsx:303 #: src/pages/settings.jsx:356 msgid "Only you can quote" msgstr "Nur vi povas citi" -#: src/components/compose.jsx:2021 +#: src/components/compose.jsx:2037 msgid "Quotes can't be embedded in private mentions." msgstr "" -#: src/components/compose.jsx:2048 +#: src/components/compose.jsx:2064 #: src/components/nav-menu.jsx:367 #: src/components/shortcuts-settings.jsx:168 #: src/utils/visibility-text.jsx:5 msgid "Local" msgstr "Loka" -#: src/components/compose.jsx:2052 +#: src/components/compose.jsx:2068 #: src/pages/settings.jsx:305 #: src/utils/visibility-text.jsx:6 msgid "Quiet public" msgstr "Diskrete publika" -#: src/components/compose.jsx:2058 +#: src/components/compose.jsx:2074 #: src/components/status.jsx:2443 #: src/utils/visibility-text.jsx:8 msgid "Private mention" msgstr "Privata mencio" -#: src/components/compose.jsx:2114 +#: src/components/compose.jsx:2130 msgid "Schedule" msgstr "Plani" -#: src/components/compose.jsx:2116 +#: src/components/compose.jsx:2132 #: src/components/keyboard-shortcuts-help.jsx:165 #: src/components/status.jsx:1107 #: src/components/status.jsx:1156 @@ -805,20 +805,20 @@ msgstr "Plani" msgid "Reply" msgstr "Respondi" -#: src/components/compose.jsx:2118 +#: src/components/compose.jsx:2134 msgid "Update" msgstr "Ĝisdatigi" -#: src/components/compose.jsx:2119 +#: src/components/compose.jsx:2135 msgctxt "Submit button in composer" msgid "Post" msgstr "Afiŝi" -#: src/components/compose.jsx:2201 +#: src/components/compose.jsx:2217 msgid "Downloading GIF…" msgstr "Elŝutante movbildon…" -#: src/components/compose.jsx:2225 +#: src/components/compose.jsx:2241 msgid "Failed to download GIF" msgstr "Malsukcesis elŝuti movbildon" @@ -1056,7 +1056,7 @@ msgid "No featured profiles." msgstr "Ne estas elstaraj profiloj." #: src/components/follow-request-buttons.jsx:45 -#: src/pages/notifications.jsx:1169 +#: src/pages/notifications.jsx:1173 msgid "Accept" msgstr "Akcepti" @@ -1065,7 +1065,7 @@ msgid "Reject" msgstr "Malakcepti" #: src/components/follow-request-buttons.jsx:79 -#: src/pages/notifications.jsx:1455 +#: src/pages/notifications.jsx:1459 msgid "Accepted" msgstr "Akceptita" @@ -1086,7 +1086,7 @@ msgstr "Kontoj" #: src/components/timeline.jsx:628 #: src/pages/account-collections.jsx:234 #: src/pages/list.jsx:321 -#: src/pages/notifications.jsx:1093 +#: src/pages/notifications.jsx:1097 #: src/pages/search.jsx:550 #: src/pages/status.jsx:1717 msgid "Show more…" @@ -1225,7 +1225,7 @@ msgstr "Malfermi detalojn pri afiŝo" #: src/components/keyboard-shortcuts-help.jsx:101 msgid "Open media or post details" -msgstr "" +msgstr "Malfermi plurmedion aŭ detaloj de afiŝo" #: src/components/keyboard-shortcuts-help.jsx:106 msgid "Expand content warning or<0/>toggle expanded/collapsed thread" @@ -1257,11 +1257,11 @@ msgstr "Enfokusigu la antaŭan kolumnon en plurkolumna reĝimo" #: src/components/keyboard-shortcuts-help.jsx:139 msgid "Compose new post" -msgstr "Redakti novan afiŝon" +msgstr "Verki novan afiŝon" #: src/components/keyboard-shortcuts-help.jsx:143 msgid "Compose new post (new window)" -msgstr "Redakti novan afiŝon (nova fenestro)" +msgstr "Verki novan afiŝon (nova fenestro)" #: src/components/keyboard-shortcuts-help.jsx:146 msgid "<0>Shift + <1>c" @@ -1277,7 +1277,7 @@ msgstr "<0>Stirklavo + <1>Enen-klavo aŭ <2>⌘ + <3>Enen-klavo" #: src/components/keyboard-shortcuts-help.jsx:161 #: src/components/nav-menu.jsx:352 -#: src/components/search-form.jsx:208 +#: src/components/search-form.jsx:211 #: src/components/shortcuts-settings.jsx:54 #: src/components/shortcuts-settings.jsx:182 #: src/pages/search.jsx:55 @@ -1389,21 +1389,21 @@ msgstr "Ne eblas forigi liston." msgid "Posts on this list are hidden from Home/Following" msgstr "Afiŝoj en ĉi tiu listo ne aperos en Hejmo/Sekvatoj" -#: src/components/math-block.jsx:132 +#: src/components/math-block.jsx:141 msgid "Unable to format math" msgstr "" -#: src/components/math-block.jsx:146 +#: src/components/math-block.jsx:155 msgid "Math expressions found." msgstr "" #. Action to switch from rendered math back to raw (LaTeX) markup -#: src/components/math-block.jsx:149 +#: src/components/math-block.jsx:158 msgid "Show markup" msgstr "" #. Action to render math expressions from raw (LaTeX) markup -#: src/components/math-block.jsx:154 +#: src/components/math-block.jsx:163 msgid "Format math" msgstr "" @@ -1551,15 +1551,15 @@ msgstr "Filtrila: {filterTitleStr}" #: src/pages/catchup.jsx:79 #: src/pages/catchup.jsx:2052 msgid "Filtered" -msgstr "Filtrila" +msgstr "Filtrita" -#: src/components/media.jsx:533 +#: src/components/media.jsx:567 msgid "Open file" msgstr "Malfermi dosieron" #: src/components/modals.jsx:93 msgid "Post scheduled" -msgstr "Planita afiŝo" +msgstr "Afiŝo planita" #: src/components/modals.jsx:94 msgid "Post published. Check it out." @@ -2147,7 +2147,7 @@ msgstr "Malsukcesis ĝisdatigi agordojn de citaĵo" #: src/components/quote-settings-sheet.jsx:66 msgid "Quote settings for this post" -msgstr "" +msgstr "Agordoj de citado por ĉi tiu afiŝo" #: src/components/quote-suggestion.jsx:19 msgid "Turn link into a quote?" @@ -2178,7 +2178,7 @@ msgid "Cleared recent searches" msgstr "Forigitaj lastatempaj serĉoj" #: src/components/recent-searches.jsx:49 -#: src/components/search-form.jsx:333 +#: src/components/search-form.jsx:336 msgid "Recent searches" msgstr "Lastatempaj serĉoj" @@ -2213,7 +2213,7 @@ msgstr "Mencii <0>@{username}" #: src/components/related-actions.jsx:313 msgid "Search <0>@{username}'s posts" -msgstr "" +msgstr "Serĉi la afiŝojn de <0>@{username}" #: src/components/related-actions.jsx:327 msgid "Translate bio" @@ -2297,7 +2297,7 @@ msgstr "" #: src/components/related-actions.jsx:511 #: src/pages/account-statuses.jsx:578 msgid "Search my posts" -msgstr "" +msgstr "Serĉi miajn afiŝojn" #: src/components/related-actions.jsx:597 #: src/components/shortcuts-settings.jsx:1193 @@ -2541,17 +2541,17 @@ msgstr "Kontoj kun <0>{query}" #: src/components/search-form.jsx:37 msgid "Posts tagged with <0>{hashtag}" -msgstr "" +msgstr "Afiŝoj etikeditaj kun <0>{hashtag}" #: src/components/search-form.jsx:46 msgid "{query} <0>‒ accounts, hashtags & posts" msgstr "{query} <0>‒ kontoj, kradvortoj kaj afiŝoj" -#: src/components/search-form.jsx:139 +#: src/components/search-form.jsx:142 msgid "Look up <0>{query}" msgstr "Serĉi <0>{query}" -#: src/components/search-form.jsx:366 +#: src/components/search-form.jsx:369 #: src/pages/home.jsx:260 msgid "See all" msgstr "Vidi ĉion" @@ -2866,7 +2866,7 @@ msgstr "<0/> <1>diskonigita" #: src/components/status.jsx:742 msgid "Sorry, your current logged-in server can't interact with this post from another server." -msgstr "" +msgstr "Pardonon, la servilo, en kiu vi estas ensalutinta, ne permesas vin interagi kun ĉi tiu afiŝo de alia servilo." #. placeholder {0}: username || acct #: src/components/status.jsx:932 @@ -3075,7 +3075,7 @@ msgstr "Ne eblas forigi afiŝon" #. placeholder {0}: username || acct #: src/components/status.jsx:1703 msgid "Remove my post from <0>@{0}'s post?" -msgstr "" +msgstr "Ĉu forigi mian afiŝon de afiŝo de <0>@{0}?" #: src/components/status.jsx:1725 msgid "Quote removed" @@ -3171,15 +3171,15 @@ msgstr "Afiŝo forigita de aŭtoro" #: src/components/status.jsx:3284 msgid "Post hidden because you've blocked @{name}." -msgstr "" +msgstr "Afiŝo kaŝita, ĉar vi blokis uzanton @{name}." #: src/components/status.jsx:3286 msgid "Post hidden because you've blocked {domain}." -msgstr "" +msgstr "Afiŝo kaŝita, ĉar vi blokis domajnon {domain}." #: src/components/status.jsx:3287 msgid "Post hidden because you've muted @{name}." -msgstr "" +msgstr "Afiŝo kaŝita, ĉar vi silentigis uzanton @{name}." #: src/components/status.jsx:3362 msgid "Show anyway" @@ -3343,7 +3343,7 @@ msgstr "Afiŝoj de la konto" #: src/pages/account-statuses.jsx:294 msgid "Media posts tagged #{tagged} by {accountDisplay}" -msgstr "" +msgstr "Plurmediaj afiŝoj, etikeditaj kun #{tagged}, de {accountDisplay}" #: src/pages/account-statuses.jsx:296 msgid "Posts tagged #{tagged} by {accountDisplay}" @@ -3355,7 +3355,7 @@ msgstr "" #: src/pages/account-statuses.jsx:305 msgid "Media posts by {accountDisplay}" -msgstr "" +msgstr "Plurmediaj afiŝoj de {accountDisplay}" #: src/pages/account-statuses.jsx:394 #: src/pages/account-statuses.jsx:403 @@ -4212,7 +4212,7 @@ msgid "Bot accounts" msgstr "" #: src/pages/notifications.jsx:764 -#: src/pages/notifications.jsx:1117 +#: src/pages/notifications.jsx:1121 msgid "Notifications settings" msgstr "Agordoj pri sciigoj" @@ -4252,72 +4252,72 @@ msgstr "Hodiaŭ" msgid "You're all caught up." msgstr "Vi estas aktualiĝa." -#: src/pages/notifications.jsx:1017 +#: src/pages/notifications.jsx:1021 msgid "Yesterday" msgstr "Hieraŭ" -#: src/pages/notifications.jsx:1065 +#: src/pages/notifications.jsx:1069 msgid "Unable to load notifications" msgstr "Ne eblas ŝargi sciigojn" -#: src/pages/notifications.jsx:1148 +#: src/pages/notifications.jsx:1152 msgid "Notifications settings updated" msgstr "Sciigaj agordoj ĝisdatigitaj" -#: src/pages/notifications.jsx:1156 +#: src/pages/notifications.jsx:1160 msgid "Filter notifications from:" msgstr "" -#: src/pages/notifications.jsx:1172 +#: src/pages/notifications.jsx:1176 msgid "Filter" msgstr "Filtrilo" -#: src/pages/notifications.jsx:1175 +#: src/pages/notifications.jsx:1179 msgid "Ignore" msgstr "Ignori" #. placeholder {0}: niceDateTime(updatedAtDate) -#: src/pages/notifications.jsx:1248 +#: src/pages/notifications.jsx:1252 msgid "Updated <0>{0}" msgstr "Ĝisdatigita <0>{0}" #. placeholder {0}: account.username -#: src/pages/notifications.jsx:1316 +#: src/pages/notifications.jsx:1320 msgid "View notifications from <0>@{0}" msgstr "Vidi sciigojn de <0>@{0}" #. placeholder {0}: account.username -#: src/pages/notifications.jsx:1337 +#: src/pages/notifications.jsx:1341 msgid "Notifications from <0>@{0}" msgstr "Sciigoj de <0>@{0}" #. placeholder {0}: request.account.username -#: src/pages/notifications.jsx:1406 +#: src/pages/notifications.jsx:1410 msgid "Notifications from @{0} will not be filtered from now on." msgstr "Sciigoj de @{0} ne estos filtritaj ekde nun." -#: src/pages/notifications.jsx:1411 +#: src/pages/notifications.jsx:1415 msgid "Unable to accept notification request" msgstr "Ne eblas akcepti sciigan peton" -#: src/pages/notifications.jsx:1416 +#: src/pages/notifications.jsx:1420 msgid "Allow" msgstr "Permesi" #. placeholder {0}: request.account.username -#: src/pages/notifications.jsx:1437 +#: src/pages/notifications.jsx:1441 msgid "Notifications from @{0} will not show up in Filtered notifications from now on." msgstr "Sciigoj de @{0} ne aperos en Filtritaj sciigoj ekde nun." -#: src/pages/notifications.jsx:1442 +#: src/pages/notifications.jsx:1446 msgid "Unable to dismiss notification request" msgstr "Ne eblas malakcepti sciigan peton" -#: src/pages/notifications.jsx:1447 +#: src/pages/notifications.jsx:1451 msgid "Dismiss" msgstr "Fermi" -#: src/pages/notifications.jsx:1462 +#: src/pages/notifications.jsx:1466 msgid "Dismissed" msgstr "Fermita" diff --git a/src/locales/fa-IR.po b/src/locales/fa-IR.po index 81c6efe699..cdaf574fe3 100644 --- a/src/locales/fa-IR.po +++ b/src/locales/fa-IR.po @@ -8,7 +8,7 @@ msgstr "" "Language: fa\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-09 05:49\n" +"PO-Revision-Date: 2026-08-09 07:22\n" "Last-Translator: \n" "Language-Team: Persian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -378,7 +378,7 @@ msgstr "" #: src/components/collection-account-actions.jsx:69 #: src/pages/collection.jsx:442 msgid "Remove me…" -msgstr "" +msgstr "من را حذف کن…" #: src/components/collection-account-actions.jsx:107 #: src/components/related-actions.jsx:1001 @@ -398,7 +398,7 @@ msgstr "" #: src/components/collection-add-account.jsx:148 #: src/components/mention-modal.jsx:179 msgid "Search accounts" -msgstr "" +msgstr "جستجوی حساب‌ها" #: src/components/collection-add-account.jsx:197 #: src/components/compose-poll.jsx:80 @@ -527,11 +527,11 @@ msgstr "" #: src/components/collection-manage-accounts.jsx:115 #: src/pages/collection.jsx:405 msgid "Manage accounts" -msgstr "" +msgstr "مدیریت حساب‌ها" #: src/components/collection-manage-accounts.jsx:134 msgid "Pending" -msgstr "" +msgstr "در حالت انتظار" #: src/components/collection-manage-accounts.jsx:141 msgid "Remove <0>{username} from this collection?" @@ -547,7 +547,7 @@ msgstr "حذف کردن…" #: src/components/collection-manage-accounts.jsx:175 #: src/pages/collection.jsx:646 msgid "Add account" -msgstr "" +msgstr "افزودن حساب" #: src/components/columns.jsx:29 #: src/components/nav-menu.jsx:188 @@ -584,7 +584,7 @@ msgstr "" #. placeholder {0}: i + 1 #: src/components/compose-poll.jsx:43 msgid "Choice {0}" -msgstr "" +msgstr "گزینه {0}" #: src/components/compose-poll.jsx:64 #: src/components/media-attachment.jsx:384 From d307c6334a11cc0f09c106b762b1b3ccc57ae352 Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Tue, 18 Aug 2026 01:38:37 +0800 Subject: [PATCH 10/37] i18n updates (eo-UY) (#1580) --- src/locales/eo-UY.po | 272 +++++++++++++++++++++---------------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/src/locales/eo-UY.po b/src/locales/eo-UY.po index 9388308859..ac512eb8c5 100644 --- a/src/locales/eo-UY.po +++ b/src/locales/eo-UY.po @@ -8,7 +8,7 @@ msgstr "" "Language: eo\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-17 16:16\n" +"PO-Revision-Date: 2026-08-17 17:38\n" "Last-Translator: \n" "Language-Team: Esperanto\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -77,7 +77,7 @@ msgstr "Kontrolita" #: src/components/account-block.jsx:327 #: src/components/account-info.jsx:917 msgid "Joined <0>{0}" -msgstr "Aliĝis <0>{0}" +msgstr "Aliĝis je <0>{0}" #: src/components/account-handle-info.jsx:18 msgid "username" @@ -182,17 +182,17 @@ msgstr "Malfermi la originalan profilpaĝon" #: src/components/account-info.jsx:671 msgid "View profile image" -msgstr "Vidi rolfiguron" +msgstr "Vidi profilbildon" #: src/components/account-info.jsx:690 msgid "View profile header" -msgstr "Vidi fonbildon" +msgstr "Vidi kapbildon" #: src/components/account-info.jsx:706 #: src/components/edit-profile-sheet.jsx:267 #: src/components/related-actions.jsx:910 msgid "Edit profile" -msgstr "Redakti la profilon" +msgstr "Redakti profilon" #: src/components/account-info.jsx:725 msgid "In Memoriam" @@ -327,7 +327,7 @@ msgstr "Fermi" #: src/components/related-actions.jsx:484 #: src/components/related-actions.jsx:494 msgid "Add/Remove from Lists" -msgstr "Aldoni/Forigi el Listoj" +msgstr "Aldoni/forigi el listoj" #: src/components/add-remove-lists-sheet.jsx:90 msgid "Unable to remove from list." @@ -368,17 +368,17 @@ msgstr "Pli de <0/>" #: src/components/collection-account-actions.jsx:35 #: src/pages/collection.jsx:422 msgid "Remove me from this collection?" -msgstr "" +msgstr "Ĉu forigi min de tiu ĉi kolekto?" #: src/components/collection-account-actions.jsx:44 #: src/pages/collection.jsx:431 msgid "The curator won't be able to re-add you to this collection for 24 hours. Block them to prevent them from adding you to any collections." -msgstr "" +msgstr "La kuratoro ne povas realdoni vin al ĉi tiu kolekto dum 24 horoj. Bloku tiun por malebligi, ke tiu aldonas vin al iuj kolektoj." #: src/components/collection-account-actions.jsx:69 #: src/pages/collection.jsx:442 msgid "Remove me…" -msgstr "" +msgstr "Forigi min…" #: src/components/collection-account-actions.jsx:107 #: src/components/related-actions.jsx:1001 @@ -389,11 +389,11 @@ msgstr "Sekvi" #: src/components/collection-add-account.jsx:92 msgid "@{username} added to collection" -msgstr "" +msgstr "@{username} aldonita al kolekto" #: src/components/collection-add-account.jsx:96 msgid "Unable to add account" -msgstr "" +msgstr "Ne povas aldoni konton" #: src/components/collection-add-account.jsx:148 #: src/components/mention-modal.jsx:179 @@ -417,28 +417,28 @@ msgstr "Eraro dum ŝargo de kontoj" #: src/components/collection-add-account.jsx:231 msgid "These accounts may have opted out of discovery or be on a server that doesn't support collections." -msgstr "" +msgstr "Ĉi tiuj kontoj ne permesis malkovradon, aŭ eble estas ĉe la servilo, kiu ne subtenas kolektojn." #: src/components/collection-add-account.jsx:236 msgid "These accounts review all follow requests. Followers can add them to collections." -msgstr "" +msgstr "Ĉi tiuj kontoj revizias ĉiujn petojn pri abonado. Abonantoj povas aldoni ilin al kolektoj." #: src/components/collection-add-edit.jsx:45 #: src/pages/account-collections.jsx:181 msgid "New collection" -msgstr "" +msgstr "Nova kolekto" #: src/components/collection-add-edit.jsx:45 msgid "Edit collection" -msgstr "" +msgstr "Redakti kolekton" #: src/components/collection-add-edit.jsx:97 msgid "Unable to update collection." -msgstr "" +msgstr "Ne povas ĝisdatigi kolekton." #: src/components/collection-add-edit.jsx:98 msgid "Unable to create collection." -msgstr "" +msgstr "Ne povas krei kolekton." #: src/components/collection-add-edit.jsx:106 #: src/components/edit-profile-sheet.jsx:574 @@ -448,15 +448,15 @@ msgstr "Nomo" #: src/components/collection-add-edit.jsx:124 msgid "Description" -msgstr "" +msgstr "Priskribo" #: src/components/collection-add-edit.jsx:146 msgid "Language" -msgstr "" +msgstr "Lingvo" #: src/components/collection-add-edit.jsx:169 msgid "Mark as sensitive" -msgstr "" +msgstr "Marki kiel sentema" #: src/components/collection-add-edit.jsx:183 #: src/components/compose.jsx:2059 @@ -470,7 +470,7 @@ msgstr "Publika" #: src/components/collection-card.jsx:201 #: src/pages/collection.jsx:680 msgid "Unlisted" -msgstr "" +msgstr "Nelistigita" #: src/components/collection-add-edit.jsx:192 #: src/components/edit-profile-sheet.jsx:695 @@ -490,11 +490,11 @@ msgstr "Krei" #: src/components/collection-add-edit.jsx:199 msgid "Delete this collection?" -msgstr "" +msgstr "Ĉu forigi ĉi tiun kolekton?" #: src/components/collection-add-edit.jsx:215 msgid "Unable to delete collection." -msgstr "" +msgstr "Ne povas forigi kolekton." #: src/components/collection-add-edit.jsx:225 #: src/components/drafts.jsx:126 @@ -509,33 +509,33 @@ msgstr "Forigi…" #: src/components/collection-card.jsx:178 msgid "Collection by <0>@{username}" -msgstr "" +msgstr "Kolekto de <0>@{username}" #: src/components/collection-card.jsx:189 #: src/pages/collection.jsx:668 msgid "Last updated: " -msgstr "" +msgstr "Laste ĝisdatigita: " #: src/components/collection-manage-accounts.jsx:89 msgid "@{username} removed from collection" -msgstr "" +msgstr "@{username} forigita de kolekto" #: src/components/collection-manage-accounts.jsx:93 msgid "Unable to remove account" -msgstr "" +msgstr "Ne povas forigi konton" #: src/components/collection-manage-accounts.jsx:115 #: src/pages/collection.jsx:405 msgid "Manage accounts" -msgstr "" +msgstr "Administri kontojn" #: src/components/collection-manage-accounts.jsx:134 msgid "Pending" -msgstr "" +msgstr "Atendanta" #: src/components/collection-manage-accounts.jsx:141 msgid "Remove <0>{username} from this collection?" -msgstr "" +msgstr "Ĉu forigi <0>@{username} de ĉi tiu kolekto?" #: src/components/collection-manage-accounts.jsx:161 #: src/components/edit-profile-sheet.jsx:473 @@ -547,7 +547,7 @@ msgstr "Forigi…" #: src/components/collection-manage-accounts.jsx:175 #: src/pages/collection.jsx:646 msgid "Add account" -msgstr "" +msgstr "Aldoni konton" #: src/components/columns.jsx:29 #: src/components/nav-menu.jsx:188 @@ -579,12 +579,12 @@ msgstr "Planitaj afiŝoj" #: src/components/compose-button.jsx:194 msgid "Add to thread" -msgstr "Aldonu al fadeno" +msgstr "Aldoni al fadeno" #. placeholder {0}: i + 1 #: src/components/compose-poll.jsx:43 msgid "Choice {0}" -msgstr "Elekti {0}" +msgstr "Elekto {0}" #: src/components/compose-poll.jsx:64 #: src/components/media-attachment.jsx:384 @@ -596,7 +596,7 @@ msgstr "Forigi" #: src/components/compose-poll.jsx:96 msgid "Multiple choice" -msgstr "Multebla elekto" +msgstr "Multaj eblaj elektoj" #: src/components/compose-poll.jsx:99 msgid "Duration" @@ -688,7 +688,7 @@ msgstr "Respondante al la afiŝo de @{0}" #: src/components/compose.jsx:1263 msgid "Editing source post" -msgstr "Redaktante la originalan afiŝon" +msgstr "Redaktado de la originala afiŝo" #: src/components/compose.jsx:1332 msgid "Poll must have at least 2 options" @@ -704,7 +704,7 @@ msgstr "Iuj plurmedioj ne havas priskribojn. Ĉu daŭrigi?" #: src/components/compose.jsx:1406 msgid "Attachment #{i} failed" -msgstr "Eraro aldonante #{i}" +msgstr "Eraro dum aldonado de kunsendaĵo #{i}" #: src/components/compose.jsx:1535 #: src/components/status.jsx:2564 @@ -769,7 +769,7 @@ msgstr "Nur vi povas citi" #: src/components/compose.jsx:2037 msgid "Quotes can't be embedded in private mentions." -msgstr "" +msgstr "Citaĵoj ne povas esti enkorpigitaj en privataj mencioj." #: src/components/compose.jsx:2064 #: src/components/nav-menu.jsx:367 @@ -857,7 +857,7 @@ msgstr "Zomi" #: src/components/custom-emojis-modal.jsx:412 msgid "Custom emojis are not available on this server." -msgstr "" +msgstr "Propraj emoĝioj ne haveblas ĉe ĉi tiu servilo." #: src/components/drafts.jsx:62 #: src/pages/settings.jsx:782 @@ -882,7 +882,7 @@ msgstr "Eraro ricevi respondan staton!" #: src/components/drafts.jsx:159 msgid "Error fetching quoted status!" -msgstr "" +msgstr "Eraro dum ricevado de citata afiŝo!" #: src/components/drafts.jsx:187 msgid "Delete all drafts?" @@ -918,7 +918,7 @@ msgstr "Citaĵo" #: src/components/edit-history-controls.jsx:21 msgid "Edit History Snapshots" -msgstr "" +msgstr "Redakti kaptaĵojn de historio" #: src/components/edit-history-controls.jsx:35 #: src/components/gif-picker-modal.jsx:208 @@ -986,7 +986,7 @@ msgstr "Ne eblas forigi la kapbildon." #: src/components/edit-profile-sheet.jsx:296 msgid "Profile and header pictures have no descriptions. Continue?" -msgstr "" +msgstr "Profilbildo kaj kapbildo ne havas priskribojn. Ĉu daŭrigi?" #: src/components/edit-profile-sheet.jsx:303 msgid "Profile picture has no description. Continue?" @@ -1012,7 +1012,7 @@ msgstr "Priskribo de bildo" #: src/components/edit-profile-sheet.jsx:462 msgid "Remove header picture?" -msgstr "" +msgstr "Ĉu forigi kapbildon?" #: src/components/edit-profile-sheet.jsx:481 msgid "Profile picture" @@ -1020,7 +1020,7 @@ msgstr "Profilbildo" #: src/components/edit-profile-sheet.jsx:554 msgid "Remove profile picture?" -msgstr "" +msgstr "Ĉu forigi profilbildon?" #: src/components/edit-profile-sheet.jsx:590 msgid "Bio" @@ -1028,7 +1028,7 @@ msgstr "Sinprezento" #: src/components/edit-profile-sheet.jsx:607 msgid "Custom fields" -msgstr "" +msgstr "Propraj kampoj" #: src/components/edit-profile-sheet.jsx:613 msgid "Label" @@ -1049,7 +1049,7 @@ msgstr "Malfermi en nova fenestro" #. placeholder {0}: info.username #: src/components/endorsements.jsx:72 msgid "Profiles featured by @{0}" -msgstr "" +msgstr "Profiloj, promociataj de @{0}" #: src/components/endorsements.jsx:98 msgid "No featured profiles." @@ -1123,31 +1123,31 @@ msgstr "Eraro dum ŝargo de movbildoj" #: src/components/import-accounts-selection.jsx:86 msgid "Select accounts to import" -msgstr "" +msgstr "Elekti kontojn por enportado" #: src/components/import-accounts-selection.jsx:117 msgid "Select all" -msgstr "" +msgstr "Elekti ĉiujn" #: src/components/import-accounts-selection.jsx:158 msgid "Existing" -msgstr "" +msgstr "Ekzistantaj" #: src/components/import-accounts-selection.jsx:183 msgid "{selectedCount, plural, one {Import # account} other {Import # accounts}}" -msgstr "" +msgstr "{selectedCount, plural, one {Enporti # konton} other {Enporti # kontojn}}" #: src/components/import-export-accounts.jsx:52 msgid "Export failed" -msgstr "" +msgstr "Elportado fiaskis" #: src/components/import-export-accounts.jsx:72 msgid "Import failed" -msgstr "" +msgstr "Enportado fiaskis" #: src/components/import-export-accounts.jsx:113 msgid "Import/Export <0>Accounts" -msgstr "" +msgstr "En/elporti <0>kontojn" #: src/components/import-export-accounts.jsx:128 #: src/components/shortcuts-settings.jsx:816 @@ -1156,7 +1156,7 @@ msgstr "Importi" #: src/components/import-export-accounts.jsx:139 msgid "Select file…" -msgstr "" +msgstr "Elekti dosieron…" #: src/components/import-export-accounts.jsx:151 #: src/components/shortcuts-settings.jsx:1066 @@ -1168,15 +1168,15 @@ msgstr "Eksporti" #: src/components/import-export-accounts.jsx:155 #: src/pages/collection.jsx:659 msgid "{0, plural, one {# account} other {# accounts}}" -msgstr "" +msgstr "{0, plural, one {# konto} other {# kontoj}}" #: src/components/import-export-accounts.jsx:167 msgid "No login information or account access details are stored in the exported files. You will need to log in again for each account after importing." -msgstr "" +msgstr "Neniu informo pri saluto aŭ detaloj de konto konservotas en la elportitaj dosieroj. Vi devos denove ensaluti por ĉiu konto post enportado." #: src/components/keyboard-shortcuts-help.jsx:16 msgid "<0>{key1} then <1>{key2}" -msgstr "" +msgstr "<0>{key1}, do <1>{key2}" #: src/components/keyboard-shortcuts-help.jsx:57 #: src/components/nav-menu.jsx:389 @@ -1204,7 +1204,7 @@ msgstr "Salti karuselon al la sekva afiŝo" #: src/components/keyboard-shortcuts-help.jsx:79 msgid "<0>Shift + <1>j" -msgstr "<0>Ŝovo + <1>j" +msgstr "<0>Majuskl. + <1>j" #: src/components/keyboard-shortcuts-help.jsx:85 msgid "Skip carousel to previous post" @@ -1212,11 +1212,11 @@ msgstr "Salti karuselon al la antaŭa afiŝo" #: src/components/keyboard-shortcuts-help.jsx:87 msgid "<0>Shift + <1>k" -msgstr "<0>Ŝovo + <1>k" +msgstr "<0>Majuskl. + <1>k" #: src/components/keyboard-shortcuts-help.jsx:93 msgid "Load new posts" -msgstr "Ŝargi novajn afiŝojn" +msgstr "Ŝarĝi novajn afiŝojn" #: src/components/keyboard-shortcuts-help.jsx:97 #: src/pages/catchup.jsx:1826 @@ -1241,7 +1241,7 @@ msgstr "<0>Esc-klavo aŭ <1>Retropaŝo" #: src/components/keyboard-shortcuts-help.jsx:123 msgid "Focus column in multi-column mode" -msgstr "Enfokusigu la kolumnon en plurkolumna reĝimo" +msgstr "Enfokusigi la kolumnon en plurkolumna reĝimo" #: src/components/keyboard-shortcuts-help.jsx:125 msgid "<0>1 to <1>9" @@ -1329,23 +1329,23 @@ msgstr "<0>Ŝovo + <1>Alt-klavo + <2>k" #: src/components/keyboard-shortcuts-help.jsx:210 msgid "Go to Home" -msgstr "" +msgstr "Iri al hejmo" #: src/components/keyboard-shortcuts-help.jsx:214 msgid "Go to Notifications" -msgstr "" +msgstr "Iri al sciigoj" #: src/components/keyboard-shortcuts-help.jsx:218 msgid "Go to Settings" -msgstr "" +msgstr "Iri al agordoj" #: src/components/keyboard-shortcuts-help.jsx:222 msgid "Go to Profile" -msgstr "" +msgstr "Iri al profilo" #: src/components/keyboard-shortcuts-help.jsx:226 msgid "Go to Bookmarks" -msgstr "" +msgstr "Iri al legosignoj" #: src/components/list-add-edit.jsx:41 msgid "Edit list" @@ -1426,7 +1426,7 @@ msgstr "Paroli" #: src/components/media-attachment.jsx:229 msgid "Uploaded" -msgstr "Ĝisdatigita" +msgstr "Alŝutita" #: src/components/media-attachment.jsx:243 #: src/components/media-attachment.jsx:244 @@ -1509,7 +1509,7 @@ msgstr "({0}) <0>— eksperimenta" #: src/components/media-attachment.jsx:592 msgid "Done" -msgstr "Farite" +msgstr "Farita" #: src/components/media-modal.jsx:409 msgid "Open original media in new window" @@ -1603,7 +1603,7 @@ msgstr "Sekvatoj" #: src/pages/catchup.jsx:1022 #: src/pages/welcome.jsx:154 msgid "Catch-up" -msgstr "Aktualiĝi" +msgstr "Resumo" #: src/components/nav-menu.jsx:211 #: src/components/shortcuts-settings.jsx:60 @@ -1660,7 +1660,7 @@ msgstr "Pli…" #: src/pages/favourites.jsx:26 #: src/pages/settings.jsx:1349 msgid "Likes" -msgstr "Stemuloj" +msgstr "Stelumoj" #: src/components/nav-menu.jsx:267 #: src/pages/account-collections.jsx:70 @@ -1718,7 +1718,7 @@ msgstr "Ensaluti" #: src/components/shortcuts-settings.jsx:175 #: src/pages/trending.jsx:444 msgid "Trending" -msgstr "Populara" +msgstr "Popularaj" #: src/components/nav-menu.jsx:375 #: src/components/shortcuts-settings.jsx:168 @@ -1727,7 +1727,7 @@ msgstr "Fratara" #: src/components/nav-menu.jsx:399 msgid "Shortcuts / Columns…" -msgstr "Ŝparvojoj / Kolumnoj…" +msgstr "Ŝparvojoj / kolumnoj…" #: src/components/nav-menu.jsx:409 #: src/components/nav-menu.jsx:423 @@ -2016,11 +2016,11 @@ msgstr "Finita" #: src/components/poll.jsx:372 msgid "Ending <0/>" -msgstr "Finante <0/>" +msgstr "Finanta je <0/>" #: src/components/poll.jsx:377 msgid "Ending" -msgstr "Finante" +msgstr "Finanta" #: src/components/poll.jsx:389 #: src/components/poll.jsx:393 @@ -2509,11 +2509,11 @@ msgstr "Pliaj informoj" #: src/components/report-modal.jsx:318 msgid "Muted {username}" -msgstr "Silentigita {username}" +msgstr "Silentigita: {username}" #: src/components/report-modal.jsx:321 msgid "Unable to mute {username}" -msgstr "Ne eblas silentigi {username}" +msgstr "Ne eblas silentigi: {username}" #: src/components/report-modal.jsx:326 msgid "Send Report <0>+ Mute profile" @@ -2558,11 +2558,11 @@ msgstr "Vidi ĉion" #: src/components/shortcuts-settings.jsx:50 msgid "Home / Following" -msgstr "Hejmo / Sekvatoj" +msgstr "Hejmo / sekvatoj" #: src/components/shortcuts-settings.jsx:53 msgid "Public (Local / Federated)" -msgstr "Publika (Loka / Fratara)" +msgstr "Publika (loka / fratara)" #: src/components/shortcuts-settings.jsx:55 msgid "Account" @@ -2574,7 +2574,7 @@ msgstr "Kradvorto" #: src/components/shortcuts-settings.jsx:66 msgid "List ID" -msgstr "Listo ID" +msgstr "ID de listo" #: src/components/shortcuts-settings.jsx:73 msgid "Local only" @@ -2741,7 +2741,7 @@ msgstr "Listo eble ne funkcias se ĝi venas de malsama konto." #: src/components/shortcuts-settings.jsx:975 msgid "Invalid settings format" -msgstr "Nevalida agorda formato" +msgstr "Nevalida formato de agordoj" #: src/components/shortcuts-settings.jsx:983 msgid "Append to current shortcuts?" @@ -2818,7 +2818,7 @@ msgstr "Ne eblas kopii ŝparvojajn agordojn" #: src/components/shortcuts-settings.jsx:1199 msgid "Share" -msgstr "Diskonigi" +msgstr "Konigi" #. placeholder {0}: shortcutsStr.length #: src/components/shortcuts-settings.jsx:1205 @@ -2862,7 +2862,7 @@ msgstr "Afiŝo ne disponebla" #: src/components/status.jsx:635 msgid "<0/> <1>boosted" -msgstr "<0/> <1>diskonigita" +msgstr "<0/> <1>diskonigis" #: src/components/status.jsx:742 msgid "Sorry, your current logged-in server can't interact with this post from another server." @@ -3017,7 +3017,7 @@ msgstr "Konversacion silentigita" #: src/components/status.jsx:1557 msgid "Unable to unmute conversation" -msgstr "Ne eblas nesilentigi konversacion" +msgstr "Ne eblas malsilentigi konversacion" #: src/components/status.jsx:1558 msgid "Unable to mute conversation" @@ -3025,7 +3025,7 @@ msgstr "Ne eblas silentigi konversacion" #: src/components/status.jsx:1567 msgid "Unmute conversation" -msgstr "Nesilentigi konversacion" +msgstr "Malsilentigi konversacion" #: src/components/status.jsx:1574 msgid "Mute conversation" @@ -3083,11 +3083,11 @@ msgstr "" #: src/components/status.jsx:1729 msgid "Unable to remove quote" -msgstr "" +msgstr "Ne povas forigi citaĵon" #: src/components/status.jsx:1735 msgid "Remove quote…" -msgstr "" +msgstr "Forigi citaĵon…" #: src/components/status.jsx:1749 msgid "Report post…" @@ -3133,13 +3133,13 @@ msgstr "Redaktita" #: src/components/status.jsx:2589 #: src/pages/collection.jsx:586 msgid "Show content" -msgstr "Montru envahon" +msgstr "Montri enhavon" #: src/components/status.jsx:2527 #: src/components/status.jsx:2589 #: src/components/status.jsx:2696 msgid "Show less" -msgstr "Montru malpli" +msgstr "Montri malpli" #. placeholder {0}: filterInfo.titlesStr #. placeholder {0}: filterInfo?.titlesStr @@ -3183,7 +3183,7 @@ msgstr "Afiŝo kaŝita, ĉar vi silentigis uzanton @{name}." #: src/components/status.jsx:3362 msgid "Show anyway" -msgstr "" +msgstr "Montri malgraŭ" #: src/components/status.jsx:3507 msgid "Edit History" @@ -3195,12 +3195,12 @@ msgstr "Malsukcesis ŝargi historion" #: src/components/status.jsx:3516 msgid "Loading…" -msgstr "Ŝargante…" +msgstr "Ŝargado…" #. [Name] [Visibility icon] boosted #: src/components/status.jsx:3648 msgid "<0/> <1/> boosted" -msgstr "<0/> <1/> diskonigita" +msgstr "<0/> <1/> diskonigis" #: src/components/thread-badge.jsx:22 #: src/components/thread-badge.jsx:37 @@ -3306,36 +3306,36 @@ msgstr "Iru hejmen" #: src/pages/account-collections.jsx:73 msgid "Collections featuring you" -msgstr "" +msgstr "Kolektoj, enhavantaj vin" #: src/pages/account-collections.jsx:76 msgid "Collections by {username}" -msgstr "" +msgstr "Kolektoj de {username}" #: src/pages/account-collections.jsx:192 msgid "Created by you" -msgstr "" +msgstr "Kreita de vi" #: src/pages/account-collections.jsx:198 msgid "Featuring you" -msgstr "" +msgstr "Enhavanta vin" #. placeholder {0}: collections.length #: src/pages/account-collections.jsx:241 msgid "{0, plural, one {# collection} other {# collections}}" -msgstr "" +msgstr "{0, plural, one {# kolekto} other {# kolektoj}}" #: src/pages/account-collections.jsx:256 msgid "Unable to load collections." -msgstr "" +msgstr "Ne povas ŝarĝi kolektojn." #: src/pages/account-collections.jsx:265 msgid "No collections featuring you yet." -msgstr "" +msgstr "Neniuj kolektoj enhavas vin jam." #: src/pages/account-collections.jsx:266 msgid "No collections yet." -msgstr "" +msgstr "Neniuj kolektoj jam." #: src/pages/account-statuses.jsx:287 msgid "Account posts" @@ -3347,11 +3347,11 @@ msgstr "Plurmediaj afiŝoj, etikeditaj kun #{tagged}, de {accountDisplay}" #: src/pages/account-statuses.jsx:296 msgid "Posts tagged #{tagged} by {accountDisplay}" -msgstr "" +msgstr "Afiŝoj, etikeditaj kun #{tagged}, de {accountDisplay}" #: src/pages/account-statuses.jsx:303 msgid "Posts in {monthYear} by {accountDisplay}" -msgstr "" +msgstr "Afisoj je {monthYear} de {accountDisplay}" #: src/pages/account-statuses.jsx:305 msgid "Media posts by {accountDisplay}" @@ -3365,19 +3365,19 @@ msgstr "Restartigi filtrilojn" #: src/pages/account-statuses.jsx:422 msgid "Showing replies" -msgstr "" +msgstr "Respondoj montrataj" #: src/pages/account-statuses.jsx:424 msgid "Hiding replies" -msgstr "" +msgstr "Respondoj kaŝataj" #: src/pages/account-statuses.jsx:438 msgid "Showing boosts" -msgstr "" +msgstr "Diskonigoj montrataj" #: src/pages/account-statuses.jsx:440 msgid "Hiding boosts" -msgstr "" +msgstr "Diskonigoj kaŝataj" #: src/pages/account-statuses.jsx:457 msgid "Showing posts with media" @@ -3396,7 +3396,7 @@ msgstr "Montrante afiŝojn en {0}" #. placeholder {0}: account?.username #: src/pages/account-statuses.jsx:579 msgid "Search @{0}'s posts" -msgstr "" +msgstr "Serĉi afiŝojn de @{0}" #: src/pages/account-statuses.jsx:628 #: src/pages/search.jsx:175 @@ -3422,12 +3422,12 @@ msgstr "Ne eblas ricevi informojn pri konto" #. placeholder {0}: accountInstance ? ( <> {' '} ({punycode.toUnicode(accountInstance)}) ) : null #: src/pages/account-statuses.jsx:702 msgid "Switch to account's server {0}" -msgstr "" +msgstr "Iri al la servilo de la konto {0}" #: src/pages/account-statuses.jsx:732 #: src/pages/collection.jsx:500 msgid "Switch to my server (<0>{currentInstance})" -msgstr "" +msgstr "Iri al mia servilo (<0>{currentInstance})" #: src/pages/account-statuses.jsx:805 msgid "Month" @@ -3439,7 +3439,7 @@ msgstr "Nuna" #: src/pages/accounts.jsx:139 msgid "Logged out" -msgstr "" +msgstr "Ne ensalutita" #: src/pages/accounts.jsx:145 msgid "Default" @@ -3463,11 +3463,11 @@ msgstr "Agordi kiel defaŭltan" #: src/pages/accounts.jsx:251 msgid "Log out <0>@{unicodeAcct}?" -msgstr "" +msgstr "Ĉu elsaluti la konton <0>@{unicodeAcct}?" #: src/pages/accounts.jsx:279 msgid "Log out and remove <0>@{unicodeAcct}" -msgstr "" +msgstr "Elsaluti kaj forigi la konton <0>@{unicodeAcct}" #: src/pages/accounts.jsx:291 msgid "Log out…" @@ -3475,11 +3475,11 @@ msgstr "Elsaluti…" #: src/pages/accounts.jsx:301 msgid "Remove <0>@{unicodeAcct}?" -msgstr "" +msgstr "Ĉu forigi la konton <0>@{unicodeAcct}?" #: src/pages/accounts.jsx:319 msgid "Remove account…" -msgstr "" +msgstr "Forigi konton…" #. placeholder {0}: niceDateTime(account.createdAt) #: src/pages/accounts.jsx:327 @@ -3564,7 +3564,7 @@ msgstr "Grupoj" #: src/pages/catchup.jsx:721 msgid "Showing {selectedFilterCategory, select, all {all posts} original {original posts} replies {replies} boosts {boosts} quotes {quotes} followedTags {followed tags} groups {groups} filtered {filtered posts}}, {sortBy, select, createdAt {{sortOrder, select, asc {oldest} desc {latest}}} reblogsCount {{sortOrder, select, asc {fewest boosts} desc {most boosts}}} favouritesCount {{sortOrder, select, asc {fewest likes} desc {most likes}}} repliesCount {{sortOrder, select, asc {fewest replies} desc {most replies}}} density {{sortOrder, select, asc {least dense} desc {most dense}}}} first{groupBy, select, account {, grouped by authors} other {}}" -msgstr "" +msgstr "{selectedFilterCategory, select, all {Ĉiuj afiŝoj} original {Originalaj afiŝoj} replies {Respondoj} boosts {Diskonigoj} quotes {Citaĵoj} followedTags {Sekvataj etikedoj} groups {Grupoj} filtered {Filtritaj afiŝoj}}, {sortBy, select, createdAt {{sortOrder, select, asc {plej malnovaj} desc {plej novaj}}} reblogsCount {{sortOrder, select, asc {kun malplej da diskonigoj} desc {kun plej da diskonigoj}}} favouritesCount {{sortOrder, select, asc {kun malplej da stelumoj} desc {kun plej da stelumoj}}} repliesCount {{sortOrder, select, asc {kun malplej da respondoj} desc {kun plej da respondoj}}} density {{sortOrder, select, asc {malplej densaj} desc {plej densaj}}}} unue{groupBy, select, account {, grupitaj per aŭtoroj} other {}} montrataj" #: src/pages/catchup.jsx:1033 #: src/pages/catchup.jsx:1057 @@ -3619,7 +3619,7 @@ msgstr "Ĝis la lasta aktualiĝo ({0})" #: src/pages/catchup.jsx:1178 msgid "Note: your server might only show a maximum of 800 posts in the Home timeline regardless of the time range. Could be less or more." -msgstr "" +msgstr "Noto: Via servilo povus nur montri maksimume 800 afiŝojn en la hejma templinio sendepende de la tempointervalo. Povus esti malpli aŭ pli." #: src/pages/catchup.jsx:1188 msgid "Previously…" @@ -3753,7 +3753,7 @@ msgstr "Rulumi supren" #: src/pages/collection.jsx:58 msgid "Date added" -msgstr "" +msgstr "Dato de aldonado" #. Sort by name #. js-lingui-explicit-id @@ -3763,33 +3763,33 @@ msgstr "" #: src/pages/collection.jsx:63 msgid "Last active" -msgstr "" +msgstr "Laste aktiva" #: src/pages/collection.jsx:64 msgid "Most followers" -msgstr "" +msgstr "Plej sekvataj" #: src/pages/collection.jsx:169 #: src/pages/collection.jsx:170 #: src/pages/collection.jsx:274 msgid "Collection" -msgstr "" +msgstr "Kolekto" #: src/pages/collection.jsx:205 msgid "Removed from collection" -msgstr "" +msgstr "Forigita de kolekto" #: src/pages/collection.jsx:208 msgid "Unable to remove from collection" -msgstr "" +msgstr "Ne povas forigi de kolekto" #: src/pages/collection.jsx:314 msgid "Post collection" -msgstr "" +msgstr "Afiŝi kolekton" #: src/pages/collection.jsx:454 msgid "Report collection…" -msgstr "" +msgstr "Raporti kolekton…" #: src/pages/collection.jsx:464 #: src/pages/status.jsx:1648 @@ -3803,23 +3803,23 @@ msgstr "Eraro: {e}" #: src/pages/collection.jsx:511 msgid "Switch to collection's server ({serverDomain})" -msgstr "" +msgstr "Iri al la servilo de kolekto ({serverDomain})" #: src/pages/collection.jsx:535 msgid "Unable to load collection." -msgstr "" +msgstr "Ne povas ŝarĝi kolekton." #: src/pages/collection.jsx:553 msgid " Collection by " -msgstr "" +msgstr " Kolekto de " #: src/pages/collection.jsx:630 msgid "No accounts in this collection yet." -msgstr "" +msgstr "Neniuj kontoj jam en ĉi tiu kolekto." #: src/pages/collection.jsx:693 msgid "Marked as sensitive" -msgstr "" +msgstr "Markita kiel sentema" #: src/pages/favourites.jsx:28 msgid "No likes yet. Go like something!" @@ -4003,12 +4003,12 @@ msgstr "{hashtagTitle}" #: src/pages/hashtag.jsx:210 #: src/pages/public.jsx:125 msgid "This timeline is disabled on this server." -msgstr "" +msgstr "Ĉi tiu tempolinio estas malŝaltita sur ĉi tiu servilo." #: src/pages/hashtag.jsx:212 #: src/pages/public.jsx:127 msgid "Login required to see posts from this server." -msgstr "" +msgstr "Ensaluto necesas por vidi afiŝojn de ĉi tiu servilo." #: src/pages/hashtag.jsx:213 msgid "No one has posted anything with this tag yet." @@ -4079,25 +4079,25 @@ msgstr "Aldoni al ŝparvojoj" #: src/pages/public.jsx:172 #: src/pages/trending.jsx:481 msgid "Enter a new server e.g. \"mastodon.social\"" -msgstr "" +msgstr "Entajpu novan servilon, ekz. \"mastodon.social\"" #: src/pages/hashtag.jsx:524 #: src/pages/public.jsx:175 #: src/pages/trending.jsx:484 msgid "Invalid server" -msgstr "" +msgstr "Nevalida servilo" #: src/pages/hashtag.jsx:538 #: src/pages/public.jsx:189 #: src/pages/trending.jsx:496 msgid "Go to another server…" -msgstr "" +msgstr "Iri al alia servilo…" #: src/pages/hashtag.jsx:551 #: src/pages/public.jsx:202 #: src/pages/trending.jsx:507 msgid "Go to my server (<0>{currentInstance})" -msgstr "" +msgstr "Iri al mia servilo (<0>{currentInstance})" #: src/pages/home.jsx:233 msgid "Unable to fetch notifications." @@ -4145,7 +4145,7 @@ msgstr "Malsukcesis registri aplikaĵon" #: src/pages/login.jsx:246 msgid "server domain" -msgstr "" +msgstr "servila domajno" #: src/pages/login.jsx:271 msgid "e.g. “mastodon.social”" @@ -4153,7 +4153,7 @@ msgstr "ekz. “mastodon.social”" #: src/pages/login.jsx:282 msgid "Failed to log in. Please try again or try another server." -msgstr "" +msgstr "Malsukcesis ensaluti. Bonvolu provi denove aŭ provi alian servilon." #: src/pages/login.jsx:294 msgid "Continue with {selectedInstanceText}" @@ -4173,7 +4173,7 @@ msgstr "Privataj mencioj" #: src/pages/mentions.jsx:221 msgid "Only followings" -msgstr "" +msgstr "Nur sekvantoj" #: src/pages/mentions.jsx:247 msgid "Private" From 7f7a8c03b3716b49e440d2d12d99defc3a4a7fb1 Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Tue, 18 Aug 2026 02:35:37 +0800 Subject: [PATCH 11/37] i18n updates (eo-UY) (#1581) --- src/locales/eo-UY.po | 126 +++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/src/locales/eo-UY.po b/src/locales/eo-UY.po index ac512eb8c5..b9f0c8a7d1 100644 --- a/src/locales/eo-UY.po +++ b/src/locales/eo-UY.po @@ -8,7 +8,7 @@ msgstr "" "Language: eo\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-17 17:38\n" +"PO-Revision-Date: 2026-08-17 18:35\n" "Last-Translator: \n" "Language-Team: Esperanto\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -1391,21 +1391,21 @@ msgstr "Afiŝoj en ĉi tiu listo ne aperos en Hejmo/Sekvatoj" #: src/components/math-block.jsx:141 msgid "Unable to format math" -msgstr "" +msgstr "Ne eblas formati matematikaĵon" #: src/components/math-block.jsx:155 msgid "Math expressions found." -msgstr "" +msgstr "Matematikaĵoj trovitaj." #. Action to switch from rendered math back to raw (LaTeX) markup #: src/components/math-block.jsx:158 msgid "Show markup" -msgstr "" +msgstr "Montri markadon" #. Action to render math expressions from raw (LaTeX) markup #: src/components/math-block.jsx:163 msgid "Format math" -msgstr "" +msgstr "Formati matematikaĵojn" #: src/components/media-alt-modal.jsx:48 #: src/components/media.jsx:52 @@ -1669,7 +1669,7 @@ msgstr "Stelumoj" #: src/pages/collection.jsx:265 #: src/pages/search.jsx:163 msgid "Collections" -msgstr "" +msgstr "Kolektoj" #: src/components/nav-menu.jsx:274 #: src/pages/followed-hashtags.jsx:15 @@ -1824,7 +1824,7 @@ msgstr "{account} redaktis afiŝon, kiun vi citis." #. placeholder {0}: shortenNumber(count) #: src/components/notification.jsx:265 msgid "{count, plural, =1 {{account} signed up.} other {<0><1>{0} people signed up.}}" -msgstr "" +msgstr "{count, plural, one {}=1 {{account} registrita.} other {<0><1>{0} homoj registritaj.}}" #: src/components/notification.jsx:279 msgid "{account} reported {targetAccount}" @@ -1844,11 +1844,11 @@ msgstr "Via #Wrapstodon {year} estas ĉi tie!" #: src/components/notification.jsx:298 msgid "{account} added you to a collection." -msgstr "" +msgstr "{account} aldonis vin al kolekto." #: src/components/notification.jsx:301 msgid "{account} edited a collection you're in." -msgstr "" +msgstr "{account} redaktis kolekton, kiu enhavas vin." #: src/components/notification.jsx:308 msgid "An admin from <0>{from} has suspended <1>{targetName}, which means you can no longer receive updates from them or interact with them." @@ -1984,11 +1984,11 @@ msgstr "Kaŝi rezultojn" #: src/components/poll.jsx:290 #: src/components/poll.jsx:306 msgid "{0, plural, one {# choice} other {# choices}}" -msgstr "" +msgstr "{0, plural, one {# elekto} other {# elektoj}}" #: src/components/poll.jsx:222 msgid "Unable to vote in poll" -msgstr "" +msgstr "Ne eblas voĉdoni en elekto" #: src/components/poll.jsx:279 msgid "Vote" @@ -2100,11 +2100,11 @@ msgstr "Noto: Ĉi tiu antaŭmontro estas malpeze stilita." #: src/components/private-note-sheet.jsx:41 #: src/components/related-actions.jsx:243 msgid "Notes" -msgstr "" +msgstr "Notoj" #: src/components/private-note-sheet.jsx:44 msgid "Only visible to you" -msgstr "" +msgstr "Nur videblaj por vi" #: src/components/private-note-sheet.jsx:69 msgid "Unable to update private note." @@ -2117,28 +2117,28 @@ msgstr "Konservi kaj fermi" #: src/components/qr-code-modal.jsx:26 #: src/components/shortcuts-settings.jsx:849 msgid "Scan QR code" -msgstr "" +msgstr "Skani QR-kodon" #: src/components/qr-scanner-modal.jsx:263 msgid "Unable to access camera. Please check permissions." -msgstr "" +msgstr "Ne eblas atingi kameraon. Bonvoli kontroli viajn permesojn." #: src/components/quote-chain-modal.jsx:107 msgid "Quote chain" -msgstr "" +msgstr "Ĉeno de citaĵoj" #: src/components/quote-chain-modal.jsx:151 msgid "Failed to unwrap quote chain" -msgstr "" +msgstr "Ne eblas fluigi ĉenon de citaĵoj" #: src/components/quote-chain-modal.jsx:165 msgid "Continue unwrapping…" -msgstr "" +msgstr "Daŭri fluigi…" #: src/components/quote-settings-sheet.jsx:37 #: src/pages/settings.jsx:341 msgid "Quote settings updated" -msgstr "" +msgstr "Agordoj de ĉitado ĝisdatigitaj" #: src/components/quote-settings-sheet.jsx:47 #: src/pages/settings.jsx:343 @@ -2151,27 +2151,27 @@ msgstr "Agordoj de citado por ĉi tiu afiŝo" #: src/components/quote-suggestion.jsx:19 msgid "Turn link into a quote?" -msgstr "" +msgstr "Ĉu igi la ligilon citaĵo?" #: src/components/quote-suggestion.jsx:37 msgid "Keep as link" -msgstr "" +msgstr "Teni kiel ligilo" #: src/components/quote-suggestion.jsx:42 msgid "Replace current quote" -msgstr "" +msgstr "Anstataŭigi citaĵon" #: src/components/quote-suggestion.jsx:44 msgid "Turn into quote" -msgstr "" +msgstr "Igi citaĵo" #: src/components/quotes-modal.jsx:150 msgid "Error loading quotes" -msgstr "" +msgstr "Eraro dum ŝarĝado de citaĵoj" #: src/components/quotes-modal.jsx:154 msgid "No quotes yet" -msgstr "" +msgstr "Neniuj citaĵoj jam" #: src/components/recent-searches.jsx:27 msgid "Cleared recent searches" @@ -2221,11 +2221,11 @@ msgstr "Traduki biografion" #: src/components/related-actions.jsx:337 msgid "Edit notes" -msgstr "" +msgstr "Redakti notojn" #: src/components/related-actions.jsx:337 msgid "Add notes" -msgstr "" +msgstr "Aldoni notojn" #: src/components/related-actions.jsx:356 msgid "Notifications enabled for @{username}'s posts." @@ -2269,11 +2269,11 @@ msgstr "@{username} nun estas elstarigita en via profilo." #: src/components/related-actions.jsx:436 msgid "Unable to unfeature @{username} on your profile." -msgstr "" +msgstr "Ne eblas malpromocii uzanton @{username} en via profilo." #: src/components/related-actions.jsx:440 msgid "Unable to feature @{username} on your profile." -msgstr "" +msgstr "Ne eblas promocii uzanton @{username} en via profilo." #: src/components/related-actions.jsx:449 msgid "Don't feature on profile" @@ -2292,7 +2292,7 @@ msgstr "Montri elstarajn profilojn" #: src/components/related-actions.jsx:470 #: src/components/related-actions.jsx:530 msgid "Show collections" -msgstr "" +msgstr "Montri kolektojn" #: src/components/related-actions.jsx:511 #: src/pages/account-statuses.jsx:578 @@ -2407,19 +2407,19 @@ msgstr "{0}h" #: src/components/report-collection.jsx:25 msgid "Report Collection" -msgstr "" +msgstr "Raporti kolekton" #: src/components/report-collection.jsx:60 msgid "Collection reported" -msgstr "" +msgstr "Kolekto raportita" #: src/components/report-collection.jsx:65 msgid "Unable to report collection" -msgstr "" +msgstr "Ne eblas raporti kolekton" #: src/components/report-collection.jsx:73 msgid "Additional comments" -msgstr "" +msgstr "Aldonaj komentoj" #: src/components/report-collection.jsx:94 #: src/components/report-modal.jsx:299 @@ -2585,7 +2585,7 @@ msgstr "Nur loka" #: src/components/shortcuts-settings.jsx:125 #: src/pages/login.jsx:231 msgid "Server" -msgstr "" +msgstr "Servilo" #: src/components/shortcuts-settings.jsx:81 #: src/components/shortcuts-settings.jsx:90 @@ -2721,7 +2721,7 @@ msgstr "Alglui ŝparvojojn ĉi tie" #: src/components/shortcuts-settings.jsx:860 msgid "Downloading saved shortcuts from server…" -msgstr "" +msgstr "Elŝutado de konservitaj ŝparvojoj de servilo…" #: src/components/shortcuts-settings.jsx:888 msgid "Unable to download shortcuts" @@ -2729,7 +2729,7 @@ msgstr "Ne eblas elŝuti ŝparvojojn" #: src/components/shortcuts-settings.jsx:891 msgid "Download shortcuts from server" -msgstr "" +msgstr "Elŝuti ŝparvojojn de servilo" #: src/components/shortcuts-settings.jsx:960 msgid "* Exists in current shortcuts" @@ -2794,7 +2794,7 @@ msgstr "Ne eblas kopii ŝparvojoj" #: src/components/shortcuts-settings.jsx:1136 msgid "Saving shortcuts to server…" -msgstr "" +msgstr "Konservado de ŝparvojoj al servilo…" #: src/components/shortcuts-settings.jsx:1143 msgid "Shortcuts saved" @@ -2806,7 +2806,7 @@ msgstr "Ne eblas konservi ŝparvojojn" #: src/components/shortcuts-settings.jsx:1151 msgid "Sync to server" -msgstr "" +msgstr "Sinkronigi kun servilo" #: src/components/shortcuts-settings.jsx:1166 msgid "Shortcut settings copied" @@ -2831,7 +2831,7 @@ msgstr "Ne estas plu ŝparvojoj por importi" #: src/components/shortcuts-settings.jsx:1230 msgid "Import/export settings from/to server (Very experimental)" -msgstr "" +msgstr "Enporti/elporti agordojn de/al servilo (Tre eksperimenta)" #: src/components/status.jsx:293 msgid "Private posts cannot be quoted" @@ -2899,27 +2899,27 @@ msgstr "Malnova afiŝo (<0>{0})" #: src/components/status.jsx:1106 msgid "Reply…" -msgstr "" +msgstr "Respondi…" #: src/components/status.jsx:1120 #: src/components/status.jsx:1134 msgid "Reply all" -msgstr "" +msgstr "Respondi al ĉiuj" #: src/components/status.jsx:1123 msgid "{mentionsCount, plural, other {# mentions}}" -msgstr "" +msgstr "{mentionsCount, plural, one {# mencio} other {# mencioj}}" #. placeholder {0}: mentionsCount - 1 #. placeholder {1}: username || acct #: src/components/status.jsx:1137 msgid "{0, plural, other {<0>@{1} first, # others below}}" -msgstr "" +msgstr "{0, plural, other {<0>@{1} unue, # aliaj sube}}" #. placeholder {0}: username || acct #: src/components/status.jsx:1159 msgid "Only <0>@{0}" -msgstr "" +msgstr "Nur <0>@{0}" #: src/components/status.jsx:1199 #: src/components/status.jsx:1277 @@ -2948,7 +2948,7 @@ msgstr "Diskonigita la afiŝon de @{0}" #: src/components/status.jsx:1279 #: src/components/status.jsx:3076 msgid "Boost/Quote…" -msgstr "" +msgstr "Diskonigi/citi…" #: src/components/status.jsx:1280 #: src/components/status.jsx:3076 @@ -2976,11 +2976,11 @@ msgstr "Ne plu legosignis" #: src/components/status.jsx:1337 msgid "View Quotes" -msgstr "" +msgstr "Vidi citaĵojn" #: src/components/status.jsx:1349 msgid "Unwrap quote chain" -msgstr "" +msgstr "Fluigi ĉenon de citaĵoj" #: src/components/status.jsx:1416 msgid "Post text copied" @@ -3079,7 +3079,7 @@ msgstr "Ĉu forigi mian afiŝon de afiŝo de <0>@{0}?" #: src/components/status.jsx:1725 msgid "Quote removed" -msgstr "" +msgstr "Citaĵo forigita" #: src/components/status.jsx:1729 msgid "Unable to remove quote" @@ -4189,27 +4189,27 @@ msgstr "Ne eblas ŝargi menciojn." #: src/pages/notifications.jsx:135 msgid "People you don't follow" -msgstr "" +msgstr "Homoj, kiujn vi ne sekvas" #: src/pages/notifications.jsx:136 msgid "People not following you" -msgstr "" +msgstr "Homoj, kiuj ne sekvas vin" #: src/pages/notifications.jsx:137 msgid "New accounts" -msgstr "" +msgstr "Novaj kontoj" #: src/pages/notifications.jsx:138 msgid "Unsolicited private mentions" -msgstr "" +msgstr "Nepetitaj privataj mencioj" #: src/pages/notifications.jsx:139 msgid "Moderated accounts" -msgstr "" +msgstr "Moderigitaj kontoj" #: src/pages/notifications.jsx:140 msgid "Bot accounts" -msgstr "" +msgstr "Aŭtomataj kontoj" #: src/pages/notifications.jsx:764 #: src/pages/notifications.jsx:1121 @@ -4266,7 +4266,7 @@ msgstr "Sciigaj agordoj ĝisdatigitaj" #: src/pages/notifications.jsx:1160 msgid "Filter notifications from:" -msgstr "" +msgstr "Filtri sciigoj de:" #: src/pages/notifications.jsx:1176 msgid "Filter" @@ -4475,7 +4475,7 @@ msgstr "Volontulaj tradukoj" #: src/pages/settings.jsx:255 msgid "Keep navigation bars visible while scrolling" -msgstr "" +msgstr "Teni navigaciajn bretojn videblajn dum rulumado" #: src/pages/settings.jsx:263 msgid "Posting" @@ -4493,15 +4493,15 @@ msgstr "Sinkronigita" #: src/pages/settings.jsx:293 msgid "Default visibility updated" -msgstr "" +msgstr "Defaŭlta videbleco ĝisdatigita" #: src/pages/settings.jsx:295 msgid "Failed to update default visibility" -msgstr "" +msgstr "Ĝisdatigado de defaŭlta videbleco fiaskis" #: src/pages/settings.jsx:366 msgid "Synced to your server's settings. <0>Go to your server ({instance}) for more settings." -msgstr "" +msgstr "Sinkronigita kun la agordoj de via servilo. <0>Iru al via servilo ({instance}) por pliaj agordoj." #: src/pages/settings.jsx:383 msgid "Wellbeing" @@ -4529,7 +4529,7 @@ msgstr "Aŭtomate aktualigi templiniajn afiŝojn" #: src/pages/settings.jsx:454 msgid "Boosts carousel" -msgstr "Karuselon de diskonigoj" +msgstr "Karuselo de diskonigoj" #: src/pages/settings.jsx:471 msgid "Post translation" @@ -4868,11 +4868,11 @@ msgstr "" #: src/pages/welcome.jsx:127 msgid "Screenshot of Boosts Carousel" -msgstr "Ekrankopio de Karuselon de diskonigoj" +msgstr "Ekrankopio de karuselo de diskonigoj" #: src/pages/welcome.jsx:134 msgid "Boosts Carousel" -msgstr "Karuselon de diskonigoj" +msgstr "Karuselo de diskonigoj" #: src/pages/welcome.jsx:137 msgid "Visually separate original posts and re-shared posts (boosted posts)." From ceaad3cd1dbf17c62383540936dfb3663e00d29b Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Tue, 18 Aug 2026 04:05:16 +0800 Subject: [PATCH 12/37] i18n updates (eo-UY) (#1582) --- src/locales/eo-UY.po | 82 ++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/src/locales/eo-UY.po b/src/locales/eo-UY.po index b9f0c8a7d1..5392af8cf8 100644 --- a/src/locales/eo-UY.po +++ b/src/locales/eo-UY.po @@ -8,7 +8,7 @@ msgstr "" "Language: eo\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-17 18:35\n" +"PO-Revision-Date: 2026-08-17 20:04\n" "Last-Translator: \n" "Language-Team: Esperanto\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -669,7 +669,7 @@ msgstr "Ŝajnas, ke vi jam havas redaktan fenestron malfermita en la ĉefa fenes #: src/components/compose.jsx:1180 msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" -msgstr "Ŝajnas, ke vi jam havas redaktan fenestron malfermitan en la ĉefa fenestro. Enirante ĉi tiun fenestron forĵetos la ŝanĝojn kiujn vi faris. Ĉu daŭrigi?" +msgstr "Ŝajnas, ke vi jam havas redaktan fenestron malfermitan en la ĉefa fenestro. Enirado de ĉi tiu fenestro forĵetos la ŝanĝojn, kiujn vi faris. Ĉu daŭrigi?" #: src/components/compose.jsx:1226 msgid "Pop in" @@ -679,16 +679,16 @@ msgstr "Montri" #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') #: src/components/compose.jsx:1236 msgid "Replying to @{0}’s post (<0>{1})" -msgstr "Respondante al la afiŝo de @{0} (<0>{1})" +msgstr "Respondo al la afiŝo de @{0} (<0>{1})" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username #: src/components/compose.jsx:1248 msgid "Replying to @{0}’s post" -msgstr "Respondante al la afiŝo de @{0}" +msgstr "Respondo al la afiŝo de @{0}" #: src/components/compose.jsx:1263 msgid "Editing source post" -msgstr "Redaktado de la originala afiŝo" +msgstr "Redaktado de originala afiŝo" #: src/components/compose.jsx:1332 msgid "Poll must have at least 2 options" @@ -816,7 +816,7 @@ msgstr "Afiŝi" #: src/components/compose.jsx:2217 msgid "Downloading GIF…" -msgstr "Elŝutante movbildon…" +msgstr "Elŝutado de movbildo…" #: src/components/compose.jsx:2241 msgid "Failed to download GIF" @@ -1480,7 +1480,7 @@ msgstr "Redakti aŭdpriskribon" #: src/components/media-attachment.jsx:474 #: src/components/media-attachment.jsx:528 msgid "Generating description. Please wait…" -msgstr "Kreante priskribon. Bonvolu atendi…" +msgstr "Kreado de priskribo. Bonvolu atendi…" #. placeholder {0}: e.message #: src/components/media-attachment.jsx:499 @@ -1521,7 +1521,7 @@ msgstr "Malfermi originalan plurmedion" #: src/components/media-modal.jsx:429 msgid "Attempting to describe image. Please wait…" -msgstr "Provante priskribi bildon. Bonvolu atendi…" +msgstr "Provado priskribi bildon. Bonvolu atendi…" #: src/components/media-modal.jsx:444 msgid "Failed to describe image" @@ -2477,7 +2477,7 @@ msgstr "Raporti @{username}" #: src/components/report-modal.jsx:147 msgid "Pending review" -msgstr "Atendante revizion" +msgstr "Atendanta por revizio" #: src/components/report-modal.jsx:189 msgid "Post reported" @@ -3187,7 +3187,7 @@ msgstr "Montri malgraŭ" #: src/components/status.jsx:3507 msgid "Edit History" -msgstr "Redaktan historion" +msgstr "Redakto-historio" #: src/components/status.jsx:3511 msgid "Failed to load history" @@ -3257,7 +3257,7 @@ msgstr "Aŭtomate tradukita el {sourceLangText}" #: src/components/translation-block.jsx:265 msgid "Translating…" -msgstr "Tradukante…" +msgstr "Tradukado…" #: src/components/translation-block.jsx:268 msgid "Translate from {sourceLangText} (auto-detected)" @@ -3278,7 +3278,7 @@ msgstr "Malsukcesis traduki" #: src/compose.jsx:38 msgid "Editing source status" -msgstr "Redaktante la originalan mesaĝon" +msgstr "Redaktado de originala mesaĝo" #. placeholder {0}: replyToStatus.account?.acct || replyToStatus.account?.username #: src/compose.jsx:40 @@ -3569,7 +3569,7 @@ msgstr "{selectedFilterCategory, select, all {Ĉiuj afiŝoj} original {Originala #: src/pages/catchup.jsx:1033 #: src/pages/catchup.jsx:1057 msgid "Catch-up <0>beta" -msgstr "Aktualiĝi <0>beta" +msgstr "Resumo <0>beta" #: src/pages/catchup.jsx:1047 #: src/pages/catchup.jsx:1735 @@ -3582,11 +3582,11 @@ msgstr "Kio estas ĉi tio?" #: src/pages/catchup.jsx:1066 msgid "Catch-up is a separate timeline for your followings, offering a high-level view at a glance, with a simple, email-inspired interface to effortlessly sort and filter through posts." -msgstr "Aktualiĝi estas aparta templinio por viaj sekvantaroj, ofertante altnivelan vidon je unu ekrigardo, kun simpla, retpoŝta interfaco por senpene ordigi kaj filtri afiŝojn." +msgstr "Resumo estas aparta tempolinio por viaj sekvatoj, ofertante altnivelan vidon je unu ekrigardo, kun simpla, retpoŝta interfaco por senpene ordigi kaj filtri afiŝojn." #: src/pages/catchup.jsx:1077 msgid "Preview of Catch-up UI" -msgstr "Antaŭrigardo de Aktualiĝo UI" +msgstr "Antaŭrigardo de interfaco \"Resumo\"" #: src/pages/catchup.jsx:1086 msgid "Let's catch up" @@ -3610,12 +3610,12 @@ msgstr "Atingi" #: src/pages/catchup.jsx:1157 msgid "Overlaps with your last catch-up" -msgstr "Interkovri kun via lasta aktualiĝo" +msgstr "Interkovras kun via lasta resumo" #. placeholder {0}: dtf.format(new Date(lastCatchupEndAt)) #: src/pages/catchup.jsx:1169 msgid "Until the last catch-up ({0})" -msgstr "Ĝis la lasta aktualiĝo ({0})" +msgstr "Ĝis la lasta resumo ({0})" #: src/pages/catchup.jsx:1178 msgid "Note: your server might only show a maximum of 800 posts in the Home timeline regardless of the time range. Could be less or more." @@ -3632,17 +3632,17 @@ msgstr "{0, plural, one {# afiŝo} other {# afiŝoj}}" #: src/pages/catchup.jsx:1216 msgid "Remove this catch-up?" -msgstr "Ĉu forigi ĉi tiun aktualiĝon?" +msgstr "Ĉu forigi ĉi tiun resumon?" #. placeholder {0}: pc.id #: src/pages/catchup.jsx:1219 msgid "Removing Catch-up {0}" -msgstr "Forigante aktualiĝon {0}" +msgstr "Forigado de resumo {0}" #. placeholder {0}: pc.id #: src/pages/catchup.jsx:1223 msgid "Catch-up {0} removed" -msgstr "Aktualiĝo {0} forigita" +msgstr "Resumo {0} forigita" #: src/pages/catchup.jsx:1237 msgid "Note: Only max 3 will be stored. The rest will be automatically removed." @@ -3650,7 +3650,7 @@ msgstr "Noto: Nur maksimume 3 estos konservitaj. La resto estos aŭtomate forigi #: src/pages/catchup.jsx:1252 msgid "Fetching posts…" -msgstr "Ricevante afiŝojn…" +msgstr "Ricevado de afiŝoj…" #: src/pages/catchup.jsx:1255 msgid "This might take a while." @@ -4109,7 +4109,7 @@ msgstr "<0>Nova <1>Petoj de sekvado" #: src/pages/http-route.jsx:71 msgid "Resolving…" -msgstr "Solvante…" +msgstr "Solvado…" #: src/pages/http-route.jsx:82 msgid "Unable to resolve URL" @@ -4479,7 +4479,7 @@ msgstr "Teni navigaciajn bretojn videblajn dum rulumado" #: src/pages/settings.jsx:263 msgid "Posting" -msgstr "Afiŝante" +msgstr "Afiŝado" #: src/pages/settings.jsx:269 msgid "Default visibility" @@ -4505,19 +4505,19 @@ msgstr "Sinkronigita kun la agordoj de via servilo. <0>Iru al via servilo ({inst #: src/pages/settings.jsx:383 msgid "Wellbeing" -msgstr "" +msgstr "Velfarto" #: src/pages/settings.jsx:396 msgid "Hide Trending timeline" -msgstr "" +msgstr "Kaŝi la tempolinion \"Populara\"" #: src/pages/settings.jsx:408 msgid "Hide Local timeline" -msgstr "" +msgstr "Kaŝi la lokan tempolinion" #: src/pages/settings.jsx:421 msgid "Hide Federated timeline" -msgstr "" +msgstr "Kaŝi la frataran tempolinion" #: src/pages/settings.jsx:429 msgid "Experiments" @@ -4562,11 +4562,11 @@ msgstr "Aŭtomate montri tradukon por afiŝoj en templinio. Funkcias nur por <0> #: src/pages/settings.jsx:627 msgid "Paginated timeline (beta)" -msgstr "" +msgstr "Apartigi tempoliniojn per paĝoj (beta)" #: src/pages/settings.jsx:631 msgid "Manual pagination of timeline posts instead of infinite scrolling. Only works for Home/Following timeline for now. Auto refresh and boosts carousel will not work when this is enabled." -msgstr "" +msgstr "Permane apartigas tempoliniojn kiel paĝoj, anstataŭ senfina rulumado. Nune funkcias nur por hejma/sekvata tempolinio. Aŭtomata ĝisdatigo kaj karuselo de diskonigoj ne funkcios, se ŝaltita." #: src/pages/settings.jsx:651 msgid "GIF Picker for composer" @@ -4598,7 +4598,7 @@ msgstr "⚠️⚠️⚠️ Tre eksperimenta.<0/>Konservita en la notoj de via pr #: src/pages/settings.jsx:740 msgid "Note: This feature uses currently-logged-in server API." -msgstr "" +msgstr "Noto: Ĉi tiu funkcio uzas la API de la aktuale ligita servilo." #: src/pages/settings.jsx:756 msgid "Cloak mode <0>(<1>Text → <2>████)" @@ -4610,7 +4610,7 @@ msgstr "Anstataŭigi tekston kiel blokojn, utilajn kiam oni prenas ekrankopiojn, #: src/pages/settings.jsx:794 msgid "Install {CLIENT_NAME}" -msgstr "" +msgstr "Instali apon {CLIENT_NAME}" #: src/pages/settings.jsx:802 msgid "About" @@ -4717,7 +4717,7 @@ msgstr "NOTO: Puŝaj sciigoj funkcias nur por <0>unu konto." #: src/pages/status.jsx:156 msgid "Unable to load post." -msgstr "" +msgstr "Ŝarĝado de afiŝo fiaskis." #. js-lingui-explicit-id #: src/pages/status.jsx:800 @@ -4731,11 +4731,11 @@ msgstr "Vi ne estas ensalutinta. Interagoj (respondi, diskonigi, ktp) ne eblas." #: src/pages/status.jsx:1117 msgid "This post is from another server (<0>{instance}). Interactions (reply, boost, etc) are not possible." -msgstr "" +msgstr "Ĉi tiu afiŝo estas de alia servilo (<0>{instance}). Interagoj (respondi, diskonigi, ktp) ne eblas." #: src/pages/status.jsx:1152 msgid "Switch to my server to enable interactions" -msgstr "" +msgstr "Iri al mia servilo por ebligi interagojn" #: src/pages/status.jsx:1261 msgid "Unable to load replies." @@ -4782,15 +4782,15 @@ msgstr "Ne eblas ŝalti" #. placeholder {0}: punycode.toUnicode( postInstance, ) #: src/pages/status.jsx:1664 msgid "Switch to post's server ({0})" -msgstr "" +msgstr "Iri al la servilo de la afiŝo ({0})" #: src/pages/status.jsx:1667 msgid "Switch to post's server" -msgstr "" +msgstr "Iri al la servilo de la afiŝo" #: src/pages/status.jsx:1680 msgid "View Edit History Snapshots" -msgstr "" +msgstr "Vidi kaptaĵojn de redakto-historio" #: src/pages/status.jsx:1737 msgid "Unable to load post" @@ -4860,11 +4860,11 @@ msgstr "Konekti vian ekzistantan Mastodon/Fediverson-konton.<0/>Viaj ensalutiloj #: src/pages/welcome.jsx:96 msgid "Screenshot of Phanpy home timeline on mobile device" -msgstr "" +msgstr "Ekrankopio de hejma tempolinio de Phanpy sur poŝtelefono" #: src/pages/welcome.jsx:113 msgid "Screenshot of Phanpy home timeline on tablet device" -msgstr "" +msgstr "Ekrankopio de hejma tempolinio de Phanpy sur tabula komputilo" #: src/pages/welcome.jsx:127 msgid "Screenshot of Boosts Carousel" @@ -4880,11 +4880,11 @@ msgstr "Vide apartigu originalajn afiŝojn kaj redividitajn afiŝojn (diskonigit #: src/pages/welcome.jsx:147 msgid "Screenshot of Catch-up" -msgstr "" +msgstr "Ekrankopio de panelo \"Resumo\"" #: src/pages/welcome.jsx:157 msgid "A separate timeline for followings. Email-inspired interface to sort and filter posts." -msgstr "" +msgstr "Aparta tempolinio por sekvatoj. Interfaco, inspirita de retpoŝto, por ordigado kaj filtrado de afiŝoj." #: src/pages/welcome.jsx:167 msgid "Screenshot of nested comments thread" From 3b5bf5adaf032d3d43aec764df32bb6999807bac Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Tue, 18 Aug 2026 13:48:46 +0800 Subject: [PATCH 13/37] Possibly fix issues with playwright --- src/components/search-command.jsx | 9 +++++---- tests/keyboard-shortcuts.spec.js | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/components/search-command.jsx b/src/components/search-command.jsx index 562fc588c9..298681b128 100644 --- a/src/components/search-command.jsx +++ b/src/components/search-command.jsx @@ -44,16 +44,17 @@ export default memo(function SearchCommand({ onClose = () => {} }) { const isSearchPage = /\/search/.test(location.hash); const isYearInPostsPage = /\/yip/.test(location.hash); const hasModal = !!document.querySelector('#modal-container > *'); - // Allow '/' even with Shift (e.g. German keyboards) - if (e.key === '/') return false; + // Match by '/' character, not by key code: the code 'Slash' also + // fires for '?', and '/' sits on other keys in some layouts (e.g. German Shift+7). + const isSlashKey = e.key === '/'; return ( + !isSlashKey || isSearchPage || isYearInPostsPage || hasModal || e.metaKey || e.ctrlKey || - e.altKey || - e.shiftKey + e.altKey ); }, }, diff --git a/tests/keyboard-shortcuts.spec.js b/tests/keyboard-shortcuts.spec.js index f80034d634..ee0d6e8920 100644 --- a/tests/keyboard-shortcuts.spec.js +++ b/tests/keyboard-shortcuts.spec.js @@ -383,6 +383,10 @@ test.describe('Keyboard Shortcuts', () => { await expect( page.locator('#keyboard-shortcuts-help-container'), ).toBeVisible(); + await expect(page.locator('#search-command-container')).toHaveAttribute( + 'hidden', + '', + ); }); test('4.2 Close help with Escape', async ({ page }) => { @@ -610,6 +614,12 @@ test.describe('Keyboard Shortcuts', () => { }); test('9.2 Scoping: modifier key does not close modal', async ({ page }) => { + // CloseWatcher closes on Escape regardless of modifier keys, so this + // hotkey-scoping test only applies without it. + // Remove once CloseWatcher is widely supported. + const hasCloseWatcher = await page.evaluate(() => !!window.CloseWatcher); + test.skip(hasCloseWatcher, 'CloseWatcher handles modal close'); + await page.keyboard.press('?'); await page.waitForTimeout(500); await expect( From 164393fe1377d5eee36f974069e248a9ea92403e Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Tue, 18 Aug 2026 18:27:12 +0800 Subject: [PATCH 14/37] Try preserve casing for typed hashtags --- src/components/text-expander.jsx | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/components/text-expander.jsx b/src/components/text-expander.jsx index 02138134e1..d0df2f5183 100644 --- a/src/components/text-expander.jsx +++ b/src/components/text-expander.jsx @@ -267,6 +267,34 @@ function TextExpander({ onTrigger = null, ...props }, ref) { }); }, 300); } + } else if (key === '#' || key === '#') { + // Preserve user's casing, e.g. typing "GamingDeals" picking "gamingdeals" → "#GamingDeals" + // Related issue: https://github.com/mastodon/mastodon/issues/27013 + const typed = textExpanderTextRef.current; + let hashtag = value; + + if ( + typed && + value && + value !== typed && + value.toLowerCase().startsWith(typed.toLowerCase()) && + // Skip merging if toLowerCase() changes string length (rare) + typed.toLowerCase().length === typed.length && + value.toLowerCase().length === value.length + ) { + const typedChars = Array.from(typed); + hashtag = Array.from(value) + .map((char, i) => { + const userChar = typedChars[i]; + // User's uppercase wins, else pick suggestion casing + return userChar && userChar !== userChar.toLowerCase() + ? userChar + : char; + }) + .join(''); + } + + e.detail.value = `${key}${hashtag}`; } else { e.detail.value = `${key}${value}`; } From b40d8b839d582c0326fff2f51d8cb792f3141501 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Wed, 19 Aug 2026 01:14:26 +0800 Subject: [PATCH 15/37] Silly me, forgot to remove this part --- src/components/compose.jsx | 5 --- src/locales/en.po | 82 +++++++++++++++++++------------------- 2 files changed, 41 insertions(+), 46 deletions(-) diff --git a/src/components/compose.jsx b/src/components/compose.jsx index 2324389dd1..925defdd4e 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -318,11 +318,6 @@ function Compose({ const handlePastedLink = async (url) => { // Handle QP links if (supportsNativeQuote()) { - // Quotes cannot coexist with media attachments or polls - if (mediaAttachments.length > 0 || poll) { - return; - } - // Cannot add/remove/replace current quote when editing if (editStatus) { return; diff --git a/src/locales/en.po b/src/locales/en.po index 206bbda199..513b61db68 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -84,7 +84,7 @@ msgstr "" #: src/components/account-info-mini.jsx:57 #: src/components/account-info.jsx:800 -#: src/components/compose.jsx:2071 +#: src/components/compose.jsx:2066 #: src/pages/settings.jsx:308 #: src/utils/visibility-text.jsx:7 msgid "Followers" @@ -275,7 +275,7 @@ msgstr "View post stats" #: src/components/collection-add-account.jsx:133 #: src/components/collection-add-edit.jsx:40 #: src/components/collection-manage-accounts.jsx:111 -#: src/components/compose.jsx:1144 +#: src/components/compose.jsx:1139 #: src/components/custom-emojis-modal.jsx:282 #: src/components/drafts.jsx:57 #: src/components/edit-profile-sheet.jsx:262 @@ -397,7 +397,7 @@ msgstr "Search accounts" #: src/components/collection-add-account.jsx:197 #: src/components/compose-poll.jsx:80 -#: src/components/compose.jsx:1779 +#: src/components/compose.jsx:1774 #: src/components/mention-modal.jsx:221 #: src/components/shortcuts-settings.jsx:732 #: src/pages/list.jsx:388 @@ -454,7 +454,7 @@ msgid "Mark as sensitive" msgstr "Mark as sensitive" #: src/components/collection-add-edit.jsx:183 -#: src/components/compose.jsx:2059 +#: src/components/compose.jsx:2054 #: src/pages/collection.jsx:686 #: src/pages/settings.jsx:302 #: src/utils/visibility-text.jsx:4 @@ -637,78 +637,78 @@ msgid "{0, plural, one {File {1} is not supported.} other {Files {2} are not sup msgstr "{0, plural, one {File {1} is not supported.} other {Files {2} are not supported.}}" #: src/components/compose.jsx:294 -#: src/components/compose.jsx:2205 +#: src/components/compose.jsx:2200 #: src/components/file-picker-input.jsx:47 msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}" msgstr "" -#: src/components/compose.jsx:652 +#: src/components/compose.jsx:647 msgid "You have unsaved changes. Discard this post?" msgstr "You have unsaved changes. Discard this post?" -#: src/components/compose.jsx:1124 +#: src/components/compose.jsx:1119 msgid "Pop out" msgstr "Pop out" -#: src/components/compose.jsx:1132 +#: src/components/compose.jsx:1127 msgid "Minimize" msgstr "Minimize" -#: src/components/compose.jsx:1168 +#: src/components/compose.jsx:1163 msgid "Looks like you closed the parent window." msgstr "Looks like you closed the parent window." -#: src/components/compose.jsx:1175 +#: src/components/compose.jsx:1170 msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." msgstr "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." -#: src/components/compose.jsx:1180 +#: src/components/compose.jsx:1175 msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" msgstr "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" -#: src/components/compose.jsx:1226 +#: src/components/compose.jsx:1221 msgid "Pop in" msgstr "Pop in" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') -#: src/components/compose.jsx:1236 +#: src/components/compose.jsx:1231 msgid "Replying to @{0}’s post (<0>{1})" msgstr "" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username -#: src/components/compose.jsx:1248 +#: src/components/compose.jsx:1243 msgid "Replying to @{0}’s post" msgstr "" -#: src/components/compose.jsx:1263 +#: src/components/compose.jsx:1258 msgid "Editing source post" msgstr "" -#: src/components/compose.jsx:1332 +#: src/components/compose.jsx:1327 msgid "Poll must have at least 2 options" msgstr "Poll must have at least 2 options" -#: src/components/compose.jsx:1336 +#: src/components/compose.jsx:1331 msgid "Some poll choices are empty" msgstr "Some poll choices are empty" -#: src/components/compose.jsx:1349 +#: src/components/compose.jsx:1344 msgid "Some media have no descriptions. Continue?" msgstr "Some media have no descriptions. Continue?" -#: src/components/compose.jsx:1406 +#: src/components/compose.jsx:1401 msgid "Attachment #{i} failed" msgstr "Attachment #{i} failed" -#: src/components/compose.jsx:1535 +#: src/components/compose.jsx:1530 #: src/components/status.jsx:2564 #: src/components/timeline.jsx:1062 msgid "Content warning" msgstr "" -#: src/components/compose.jsx:1567 -#: src/components/compose.jsx:1713 +#: src/components/compose.jsx:1562 +#: src/components/compose.jsx:1708 #: src/components/edit-profile-sheet.jsx:692 #: src/components/import-accounts-selection.jsx:175 #: src/components/open-link-sheet.jsx:74 @@ -717,79 +717,79 @@ msgstr "" msgid "Cancel" msgstr "" -#: src/components/compose.jsx:1575 +#: src/components/compose.jsx:1570 msgid "Post your reply" msgstr "Post your reply" -#: src/components/compose.jsx:1577 +#: src/components/compose.jsx:1572 msgid "Edit your post" msgstr "Edit your post" -#: src/components/compose.jsx:1579 +#: src/components/compose.jsx:1574 msgid "Ask a question" msgstr "Ask a question" -#: src/components/compose.jsx:1580 +#: src/components/compose.jsx:1575 msgid "What are you doing?" msgstr "What are you doing?" -#: src/components/compose.jsx:1653 +#: src/components/compose.jsx:1648 msgid "Mark media as sensitive" msgstr "" -#: src/components/compose.jsx:1693 +#: src/components/compose.jsx:1688 msgid "Posting on <0/>" msgstr "Posting on <0/>" -#: src/components/compose.jsx:1991 +#: src/components/compose.jsx:1986 #: src/components/quote-settings-sheet.jsx:82 #: src/components/status.jsx:301 #: src/pages/settings.jsx:350 msgid "Anyone can quote" msgstr "Anyone can quote" -#: src/components/compose.jsx:1994 +#: src/components/compose.jsx:1989 #: src/components/quote-settings-sheet.jsx:85 #: src/components/status.jsx:302 #: src/pages/settings.jsx:353 msgid "Your followers can quote" msgstr "Your followers can quote" -#: src/components/compose.jsx:1997 +#: src/components/compose.jsx:1992 #: src/components/quote-settings-sheet.jsx:88 #: src/components/status.jsx:303 #: src/pages/settings.jsx:356 msgid "Only you can quote" msgstr "Only you can quote" -#: src/components/compose.jsx:2037 +#: src/components/compose.jsx:2032 msgid "Quotes can't be embedded in private mentions." msgstr "Quotes can't be embedded in private mentions." -#: src/components/compose.jsx:2064 +#: src/components/compose.jsx:2059 #: src/components/nav-menu.jsx:367 #: src/components/shortcuts-settings.jsx:168 #: src/utils/visibility-text.jsx:5 msgid "Local" msgstr "" -#: src/components/compose.jsx:2068 +#: src/components/compose.jsx:2063 #: src/pages/settings.jsx:305 #: src/utils/visibility-text.jsx:6 msgid "Quiet public" msgstr "Quiet public" -#: src/components/compose.jsx:2074 +#: src/components/compose.jsx:2069 #: src/components/status.jsx:2443 #: src/utils/visibility-text.jsx:8 msgid "Private mention" msgstr "" -#: src/components/compose.jsx:2130 +#: src/components/compose.jsx:2125 msgid "Schedule" msgstr "Schedule" -#: src/components/compose.jsx:2132 +#: src/components/compose.jsx:2127 #: src/components/keyboard-shortcuts-help.jsx:165 #: src/components/status.jsx:1107 #: src/components/status.jsx:1156 @@ -800,20 +800,20 @@ msgstr "Schedule" msgid "Reply" msgstr "" -#: src/components/compose.jsx:2134 +#: src/components/compose.jsx:2129 msgid "Update" msgstr "Update" -#: src/components/compose.jsx:2135 +#: src/components/compose.jsx:2130 msgctxt "Submit button in composer" msgid "Post" msgstr "Post" -#: src/components/compose.jsx:2217 +#: src/components/compose.jsx:2212 msgid "Downloading GIF…" msgstr "Downloading GIF…" -#: src/components/compose.jsx:2241 +#: src/components/compose.jsx:2236 msgid "Failed to download GIF" msgstr "Failed to download GIF" From 0340050401a5e19d8c3dd3fde319ee6c81ff3799 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Wed, 19 Aug 2026 19:30:47 +0800 Subject: [PATCH 16/37] Fix corner shapes not inheriting --- src/components/status.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/status.css b/src/components/status.css index 8ba74699c4..d852b050ab 100644 --- a/src/components/status.css +++ b/src/components/status.css @@ -1469,6 +1469,7 @@ body:has(#modal-container .carousel) .status .media img:hover { object-fit: scale-down; /* border-radius: calc(var(--media-radius) - var(--media-border-width)); */ border-radius: inherit; + corner-shape: inherit; } .status :is(.media-video, .media-audio, .media-gif) { position: relative; From 226f16e132c740ce8213153f540156bba67daa7d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 23 Aug 2026 00:03:07 +0000 Subject: [PATCH 17/37] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bcab3ca8c3..a3ca1a98ab 100644 --- a/README.md +++ b/README.md @@ -380,6 +380,7 @@ Costs involved in running and developing this web app: - dannypsnl (Chinese Traditional) - databio (Catalan) - detected-rage-colette (Japanese) +- dev_urandom (Esperanto) - Dizro (Italian) - Drift6944 (Czech) - drydenwu (Chinese Traditional) @@ -399,7 +400,6 @@ Costs involved in running and developing this web app: - kaliuwu (Polish) - karlafej (Czech) - kleoporte (French) -- Kweerk1223 (Portuguese, Brazilian) - Kytta (German) - llun (Thai) - lorisobi (German) @@ -429,6 +429,7 @@ Costs involved in running and developing this web app: - radecos (French) - Razem (Czech) - realpixelcode (German) +- REMOVED_USER (Portuguese, Brazilian) - rezahosseinzadeh (Persian) - rwmpelstilzchen (Esperanto, Hebrew) - SadmL (Russian) From f7fb0e8de24d7e2674baabbefad84696cd9dec31 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Thu, 27 Aug 2026 08:45:03 +0800 Subject: [PATCH 18/37] Potentially fix weird unread notification issue --- src/components/background-service.jsx | 67 +++++++++++++++++++++++---- src/locales/en.po | 4 +- 2 files changed, 59 insertions(+), 12 deletions(-) diff --git a/src/components/background-service.jsx b/src/components/background-service.jsx index 89ad817308..cf88c05a94 100644 --- a/src/components/background-service.jsx +++ b/src/components/background-service.jsx @@ -32,16 +32,40 @@ export default memo(function BackgroundService() { } }); + const checkingLatestNotificationRef = useRef(false); const checkLatestNotification = async (masto, instance, skipCheckMarkers) => { - if (states.notificationsLast) { - const notificationsIterator = masto.v1.notifications - .list({ - limit: 1, - sinceId: states.notificationsLast.id, - }) - .values(); - const { value: notifications } = await notificationsIterator.next(); + // Avoid overlapping checks (e.g. a slow request still in-flight when + // the next poll tick fires) + if (checkingLatestNotificationRef.current) return; + checkingLatestNotificationRef.current = true; + try { + const checkedId = states.notificationsLast?.id; + if (!checkedId) return; + + let notifications; + try { + const notificationsIterator = masto.v1.notifications + .list({ + limit: 1, + sinceId: checkedId, + }) + .values(); + ({ value: notifications } = await notificationsIterator.next()); + } catch (e) { + // Network/server error - bail out quietly, try again on next check + console.error('💥 Failed to check latest notification', e); + return; + } + + // Ignore stale response + if (states.notificationsLast?.id !== checkedId) return; + if (notifications?.length) { + const latestId = notifications[0].id; + + // Nothing new if checkedId itself is returned + if (latestId === checkedId) return; + if (skipCheckMarkers) { states.notificationsShowNew = true; } else { @@ -52,13 +76,35 @@ export default memo(function BackgroundService() { }); lastReadId = markers?.notifications?.lastReadId; } catch (e) {} + + // Stale check again after await + if (states.notificationsLast?.id !== checkedId) return; + if (lastReadId) { - states.notificationsShowNew = notifications[0].id !== lastReadId; + // Also handles race where notifications were just marked as read + // but the marker hasn't landed on the server yet + states.notificationsShowNew = latestId !== lastReadId; } else { states.notificationsShowNew = true; } } + } else if (!skipCheckMarkers && states.notificationsShowNew) { + // Self-heal: clear stuck dot if server says everything's read + try { + const markers = await masto.v1.markers.fetch({ + timeline: 'notifications', + }); + const lastReadId = markers?.notifications?.lastReadId; + if ( + lastReadId === checkedId && + states.notificationsLast?.id === checkedId + ) { + states.notificationsShowNew = false; + } + } catch (e) {} } + } finally { + checkingLatestNotificationRef.current = false; } }; @@ -96,8 +142,9 @@ export default memo(function BackgroundService() { saveStatus(entry.payload, instance, { skipThreading: true, }); + // Only actual notifications show the dot + states.notificationsShowNew = true; } - states.notificationsShowNew = true; } console.log('💥 Streaming notification loop STOPPED'); } catch (e) { diff --git a/src/locales/en.po b/src/locales/en.po index 513b61db68..08d008d79e 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -347,11 +347,11 @@ msgstr "" msgid "New list" msgstr "" -#: src/components/background-service.jsx:164 +#: src/components/background-service.jsx:211 msgid "Cloak mode disabled" msgstr "" -#: src/components/background-service.jsx:164 +#: src/components/background-service.jsx:211 msgid "Cloak mode enabled" msgstr "" From 7446fcf8ee43f3ef3a92d206333bc829ff488c04 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Thu, 27 Aug 2026 08:52:50 +0800 Subject: [PATCH 19/37] Fix non-https links getting unfurled Also fix when non-https links got unfurled when failed to be unfurled. --- src/components/compose.jsx | 3 ++ src/locales/en.po | 82 +++++++++++++++++++------------------- src/utils/unfurl-link.js | 1 + 3 files changed, 45 insertions(+), 41 deletions(-) diff --git a/src/components/compose.jsx b/src/components/compose.jsx index 925defdd4e..d987a10950 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -316,6 +316,9 @@ function Compose({ }; const handlePastedLink = async (url) => { + // Clear stale quote suggestion (e.g. when the new paste fails to unfurl) + setQuoteSuggestion(null); + // Handle QP links if (supportsNativeQuote()) { // Cannot add/remove/replace current quote when editing diff --git a/src/locales/en.po b/src/locales/en.po index 08d008d79e..15014081e8 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -84,7 +84,7 @@ msgstr "" #: src/components/account-info-mini.jsx:57 #: src/components/account-info.jsx:800 -#: src/components/compose.jsx:2066 +#: src/components/compose.jsx:2069 #: src/pages/settings.jsx:308 #: src/utils/visibility-text.jsx:7 msgid "Followers" @@ -275,7 +275,7 @@ msgstr "View post stats" #: src/components/collection-add-account.jsx:133 #: src/components/collection-add-edit.jsx:40 #: src/components/collection-manage-accounts.jsx:111 -#: src/components/compose.jsx:1139 +#: src/components/compose.jsx:1142 #: src/components/custom-emojis-modal.jsx:282 #: src/components/drafts.jsx:57 #: src/components/edit-profile-sheet.jsx:262 @@ -397,7 +397,7 @@ msgstr "Search accounts" #: src/components/collection-add-account.jsx:197 #: src/components/compose-poll.jsx:80 -#: src/components/compose.jsx:1774 +#: src/components/compose.jsx:1777 #: src/components/mention-modal.jsx:221 #: src/components/shortcuts-settings.jsx:732 #: src/pages/list.jsx:388 @@ -454,7 +454,7 @@ msgid "Mark as sensitive" msgstr "Mark as sensitive" #: src/components/collection-add-edit.jsx:183 -#: src/components/compose.jsx:2054 +#: src/components/compose.jsx:2057 #: src/pages/collection.jsx:686 #: src/pages/settings.jsx:302 #: src/utils/visibility-text.jsx:4 @@ -637,78 +637,78 @@ msgid "{0, plural, one {File {1} is not supported.} other {Files {2} are not sup msgstr "{0, plural, one {File {1} is not supported.} other {Files {2} are not supported.}}" #: src/components/compose.jsx:294 -#: src/components/compose.jsx:2200 +#: src/components/compose.jsx:2203 #: src/components/file-picker-input.jsx:47 msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}" msgstr "" -#: src/components/compose.jsx:647 +#: src/components/compose.jsx:650 msgid "You have unsaved changes. Discard this post?" msgstr "You have unsaved changes. Discard this post?" -#: src/components/compose.jsx:1119 +#: src/components/compose.jsx:1122 msgid "Pop out" msgstr "Pop out" -#: src/components/compose.jsx:1127 +#: src/components/compose.jsx:1130 msgid "Minimize" msgstr "Minimize" -#: src/components/compose.jsx:1163 +#: src/components/compose.jsx:1166 msgid "Looks like you closed the parent window." msgstr "Looks like you closed the parent window." -#: src/components/compose.jsx:1170 +#: src/components/compose.jsx:1173 msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." msgstr "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." -#: src/components/compose.jsx:1175 +#: src/components/compose.jsx:1178 msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" msgstr "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" -#: src/components/compose.jsx:1221 +#: src/components/compose.jsx:1224 msgid "Pop in" msgstr "Pop in" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') -#: src/components/compose.jsx:1231 +#: src/components/compose.jsx:1234 msgid "Replying to @{0}’s post (<0>{1})" msgstr "" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username -#: src/components/compose.jsx:1243 +#: src/components/compose.jsx:1246 msgid "Replying to @{0}’s post" msgstr "" -#: src/components/compose.jsx:1258 +#: src/components/compose.jsx:1261 msgid "Editing source post" msgstr "" -#: src/components/compose.jsx:1327 +#: src/components/compose.jsx:1330 msgid "Poll must have at least 2 options" msgstr "Poll must have at least 2 options" -#: src/components/compose.jsx:1331 +#: src/components/compose.jsx:1334 msgid "Some poll choices are empty" msgstr "Some poll choices are empty" -#: src/components/compose.jsx:1344 +#: src/components/compose.jsx:1347 msgid "Some media have no descriptions. Continue?" msgstr "Some media have no descriptions. Continue?" -#: src/components/compose.jsx:1401 +#: src/components/compose.jsx:1404 msgid "Attachment #{i} failed" msgstr "Attachment #{i} failed" -#: src/components/compose.jsx:1530 +#: src/components/compose.jsx:1533 #: src/components/status.jsx:2564 #: src/components/timeline.jsx:1062 msgid "Content warning" msgstr "" -#: src/components/compose.jsx:1562 -#: src/components/compose.jsx:1708 +#: src/components/compose.jsx:1565 +#: src/components/compose.jsx:1711 #: src/components/edit-profile-sheet.jsx:692 #: src/components/import-accounts-selection.jsx:175 #: src/components/open-link-sheet.jsx:74 @@ -717,79 +717,79 @@ msgstr "" msgid "Cancel" msgstr "" -#: src/components/compose.jsx:1570 +#: src/components/compose.jsx:1573 msgid "Post your reply" msgstr "Post your reply" -#: src/components/compose.jsx:1572 +#: src/components/compose.jsx:1575 msgid "Edit your post" msgstr "Edit your post" -#: src/components/compose.jsx:1574 +#: src/components/compose.jsx:1577 msgid "Ask a question" msgstr "Ask a question" -#: src/components/compose.jsx:1575 +#: src/components/compose.jsx:1578 msgid "What are you doing?" msgstr "What are you doing?" -#: src/components/compose.jsx:1648 +#: src/components/compose.jsx:1651 msgid "Mark media as sensitive" msgstr "" -#: src/components/compose.jsx:1688 +#: src/components/compose.jsx:1691 msgid "Posting on <0/>" msgstr "Posting on <0/>" -#: src/components/compose.jsx:1986 +#: src/components/compose.jsx:1989 #: src/components/quote-settings-sheet.jsx:82 #: src/components/status.jsx:301 #: src/pages/settings.jsx:350 msgid "Anyone can quote" msgstr "Anyone can quote" -#: src/components/compose.jsx:1989 +#: src/components/compose.jsx:1992 #: src/components/quote-settings-sheet.jsx:85 #: src/components/status.jsx:302 #: src/pages/settings.jsx:353 msgid "Your followers can quote" msgstr "Your followers can quote" -#: src/components/compose.jsx:1992 +#: src/components/compose.jsx:1995 #: src/components/quote-settings-sheet.jsx:88 #: src/components/status.jsx:303 #: src/pages/settings.jsx:356 msgid "Only you can quote" msgstr "Only you can quote" -#: src/components/compose.jsx:2032 +#: src/components/compose.jsx:2035 msgid "Quotes can't be embedded in private mentions." msgstr "Quotes can't be embedded in private mentions." -#: src/components/compose.jsx:2059 +#: src/components/compose.jsx:2062 #: src/components/nav-menu.jsx:367 #: src/components/shortcuts-settings.jsx:168 #: src/utils/visibility-text.jsx:5 msgid "Local" msgstr "" -#: src/components/compose.jsx:2063 +#: src/components/compose.jsx:2066 #: src/pages/settings.jsx:305 #: src/utils/visibility-text.jsx:6 msgid "Quiet public" msgstr "Quiet public" -#: src/components/compose.jsx:2069 +#: src/components/compose.jsx:2072 #: src/components/status.jsx:2443 #: src/utils/visibility-text.jsx:8 msgid "Private mention" msgstr "" -#: src/components/compose.jsx:2125 +#: src/components/compose.jsx:2128 msgid "Schedule" msgstr "Schedule" -#: src/components/compose.jsx:2127 +#: src/components/compose.jsx:2130 #: src/components/keyboard-shortcuts-help.jsx:165 #: src/components/status.jsx:1107 #: src/components/status.jsx:1156 @@ -800,20 +800,20 @@ msgstr "Schedule" msgid "Reply" msgstr "" -#: src/components/compose.jsx:2129 +#: src/components/compose.jsx:2132 msgid "Update" msgstr "Update" -#: src/components/compose.jsx:2130 +#: src/components/compose.jsx:2133 msgctxt "Submit button in composer" msgid "Post" msgstr "Post" -#: src/components/compose.jsx:2212 +#: src/components/compose.jsx:2215 msgid "Downloading GIF…" msgstr "Downloading GIF…" -#: src/components/compose.jsx:2236 +#: src/components/compose.jsx:2239 msgid "Failed to download GIF" msgstr "Failed to download GIF" diff --git a/src/utils/unfurl-link.js b/src/utils/unfurl-link.js index 659b634572..e1e838c348 100644 --- a/src/utils/unfurl-link.js +++ b/src/utils/unfurl-link.js @@ -97,6 +97,7 @@ function _unfurlMastodonLink(instance, url) { const urlObj = URL.parse(theURL); if (!urlObj) return; + if (!/^https?:$/.test(urlObj.protocol)) return; // Only unfurl http(s) links const domain = urlObj.hostname; const path = urlObj.pathname; if (!domain) return; // No domain, something is wrong From 40ae013beaa84c365d062a50bfa4e97b3834ec75 Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Thu, 27 Aug 2026 12:33:58 +0800 Subject: [PATCH 20/37] i18n updates (fa-IR) (#1588) --- src/locales/fa-IR.po | 116 +++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/src/locales/fa-IR.po b/src/locales/fa-IR.po index cdaf574fe3..e1f258d4c7 100644 --- a/src/locales/fa-IR.po +++ b/src/locales/fa-IR.po @@ -8,7 +8,7 @@ msgstr "" "Language: fa\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-09 07:22\n" +"PO-Revision-Date: 2026-08-27 04:33\n" "Last-Translator: \n" "Language-Team: Persian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -29,7 +29,7 @@ msgstr "فرسته‌ها: {0}" #: src/components/account-block.jsx:211 msgid "Last active: {date}" -msgstr "" +msgstr "آخرین فعالیت: {date}" #: src/components/account-block.jsx:229 #: src/components/account-info.jsx:730 @@ -89,7 +89,7 @@ msgstr "سامانهٔ نام دامنه" #: src/components/account-info-mini.jsx:57 #: src/components/account-info.jsx:800 -#: src/components/compose.jsx:2071 +#: src/components/compose.jsx:2069 #: src/pages/settings.jsx:308 #: src/utils/visibility-text.jsx:7 msgid "Followers" @@ -280,7 +280,7 @@ msgstr "نمایش اطلاعات فرسته" #: src/components/collection-add-account.jsx:133 #: src/components/collection-add-edit.jsx:40 #: src/components/collection-manage-accounts.jsx:111 -#: src/components/compose.jsx:1144 +#: src/components/compose.jsx:1142 #: src/components/custom-emojis-modal.jsx:282 #: src/components/drafts.jsx:57 #: src/components/edit-profile-sheet.jsx:262 @@ -352,18 +352,18 @@ msgstr "سیاهه‌ای نیست." msgid "New list" msgstr "سیاهه جدید" -#: src/components/background-service.jsx:164 +#: src/components/background-service.jsx:211 msgid "Cloak mode disabled" msgstr "حالت پوشش غیرفعال شد" -#: src/components/background-service.jsx:164 +#: src/components/background-service.jsx:211 msgid "Cloak mode enabled" msgstr "حالت پوشش فعال شد" #. More from [Author] #: src/components/byline.jsx:17 msgid "More from <0/>" -msgstr "" +msgstr "بیشتر از <0/>" #: src/components/collection-account-actions.jsx:35 #: src/pages/collection.jsx:422 @@ -389,11 +389,11 @@ msgstr "پی گرفتن" #: src/components/collection-add-account.jsx:92 msgid "@{username} added to collection" -msgstr "" +msgstr "@{username} به مجموعه اضافه شد" #: src/components/collection-add-account.jsx:96 msgid "Unable to add account" -msgstr "" +msgstr "امکان افزودن حساب کاربری وجود ندارد" #: src/components/collection-add-account.jsx:148 #: src/components/mention-modal.jsx:179 @@ -402,7 +402,7 @@ msgstr "جستجوی حساب‌ها" #: src/components/collection-add-account.jsx:197 #: src/components/compose-poll.jsx:80 -#: src/components/compose.jsx:1779 +#: src/components/compose.jsx:1777 #: src/components/mention-modal.jsx:221 #: src/components/shortcuts-settings.jsx:732 #: src/pages/list.jsx:388 @@ -426,11 +426,11 @@ msgstr "" #: src/components/collection-add-edit.jsx:45 #: src/pages/account-collections.jsx:181 msgid "New collection" -msgstr "" +msgstr "مجموعه جدید" #: src/components/collection-add-edit.jsx:45 msgid "Edit collection" -msgstr "" +msgstr "ویرایش مجموعه" #: src/components/collection-add-edit.jsx:97 msgid "Unable to update collection." @@ -448,18 +448,18 @@ msgstr "نام" #: src/components/collection-add-edit.jsx:124 msgid "Description" -msgstr "" +msgstr "توضیحات" #: src/components/collection-add-edit.jsx:146 msgid "Language" -msgstr "" +msgstr "زبان" #: src/components/collection-add-edit.jsx:169 msgid "Mark as sensitive" -msgstr "" +msgstr "علامت‌گذاری رسانه به عنوان حساس" #: src/components/collection-add-edit.jsx:183 -#: src/components/compose.jsx:2059 +#: src/components/compose.jsx:2057 #: src/pages/collection.jsx:686 #: src/pages/settings.jsx:302 #: src/utils/visibility-text.jsx:4 @@ -470,7 +470,7 @@ msgstr "همگانی" #: src/components/collection-card.jsx:201 #: src/pages/collection.jsx:680 msgid "Unlisted" -msgstr "" +msgstr "فهرست‌نشده" #: src/components/collection-add-edit.jsx:192 #: src/components/edit-profile-sheet.jsx:695 @@ -612,7 +612,7 @@ msgstr "" #: src/components/compose.jsx:125 msgid "Add media" -msgstr "" +msgstr "افزودن رسانه" #: src/components/compose.jsx:126 msgid "Add custom emoji" @@ -620,7 +620,7 @@ msgstr "افزودن شکلک شخصی‌سازی‌شده" #: src/components/compose.jsx:127 msgid "Add GIF" -msgstr "" +msgstr "افزودن GIF" #: src/components/compose.jsx:128 msgid "Add poll" @@ -642,78 +642,78 @@ msgid "{0, plural, one {File {1} is not supported.} other {Files {2} are not sup msgstr "" #: src/components/compose.jsx:294 -#: src/components/compose.jsx:2205 +#: src/components/compose.jsx:2203 #: src/components/file-picker-input.jsx:47 msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}" msgstr "{maxMediaAttachments, plural, one {فقط میتوانید تا ۱ پرونده الصاق کنید.} other {فقط میتوانید تا # پرونده الصاق کنید.}}" -#: src/components/compose.jsx:652 +#: src/components/compose.jsx:650 msgid "You have unsaved changes. Discard this post?" msgstr "شما تغییرات ذخیره‌نشده دارید. این فرسته را رها میکنید؟" -#: src/components/compose.jsx:1124 +#: src/components/compose.jsx:1122 msgid "Pop out" msgstr "" -#: src/components/compose.jsx:1132 +#: src/components/compose.jsx:1130 msgid "Minimize" msgstr "کوچک‌کردن" -#: src/components/compose.jsx:1168 +#: src/components/compose.jsx:1166 msgid "Looks like you closed the parent window." msgstr "انگار شما پنجرهٔ اصلی را بستید." -#: src/components/compose.jsx:1175 +#: src/components/compose.jsx:1173 msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." msgstr "انگار شما در حال حاضر یک زمینهٔ نوشتن در پنجرهٔ مادر دارید که در حال حاضر درحال انتشار است. لطفا صبر کنید تا تمام شود و بعدا دوباره تلاش کنید." -#: src/components/compose.jsx:1180 +#: src/components/compose.jsx:1178 msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" msgstr "انگار شما در حال حاضر یک زمینهٔ نوشتن در پنجرهٔ مادر دارید. وارد شدن به این پنجره تغییراتی که در پنجرهٔ مادر انجام داده‌اید را رها میکند. ادامه میدهید؟" -#: src/components/compose.jsx:1226 +#: src/components/compose.jsx:1224 msgid "Pop in" msgstr "" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') -#: src/components/compose.jsx:1236 +#: src/components/compose.jsx:1234 msgid "Replying to @{0}’s post (<0>{1})" msgstr "درحال پاسخ دادن به فرستهٔ @{0} (<0>{1})" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username -#: src/components/compose.jsx:1248 +#: src/components/compose.jsx:1246 msgid "Replying to @{0}’s post" msgstr "درحال پاسخ دادن به فرستهٔ @{0}" -#: src/components/compose.jsx:1263 +#: src/components/compose.jsx:1261 msgid "Editing source post" msgstr "ویرایش فرستهٔ منبع" -#: src/components/compose.jsx:1332 +#: src/components/compose.jsx:1330 msgid "Poll must have at least 2 options" msgstr "نظرسنجی حداقل باید ۲ گزینه داشته باشد" -#: src/components/compose.jsx:1336 +#: src/components/compose.jsx:1334 msgid "Some poll choices are empty" msgstr "بعضی گزینه‌های نظرسنجی خالی هستند" -#: src/components/compose.jsx:1349 +#: src/components/compose.jsx:1347 msgid "Some media have no descriptions. Continue?" msgstr "بعضی از رسانه‌ها شرح ندارند. ادامه میدهید؟" -#: src/components/compose.jsx:1406 +#: src/components/compose.jsx:1404 msgid "Attachment #{i} failed" msgstr "پیوست #{i} شکست خورد" -#: src/components/compose.jsx:1535 +#: src/components/compose.jsx:1533 #: src/components/status.jsx:2564 #: src/components/timeline.jsx:1062 msgid "Content warning" msgstr "هشدار محتوا" -#: src/components/compose.jsx:1567 -#: src/components/compose.jsx:1713 +#: src/components/compose.jsx:1565 +#: src/components/compose.jsx:1711 #: src/components/edit-profile-sheet.jsx:692 #: src/components/import-accounts-selection.jsx:175 #: src/components/open-link-sheet.jsx:74 @@ -722,79 +722,79 @@ msgstr "هشدار محتوا" msgid "Cancel" msgstr "لغو" -#: src/components/compose.jsx:1575 +#: src/components/compose.jsx:1573 msgid "Post your reply" msgstr "پاسختان را بفرستید" -#: src/components/compose.jsx:1577 +#: src/components/compose.jsx:1575 msgid "Edit your post" msgstr "فرسته‌تان را ویرایش کنید" -#: src/components/compose.jsx:1579 +#: src/components/compose.jsx:1577 msgid "Ask a question" -msgstr "" +msgstr "سوالی بپرسید" -#: src/components/compose.jsx:1580 +#: src/components/compose.jsx:1578 msgid "What are you doing?" msgstr "چکار میکنید؟" -#: src/components/compose.jsx:1653 +#: src/components/compose.jsx:1651 msgid "Mark media as sensitive" msgstr "علامت‌گذاری رسانه به عنوان حساس" -#: src/components/compose.jsx:1693 +#: src/components/compose.jsx:1691 msgid "Posting on <0/>" msgstr "" -#: src/components/compose.jsx:1991 +#: src/components/compose.jsx:1989 #: src/components/quote-settings-sheet.jsx:82 #: src/components/status.jsx:301 #: src/pages/settings.jsx:350 msgid "Anyone can quote" msgstr "" -#: src/components/compose.jsx:1994 +#: src/components/compose.jsx:1992 #: src/components/quote-settings-sheet.jsx:85 #: src/components/status.jsx:302 #: src/pages/settings.jsx:353 msgid "Your followers can quote" msgstr "" -#: src/components/compose.jsx:1997 +#: src/components/compose.jsx:1995 #: src/components/quote-settings-sheet.jsx:88 #: src/components/status.jsx:303 #: src/pages/settings.jsx:356 msgid "Only you can quote" msgstr "" -#: src/components/compose.jsx:2037 +#: src/components/compose.jsx:2035 msgid "Quotes can't be embedded in private mentions." msgstr "" -#: src/components/compose.jsx:2064 +#: src/components/compose.jsx:2062 #: src/components/nav-menu.jsx:367 #: src/components/shortcuts-settings.jsx:168 #: src/utils/visibility-text.jsx:5 msgid "Local" msgstr "محلی" -#: src/components/compose.jsx:2068 +#: src/components/compose.jsx:2066 #: src/pages/settings.jsx:305 #: src/utils/visibility-text.jsx:6 msgid "Quiet public" msgstr "" -#: src/components/compose.jsx:2074 +#: src/components/compose.jsx:2072 #: src/components/status.jsx:2443 #: src/utils/visibility-text.jsx:8 msgid "Private mention" msgstr "اشارهٔ خصوصی" -#: src/components/compose.jsx:2130 +#: src/components/compose.jsx:2128 msgid "Schedule" msgstr "" -#: src/components/compose.jsx:2132 +#: src/components/compose.jsx:2130 #: src/components/keyboard-shortcuts-help.jsx:165 #: src/components/status.jsx:1107 #: src/components/status.jsx:1156 @@ -805,20 +805,20 @@ msgstr "" msgid "Reply" msgstr "پاسخ دادن" -#: src/components/compose.jsx:2134 +#: src/components/compose.jsx:2132 msgid "Update" msgstr "بروزرسانی" -#: src/components/compose.jsx:2135 +#: src/components/compose.jsx:2133 msgctxt "Submit button in composer" msgid "Post" msgstr "ارسال" -#: src/components/compose.jsx:2217 +#: src/components/compose.jsx:2215 msgid "Downloading GIF…" msgstr "بارگیری جیف…" -#: src/components/compose.jsx:2241 +#: src/components/compose.jsx:2239 msgid "Failed to download GIF" msgstr "بارگیری جیف ناموفق بود" @@ -1555,7 +1555,7 @@ msgstr "پالایش‌شده" #: src/components/media.jsx:567 msgid "Open file" -msgstr "" +msgstr "باز کردن فایل" #: src/components/modals.jsx:93 msgid "Post scheduled" From 0763abc11be2c4a56262feafed4f4f8f4dd449ce Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Thu, 27 Aug 2026 14:17:51 +0800 Subject: [PATCH 21/37] i18n updates (fa-IR) (#1589) --- src/locales/fa-IR.po | 78 ++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/locales/fa-IR.po b/src/locales/fa-IR.po index e1f258d4c7..aade6bfb53 100644 --- a/src/locales/fa-IR.po +++ b/src/locales/fa-IR.po @@ -8,7 +8,7 @@ msgstr "" "Language: fa\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-27 04:33\n" +"PO-Revision-Date: 2026-08-27 06:17\n" "Last-Translator: \n" "Language-Team: Persian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -1669,7 +1669,7 @@ msgstr "برگزیده‌ها" #: src/pages/collection.jsx:265 #: src/pages/search.jsx:163 msgid "Collections" -msgstr "" +msgstr "مجموعه‌ ها" #: src/components/nav-menu.jsx:274 #: src/pages/followed-hashtags.jsx:15 @@ -1943,7 +1943,7 @@ msgstr "ناتوان در رونوشت برداشتن از پیوند" #: src/components/open-link-sheet.jsx:56 msgid "Open link?" -msgstr "" +msgstr "باز کردن لینک؟" #: src/components/open-link-sheet.jsx:78 #: src/components/post-embed-modal.jsx:233 @@ -1963,7 +1963,7 @@ msgstr "همرسانی…" #: src/components/open-link-sheet.jsx:92 msgid "Open" -msgstr "" +msgstr "باز کردن" #: src/components/poll.jsx:160 msgid "{optionVotesCount, plural, one {# vote} other {# votes}}" @@ -2100,7 +2100,7 @@ msgstr "نکته: این پیش‌نمایش بصورت طراحی سبک است #: src/components/private-note-sheet.jsx:41 #: src/components/related-actions.jsx:243 msgid "Notes" -msgstr "" +msgstr "یادداشت‌ ها" #: src/components/private-note-sheet.jsx:44 msgid "Only visible to you" @@ -2117,7 +2117,7 @@ msgstr "ذخیره و بستن" #: src/components/qr-code-modal.jsx:26 #: src/components/shortcuts-settings.jsx:849 msgid "Scan QR code" -msgstr "" +msgstr "پویش کد QR" #: src/components/qr-scanner-modal.jsx:263 msgid "Unable to access camera. Please check permissions." @@ -2155,7 +2155,7 @@ msgstr "" #: src/components/quote-suggestion.jsx:37 msgid "Keep as link" -msgstr "" +msgstr "حفظ به‌ عنوان لینک" #: src/components/quote-suggestion.jsx:42 msgid "Replace current quote" @@ -2229,35 +2229,35 @@ msgstr "" #: src/components/related-actions.jsx:356 msgid "Notifications enabled for @{username}'s posts." -msgstr "" +msgstr "اعلان‌های پست @{username} فعال شدند." #: src/components/related-actions.jsx:357 msgid " Notifications disabled for @{username}'s posts." -msgstr "" +msgstr " اعلان‌های پست @{username} غیرفعال شدند." #: src/components/related-actions.jsx:369 msgid "Disable notifications" -msgstr "" +msgstr "توقف اعلان ها" #: src/components/related-actions.jsx:370 msgid "Enable notifications" -msgstr "" +msgstr "فعال‌سازی اعلان‌ها" #: src/components/related-actions.jsx:387 msgid "Boosts from @{username} enabled." -msgstr "" +msgstr "تقویت‌های @{username} فعال شدند." #: src/components/related-actions.jsx:388 msgid "Boosts from @{username} disabled." -msgstr "" +msgstr "تقویت‌های @{username} غیرفعال شدند." #: src/components/related-actions.jsx:399 msgid "Disable boosts" -msgstr "" +msgstr "غیرفعال کردن تقویت‌ها" #: src/components/related-actions.jsx:399 msgid "Enable boosts" -msgstr "" +msgstr "فعال کردن تقویت‌ها" #: src/components/related-actions.jsx:418 msgid "@{username} is no longer featured on your profile." @@ -2277,12 +2277,12 @@ msgstr "" #: src/components/related-actions.jsx:449 msgid "Don't feature on profile" -msgstr "" +msgstr "معرفی نکردن در نمایه" #: src/components/related-actions.jsx:450 #: src/pages/hashtag.jsx:362 msgid "Feature on profile" -msgstr "" +msgstr "معرفی در نمایه" #: src/components/related-actions.jsx:459 #: src/components/related-actions.jsx:519 @@ -2292,7 +2292,7 @@ msgstr "" #: src/components/related-actions.jsx:470 #: src/components/related-actions.jsx:530 msgid "Show collections" -msgstr "" +msgstr "نمایش مجموعه ها" #: src/components/related-actions.jsx:511 #: src/pages/account-statuses.jsx:578 @@ -2407,11 +2407,11 @@ msgstr "{0}س" #: src/components/report-collection.jsx:25 msgid "Report Collection" -msgstr "" +msgstr "گزارش مجموعه" #: src/components/report-collection.jsx:60 msgid "Collection reported" -msgstr "" +msgstr "مجموعه گزارش شد" #: src/components/report-collection.jsx:65 msgid "Unable to report collection" @@ -2433,7 +2433,7 @@ msgstr "ارسال کردن گزارش" #: src/components/report-modal.jsx:30 msgid "Spam" -msgstr "" +msgstr "هرزنامه" #: src/components/report-modal.jsx:31 msgid "Malicious links, fake engagement, or repetitive replies" @@ -2441,7 +2441,7 @@ msgstr "" #: src/components/report-modal.jsx:34 msgid "Illegal" -msgstr "" +msgstr "غیرقانونی" #: src/components/report-modal.jsx:35 msgid "Violates the law of your or the server's country" @@ -2457,7 +2457,7 @@ msgstr "قوانین خاص کارساز را نقض میکند" #: src/components/report-modal.jsx:40 msgid "Violation" -msgstr "" +msgstr "تخلف" #: src/components/report-modal.jsx:43 msgid "Other" @@ -2477,7 +2477,7 @@ msgstr "گزارش دادن @{username}" #: src/components/report-modal.jsx:147 msgid "Pending review" -msgstr "" +msgstr "در انتظار بررسی" #: src/components/report-modal.jsx:189 msgid "Post reported" @@ -2585,7 +2585,7 @@ msgstr "فقط محلی" #: src/components/shortcuts-settings.jsx:125 #: src/pages/login.jsx:231 msgid "Server" -msgstr "" +msgstr "سرور" #: src/components/shortcuts-settings.jsx:81 #: src/components/shortcuts-settings.jsx:90 @@ -2858,7 +2858,7 @@ msgstr "" #: src/components/status.jsx:3281 #: src/components/status.jsx:3282 msgid "Post unavailable" -msgstr "" +msgstr "پست در دسترس نیست" #: src/components/status.jsx:635 msgid "<0/> <1>boosted" @@ -2899,12 +2899,12 @@ msgstr "فرستهٔ قدیمی (<0>{0})" #: src/components/status.jsx:1106 msgid "Reply…" -msgstr "" +msgstr "پاسخ دادن…" #: src/components/status.jsx:1120 #: src/components/status.jsx:1134 msgid "Reply all" -msgstr "" +msgstr "پاسخ به همه" #: src/components/status.jsx:1123 msgid "{mentionsCount, plural, other {# mentions}}" @@ -3097,26 +3097,26 @@ msgstr "گزارش دادن فرسته…" #: src/components/status.jsx:2247 #: src/components/status.jsx:3097 msgid "Liked" -msgstr "" +msgstr "لایک شده" #: src/components/status.jsx:2244 #: src/components/status.jsx:3079 msgid "Boosted" -msgstr "" +msgstr "تقویت شده" #: src/components/status.jsx:2254 #: src/components/status.jsx:3112 msgid "Bookmarked" -msgstr "" +msgstr "نشانک‌ گذاری شده" #: src/components/status.jsx:2258 msgid "Pinned" -msgstr "" +msgstr "سنجاق شده" #: src/components/status.jsx:2315 #: src/components/status.jsx:2847 msgid "Deleted" -msgstr "" +msgstr "حذف شده" #: src/components/status.jsx:2353 #: src/components/status.jsx:2420 @@ -3127,19 +3127,19 @@ msgstr "" #: src/components/status.jsx:2432 #: src/components/status.jsx:2879 msgid "Edited" -msgstr "" +msgstr "ویرایش شده" #: src/components/status.jsx:2527 #: src/components/status.jsx:2589 #: src/pages/collection.jsx:586 msgid "Show content" -msgstr "" +msgstr "نمایش محتوا" #: src/components/status.jsx:2527 #: src/components/status.jsx:2589 #: src/components/status.jsx:2696 msgid "Show less" -msgstr "" +msgstr "نمایش کمتر" #. placeholder {0}: filterInfo.titlesStr #. placeholder {0}: filterInfo?.titlesStr @@ -3150,7 +3150,7 @@ msgstr "پالایش‌شده: {0}" #: src/components/status.jsx:2696 msgid "Show media" -msgstr "" +msgstr "نمایش رسانه" #: src/components/status.jsx:2965 #: src/components/status.jsx:2977 @@ -3183,11 +3183,11 @@ msgstr "" #: src/components/status.jsx:3362 msgid "Show anyway" -msgstr "" +msgstr "به هرحال نشان داده شود" #: src/components/status.jsx:3507 msgid "Edit History" -msgstr "" +msgstr "تاریخچه ویرایش" #: src/components/status.jsx:3511 msgid "Failed to load history" From 1bfbc051e303919caaada263da0199213be47dff Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Thu, 27 Aug 2026 19:06:41 +0800 Subject: [PATCH 22/37] Possibly fix protocol-less URLs --- src/utils/api.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/api.js b/src/utils/api.js index 7176d3346f..698dba8294 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -116,7 +116,8 @@ export async function initInstance(client, instance) { // spec: https://github.com/jhass/nodeinfo try { if (uri || domain) { - let urlBase = uri || `https://${domain}`; + let urlBase = uri || domain; + if (!/^https?:\/\//.test(urlBase)) urlBase = `https://${urlBase}`; const wellKnown = await ( await fetch(`${urlBase}/.well-known/nodeinfo`) ).json(); From 6e37072ebbdf9fb0f5718caabe83ad6b63c39042 Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Fri, 28 Aug 2026 04:09:58 +0800 Subject: [PATCH 23/37] i18n updates (fa-IR) (#1590) * New translations (Persian) * Update catalog data * New translations (Persian) * Update catalog data * New translations (Persian) --------- Co-authored-by: github-actions[bot] --- src/data/catalogs.json | 4 +-- src/locales/fa-IR.po | 56 +++++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/data/catalogs.json b/src/data/catalogs.json index 2d7f5284f2..6ad8c8ec5a 100644 --- a/src/data/catalogs.json +++ b/src/data/catalogs.json @@ -31,7 +31,7 @@ "code": "eo-UY", "nativeName": "Esperanto", "name": "Esperanto", - "completion": 82, + "completion": 100, "listed": true }, { @@ -52,7 +52,7 @@ "code": "fa-IR", "nativeName": "فارسی", "name": "Persian", - "completion": 54, + "completion": 61, "listed": true }, { diff --git a/src/locales/fa-IR.po b/src/locales/fa-IR.po index aade6bfb53..cb4e840608 100644 --- a/src/locales/fa-IR.po +++ b/src/locales/fa-IR.po @@ -8,7 +8,7 @@ msgstr "" "Language: fa\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-27 06:17\n" +"PO-Revision-Date: 2026-08-27 20:09\n" "Last-Translator: \n" "Language-Team: Persian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -130,7 +130,7 @@ msgstr "" #: src/components/account-info.jsx:119 msgid "View profile" -msgstr "" +msgstr "نمایش نمایه" #: src/components/account-info.jsx:388 msgid "Unable to load account." @@ -255,7 +255,7 @@ msgstr "پاسخ‌ها" #: src/pages/catchup.jsx:1597 #: src/pages/year-in-posts.jsx:1400 msgid "Quotes" -msgstr "" +msgstr "نقل قول" #: src/components/account-info.jsx:1074 #: src/pages/account-statuses.jsx:444 @@ -335,7 +335,7 @@ msgstr "" #: src/components/add-remove-lists-sheet.jsx:91 msgid "Unable to add to list." -msgstr "" +msgstr "ناتوانی در افزودن به لیست." #: src/components/add-remove-lists-sheet.jsx:110 #: src/pages/lists.jsx:131 @@ -368,7 +368,7 @@ msgstr "بیشتر از <0/>" #: src/components/collection-account-actions.jsx:35 #: src/pages/collection.jsx:422 msgid "Remove me from this collection?" -msgstr "" +msgstr "من را از این مجموعه حذف کن؟" #: src/components/collection-account-actions.jsx:44 #: src/pages/collection.jsx:431 @@ -751,7 +751,7 @@ msgstr "" #: src/components/status.jsx:301 #: src/pages/settings.jsx:350 msgid "Anyone can quote" -msgstr "" +msgstr "همه میتوانند نقل قول کنند" #: src/components/compose.jsx:1992 #: src/components/quote-settings-sheet.jsx:85 @@ -765,7 +765,7 @@ msgstr "" #: src/components/status.jsx:303 #: src/pages/settings.jsx:356 msgid "Only you can quote" -msgstr "" +msgstr "فقط خودتان می‌توانید نقل قول کنید" #: src/components/compose.jsx:2035 msgid "Quotes can't be embedded in private mentions." @@ -792,7 +792,7 @@ msgstr "اشارهٔ خصوصی" #: src/components/compose.jsx:2128 msgid "Schedule" -msgstr "" +msgstr "زمان‌بندی" #: src/components/compose.jsx:2130 #: src/components/keyboard-shortcuts-help.jsx:165 @@ -833,7 +833,7 @@ msgstr "شکلک‌های شخصی‌سازی‌شده" #: src/components/custom-emojis-modal.jsx:333 msgid "Search emoji" -msgstr "" +msgstr "جستجوی ایموجی" #: src/components/custom-emojis-modal.jsx:366 msgid "Error loading custom emojis" @@ -841,19 +841,19 @@ msgstr "خطا در بارگذاری شکلک‌های شخصی‌سازی‌ش #: src/components/custom-emojis-modal.jsx:377 msgid "Recently used" -msgstr "" +msgstr "اخیرا استفاده‌شده" #: src/components/custom-emojis-modal.jsx:378 msgid "Others" -msgstr "" +msgstr "دیگران" #: src/components/custom-emojis-modal.jsx:397 msgid "Zoom out" -msgstr "" +msgstr "کوچک کردن" #: src/components/custom-emojis-modal.jsx:405 msgid "Zoom in" -msgstr "" +msgstr "بزرگ کردن" #: src/components/custom-emojis-modal.jsx:412 msgid "Custom emojis are not available on this server." @@ -1016,11 +1016,11 @@ msgstr "" #: src/components/edit-profile-sheet.jsx:481 msgid "Profile picture" -msgstr "" +msgstr "عکس نمایه" #: src/components/edit-profile-sheet.jsx:554 msgid "Remove profile picture?" -msgstr "" +msgstr "حذف عکس نمایه؟" #: src/components/edit-profile-sheet.jsx:590 msgid "Bio" @@ -1028,7 +1028,7 @@ msgstr "شرح حال" #: src/components/edit-profile-sheet.jsx:607 msgid "Custom fields" -msgstr "" +msgstr "فیلدهای سفارشی" #: src/components/edit-profile-sheet.jsx:613 msgid "Label" @@ -1040,7 +1040,7 @@ msgstr "محتوا" #: src/components/edit-profile-sheet.jsx:678 msgid "Add field" -msgstr "" +msgstr "افزودن فیلد" #: src/components/embed-modal.jsx:18 msgid "Open in new window" @@ -1107,7 +1107,7 @@ msgstr "چیزی برای نمایش نیست" #: src/components/gif-picker-modal.jsx:86 msgid "Search GIFs" -msgstr "" +msgstr "جستجوی GIF ها" #: src/components/gif-picker-modal.jsx:102 msgid "Powered by GIPHY" @@ -1127,7 +1127,7 @@ msgstr "" #: src/components/import-accounts-selection.jsx:117 msgid "Select all" -msgstr "" +msgstr "انتخاب همه" #: src/components/import-accounts-selection.jsx:158 msgid "Existing" @@ -1139,15 +1139,15 @@ msgstr "" #: src/components/import-export-accounts.jsx:52 msgid "Export failed" -msgstr "" +msgstr "خروجی گرفتن ناموفق بود" #: src/components/import-export-accounts.jsx:72 msgid "Import failed" -msgstr "" +msgstr "وارد کردن ناموفق بود" #: src/components/import-export-accounts.jsx:113 msgid "Import/Export <0>Accounts" -msgstr "" +msgstr "وارد/خروج <0>حساب های کاربری" #: src/components/import-export-accounts.jsx:128 #: src/components/shortcuts-settings.jsx:816 @@ -1156,7 +1156,7 @@ msgstr "ورود" #: src/components/import-export-accounts.jsx:139 msgid "Select file…" -msgstr "" +msgstr "انتخاب فایل…" #: src/components/import-export-accounts.jsx:151 #: src/components/shortcuts-settings.jsx:1066 @@ -2058,7 +2058,7 @@ msgstr "" #: src/components/post-embed-modal.jsx:261 msgid "Account Emojis:" -msgstr "" +msgstr "ایموجی های حساب کاربری:" #: src/components/post-embed-modal.jsx:292 #: src/components/post-embed-modal.jsx:337 @@ -2067,11 +2067,11 @@ msgstr "" #: src/components/post-embed-modal.jsx:306 msgid "Emojis:" -msgstr "" +msgstr "ایموجی ها:" #: src/components/post-embed-modal.jsx:351 msgid "Notes:" -msgstr "" +msgstr "یادداشت‌ ها:" #: src/components/post-embed-modal.jsx:355 msgid "This is static, unstyled and scriptless. You may need to apply your own styles and edit as needed." @@ -2104,7 +2104,7 @@ msgstr "یادداشت‌ ها" #: src/components/private-note-sheet.jsx:44 msgid "Only visible to you" -msgstr "" +msgstr "فقط برای شما قابل مشاهده است" #: src/components/private-note-sheet.jsx:69 msgid "Unable to update private note." @@ -2184,7 +2184,7 @@ msgstr "" #: src/components/recent-searches.jsx:59 msgid "Clear all" -msgstr "" +msgstr "پاک کردن همه" #: src/components/recent-searches.jsx:94 msgid "Clear" From 06646210d49021b3482580d52cae6ae182dc05cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 30 Aug 2026 00:03:52 +0000 Subject: [PATCH 24/37] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3ca1a98ab..2f53fa0292 100644 --- a/README.md +++ b/README.md @@ -417,7 +417,7 @@ Costs involved in running and developing this web app: - mojosoeun (Korean) - moreal (Korean) - MrWillCom (Chinese Simplified) -- Mvtbh (Persian) +- Mvtbh (Persian) - nclm (French) - NiklasA95 (German) - Nortix08 (German) From 7a28013d238e73c68f08ac356ca7848a6be44e21 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Sun, 30 Aug 2026 18:36:11 +0800 Subject: [PATCH 25/37] Temporary fallback when from:me returns 400 --- src/utils/is-search-enabled.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/utils/is-search-enabled.js b/src/utils/is-search-enabled.js index a0c2bfff5d..6d74261e6c 100644 --- a/src/utils/is-search-enabled.js +++ b/src/utils/is-search-enabled.js @@ -3,11 +3,22 @@ import pmem from './pmem'; async function _isSearchEnabled(instance) { const { masto } = api({ instance }); - const results = await masto.v2.search.list({ - q: 'from:me', - type: 'statuses', - limit: 1, - }); + let results; + try { + results = await masto.v2.search.list({ + q: 'from:me', + type: 'statuses', + limit: 1, + }); + } catch (e) { + if (e?.statusCode !== 400) throw e; + // Temporary fallback when from:me returns 400 + results = await masto.v2.search.list({ + q: 'in:library', + type: 'statuses', + limit: 1, + }); + } return !!results?.statuses?.length; } From 9cdd2f0d1ec1495bfdfcda620ef34553d32edf44 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Mon, 31 Aug 2026 16:48:36 +0800 Subject: [PATCH 26/37] Upgrade deps --- package-lock.json | 550 ++++++++++++++++++++++++++-------------------- package.json | 14 +- 2 files changed, 315 insertions(+), 249 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e7413923f..f7c94e748b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@szhsin/react-menu": "~4.5.2", "chroma-js": "~3.2.0", "compare-versions": "~6.1.1", - "exifreader": "~4.43.0", + "exifreader": "~4.44.0", "fast-blurhash": "~1.2.0", "fast-equals": "~6.0.2", "flexsearch": "~0.8.212", @@ -40,11 +40,11 @@ "punycode": "~2.3.1", "qr": "~0.6.0", "react-hotkeys-hook": "~5.2.4", - "react-intersection-observer": "~11.0.0", + "react-intersection-observer": "~11.0.1", "react-router-dom": "6.6.2", "react-zoom-pan-pinch": "~4.0.4", "swiped-events": "~1.2.0", - "temml": "~0.13.4", + "temml": "~0.13.5", "tinyld": "~1.3.4", "toastify-js": "~1.12.0", "uid": "~2.0.2", @@ -64,14 +64,14 @@ "@lingui/vite-plugin": "~6.6.0", "@playwright/test": "~1.62.1", "@preact/preset-vite": "~2.10.6", - "@types/node": "~26.2.0", - "oxfmt": "~0.63.0", + "@types/node": "~26.4.0", + "oxfmt": "~0.65.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", - "postcss-preset-env": "~11.4.0", + "postcss-preset-env": "~11.5.0", "sonda": "~0.14.0", "twitter-text": "~3.1.0", - "vite": "~8.2.1", + "vite": "~8.2.2", "vite-plugin-generate-file": "~0.3.1", "vite-plugin-html-config": "~2.0.2", "vite-plugin-pwa": "~1.3.0", @@ -1839,9 +1839,9 @@ } }, "node_modules/@csstools/css-color-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.2.0.tgz", - "integrity": "sha512-5+5LEmFuY1AjXdYhmgjTJogtQnP1evJ1zrBZGUNZ0thkpwnnmKxcHdAMn/OtFjAb25zA+jKDVYVRl+5G7rjv1A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.2.2.tgz", + "integrity": "sha512-3QKjR/vxyjcSXBLgb6lP0S3MGdvwbmqSsvLPbYdVORqPDc8FX1HAJ0Spk38bxaRXgvENTA47tlhhbb5Z2e8hEg==", "dev": true, "funding": [ { @@ -1934,9 +1934,9 @@ } }, "node_modules/@csstools/postcss-alpha-function": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-2.0.9.tgz", - "integrity": "sha512-/rw75/xf60Ecz7ZsU11cOJLw0tfbL+aR9g7soEWZO1mrfhZZ+ODJYqXbMEJmr2Qc2ZMPlGKn7R5aUP6yo+wWgQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-2.0.10.tgz", + "integrity": "sha512-I3BXq/sZqqvPNqLKLtkFYhAQosnKMByGP6bi7oLPfLdkkxxjOcF0sXhFr/uss1QzRnrIFevEGqXNztuhUDUwTQ==", "dev": true, "funding": [ { @@ -1950,7 +1950,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -1991,9 +1991,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-5.0.8.tgz", - "integrity": "sha512-3T4mwaiip1VqAMQn6ncLqB3tIGCRZH0xLgN1ZJvsyPQcKo3N/xaTq8zJpWHYQ/upTnxFXd3nT4u1/QxJ5cN1RQ==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-5.0.9.tgz", + "integrity": "sha512-2dDdkB/GaAaAmlpdidkEVhcnUfAc1d0bQvaj0x/RmO5X9tEmN94P50qecxx7vqVLgjpudxvzrQx/rF/unXSw/Q==", "dev": true, "funding": [ { @@ -2007,7 +2007,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2021,9 +2021,9 @@ } }, "node_modules/@csstools/postcss-color-function-display-p3-linear": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-2.0.8.tgz", - "integrity": "sha512-uXazBO+QoRoZ8UJqFT7MvPi4nPfh5UK5MffoXSIeRjMuHEMtz/VZqGAyskl/JolsikOCAmUlnNzpQ9VdXan2Vg==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-2.0.9.tgz", + "integrity": "sha512-IqPfcNZCGt0xiSu+QJxpSurOgql1ltOraGOp98h4+79yzrSO2bvV4HH4NtQ3DlxFtdsDZHv78gtRtJ5sIypocA==", "dev": true, "funding": [ { @@ -2037,7 +2037,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2051,9 +2051,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-4.0.8.tgz", - "integrity": "sha512-P6OncUFcry06u2N9nLzGihysKv+13Dg1uRD6nYldOKQGAkQ1yDqUWsPahVFSuBeXzL6nrewz0RY7GLNG3MOQog==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-4.0.9.tgz", + "integrity": "sha512-xswYldAM3z9qLjoa/Jr95nbLZ0oWJ2ziK4BTyuOb0F2AgnwdJ0XammjkdyuEHOXifTQeUfm10/4Ffz3d1uzi6w==", "dev": true, "funding": [ { @@ -2067,7 +2067,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2081,9 +2081,9 @@ } }, "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-2.0.8.tgz", - "integrity": "sha512-6DqDF2eXaxdPAWqvIE8n8O02U24UsAqSPwsxsZ4yqF3XIksTqGnsvfgjY2tdXd7NNLonO5wUtELPClz/TKmvhw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-2.0.9.tgz", + "integrity": "sha512-6VacpZLKKm2Jzm0w8MAVeW8r3xGbfa30v1/CV7LISFVFwXHpJIAzFm/ow381zjpdKV0163VmBnQLbaEo7FZeFA==", "dev": true, "funding": [ { @@ -2097,7 +2097,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2167,9 +2167,9 @@ } }, "node_modules/@csstools/postcss-contrast-color-function": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-3.0.8.tgz", - "integrity": "sha512-a7eMC53NjU6w/tlvj7mZGrBZ0Igori24s/gS2tbvKmRRpy2E1zmWJqKcpF4aAKWxd4bg6OcQqrauVRkEI1rZUw==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-3.0.9.tgz", + "integrity": "sha512-ADJAc/GvuxNFAFlAfKVeJNV+1Y1uKglwfcc9/X/TiE/c46b2TGflVXE99FwuIL9pd4j8YgRfNwpTiO346YzeBA==", "dev": true, "funding": [ { @@ -2183,7 +2183,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2224,6 +2224,29 @@ "postcss": "^8.4" } }, + "node_modules/@csstools/postcss-fit-tolerance-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-fit-tolerance-property/-/postcss-fit-tolerance-property-1.0.0.tgz", + "integrity": "sha512-eGOC0y1doDV3VWIT/LNZfnDhsYLHv9UA8ZiO/ZmiEUCh87d/IgKBZK6pwnqSjLWa9jzP2YclqzRiVEl8Vkf4iw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/@csstools/postcss-font-format-keywords": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-5.0.0.tgz", @@ -2278,9 +2301,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-3.0.8.tgz", - "integrity": "sha512-9hEL++lqLOq4PImXPyzbcIMDFMs54EeK20KIHYzYrgWSZQh+nuLxVVvn5OPaNcBf1fgNq3zZeROzI4C4WtYA/A==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-3.0.9.tgz", + "integrity": "sha512-CsPRwH/pRfRA8ZNehKgtdyerL3iQXnwqWNgQGl2KBMVUz5plgrxanE2Sp69yz6mO86UONM3OKrAIph4zGtTzCw==", "dev": true, "funding": [ { @@ -2294,7 +2317,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -2306,9 +2329,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-6.0.8.tgz", - "integrity": "sha512-30xf5WObqKmVExI4HKJuiUJsH0pV8qIhXwwDnyezaXxlzwpwwZTiY53EMM+ZEx+gErKJdb+60ZLeVKKxhCXrAQ==", + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-6.0.9.tgz", + "integrity": "sha512-usfLEBPgFiNkuB3BHbGxyM9NnYDlPuiN9XrzooJoAdKu6dyyTQ2XHageS6gfHDpWw4dRvVKR3qDkz2QkFlXp4A==", "dev": true, "funding": [ { @@ -2322,7 +2345,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2336,9 +2359,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-5.0.8.tgz", - "integrity": "sha512-HGBlvdYj0ecvKvFB/l0hXQLKyNpEZyDZJjCOpJsd1koHo4SLaf/D/F65wNDkld7jsHMbOLkPfi/3Gm7Qv7vewQ==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-5.0.9.tgz", + "integrity": "sha512-IazupZq2PYo9XoSGNybBmKCC6MzEnRHEvtmWdPuUfqRMv2kie20+1HafQo2sf1uURN9DcfbYo7mM6SeBg+IvEA==", "dev": true, "funding": [ { @@ -2352,7 +2375,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2761,9 +2784,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-5.0.8.tgz", - "integrity": "sha512-ZxdD+Z/1rZYOsmU3TB1ufUZrtKngB9zrh5/3llzwFMA5ffk95db0YaURgAA4OToJzvmYUrVv+TY+dcTkxYjlGg==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-5.0.9.tgz", + "integrity": "sha512-YpF8jjUsyHYWt1JZUarMNKNuP9SJZ3d+PEoQIlTtL9IilETIBZwH92JrrAzXamorfuaLlysntSY8QDWjCvLoYg==", "dev": true, "funding": [ { @@ -2777,7 +2800,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2839,6 +2862,29 @@ "postcss": "^8.4" } }, + "node_modules/@csstools/postcss-property-rule-optional-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-optional-descriptors/-/postcss-property-rule-optional-descriptors-1.0.0.tgz", + "integrity": "sha512-oPFzJF1R8bbFRYVcGKHFbHjhKUP2unw4tkTTlpa3E1aCI+XUr/4h6vwdWOegkyxPb9v0vk9tixIL+Npyx1L0qA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/@csstools/postcss-property-rule-prelude-list": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-2.0.0.tgz", @@ -2895,9 +2941,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-4.0.8.tgz", - "integrity": "sha512-PUk4ZqNMTVcKRlAD1XXVVzUPJjUtZQKvxPM1O2Z5UC7OCdzqM+FfKDx8rhuOk9lwGvOtFpia8S9rC6p7oGIpfw==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-4.0.9.tgz", + "integrity": "sha512-CuLG2I0Psvs2P5lzd/csCX1b1ZNbnjkqRaKGee9hVZZ325YCSn3dbu7zNoRSIjdpb79LHkmHtOQzcWvj/XJYsw==", "dev": true, "funding": [ { @@ -2911,7 +2957,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -3659,9 +3705,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.143.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.143.0.tgz", - "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", + "version": "0.147.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.147.0.tgz", + "integrity": "sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg==", "dev": true, "license": "MIT", "funding": { @@ -3669,9 +3715,9 @@ } }, "node_modules/@oxfmt/binding-android-arm-eabi": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.63.0.tgz", - "integrity": "sha512-YmRth4ZPGgEXcgmkhvANbC9uD67dxmSobW7DQuyt5tOBOKvPnIpk5SVHBj88E+7wMNRI2FhqaDbOhQFBix+b8A==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.65.0.tgz", + "integrity": "sha512-M10Gs1SSpTNI6ahGx3M/OlIdUF4hkaP6OgUb+MS79t/Pgflk3r1nW5gPFqsZGUAXg0H1AfANT9AvLdBSTIhZKg==", "cpu": [ "arm" ], @@ -3686,9 +3732,9 @@ } }, "node_modules/@oxfmt/binding-android-arm64": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.63.0.tgz", - "integrity": "sha512-icbahX8X2X3sRamOMecvdYeZXWjPDazRDIfvWfy7Ca1nc/ZDT2Y9k5Nt7s46EqFd7NQPdgk+CM3/SgIT5LPCaQ==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.65.0.tgz", + "integrity": "sha512-6DXH5sftNlaHpWJG50hFMF+Qxtq5D2TmahvcDPxWNcGIf8qrC9Y0YgHYcYZ2hlWzaccKXh/f3GcssH8vtkl4JA==", "cpu": [ "arm64" ], @@ -3703,9 +3749,9 @@ } }, "node_modules/@oxfmt/binding-darwin-arm64": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.63.0.tgz", - "integrity": "sha512-WV+Ze5v5gI2qoj8jpAovt8KBTW8pjEz/AiMXXjeTQS+Bmf/MmZXTS40S8xNPDszX+W8WDv2Bbk6qKrMTtUGu1A==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.65.0.tgz", + "integrity": "sha512-K9m7lr53pcOLETNsC88sWes/GWHUGjZyHx95UhYcSXy0r30haLdeXlSufSenEAtoLaW753WN8/l4M7GYcRt6cg==", "cpu": [ "arm64" ], @@ -3720,9 +3766,9 @@ } }, "node_modules/@oxfmt/binding-darwin-x64": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.63.0.tgz", - "integrity": "sha512-CJGSBdDxXOWIpoFXHpverimCvz084KA7L483rqJ44c3jDtzv6d4qOSoR/V9ywSHfV+Ks1lwIj2P49BFhunLNAA==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.65.0.tgz", + "integrity": "sha512-sTNwIx1gre3MyiHOPLu7IGW4UyMScYL4DTmJT01p4vzB0En+OJUQz6KuH8t0PpsClRSaMuY3b0QmtoPItfO8Lg==", "cpu": [ "x64" ], @@ -3737,9 +3783,9 @@ } }, "node_modules/@oxfmt/binding-freebsd-x64": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.63.0.tgz", - "integrity": "sha512-BDfKY+KhL2078cgswBBFQPAYuxCy93bS/iC5frdSeSbTLcGrR6VC2hsuPTanoJmg84+wSyWl0wWC1eR+uTnkRg==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.65.0.tgz", + "integrity": "sha512-lYZMVIiIpnjGu5hJb2jxA8NYQ/e0OTGuaiAf4dqlGPNnPmUTu23FZRMltmjro/KkQm1uE4NT4n5yJ2zWmKcpfA==", "cpu": [ "x64" ], @@ -3754,9 +3800,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-gnueabihf": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.63.0.tgz", - "integrity": "sha512-Ov1cQEXT4mj7cojAokWSS1eoxkoyvbDfAbxNsGIKY2o36kvdAaFzPxRN6NxFRk9fD72B8oCoTTX/NuYTUWlpsg==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.65.0.tgz", + "integrity": "sha512-gIdXFAt/bURnjxuoedDEWdZ0PEWEmdDcm8qdpoFYYvW3QMk/5D4vUaH4mlMeRpeTdST4izUgHVO6RawQ4QulJw==", "cpu": [ "arm" ], @@ -3771,9 +3817,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-musleabihf": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.63.0.tgz", - "integrity": "sha512-0LE7ro3+6L79jcMANycAZfRaC7zxr9YZ2+vEL5uMD9QlEep+rS/r1kSJsnuLl991NXJZD60euh0PC1GHrR20vw==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.65.0.tgz", + "integrity": "sha512-jJVyADto7gA2AaX5qAjAexrxx9PJQaKWOe8PICE7yKMbjBRyOHcmj9TtVJ+MZYDUQ3hodU0AcoTj0jFQ1W4C6Q==", "cpu": [ "arm" ], @@ -3788,9 +3834,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-gnu": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.63.0.tgz", - "integrity": "sha512-izPk+2Z4gjuZK32Fqh5qXoMpT/2NXzLh++ob57HiEiVSQZ1iYXu8EKMzb+K5AvWyIEXhdDIt7ADjGGtFhkT9Bw==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.65.0.tgz", + "integrity": "sha512-p3RFkB+u7u+8up99b/NEcI1hdpLDiGgJYNwDorB60n7eH+eKposAKuMBxx+NqB3b+sJP4CZmYDh9G7X62tUsKg==", "cpu": [ "arm64" ], @@ -3808,9 +3854,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-musl": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.63.0.tgz", - "integrity": "sha512-alPmbOuWXFXiSo+lOtv6X71C7SYMEDW2WVvywOvf9BwKgEhSNGhMTLeFVSjKUMCamcjbbgVdsWF8GN1uy8xshg==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.65.0.tgz", + "integrity": "sha512-5Prb0uFzJHr+OUD/qS/TmU526wD+PaHDsm3KoRiUXbMIDpTSErjeQYkK3OQeshAvD/PuLa9WGEi9WPajjdOZJg==", "cpu": [ "arm64" ], @@ -3828,9 +3874,9 @@ } }, "node_modules/@oxfmt/binding-linux-ppc64-gnu": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.63.0.tgz", - "integrity": "sha512-BdzCPvolJc4AWZ+YMzgUDJcDzbQWrFjYuqBHoNHNqP1aCaluQRJNs4k3vNU5IG7vTpjf9zeD73D7MFM1TecZpg==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.65.0.tgz", + "integrity": "sha512-S8svxTp81obnF3admN9yd+u2rOYXtyzThLGBTg1PY6TPtGcC09BaaXLQD+TBSMa7yvqhCDZ8DFri+S/yG60qCg==", "cpu": [ "ppc64" ], @@ -3848,9 +3894,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-gnu": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.63.0.tgz", - "integrity": "sha512-7sIgfLzqtNKSkMGsGVyRpHwpjNezRg2XONvUOheFZs95TSZpM0JAuPpA8KrQFsWc4wPU95roX2O69JgH8igOgw==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.65.0.tgz", + "integrity": "sha512-WtXBr75G/h2qOHy8SiGtC1R6aS3jt4mE52v1D8AtwMXIgoOmSNP9lKvbSaTRoL0e5wsMPoi6T72QWDYPu+S+nA==", "cpu": [ "riscv64" ], @@ -3868,9 +3914,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-musl": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.63.0.tgz", - "integrity": "sha512-9Tcg0y0WcVa6Mm9AgcgFMseDS+VkFJZpKZ8We9SpDY4gg5jewSwln+0sO04QLcTS1BtfDl9MwR+NfID8L7PUTg==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.65.0.tgz", + "integrity": "sha512-YwSLVvpaz4o/nv/miiPEBJz+eJ+VmbgNIrao6RccK9ce+L5EA8wP+ZD0uFeq6wKOza6zoWv/dR0sj6lip6R3EA==", "cpu": [ "riscv64" ], @@ -3888,9 +3934,9 @@ } }, "node_modules/@oxfmt/binding-linux-s390x-gnu": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.63.0.tgz", - "integrity": "sha512-qWKC1pEOpx1qYhXaugPhHUeXwSfqEOk2wJH2LqVXGPV5iQYfdAZdt+d2XDiX4DTSWA2QDMUcFB+wEORh3Xn/sA==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.65.0.tgz", + "integrity": "sha512-XQTPqgvyrgkKcFq+Tp2eK6JS7sqqJ+nRmy2Fav4j3I+i4dJoPJm7YwEdoeSDX9xkqj9jZ/lWfF3bXUWztIrn6A==", "cpu": [ "s390x" ], @@ -3908,9 +3954,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-gnu": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.63.0.tgz", - "integrity": "sha512-S9wXYOiGSqYGS4Fx/TFsY+xDd/7dE5s+rUgbA4TsHiVF9e8J3ZcKmP7dsP/7iqLI9Wz7Ic7TzEr3mdthRCTdrA==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.65.0.tgz", + "integrity": "sha512-cjZlx6S/VkeCNWCbwZriTnLnZeTcV3DEyeRGSw/2wwLP9viq+C0bJ4bC1k/ZLkFxDcB1lUgSasPkYGP1bdraOg==", "cpu": [ "x64" ], @@ -3928,9 +3974,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-musl": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.63.0.tgz", - "integrity": "sha512-5eGyTJuMZNwBSHCivXt8Yuta6GeTYksOPXRk2MIhajiyFGQx7bjaHIwY+ZusAoFHhT157A9x6sktLjYo9D5oMQ==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.65.0.tgz", + "integrity": "sha512-2azCjxdLtK4zCcIOU1dlXlU0xxfbPi6EjwWx7Ac7teWPidIIDOcIhudup83xNCKYhtqeVd/gaVDOxbUq4syXWA==", "cpu": [ "x64" ], @@ -3948,9 +3994,9 @@ } }, "node_modules/@oxfmt/binding-openharmony-arm64": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.63.0.tgz", - "integrity": "sha512-Rz7hx+Dv3DoW/S6pwVAyjfFXp7/trdQ1zg+vNmsdsdDNlUccugp4XNqambSuEAeP0DaG9k72AtNyfDXCEg0AGw==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.65.0.tgz", + "integrity": "sha512-KXQ7xi1e/voP0IQaw6fG6XY4Z5+Llf1XmRSZS1t7pVFCecFJ0iXaboKmVwjFtp5MLlT5iWQrJ2U1C3GJdZ2u+Q==", "cpu": [ "arm64" ], @@ -3965,9 +4011,9 @@ } }, "node_modules/@oxfmt/binding-win32-arm64-msvc": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.63.0.tgz", - "integrity": "sha512-T/IuizKN9mr4Xw6YYnptkXRNdLkyIlUZ7c8zfTOBpoytZyJ1BAsMUvsMDEx0X4YvSMpaivm+DR8112rQfzC25g==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.65.0.tgz", + "integrity": "sha512-2FbbjG5jEqLSLKVJwBap84uJfpn5Y5A53KEO0aUNr+zeiRB9nyPUIFMcSbZVMFLitfBytFWRNngozXYjb6Rsbw==", "cpu": [ "arm64" ], @@ -3982,9 +4028,9 @@ } }, "node_modules/@oxfmt/binding-win32-ia32-msvc": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.63.0.tgz", - "integrity": "sha512-XjrO5FJ5Wl9vsAxtCP1G/eaeT6y1K2s9CICUHGE42cEjou32/J6S+B1KnrOAboj6E7uhJnwPbRSvznWcxNdA0g==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.65.0.tgz", + "integrity": "sha512-LJ+ZacAPSjegDOnSLyA1TMWAhdDrsK4el3REdr1oL2UtVBCMhO2II/Sb3cEW6mF2MfLhl8hDNCSvc7KSbgk3LQ==", "cpu": [ "ia32" ], @@ -3999,9 +4045,9 @@ } }, "node_modules/@oxfmt/binding-win32-x64-msvc": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.63.0.tgz", - "integrity": "sha512-sgsHCQy432OTQH4Ikk3tZptp3GqwnhwUDuY0loBH41zyHWfMZY9v8Dy78wsnSofHejvFozZGgJgBB1A0LQRwMQ==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.65.0.tgz", + "integrity": "sha512-higu9cWEO6XXFzATD1jf0mCK34rNfN2H9JrJie7QB1IhleVpTh0QlLH9Ip2C1H/Nd5n0v5pvRtC+5R0uE4HpVg==", "cpu": [ "x64" ], @@ -4132,10 +4178,27 @@ "node": ">=14" } }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.6.tgz", + "integrity": "sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz", - "integrity": "sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.6.tgz", + "integrity": "sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q==", "cpu": [ "arm64" ], @@ -4150,9 +4213,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz", - "integrity": "sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.6.tgz", + "integrity": "sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA==", "cpu": [ "arm64" ], @@ -4167,9 +4230,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz", - "integrity": "sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.6.tgz", + "integrity": "sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q==", "cpu": [ "x64" ], @@ -4184,9 +4247,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz", - "integrity": "sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.6.tgz", + "integrity": "sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA==", "cpu": [ "x64" ], @@ -4201,9 +4264,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz", - "integrity": "sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.6.tgz", + "integrity": "sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w==", "cpu": [ "arm" ], @@ -4218,9 +4281,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz", - "integrity": "sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.6.tgz", + "integrity": "sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg==", "cpu": [ "arm64" ], @@ -4238,9 +4301,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz", - "integrity": "sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.6.tgz", + "integrity": "sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw==", "cpu": [ "arm64" ], @@ -4258,9 +4321,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz", - "integrity": "sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.6.tgz", + "integrity": "sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ==", "cpu": [ "ppc64" ], @@ -4278,9 +4341,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz", - "integrity": "sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.6.tgz", + "integrity": "sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA==", "cpu": [ "s390x" ], @@ -4298,9 +4361,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz", - "integrity": "sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.6.tgz", + "integrity": "sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w==", "cpu": [ "x64" ], @@ -4318,9 +4381,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz", - "integrity": "sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.6.tgz", + "integrity": "sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ==", "cpu": [ "x64" ], @@ -4338,9 +4401,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz", - "integrity": "sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.6.tgz", + "integrity": "sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg==", "cpu": [ "arm64" ], @@ -4355,9 +4418,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz", - "integrity": "sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.6.tgz", + "integrity": "sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A==", "cpu": [ "arm64" ], @@ -4372,9 +4435,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz", - "integrity": "sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.6.tgz", + "integrity": "sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ==", "cpu": [ "x64" ], @@ -4971,9 +5034,9 @@ } }, "node_modules/@types/node": { - "version": "26.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz", - "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==", + "version": "26.4.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.0.tgz", + "integrity": "sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ==", "license": "MIT", "dependencies": { "undici-types": "~8.3.0" @@ -5721,9 +5784,9 @@ } }, "node_modules/cssdb": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.9.0.tgz", - "integrity": "sha512-J8jOU/hLjaXcO1LldOLraJSQpfLXRKof0I7mtbRyOy2AAXgqst0x9rlgi2qXeD6d0ou3ZLqcPAMqYVbpCbrxEw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.11.0.tgz", + "integrity": "sha512-VzY/8kcK5M8oCVr/cwh24J8XVlCOITpmzCizKBC28o7Z1s23MMojXoJ3q7a+TQQoMKvxC3YlG0Z9yU10kJF1uQ==", "dev": true, "funding": [ { @@ -6204,9 +6267,9 @@ "license": "MIT" }, "node_modules/exifreader": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/exifreader/-/exifreader-4.43.0.tgz", - "integrity": "sha512-Ssi/NzA5HZ9RQ43USwrlT+t/g0hDHJoFOs5BvN6jolnBvToXnTVQCUDhdvqXix/ff1bIR58AG9/YYwTf1dthgw==", + "version": "4.44.0", + "resolved": "https://registry.npmjs.org/exifreader/-/exifreader-4.44.0.tgz", + "integrity": "sha512-NviP4AQgrZHiNZT8IEsXtyaAKLkc0C55dfQ8fyaAXiL59EJLDdsvP/hZhAfTJpdVuHDGHU7GuUZ1qrJtINckvw==", "hasInstallScript": true, "license": "MPL-2.0", "bin": { @@ -8215,9 +8278,9 @@ } }, "node_modules/oxfmt": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.63.0.tgz", - "integrity": "sha512-kgdDwv35wvVf6554U2Ab8Jnd0zTM+TsEQWwaB70RAjK3gICFAFGO+2Hd3Be27GMoXj3XRL9IKSNRVl7KBQL6iw==", + "version": "0.65.0", + "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.65.0.tgz", + "integrity": "sha512-SgS5VgnP42T0zl3zWD+xoH8FCqg1SAFnSRoOT/qeoa6gxcYIqrDMOmcXIg/EWSN92Du4ogB4riuKhKd6Y4CGhw==", "dev": true, "license": "MIT", "dependencies": { @@ -8233,25 +8296,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxfmt/binding-android-arm-eabi": "0.63.0", - "@oxfmt/binding-android-arm64": "0.63.0", - "@oxfmt/binding-darwin-arm64": "0.63.0", - "@oxfmt/binding-darwin-x64": "0.63.0", - "@oxfmt/binding-freebsd-x64": "0.63.0", - "@oxfmt/binding-linux-arm-gnueabihf": "0.63.0", - "@oxfmt/binding-linux-arm-musleabihf": "0.63.0", - "@oxfmt/binding-linux-arm64-gnu": "0.63.0", - "@oxfmt/binding-linux-arm64-musl": "0.63.0", - "@oxfmt/binding-linux-ppc64-gnu": "0.63.0", - "@oxfmt/binding-linux-riscv64-gnu": "0.63.0", - "@oxfmt/binding-linux-riscv64-musl": "0.63.0", - "@oxfmt/binding-linux-s390x-gnu": "0.63.0", - "@oxfmt/binding-linux-x64-gnu": "0.63.0", - "@oxfmt/binding-linux-x64-musl": "0.63.0", - "@oxfmt/binding-openharmony-arm64": "0.63.0", - "@oxfmt/binding-win32-arm64-msvc": "0.63.0", - "@oxfmt/binding-win32-ia32-msvc": "0.63.0", - "@oxfmt/binding-win32-x64-msvc": "0.63.0" + "@oxfmt/binding-android-arm-eabi": "0.65.0", + "@oxfmt/binding-android-arm64": "0.65.0", + "@oxfmt/binding-darwin-arm64": "0.65.0", + "@oxfmt/binding-darwin-x64": "0.65.0", + "@oxfmt/binding-freebsd-x64": "0.65.0", + "@oxfmt/binding-linux-arm-gnueabihf": "0.65.0", + "@oxfmt/binding-linux-arm-musleabihf": "0.65.0", + "@oxfmt/binding-linux-arm64-gnu": "0.65.0", + "@oxfmt/binding-linux-arm64-musl": "0.65.0", + "@oxfmt/binding-linux-ppc64-gnu": "0.65.0", + "@oxfmt/binding-linux-riscv64-gnu": "0.65.0", + "@oxfmt/binding-linux-riscv64-musl": "0.65.0", + "@oxfmt/binding-linux-s390x-gnu": "0.65.0", + "@oxfmt/binding-linux-x64-gnu": "0.65.0", + "@oxfmt/binding-linux-x64-musl": "0.65.0", + "@oxfmt/binding-openharmony-arm64": "0.65.0", + "@oxfmt/binding-win32-arm64-msvc": "0.65.0", + "@oxfmt/binding-win32-ia32-msvc": "0.65.0", + "@oxfmt/binding-win32-x64-msvc": "0.65.0" }, "peerDependencies": { "svelte": "^5.0.0", @@ -8511,9 +8574,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-8.0.8.tgz", - "integrity": "sha512-xca5kF3C1QNRaanxiZ/CF1KMUxC3xT6BYQ2tPJTKEoKE4+iDfvLjV2DVQozHeIbnJC8Etcwrr2ycyCIuYxA30g==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-8.0.9.tgz", + "integrity": "sha512-FnOFNz+AthsHFRquy+aPtdmc35qYdkqMiHRvqzPhPBQOjLRPs89paHxAQapYh8b1DNwzccyTneYevBlzRk1j7Q==", "dev": true, "funding": [ { @@ -8527,7 +8590,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -8875,9 +8938,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "8.0.8", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-8.0.8.tgz", - "integrity": "sha512-szBEKkYQ58IufK2h7rKSbS3ZYjZG+Owl/o/nn/UGALqkdn1HTI5IVXIPrFGL7Vb1FXH5RzSgCbBu47pT5os5Uw==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-8.0.9.tgz", + "integrity": "sha512-EIq0C2LruZgAZjtUxisv1O6u8HIBoYAGJnC80ksND9PJ4nIJn98+KRNl2sTH6h/ZcR31CCSjEdvR11NFxyCNpg==", "dev": true, "funding": [ { @@ -8891,7 +8954,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.0", + "@csstools/css-color-parser": "^4.2.1", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -9044,9 +9107,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-11.4.0.tgz", - "integrity": "sha512-KFhGWarjnlul+1BHEz+Kv5H7UGNQUpQJ3C8rXW79UIREszo+xb1SU+V9tRNLeBwFOIBCn+ozC87DFpgPHpqfUQ==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-11.5.0.tgz", + "integrity": "sha512-r/2b6lLYUw1Dq4kMDhlRhOyNWCj7F6iEOKDGmEBcd9q+5PCSVeU0i4oQrGdn9ygaNM2aPe0IPMzZ8E7ep34Kkg==", "dev": true, "funding": [ { @@ -9060,21 +9123,22 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-alpha-function": "^2.0.9", + "@csstools/postcss-alpha-function": "^2.0.10", "@csstools/postcss-cascade-layers": "^6.0.0", - "@csstools/postcss-color-function": "^5.0.8", - "@csstools/postcss-color-function-display-p3-linear": "^2.0.8", - "@csstools/postcss-color-mix-function": "^4.0.8", - "@csstools/postcss-color-mix-variadic-function-arguments": "^2.0.8", + "@csstools/postcss-color-function": "^5.0.9", + "@csstools/postcss-color-function-display-p3-linear": "^2.0.9", + "@csstools/postcss-color-mix-function": "^4.0.9", + "@csstools/postcss-color-mix-variadic-function-arguments": "^2.0.9", "@csstools/postcss-container-rule-prelude-list": "^1.0.1", "@csstools/postcss-content-alt-text": "^3.0.3", - "@csstools/postcss-contrast-color-function": "^3.0.8", + "@csstools/postcss-contrast-color-function": "^3.0.9", "@csstools/postcss-exponential-functions": "^3.0.4", + "@csstools/postcss-fit-tolerance-property": "^1.0.0", "@csstools/postcss-font-format-keywords": "^5.0.0", "@csstools/postcss-font-width-property": "^1.0.0", - "@csstools/postcss-gamut-mapping": "^3.0.8", - "@csstools/postcss-gradients-interpolation-method": "^6.0.8", - "@csstools/postcss-hwb-function": "^5.0.8", + "@csstools/postcss-gamut-mapping": "^3.0.9", + "@csstools/postcss-gradients-interpolation-method": "^6.0.9", + "@csstools/postcss-hwb-function": "^5.0.9", "@csstools/postcss-ic-unit": "^5.0.3", "@csstools/postcss-image-function": "^1.0.2", "@csstools/postcss-initial": "^3.0.0", @@ -9090,12 +9154,13 @@ "@csstools/postcss-mixins": "^1.0.0", "@csstools/postcss-nested-calc": "^5.0.0", "@csstools/postcss-normalize-display-values": "^5.0.1", - "@csstools/postcss-oklab-function": "^5.0.8", + "@csstools/postcss-oklab-function": "^5.0.9", "@csstools/postcss-position-area-property": "^2.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", + "@csstools/postcss-property-rule-optional-descriptors": "^1.0.0", "@csstools/postcss-property-rule-prelude-list": "^2.0.0", "@csstools/postcss-random-function": "^4.0.0", - "@csstools/postcss-relative-color-syntax": "^4.0.8", + "@csstools/postcss-relative-color-syntax": "^4.0.9", "@csstools/postcss-scope-pseudo-class": "^5.0.0", "@csstools/postcss-sign-functions": "^2.0.4", "@csstools/postcss-stepped-value-functions": "^5.0.4", @@ -9109,10 +9174,10 @@ "css-blank-pseudo": "^8.0.2", "css-has-pseudo": "^8.0.1", "css-prefers-color-scheme": "^11.0.1", - "cssdb": "^8.9.0", + "cssdb": "^8.10.0", "postcss-attribute-case-insensitive": "^8.0.0", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^8.0.8", + "postcss-color-functional-notation": "^8.0.9", "postcss-color-hex-alpha": "^11.0.0", "postcss-color-rebeccapurple": "^11.0.0", "postcss-custom-media": "^12.0.1", @@ -9125,7 +9190,7 @@ "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^7.0.0", "postcss-image-set-function": "^8.0.0", - "postcss-lab-function": "^8.0.8", + "postcss-lab-function": "^8.0.9", "postcss-logical": "^9.0.0", "postcss-nesting": "^14.0.1", "postcss-opacity-percentage": "^3.0.0", @@ -9371,9 +9436,9 @@ } }, "node_modules/react-intersection-observer": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-11.0.0.tgz", - "integrity": "sha512-tF2PjXa//GcUmkCIcZR2qGsj6HwnuunFQdgeJ89BwFE6epB7E9yIzdr018H1khxG7DiMpIDvAne1GKQMFwn+fw==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-11.0.1.tgz", + "integrity": "sha512-BIZ1M40GPSKDIT1MJbXK7SB0BwBaTKr84QfZCs5asKer7YMOYLzMi+RI1F4VStbZLGHoosJmd+aOQDDipUV1gA==", "license": "MIT", "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0", @@ -9613,13 +9678,13 @@ } }, "node_modules/rolldown": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.3.tgz", - "integrity": "sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.6.tgz", + "integrity": "sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.143.0", + "@oxc-project/types": "=0.147.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -9629,20 +9694,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.2.3", - "@rolldown/binding-darwin-arm64": "1.2.3", - "@rolldown/binding-darwin-x64": "1.2.3", - "@rolldown/binding-freebsd-x64": "1.2.3", - "@rolldown/binding-linux-arm-gnueabihf": "1.2.3", - "@rolldown/binding-linux-arm64-gnu": "1.2.3", - "@rolldown/binding-linux-arm64-musl": "1.2.3", - "@rolldown/binding-linux-ppc64-gnu": "1.2.3", - "@rolldown/binding-linux-s390x-gnu": "1.2.3", - "@rolldown/binding-linux-x64-gnu": "1.2.3", - "@rolldown/binding-linux-x64-musl": "1.2.3", - "@rolldown/binding-openharmony-arm64": "1.2.3", - "@rolldown/binding-win32-arm64-msvc": "1.2.3", - "@rolldown/binding-win32-x64-msvc": "1.2.3" + "@rolldown/binding-android-arm-eabi": "1.2.6", + "@rolldown/binding-android-arm64": "1.2.6", + "@rolldown/binding-darwin-arm64": "1.2.6", + "@rolldown/binding-darwin-x64": "1.2.6", + "@rolldown/binding-freebsd-x64": "1.2.6", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.6", + "@rolldown/binding-linux-arm64-gnu": "1.2.6", + "@rolldown/binding-linux-arm64-musl": "1.2.6", + "@rolldown/binding-linux-ppc64-gnu": "1.2.6", + "@rolldown/binding-linux-s390x-gnu": "1.2.6", + "@rolldown/binding-linux-x64-gnu": "1.2.6", + "@rolldown/binding-linux-x64-musl": "1.2.6", + "@rolldown/binding-openharmony-arm64": "1.2.6", + "@rolldown/binding-win32-arm64-msvc": "1.2.6", + "@rolldown/binding-win32-x64-msvc": "1.2.6" } }, "node_modules/rollup": { @@ -10230,9 +10296,9 @@ "license": "MIT" }, "node_modules/temml": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/temml/-/temml-0.13.4.tgz", - "integrity": "sha512-k1yolMBswx34Jw9hZn5Xh2/GBlwqlW+wiN7QaUYUMhSa1ypfti6rlCfSmCxWyooxH1G32C/Z+qVvgAsBOELZBQ==", + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/temml/-/temml-0.13.5.tgz", + "integrity": "sha512-aPkDDgunanpLNL0ql32HbolqLep+w8DRcVXRql7rWrMt/PhczdLgL4UBYYVU3BYjCNjkGq4EqwIicu/zWr1iOg==", "license": "MIT", "engines": { "node": ">=18.13.0" @@ -10732,16 +10798,16 @@ } }, "node_modules/vite": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", - "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.2.tgz", + "integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", - "postcss": "^8.5.25", - "rolldown": "~1.2.1", + "postcss": "^8.5.26", + "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "bin": { @@ -10758,7 +10824,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.4.0", + "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", diff --git a/package.json b/package.json index 056d95446e..e2a7920799 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@szhsin/react-menu": "~4.5.2", "chroma-js": "~3.2.0", "compare-versions": "~6.1.1", - "exifreader": "~4.43.0", + "exifreader": "~4.44.0", "fast-blurhash": "~1.2.0", "fast-equals": "~6.0.2", "flexsearch": "~0.8.212", @@ -60,11 +60,11 @@ "punycode": "~2.3.1", "qr": "~0.6.0", "react-hotkeys-hook": "~5.2.4", - "react-intersection-observer": "~11.0.0", + "react-intersection-observer": "~11.0.1", "react-router-dom": "6.6.2", "react-zoom-pan-pinch": "~4.0.4", "swiped-events": "~1.2.0", - "temml": "~0.13.4", + "temml": "~0.13.5", "tinyld": "~1.3.4", "toastify-js": "~1.12.0", "uid": "~2.0.2", @@ -84,14 +84,14 @@ "@lingui/vite-plugin": "~6.6.0", "@playwright/test": "~1.62.1", "@preact/preset-vite": "~2.10.6", - "@types/node": "~26.2.0", - "oxfmt": "~0.63.0", + "@types/node": "~26.4.0", + "oxfmt": "~0.65.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", - "postcss-preset-env": "~11.4.0", + "postcss-preset-env": "~11.5.0", "sonda": "~0.14.0", "twitter-text": "~3.1.0", - "vite": "~8.2.1", + "vite": "~8.2.2", "vite-plugin-generate-file": "~0.3.1", "vite-plugin-html-config": "~2.0.2", "vite-plugin-pwa": "~1.3.0", From 0f06351671c016d61c20b27324de102c8b9472c7 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Mon, 31 Aug 2026 16:51:13 +0800 Subject: [PATCH 27/37] Possible fix for weird width taken by input[type=file] --- src/index.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/index.css b/src/index.css index 65cc4713da..3e231fa661 100644 --- a/src/index.css +++ b/src/index.css @@ -382,6 +382,12 @@ textarea { max-width: 100%; } +input[type='file'] { + min-width: 0; + width: 100%; + max-width: 100%; +} + button, .button { display: inline-block; From 0a20d4d6ad7e8695291fbfd79b4876d02e18cc7e Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Tue, 1 Sep 2026 08:27:37 +0800 Subject: [PATCH 28/37] Another attempt to fix weird avatar issue --- src/components/avatar.jsx | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/components/avatar.jsx b/src/components/avatar.jsx index 0eb7c481f2..95b9672cd0 100644 --- a/src/components/avatar.jsx +++ b/src/components/avatar.jsx @@ -27,6 +27,18 @@ const scheduleTask = ? (fn) => requestIdleCallback(fn, { timeout: 500 }) : (fn) => setTimeout(fn, 1); +function drawAndCountAlpha(img, sampleW, sampleH) { + if (canvas.width !== sampleW) canvas.width = sampleW; + if (canvas.height !== sampleH) canvas.height = sampleH; + ctx.drawImage(img, 0, 0, sampleW, sampleH); + const { data } = ctx.getImageData(0, 0, sampleW, sampleH); + let alphaCount = 0; + for (let i = 3; i < data.length; i += 4) { + if (data[i] <= 128) alphaCount++; + } + return alphaCount; +} + const MISSING_IMAGE_PATH_REGEX = /missing\.png$/; function Avatar({ url, staticUrl, size, alt = '', squircle, ...props }) { @@ -90,25 +102,22 @@ function Avatar({ url, staticUrl, size, alt = '', squircle, ...props }) { const scale = Math.min(1, SIZES.xxxl / Math.max(nw, nh)); const sampleW = Math.max(1, Math.round(nw * scale)); const sampleH = Math.max(1, Math.round(nh * scale)); - if (canvas.width !== sampleW) canvas.width = sampleW; - if (canvas.height !== sampleH) canvas.height = sampleH; - ctx.drawImage(img, 0, 0, sampleW, sampleH); - const { data } = ctx.getImageData(0, 0, sampleW, sampleH); - // Early-exit loop: stop once 10% of pixels have alpha <= 128 - const totalPixels = data.length / 4; - const threshold = totalPixels * 0.1; - let alphaCount = 0; - for (let i = 3; i < data.length; i += 4) { - if (data[i] <= 128 && ++alphaCount > threshold) break; - } - const hasAlpha = alphaCount > threshold; + const totalPixels = sampleW * sampleH; + const alphaCount = drawAndCountAlpha(img, sampleW, sampleH); + // 100% transparent = blank draw, not alpha; don't cache + if (alphaCount === totalPixels) return; + // At least 10% of pixels have alpha <= 128 + const hasAlpha = alphaCount > totalPixels * 0.1; if (hasAlpha) { + // Draw again to confirm + if (drawAndCountAlpha(img, sampleW, sampleH) !== alphaCount) + return; avatarRef.current?.classList.add('has-alpha'); } alphaCache.set(url, hasAlpha); } catch (e) { - // Silent fail - alphaCache.set(url, false); + // Silent fail (tainted canvas is permanent) + if (e?.name === 'SecurityError') alphaCache.set(url, false); } }); }} From b9f180511fefc047935652611a4646aad0d29438 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Tue, 1 Sep 2026 08:30:32 +0800 Subject: [PATCH 29/37] Upgrade deps --- package-lock.json | 146 +++++++++++++++++++++++----------------------- package.json | 8 +-- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/package-lock.json b/package-lock.json index f7c94e748b..a6379cc71d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "p-retry": "~8.0.0", "preact": "10.29.8", "punycode": "~2.3.1", - "qr": "~0.6.0", + "qr": "~0.7.0", "react-hotkeys-hook": "~5.2.4", "react-intersection-observer": "~11.0.1", "react-router-dom": "6.6.2", @@ -68,7 +68,7 @@ "oxfmt": "~0.65.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", - "postcss-preset-env": "~11.5.0", + "postcss-preset-env": "~11.5.1", "sonda": "~0.14.0", "twitter-text": "~3.1.0", "vite": "~8.2.2", @@ -1934,9 +1934,9 @@ } }, "node_modules/@csstools/postcss-alpha-function": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-2.0.10.tgz", - "integrity": "sha512-I3BXq/sZqqvPNqLKLtkFYhAQosnKMByGP6bi7oLPfLdkkxxjOcF0sXhFr/uss1QzRnrIFevEGqXNztuhUDUwTQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-2.0.11.tgz", + "integrity": "sha512-Mge906VP+6eMhwIoyk78SERA8IIobryCc9YWnJzHqhXE9LQCOh3l3E987mdXONr+fiVShJQrmNSGi9pJtKRBpA==", "dev": true, "funding": [ { @@ -1950,7 +1950,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -1991,9 +1991,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-5.0.9.tgz", - "integrity": "sha512-2dDdkB/GaAaAmlpdidkEVhcnUfAc1d0bQvaj0x/RmO5X9tEmN94P50qecxx7vqVLgjpudxvzrQx/rF/unXSw/Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-5.0.10.tgz", + "integrity": "sha512-BFz0/ooO+smjh36U9dra6BgJp53aSrQIRc9y+9UglDkk4zOA1UUjdKQYkE+zYML6XV+n2JlSsONEZw1psVyCvQ==", "dev": true, "funding": [ { @@ -2007,7 +2007,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2021,9 +2021,9 @@ } }, "node_modules/@csstools/postcss-color-function-display-p3-linear": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-2.0.9.tgz", - "integrity": "sha512-IqPfcNZCGt0xiSu+QJxpSurOgql1ltOraGOp98h4+79yzrSO2bvV4HH4NtQ3DlxFtdsDZHv78gtRtJ5sIypocA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-2.0.10.tgz", + "integrity": "sha512-PaXL0DhL/BKSviMXduHxQMpB/+76830nLZ+B3zVSQqaXUh1MVsyhQAqkWdX9a1IYoBL3bC/ePo7vq7EBjfMmLw==", "dev": true, "funding": [ { @@ -2037,7 +2037,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2051,9 +2051,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-4.0.9.tgz", - "integrity": "sha512-xswYldAM3z9qLjoa/Jr95nbLZ0oWJ2ziK4BTyuOb0F2AgnwdJ0XammjkdyuEHOXifTQeUfm10/4Ffz3d1uzi6w==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-4.0.10.tgz", + "integrity": "sha512-94vnrOalX1l9VMl6jlocEIgWwNF/CDiCo/xmBWXTvS2OE9yUa7EaCW9j1oM7UIOvmbmBU6fhkcpEyMa06+234Q==", "dev": true, "funding": [ { @@ -2067,7 +2067,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2081,9 +2081,9 @@ } }, "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-2.0.9.tgz", - "integrity": "sha512-6VacpZLKKm2Jzm0w8MAVeW8r3xGbfa30v1/CV7LISFVFwXHpJIAzFm/ow381zjpdKV0163VmBnQLbaEo7FZeFA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-2.0.10.tgz", + "integrity": "sha512-jMukqlDTZMZGutjL1IVV5q6cMzITTIwhT0iEcM6L7wXUXj1AqVV/DK/ubSMRSYK/mrXFcEs5ExeF5S1nurjDfw==", "dev": true, "funding": [ { @@ -2097,7 +2097,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2167,9 +2167,9 @@ } }, "node_modules/@csstools/postcss-contrast-color-function": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-3.0.9.tgz", - "integrity": "sha512-ADJAc/GvuxNFAFlAfKVeJNV+1Y1uKglwfcc9/X/TiE/c46b2TGflVXE99FwuIL9pd4j8YgRfNwpTiO346YzeBA==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-3.0.10.tgz", + "integrity": "sha512-HjeekhlpuLGNerTYP9ei53FeHbYDjoj2Uh84mwjZN+HXYMDdcp62qisKZ2h3k2EZ5dTKqPMU9fxXxhV7Ko4YsA==", "dev": true, "funding": [ { @@ -2183,7 +2183,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2301,9 +2301,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-3.0.9.tgz", - "integrity": "sha512-CsPRwH/pRfRA8ZNehKgtdyerL3iQXnwqWNgQGl2KBMVUz5plgrxanE2Sp69yz6mO86UONM3OKrAIph4zGtTzCw==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-3.0.10.tgz", + "integrity": "sha512-zgYoHUZQ9/JrSBc4VL2CKcu4KOKzr+hfKhIp++lWhyIjyicDfpAqY2LcPKqPM5Wk2eFO4umwHKQd0V42O8dw1g==", "dev": true, "funding": [ { @@ -2317,7 +2317,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" }, @@ -2329,9 +2329,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-6.0.9.tgz", - "integrity": "sha512-usfLEBPgFiNkuB3BHbGxyM9NnYDlPuiN9XrzooJoAdKu6dyyTQ2XHageS6gfHDpWw4dRvVKR3qDkz2QkFlXp4A==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-6.0.10.tgz", + "integrity": "sha512-ZsOU16NeyEHNwOIJfn62Po2xpg1X8ccKT94W0FlUVN8Qs2DpsLM9zKFq0ynAVMs5duf91vyvD8mMxGwAmoZLPA==", "dev": true, "funding": [ { @@ -2345,7 +2345,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2359,9 +2359,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-5.0.9.tgz", - "integrity": "sha512-IazupZq2PYo9XoSGNybBmKCC6MzEnRHEvtmWdPuUfqRMv2kie20+1HafQo2sf1uURN9DcfbYo7mM6SeBg+IvEA==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-5.0.10.tgz", + "integrity": "sha512-rXwzNfAshgW8uK/NBCPHGZ75MPj+4DhEviuZH3BtBblU4yno0dDkQxc3V+TT/qF/n4PUy+SmChaUcjJUNjsPVw==", "dev": true, "funding": [ { @@ -2375,7 +2375,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2784,9 +2784,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-5.0.9.tgz", - "integrity": "sha512-YpF8jjUsyHYWt1JZUarMNKNuP9SJZ3d+PEoQIlTtL9IilETIBZwH92JrrAzXamorfuaLlysntSY8QDWjCvLoYg==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-5.0.10.tgz", + "integrity": "sha512-cluZAdQNg/ir3mAtqHbjd48KGroD1+Pow7mmDMFuYk1sZ0exm8gnLEavS8scBT5+7MIWW+FK9kW5jtzT4nG8Zw==", "dev": true, "funding": [ { @@ -2800,7 +2800,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -2941,9 +2941,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-4.0.9.tgz", - "integrity": "sha512-CuLG2I0Psvs2P5lzd/csCX1b1ZNbnjkqRaKGee9hVZZ325YCSn3dbu7zNoRSIjdpb79LHkmHtOQzcWvj/XJYsw==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-4.0.10.tgz", + "integrity": "sha512-YFKGAzcwEggQNnstX4gNIf+stsMQH8RxBlSt6EWpgbF55BL/+8bUXMKhMT7bffiUddqUMTpMTMxsIAImSHV9xg==", "dev": true, "funding": [ { @@ -2957,7 +2957,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -8574,9 +8574,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-8.0.9.tgz", - "integrity": "sha512-FnOFNz+AthsHFRquy+aPtdmc35qYdkqMiHRvqzPhPBQOjLRPs89paHxAQapYh8b1DNwzccyTneYevBlzRk1j7Q==", + "version": "8.0.10", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-8.0.10.tgz", + "integrity": "sha512-94ZO53RTmggYRvB2IvYDzwwCmHgPpWF7hgPESa7Am3BQnrO7jVaxf6kAC9WRgd7uWNhXsufwGRGZY4m+/496IQ==", "dev": true, "funding": [ { @@ -8590,7 +8590,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -8938,9 +8938,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-8.0.9.tgz", - "integrity": "sha512-EIq0C2LruZgAZjtUxisv1O6u8HIBoYAGJnC80ksND9PJ4nIJn98+KRNl2sTH6h/ZcR31CCSjEdvR11NFxyCNpg==", + "version": "8.0.10", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-8.0.10.tgz", + "integrity": "sha512-XFM4sXqai1oObhGPQBrUMvjt/oeK8ZCVpgIzR7HwjnHIWbCYrQfv4Enimlije/Efi81Tf7FBaQDOovZHRUFiCQ==", "dev": true, "funding": [ { @@ -8954,7 +8954,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^4.2.1", + "@csstools/css-color-parser": "^4.2.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", @@ -9107,9 +9107,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-11.5.0.tgz", - "integrity": "sha512-r/2b6lLYUw1Dq4kMDhlRhOyNWCj7F6iEOKDGmEBcd9q+5PCSVeU0i4oQrGdn9ygaNM2aPe0IPMzZ8E7ep34Kkg==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-11.5.1.tgz", + "integrity": "sha512-qRKCvyrSbIF1sLj6DxNCQtlQnhwX80k+e8QPKIZ3DSvzYNMTzqfzfDHkEECtw12uLqNn6NCz4pz532j5EZIHFw==", "dev": true, "funding": [ { @@ -9123,22 +9123,22 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-alpha-function": "^2.0.10", + "@csstools/postcss-alpha-function": "^2.0.11", "@csstools/postcss-cascade-layers": "^6.0.0", - "@csstools/postcss-color-function": "^5.0.9", - "@csstools/postcss-color-function-display-p3-linear": "^2.0.9", - "@csstools/postcss-color-mix-function": "^4.0.9", - "@csstools/postcss-color-mix-variadic-function-arguments": "^2.0.9", + "@csstools/postcss-color-function": "^5.0.10", + "@csstools/postcss-color-function-display-p3-linear": "^2.0.10", + "@csstools/postcss-color-mix-function": "^4.0.10", + "@csstools/postcss-color-mix-variadic-function-arguments": "^2.0.10", "@csstools/postcss-container-rule-prelude-list": "^1.0.1", "@csstools/postcss-content-alt-text": "^3.0.3", - "@csstools/postcss-contrast-color-function": "^3.0.9", + "@csstools/postcss-contrast-color-function": "^3.0.10", "@csstools/postcss-exponential-functions": "^3.0.4", "@csstools/postcss-fit-tolerance-property": "^1.0.0", "@csstools/postcss-font-format-keywords": "^5.0.0", "@csstools/postcss-font-width-property": "^1.0.0", - "@csstools/postcss-gamut-mapping": "^3.0.9", - "@csstools/postcss-gradients-interpolation-method": "^6.0.9", - "@csstools/postcss-hwb-function": "^5.0.9", + "@csstools/postcss-gamut-mapping": "^3.0.10", + "@csstools/postcss-gradients-interpolation-method": "^6.0.10", + "@csstools/postcss-hwb-function": "^5.0.10", "@csstools/postcss-ic-unit": "^5.0.3", "@csstools/postcss-image-function": "^1.0.2", "@csstools/postcss-initial": "^3.0.0", @@ -9154,13 +9154,13 @@ "@csstools/postcss-mixins": "^1.0.0", "@csstools/postcss-nested-calc": "^5.0.0", "@csstools/postcss-normalize-display-values": "^5.0.1", - "@csstools/postcss-oklab-function": "^5.0.9", + "@csstools/postcss-oklab-function": "^5.0.10", "@csstools/postcss-position-area-property": "^2.0.0", "@csstools/postcss-progressive-custom-properties": "^5.1.2", "@csstools/postcss-property-rule-optional-descriptors": "^1.0.0", "@csstools/postcss-property-rule-prelude-list": "^2.0.0", "@csstools/postcss-random-function": "^4.0.0", - "@csstools/postcss-relative-color-syntax": "^4.0.9", + "@csstools/postcss-relative-color-syntax": "^4.0.10", "@csstools/postcss-scope-pseudo-class": "^5.0.0", "@csstools/postcss-sign-functions": "^2.0.4", "@csstools/postcss-stepped-value-functions": "^5.0.4", @@ -9177,7 +9177,7 @@ "cssdb": "^8.10.0", "postcss-attribute-case-insensitive": "^8.0.0", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^8.0.9", + "postcss-color-functional-notation": "^8.0.10", "postcss-color-hex-alpha": "^11.0.0", "postcss-color-rebeccapurple": "^11.0.0", "postcss-custom-media": "^12.0.1", @@ -9190,7 +9190,7 @@ "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^7.0.0", "postcss-image-set-function": "^8.0.0", - "postcss-lab-function": "^8.0.9", + "postcss-lab-function": "^8.0.10", "postcss-logical": "^9.0.0", "postcss-nesting": "^14.0.1", "postcss-opacity-percentage": "^3.0.0", @@ -9390,9 +9390,9 @@ } }, "node_modules/qr": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/qr/-/qr-0.6.0.tgz", - "integrity": "sha512-P23VoX7SipHALdiIYG+D+LT/6n22dNKwV92FAb3d+Nlki/5WisSsfLt0UDFz2XEBtuwrECTznvu+chKKFCSYhA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/qr/-/qr-0.7.0.tgz", + "integrity": "sha512-/VrrACmOAwZVipuRITwfEwOL5oAMEHH5PTmBWaGtlTom2Thxaa+rhmna4zU9PRN2uLw2wdccbkHOLGZb1Q9SdA==", "license": "(MIT OR Apache-2.0)", "engines": { "node": ">= 20.19.0" diff --git a/package.json b/package.json index e2a7920799..ef0d5d05c7 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "p-retry": "~8.0.0", "preact": "10.29.8", "punycode": "~2.3.1", - "qr": "~0.6.0", + "qr": "~0.7.0", "react-hotkeys-hook": "~5.2.4", "react-intersection-observer": "~11.0.1", "react-router-dom": "6.6.2", @@ -88,7 +88,7 @@ "oxfmt": "~0.65.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", - "postcss-preset-env": "~11.5.0", + "postcss-preset-env": "~11.5.1", "sonda": "~0.14.0", "twitter-text": "~3.1.0", "vite": "~8.2.2", @@ -146,9 +146,9 @@ }, "allowScripts": { "core-js@2.6.12": true, - "exifreader@4.42.0": true, "esbuild@0.25.12": true, "fsevents@2.3.2": true, - "fsevents@2.3.3": true + "fsevents@2.3.3": true, + "exifreader@4.44.0": true } } From b49650c432bf2cce18b789bf1a19996c6a9ca666 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Tue, 1 Sep 2026 13:11:01 +0800 Subject: [PATCH 30/37] Make boost animation more natural The rocket comes back? --- src/components/status.css | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/status.css b/src/components/status.css index d852b050ab..5e2e3be141 100644 --- a/src/components/status.css +++ b/src/components/status.css @@ -2561,13 +2561,21 @@ a.card:is(:hover, :focus):visited { 15% { transform: translate(0, 0); } - 100% { + 80% { transform: translate(30px, -30px); opacity: 0; } + 84% { + transform: translate(-10px, 10px); + opacity: 0; + } + 100% { + transform: translate(0, 0); + opacity: 1; + } } .status .action > button.plain.reblog-button.checked .icon { - animation: reblogged 1s ease-in-out; + animation: reblogged 1.25s ease-in-out; } @media (hover: hover) { .status .action > button.plain.favourite-button:hover { From ef04cd7a02520f515206c4bad8fcc9748652205a Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Wed, 2 Sep 2026 13:46:51 +0800 Subject: [PATCH 31/37] Fix vite complaints and upgrade deps --- package-lock.json | 186 +++++++++++++++++++++++----------------------- package.json | 8 +- src/locales.js | 2 +- vite.config.js | 11 ++- 4 files changed, 105 insertions(+), 102 deletions(-) diff --git a/package-lock.json b/package-lock.json index a6379cc71d..a97aa39ef3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,14 +35,14 @@ "masto": "~8.0.0", "micro-memoize": "~5.1.2", "p-queue": "~9.3.3", - "p-retry": "~8.0.0", + "p-retry": "~8.0.1", "preact": "10.29.8", "punycode": "~2.3.1", "qr": "~0.7.0", "react-hotkeys-hook": "~5.2.4", "react-intersection-observer": "~11.0.1", "react-router-dom": "6.6.2", - "react-zoom-pan-pinch": "~4.0.4", + "react-zoom-pan-pinch": "~4.1.0", "swiped-events": "~1.2.0", "temml": "~0.13.5", "tinyld": "~1.3.4", @@ -64,8 +64,8 @@ "@lingui/vite-plugin": "~6.6.0", "@playwright/test": "~1.62.1", "@preact/preset-vite": "~2.10.6", - "@types/node": "~26.4.0", - "oxfmt": "~0.65.0", + "@types/node": "~26.4.1", + "oxfmt": "~0.66.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", "postcss-preset-env": "~11.5.1", @@ -3715,9 +3715,9 @@ } }, "node_modules/@oxfmt/binding-android-arm-eabi": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.65.0.tgz", - "integrity": "sha512-M10Gs1SSpTNI6ahGx3M/OlIdUF4hkaP6OgUb+MS79t/Pgflk3r1nW5gPFqsZGUAXg0H1AfANT9AvLdBSTIhZKg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm-eabi/-/binding-android-arm-eabi-0.66.0.tgz", + "integrity": "sha512-2Me9eoptv6ERdEuI2P8AOlYdHHraXebJaM6SC0kc2Dfb+mLrep2db+fedBPKaYn673h/vBgvP4tkOdAbaudX6w==", "cpu": [ "arm" ], @@ -3732,9 +3732,9 @@ } }, "node_modules/@oxfmt/binding-android-arm64": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.65.0.tgz", - "integrity": "sha512-6DXH5sftNlaHpWJG50hFMF+Qxtq5D2TmahvcDPxWNcGIf8qrC9Y0YgHYcYZ2hlWzaccKXh/f3GcssH8vtkl4JA==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-android-arm64/-/binding-android-arm64-0.66.0.tgz", + "integrity": "sha512-u7O+bSSF0HGsDKkQQxBqvLGVepu93RA+JKu+ONqvfh4sCnCEbj31wZj4iG5gk3XfRwrmYj0/8catkO2LcblQKQ==", "cpu": [ "arm64" ], @@ -3749,9 +3749,9 @@ } }, "node_modules/@oxfmt/binding-darwin-arm64": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.65.0.tgz", - "integrity": "sha512-K9m7lr53pcOLETNsC88sWes/GWHUGjZyHx95UhYcSXy0r30haLdeXlSufSenEAtoLaW753WN8/l4M7GYcRt6cg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-arm64/-/binding-darwin-arm64-0.66.0.tgz", + "integrity": "sha512-/ikyMIVjX/sdo7KtjxoEsSUosfPzveVhT9RWMx9yGqFDKFJ89JAEKuEeLBmurDjrkb4w8tOnAdSO3SBaplY3bw==", "cpu": [ "arm64" ], @@ -3766,9 +3766,9 @@ } }, "node_modules/@oxfmt/binding-darwin-x64": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.65.0.tgz", - "integrity": "sha512-sTNwIx1gre3MyiHOPLu7IGW4UyMScYL4DTmJT01p4vzB0En+OJUQz6KuH8t0PpsClRSaMuY3b0QmtoPItfO8Lg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-darwin-x64/-/binding-darwin-x64-0.66.0.tgz", + "integrity": "sha512-q5xUsKeFqawa9NXa6ZGXWimFV19m8MogKPdTaSVDAAk2EQKBmBZRDeluwcl1p8ty/OFc9s9888OKEh3xfPVH0g==", "cpu": [ "x64" ], @@ -3783,9 +3783,9 @@ } }, "node_modules/@oxfmt/binding-freebsd-x64": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.65.0.tgz", - "integrity": "sha512-lYZMVIiIpnjGu5hJb2jxA8NYQ/e0OTGuaiAf4dqlGPNnPmUTu23FZRMltmjro/KkQm1uE4NT4n5yJ2zWmKcpfA==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-freebsd-x64/-/binding-freebsd-x64-0.66.0.tgz", + "integrity": "sha512-CR+x4VzMY0pRXLK/xFQ/RzsSFkP5t2Z2mef0QY6OP/rTRcMUoMLCOM62/3Fp/t0K+UDoBKxvMyeb6D0zPMjleA==", "cpu": [ "x64" ], @@ -3800,9 +3800,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-gnueabihf": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.65.0.tgz", - "integrity": "sha512-gIdXFAt/bURnjxuoedDEWdZ0PEWEmdDcm8qdpoFYYvW3QMk/5D4vUaH4mlMeRpeTdST4izUgHVO6RawQ4QulJw==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.66.0.tgz", + "integrity": "sha512-ZEYmO/LbH9tTQCADILHGZE4GeOXOAj2VzedHkASNwjmwlwtutJCLpCJbIs37wRGTFgWRoEcD72jpMX+IBJUGjQ==", "cpu": [ "arm" ], @@ -3817,9 +3817,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm-musleabihf": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.65.0.tgz", - "integrity": "sha512-jJVyADto7gA2AaX5qAjAexrxx9PJQaKWOe8PICE7yKMbjBRyOHcmj9TtVJ+MZYDUQ3hodU0AcoTj0jFQ1W4C6Q==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.66.0.tgz", + "integrity": "sha512-hNtR9/oU0CeTkq7JnRkmBQwqe17v2ZaAMLC4VcN7IIOWeRyWDk0knSPWS9iiLmtbZ2RRBBtsG01jQgkZmKCJeQ==", "cpu": [ "arm" ], @@ -3834,9 +3834,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-gnu": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.65.0.tgz", - "integrity": "sha512-p3RFkB+u7u+8up99b/NEcI1hdpLDiGgJYNwDorB60n7eH+eKposAKuMBxx+NqB3b+sJP4CZmYDh9G7X62tUsKg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.66.0.tgz", + "integrity": "sha512-uwOVQ8i6I1LT/+eDzfsgrrcZp8Fn6NPVUPn8fF5gdFGekFf0PddF+LEuwsD0/pbNUcKZhDj2rQ5UpITh9gF4iQ==", "cpu": [ "arm64" ], @@ -3854,9 +3854,9 @@ } }, "node_modules/@oxfmt/binding-linux-arm64-musl": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.65.0.tgz", - "integrity": "sha512-5Prb0uFzJHr+OUD/qS/TmU526wD+PaHDsm3KoRiUXbMIDpTSErjeQYkK3OQeshAvD/PuLa9WGEi9WPajjdOZJg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.66.0.tgz", + "integrity": "sha512-tTkF2Dmx4nGAjmBlZb+UtTGqR/EK4ZrW9qBfzte07a9XWqzoGGKzpFFlyNDhQe+Uwql94+ReCTeNbhOXscw1Dg==", "cpu": [ "arm64" ], @@ -3874,9 +3874,9 @@ } }, "node_modules/@oxfmt/binding-linux-ppc64-gnu": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.65.0.tgz", - "integrity": "sha512-S8svxTp81obnF3admN9yd+u2rOYXtyzThLGBTg1PY6TPtGcC09BaaXLQD+TBSMa7yvqhCDZ8DFri+S/yG60qCg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.66.0.tgz", + "integrity": "sha512-F3cKHUav4yXOHn6GFnwpBhSYsJOYKKf9eqO/9jlEuqPxNw9zb98E9ZFct79gcg8pibUGkbveEu9WDlmXJpDzKw==", "cpu": [ "ppc64" ], @@ -3894,9 +3894,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-gnu": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.65.0.tgz", - "integrity": "sha512-WtXBr75G/h2qOHy8SiGtC1R6aS3jt4mE52v1D8AtwMXIgoOmSNP9lKvbSaTRoL0e5wsMPoi6T72QWDYPu+S+nA==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.66.0.tgz", + "integrity": "sha512-K5fDaNZfDyQMYA/3qL21bqyN0X9T15LLwwbFPt2aHc94+ZG7bh0vZEsy2y7NlRnjjHFSwN+Hzg6ldJtbOriH4Q==", "cpu": [ "riscv64" ], @@ -3914,9 +3914,9 @@ } }, "node_modules/@oxfmt/binding-linux-riscv64-musl": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.65.0.tgz", - "integrity": "sha512-YwSLVvpaz4o/nv/miiPEBJz+eJ+VmbgNIrao6RccK9ce+L5EA8wP+ZD0uFeq6wKOza6zoWv/dR0sj6lip6R3EA==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.66.0.tgz", + "integrity": "sha512-44Yc+I+qOmTElRcEhm5hUKIUJEQIOugymz4ua4tB0Wox7tGAfIbjzmXz/HDAtw1Ij6gmBwZlzh4hc9679RhWeA==", "cpu": [ "riscv64" ], @@ -3934,9 +3934,9 @@ } }, "node_modules/@oxfmt/binding-linux-s390x-gnu": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.65.0.tgz", - "integrity": "sha512-XQTPqgvyrgkKcFq+Tp2eK6JS7sqqJ+nRmy2Fav4j3I+i4dJoPJm7YwEdoeSDX9xkqj9jZ/lWfF3bXUWztIrn6A==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.66.0.tgz", + "integrity": "sha512-1e29Eg9hEj2kRBB19M0seIehPbbXHCk35GvImjDvb79rjjYjXCRmtbUNHJcgoktZAMIzXrTbxDBKmTc1V4bg3A==", "cpu": [ "s390x" ], @@ -3954,9 +3954,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-gnu": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.65.0.tgz", - "integrity": "sha512-cjZlx6S/VkeCNWCbwZriTnLnZeTcV3DEyeRGSw/2wwLP9viq+C0bJ4bC1k/ZLkFxDcB1lUgSasPkYGP1bdraOg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.66.0.tgz", + "integrity": "sha512-vODY1UQo10gngn0+D4xHKU84F1Twm1LqrzV4SqPXvmQKSd87paehvZ6jqA5wKs6XQrlWul9clYMDVHcoW9CPMA==", "cpu": [ "x64" ], @@ -3974,9 +3974,9 @@ } }, "node_modules/@oxfmt/binding-linux-x64-musl": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.65.0.tgz", - "integrity": "sha512-2azCjxdLtK4zCcIOU1dlXlU0xxfbPi6EjwWx7Ac7teWPidIIDOcIhudup83xNCKYhtqeVd/gaVDOxbUq4syXWA==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-linux-x64-musl/-/binding-linux-x64-musl-0.66.0.tgz", + "integrity": "sha512-YDzXx2JsT4+HL4MdkVrYjO55NS5lUKNm8rLC4ZPou8+seu0v0jhecSh+ufoO6+xEa8gccEezMlI2WHJi4ApUgw==", "cpu": [ "x64" ], @@ -3994,9 +3994,9 @@ } }, "node_modules/@oxfmt/binding-openharmony-arm64": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.65.0.tgz", - "integrity": "sha512-KXQ7xi1e/voP0IQaw6fG6XY4Z5+Llf1XmRSZS1t7pVFCecFJ0iXaboKmVwjFtp5MLlT5iWQrJ2U1C3GJdZ2u+Q==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-openharmony-arm64/-/binding-openharmony-arm64-0.66.0.tgz", + "integrity": "sha512-mJjUYd8lj0+j4JkYyEM+5qKBf1Rnrpgjn/SVYKJhicVDqLz566ooa7Fs8zflPqt+dnZDV7X054rVIQX6ZcQNlQ==", "cpu": [ "arm64" ], @@ -4011,9 +4011,9 @@ } }, "node_modules/@oxfmt/binding-win32-arm64-msvc": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.65.0.tgz", - "integrity": "sha512-2FbbjG5jEqLSLKVJwBap84uJfpn5Y5A53KEO0aUNr+zeiRB9nyPUIFMcSbZVMFLitfBytFWRNngozXYjb6Rsbw==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.66.0.tgz", + "integrity": "sha512-soV+0vESv7e5ntCHWC61x4gg8OSak6IHHnWsZmHrJFlvMj2AK+kmldErCNkVkrvc1Ts2/++rJXn+IuAb2WMXhw==", "cpu": [ "arm64" ], @@ -4028,9 +4028,9 @@ } }, "node_modules/@oxfmt/binding-win32-ia32-msvc": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.65.0.tgz", - "integrity": "sha512-LJ+ZacAPSjegDOnSLyA1TMWAhdDrsK4el3REdr1oL2UtVBCMhO2II/Sb3cEW6mF2MfLhl8hDNCSvc7KSbgk3LQ==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.66.0.tgz", + "integrity": "sha512-YCPi23uRIEYuIKTZohAkKbPFpujQ5QBuUM5iDv+UqbCmTPAkaFsxjsSuB8xlBpRT0G7eP/4HMF+cPDSqHtOD9A==", "cpu": [ "ia32" ], @@ -4045,9 +4045,9 @@ } }, "node_modules/@oxfmt/binding-win32-x64-msvc": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.65.0.tgz", - "integrity": "sha512-higu9cWEO6XXFzATD1jf0mCK34rNfN2H9JrJie7QB1IhleVpTh0QlLH9Ip2C1H/Nd5n0v5pvRtC+5R0uE4HpVg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@oxfmt/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.66.0.tgz", + "integrity": "sha512-bwTQcv/JVRPkOqQtMF0X7vpvpncDQiBcXHxZ9S2hR12Hlo8bvBdUR5x5XnxzDZ3kM0qoZw1rv7KaD66Ly+pFWA==", "cpu": [ "x64" ], @@ -5034,9 +5034,9 @@ } }, "node_modules/@types/node": { - "version": "26.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.0.tgz", - "integrity": "sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ==", + "version": "26.4.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.1.tgz", + "integrity": "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==", "license": "MIT", "dependencies": { "undici-types": "~8.3.0" @@ -8278,9 +8278,9 @@ } }, "node_modules/oxfmt": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.65.0.tgz", - "integrity": "sha512-SgS5VgnP42T0zl3zWD+xoH8FCqg1SAFnSRoOT/qeoa6gxcYIqrDMOmcXIg/EWSN92Du4ogB4riuKhKd6Y4CGhw==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.66.0.tgz", + "integrity": "sha512-FfvqR8RFtV6JJpRrpkfqyVCQ7HDvZ/VriWFx7veftCgL1B5ZO9qNr+1rvPieycMQnNfVG0PWyJQiy7p0hq1I5w==", "dev": true, "license": "MIT", "dependencies": { @@ -8293,28 +8293,28 @@ "node": "^20.19.0 || >=22.12.0" }, "funding": { - "url": "https://github.com/sponsors/Boshen" + "url": "https://github.com/sponsors/oxc-project" }, "optionalDependencies": { - "@oxfmt/binding-android-arm-eabi": "0.65.0", - "@oxfmt/binding-android-arm64": "0.65.0", - "@oxfmt/binding-darwin-arm64": "0.65.0", - "@oxfmt/binding-darwin-x64": "0.65.0", - "@oxfmt/binding-freebsd-x64": "0.65.0", - "@oxfmt/binding-linux-arm-gnueabihf": "0.65.0", - "@oxfmt/binding-linux-arm-musleabihf": "0.65.0", - "@oxfmt/binding-linux-arm64-gnu": "0.65.0", - "@oxfmt/binding-linux-arm64-musl": "0.65.0", - "@oxfmt/binding-linux-ppc64-gnu": "0.65.0", - "@oxfmt/binding-linux-riscv64-gnu": "0.65.0", - "@oxfmt/binding-linux-riscv64-musl": "0.65.0", - "@oxfmt/binding-linux-s390x-gnu": "0.65.0", - "@oxfmt/binding-linux-x64-gnu": "0.65.0", - "@oxfmt/binding-linux-x64-musl": "0.65.0", - "@oxfmt/binding-openharmony-arm64": "0.65.0", - "@oxfmt/binding-win32-arm64-msvc": "0.65.0", - "@oxfmt/binding-win32-ia32-msvc": "0.65.0", - "@oxfmt/binding-win32-x64-msvc": "0.65.0" + "@oxfmt/binding-android-arm-eabi": "0.66.0", + "@oxfmt/binding-android-arm64": "0.66.0", + "@oxfmt/binding-darwin-arm64": "0.66.0", + "@oxfmt/binding-darwin-x64": "0.66.0", + "@oxfmt/binding-freebsd-x64": "0.66.0", + "@oxfmt/binding-linux-arm-gnueabihf": "0.66.0", + "@oxfmt/binding-linux-arm-musleabihf": "0.66.0", + "@oxfmt/binding-linux-arm64-gnu": "0.66.0", + "@oxfmt/binding-linux-arm64-musl": "0.66.0", + "@oxfmt/binding-linux-ppc64-gnu": "0.66.0", + "@oxfmt/binding-linux-riscv64-gnu": "0.66.0", + "@oxfmt/binding-linux-riscv64-musl": "0.66.0", + "@oxfmt/binding-linux-s390x-gnu": "0.66.0", + "@oxfmt/binding-linux-x64-gnu": "0.66.0", + "@oxfmt/binding-linux-x64-musl": "0.66.0", + "@oxfmt/binding-openharmony-arm64": "0.66.0", + "@oxfmt/binding-win32-arm64-msvc": "0.66.0", + "@oxfmt/binding-win32-ia32-msvc": "0.66.0", + "@oxfmt/binding-win32-x64-msvc": "0.66.0" }, "peerDependencies": { "svelte": "^5.0.0", @@ -8346,9 +8346,9 @@ } }, "node_modules/p-retry": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.0.tgz", - "integrity": "sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.1.tgz", + "integrity": "sha512-NAigyu8hfvJe7MsS18mnc4is0MZtau3QMdBklaJKK23oBQb6occO3UPM3vHmTckW8KhfyjMZaUOqdTFEYliHgg==", "license": "MIT", "dependencies": { "is-network-error": "^1.3.0" @@ -9499,9 +9499,9 @@ } }, "node_modules/react-zoom-pan-pinch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-4.0.4.tgz", - "integrity": "sha512-P0D7lfNHyJCNuUozoVdt0WNWcQ34ZbbD71B8pb+UtF7Th8MKBnxYiPApDfPZZmr+Gk0l0WmGTXL8R36JirHcQQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-4.1.0.tgz", + "integrity": "sha512-ezFqWsgRQGKgViTSEMyCusBQXK50bD46NeTLS3HqDLKsVeJ/ctMMq6JSAuMH76GZVb0d4Eowj4oB0Q4PFbjFsw==", "license": "MIT", "engines": { "node": ">=8", diff --git a/package.json b/package.json index ef0d5d05c7..0a40e9afb0 100644 --- a/package.json +++ b/package.json @@ -55,14 +55,14 @@ "masto": "~8.0.0", "micro-memoize": "~5.1.2", "p-queue": "~9.3.3", - "p-retry": "~8.0.0", + "p-retry": "~8.0.1", "preact": "10.29.8", "punycode": "~2.3.1", "qr": "~0.7.0", "react-hotkeys-hook": "~5.2.4", "react-intersection-observer": "~11.0.1", "react-router-dom": "6.6.2", - "react-zoom-pan-pinch": "~4.0.4", + "react-zoom-pan-pinch": "~4.1.0", "swiped-events": "~1.2.0", "temml": "~0.13.5", "tinyld": "~1.3.4", @@ -84,8 +84,8 @@ "@lingui/vite-plugin": "~6.6.0", "@playwright/test": "~1.62.1", "@preact/preset-vite": "~2.10.6", - "@types/node": "~26.4.0", - "oxfmt": "~0.65.0", + "@types/node": "~26.4.1", + "oxfmt": "~0.66.0", "postcss": "~8.5.26", "postcss-dark-theme-class": "~2.0.0", "postcss-preset-env": "~11.5.1", diff --git a/src/locales.js b/src/locales.js index ef72c8fd7c..6c50672ee7 100644 --- a/src/locales.js +++ b/src/locales.js @@ -1,4 +1,4 @@ -import catalogs from './data/catalogs.json'; +import catalogs from './data/catalogs.json' with { type: 'json' }; export const DEFAULT_LANG = 'en'; export const CATALOGS = catalogs; diff --git a/vite.config.js b/vite.config.js index c5fc0c6ed7..74eb229980 100644 --- a/vite.config.js +++ b/vite.config.js @@ -13,7 +13,7 @@ import { VitePWA } from 'vite-plugin-pwa'; import removeConsole from 'vite-plugin-remove-console'; import { run } from 'vite-plugin-run'; -import { ALL_LOCALES } from './src/locales'; +import { ALL_LOCALES } from './src/locales.js'; const allowedEnvPrefixes = ['VITE_', 'PHANPY_']; const { NODE_ENV } = process.env; @@ -63,7 +63,10 @@ console.log(`commit hash: ${commitHash}`); console.log(`commit time: ${commitTime.toISOString()}`); console.log(`build time: ${buildTime.toISOString()}`); -let rollbarCode = fs.readFileSync(resolve(__dirname, './rollbar.js'), 'utf-8'); +let rollbarCode = fs.readFileSync( + resolve(import.meta.dirname, './rollbar.js'), + 'utf-8', +); rollbarCode = rollbarCode.replace('__PHANPY_COMMIT_HASH__', `'${commitHash}'`); // https://github.com/vitejs/vite/issues/9597#issuecomment-1209305107 @@ -336,8 +339,8 @@ export default defineConfig(({ command }) => { rolldownOptions: { external: ['@xmldom/xmldom'], // exifreader's optional dependency, not needed input: { - main: resolve(__dirname, 'index.html'), - compose: resolve(__dirname, 'compose/index.html'), + main: resolve(import.meta.dirname, 'index.html'), + compose: resolve(import.meta.dirname, 'compose/index.html'), }, output: { // NOTE: Comment this for now. This messes up async imports. From ed960c6f027c2d4f56c90d2efab0f4658b7466d0 Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Wed, 2 Sep 2026 14:36:35 +0800 Subject: [PATCH 32/37] Weird fix --- vite.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vite.config.js b/vite.config.js index 74eb229980..2667ac8292 100644 --- a/vite.config.js +++ b/vite.config.js @@ -146,6 +146,8 @@ export default defineConfig(({ command }) => { }), removeConsole({ includes: ['log', 'debug', 'info', 'warn', 'error'], + // Plugin can't parse import attributes syntax (`with { type: 'json' }`) + external: ['src/locales.js'], }), htmlPlugin({ metas: [ From 53dcfc3190005796b4bbeff3b44812b9a3490491 Mon Sep 17 00:00:00 2001 From: Chee Aun Date: Thu, 3 Sep 2026 20:14:26 +0800 Subject: [PATCH 33/37] i18n updates (fa-IR,gl-ES) (#1591) * New translations (Persian) * Update catalog data * New translations (Galician) --------- Co-authored-by: github-actions[bot] --- src/data/catalogs.json | 2 +- src/locales/fa-IR.po | 4 +- src/locales/gl-ES.po | 160 ++++++++++++++++++++--------------------- 3 files changed, 83 insertions(+), 83 deletions(-) diff --git a/src/data/catalogs.json b/src/data/catalogs.json index 6ad8c8ec5a..73c5eaf5e4 100644 --- a/src/data/catalogs.json +++ b/src/data/catalogs.json @@ -52,7 +52,7 @@ "code": "fa-IR", "nativeName": "فارسی", "name": "Persian", - "completion": 61, + "completion": 62, "listed": true }, { diff --git a/src/locales/fa-IR.po b/src/locales/fa-IR.po index cb4e840608..0d0fffcc41 100644 --- a/src/locales/fa-IR.po +++ b/src/locales/fa-IR.po @@ -8,7 +8,7 @@ msgstr "" "Language: fa\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-08-27 20:09\n" +"PO-Revision-Date: 2026-08-27 22:42\n" "Last-Translator: \n" "Language-Team: Persian\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -2377,7 +2377,7 @@ msgstr "" #. placeholder {0}: info.acct ? punycode.toUnicode(info.acct) : info.username #: src/components/related-actions.jsx:922 msgid "Unfollow @{0}?" -msgstr "" +msgstr "دنبال نکردن @{0}؟" #: src/components/related-actions.jsx:985 msgid "Unfollow…" diff --git a/src/locales/gl-ES.po b/src/locales/gl-ES.po index 15075b2ce2..41169d3558 100644 --- a/src/locales/gl-ES.po +++ b/src/locales/gl-ES.po @@ -8,7 +8,7 @@ msgstr "" "Language: gl\n" "Project-Id-Version: phanpy\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-06-25 04:33\n" +"PO-Revision-Date: 2026-09-03 12:13\n" "Last-Translator: \n" "Language-Team: Galician\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -63,18 +63,18 @@ msgstr "Séguete" #. placeholder {0}: shortenNumber(followersCount) #. placeholder {1}: shortenNumber(followersCount) -#: src/components/account-block.jsx:283 +#: src/components/account-block.jsx:286 msgid "{followersCount, plural, one {<0>{0} follower} other {<1>{1} followers}}" msgstr "{followersCount, plural, one {<0>{0} seguidora} other {<1>{1} seguidoras}}" -#: src/components/account-block.jsx:309 +#: src/components/account-block.jsx:311 #: src/components/account-info.jsx:778 msgid "Verified" msgstr "Verificada" #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) #. placeholder {0}: niceDateTime(createdAt, { hideTime: true, }) -#: src/components/account-block.jsx:325 +#: src/components/account-block.jsx:327 #: src/components/account-info.jsx:917 msgid "Joined <0>{0}" msgstr "Creada <0>{0}" @@ -89,7 +89,7 @@ msgstr "dominio do servidor" #: src/components/account-info-mini.jsx:57 #: src/components/account-info.jsx:800 -#: src/components/compose.jsx:2055 +#: src/components/compose.jsx:2069 #: src/pages/settings.jsx:308 #: src/utils/visibility-text.jsx:7 msgid "Followers" @@ -144,7 +144,7 @@ msgstr "Ir á páxina da conta" #: src/components/timeline.jsx:663 #: src/components/timeline2.jsx:701 #: src/pages/home.jsx:237 -#: src/pages/notifications.jsx:1069 +#: src/pages/notifications.jsx:1073 #: src/pages/status.jsx:1270 #: src/pages/status.jsx:1746 msgid "Try again" @@ -280,7 +280,7 @@ msgstr "Ver estatísticas de publicación" #: src/components/collection-add-account.jsx:133 #: src/components/collection-add-edit.jsx:40 #: src/components/collection-manage-accounts.jsx:111 -#: src/components/compose.jsx:1128 +#: src/components/compose.jsx:1142 #: src/components/custom-emojis-modal.jsx:282 #: src/components/drafts.jsx:57 #: src/components/edit-profile-sheet.jsx:262 @@ -316,7 +316,7 @@ msgstr "Ver estatísticas de publicación" #: src/pages/catchup.jsx:1731 #: src/pages/filters.jsx:225 #: src/pages/list.jsx:302 -#: src/pages/notifications.jsx:1113 +#: src/pages/notifications.jsx:1117 #: src/pages/scheduled-posts.jsx:288 #: src/pages/settings.jsx:100 #: src/pages/status.jsx:1684 @@ -352,11 +352,11 @@ msgstr "Sen listas." msgid "New list" msgstr "Nova lista" -#: src/components/background-service.jsx:164 +#: src/components/background-service.jsx:211 msgid "Cloak mode disabled" msgstr "Desactivada a capa" -#: src/components/background-service.jsx:164 +#: src/components/background-service.jsx:211 msgid "Cloak mode enabled" msgstr "Capa activada" @@ -402,7 +402,7 @@ msgstr "Buscar contas" #: src/components/collection-add-account.jsx:197 #: src/components/compose-poll.jsx:80 -#: src/components/compose.jsx:1763 +#: src/components/compose.jsx:1777 #: src/components/mention-modal.jsx:221 #: src/components/shortcuts-settings.jsx:732 #: src/pages/list.jsx:388 @@ -459,7 +459,7 @@ msgid "Mark as sensitive" msgstr "Marcar como sensible" #: src/components/collection-add-edit.jsx:183 -#: src/components/compose.jsx:2043 +#: src/components/compose.jsx:2057 #: src/pages/collection.jsx:686 #: src/pages/settings.jsx:302 #: src/utils/visibility-text.jsx:4 @@ -478,7 +478,7 @@ msgstr "Fóra das listas" #: src/components/quote-settings-sheet.jsx:92 #: src/components/shortcuts-settings.jsx:732 #: src/pages/filters.jsx:572 -#: src/pages/notifications.jsx:1185 +#: src/pages/notifications.jsx:1189 msgid "Save" msgstr "Gardar" @@ -642,78 +642,78 @@ msgid "{0, plural, one {File {1} is not supported.} other {Files {2} are not sup msgstr "{0, plural, one {O ficheiro {1} non é compatible.} other {Os ficheiros {2} non son compatibles.}}" #: src/components/compose.jsx:294 -#: src/components/compose.jsx:2189 +#: src/components/compose.jsx:2203 #: src/components/file-picker-input.jsx:47 msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}" msgstr "{maxMediaAttachments, plural, one {Só podes anexar un ficheiro.} other {Só podes anexar ata # ficheiros.}}" -#: src/components/compose.jsx:652 +#: src/components/compose.jsx:650 msgid "You have unsaved changes. Discard this post?" msgstr "Tes cambios sen gardar. Desbotas esta publicación?" -#: src/components/compose.jsx:1108 +#: src/components/compose.jsx:1122 msgid "Pop out" msgstr "Despregar" -#: src/components/compose.jsx:1116 +#: src/components/compose.jsx:1130 msgid "Minimize" msgstr "Minimizar" -#: src/components/compose.jsx:1152 +#: src/components/compose.jsx:1166 msgid "Looks like you closed the parent window." msgstr "Semella que fechaches a xanela nai." -#: src/components/compose.jsx:1159 +#: src/components/compose.jsx:1173 msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later." msgstr "Semella que xa tes aberto un cadro de edición na xanela nai e estase a publicar. Por favor agarda a que remate e inténtao outra vez máis tarde." -#: src/components/compose.jsx:1164 +#: src/components/compose.jsx:1178 msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?" msgstr "Semella que xa tes un cadro de edición aberto na xanela nai. Ao traelo a esta xanela desbotarás os cambios realizados na xanela nai. Queres continuar?" -#: src/components/compose.jsx:1210 +#: src/components/compose.jsx:1224 msgid "Pop in" msgstr "Restablecer" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') -#: src/components/compose.jsx:1220 +#: src/components/compose.jsx:1234 msgid "Replying to @{0}’s post (<0>{1})" msgstr "Respondendo á publicación de @{0} (<0>{1})" #. placeholder {0}: replyToStatus.account.acct ? punycode.toUnicode(replyToStatus.account.acct) : replyToStatus.account.username -#: src/components/compose.jsx:1232 +#: src/components/compose.jsx:1246 msgid "Replying to @{0}’s post" msgstr "Respondendo á publicación de @{0}" -#: src/components/compose.jsx:1247 +#: src/components/compose.jsx:1261 msgid "Editing source post" msgstr "Editando o contido da publicación" -#: src/components/compose.jsx:1316 +#: src/components/compose.jsx:1330 msgid "Poll must have at least 2 options" msgstr "A enquisa ten que ter 2 opcións como mínimo" -#: src/components/compose.jsx:1320 +#: src/components/compose.jsx:1334 msgid "Some poll choices are empty" msgstr "Algunhas opcións da enquisa están baleiras" -#: src/components/compose.jsx:1333 +#: src/components/compose.jsx:1347 msgid "Some media have no descriptions. Continue?" msgstr "Algún do multimedia non ten descrición. Queres continuar?" -#: src/components/compose.jsx:1390 +#: src/components/compose.jsx:1404 msgid "Attachment #{i} failed" msgstr "Fallou o anexo #{i}" -#: src/components/compose.jsx:1519 +#: src/components/compose.jsx:1533 #: src/components/status.jsx:2564 #: src/components/timeline.jsx:1062 msgid "Content warning" msgstr "Aviso sobre o contido" -#: src/components/compose.jsx:1551 -#: src/components/compose.jsx:1697 +#: src/components/compose.jsx:1565 +#: src/components/compose.jsx:1711 #: src/components/edit-profile-sheet.jsx:692 #: src/components/import-accounts-selection.jsx:175 #: src/components/open-link-sheet.jsx:74 @@ -722,79 +722,79 @@ msgstr "Aviso sobre o contido" msgid "Cancel" msgstr "Desbotar" -#: src/components/compose.jsx:1559 +#: src/components/compose.jsx:1573 msgid "Post your reply" msgstr "Publica a resposta" -#: src/components/compose.jsx:1561 +#: src/components/compose.jsx:1575 msgid "Edit your post" msgstr "Edita a publicación" -#: src/components/compose.jsx:1563 +#: src/components/compose.jsx:1577 msgid "Ask a question" msgstr "Preguntar" -#: src/components/compose.jsx:1564 +#: src/components/compose.jsx:1578 msgid "What are you doing?" msgstr "Que estás a facer?" -#: src/components/compose.jsx:1637 +#: src/components/compose.jsx:1651 msgid "Mark media as sensitive" msgstr "Marcar o multimedia como sensible" -#: src/components/compose.jsx:1677 +#: src/components/compose.jsx:1691 msgid "Posting on <0/>" msgstr "Publicar o <0/>" -#: src/components/compose.jsx:1975 +#: src/components/compose.jsx:1989 #: src/components/quote-settings-sheet.jsx:82 #: src/components/status.jsx:301 #: src/pages/settings.jsx:350 msgid "Anyone can quote" msgstr "Calquera pode citarte" -#: src/components/compose.jsx:1978 +#: src/components/compose.jsx:1992 #: src/components/quote-settings-sheet.jsx:85 #: src/components/status.jsx:302 #: src/pages/settings.jsx:353 msgid "Your followers can quote" msgstr "As túas seguidoras poden citarte" -#: src/components/compose.jsx:1981 +#: src/components/compose.jsx:1995 #: src/components/quote-settings-sheet.jsx:88 #: src/components/status.jsx:303 #: src/pages/settings.jsx:356 msgid "Only you can quote" msgstr "Só ti podes citar" -#: src/components/compose.jsx:2021 +#: src/components/compose.jsx:2035 msgid "Quotes can't be embedded in private mentions." msgstr "As citas non se poden incluír nas mencións privadas." -#: src/components/compose.jsx:2048 +#: src/components/compose.jsx:2062 #: src/components/nav-menu.jsx:367 #: src/components/shortcuts-settings.jsx:168 #: src/utils/visibility-text.jsx:5 msgid "Local" msgstr "Local" -#: src/components/compose.jsx:2052 +#: src/components/compose.jsx:2066 #: src/pages/settings.jsx:305 #: src/utils/visibility-text.jsx:6 msgid "Quiet public" msgstr "Pública limitada" -#: src/components/compose.jsx:2058 +#: src/components/compose.jsx:2072 #: src/components/status.jsx:2443 #: src/utils/visibility-text.jsx:8 msgid "Private mention" msgstr "Mención privada" -#: src/components/compose.jsx:2114 +#: src/components/compose.jsx:2128 msgid "Schedule" msgstr "Programar" -#: src/components/compose.jsx:2116 +#: src/components/compose.jsx:2130 #: src/components/keyboard-shortcuts-help.jsx:165 #: src/components/status.jsx:1107 #: src/components/status.jsx:1156 @@ -805,20 +805,20 @@ msgstr "Programar" msgid "Reply" msgstr "Responder" -#: src/components/compose.jsx:2118 +#: src/components/compose.jsx:2132 msgid "Update" msgstr "Actualizar" -#: src/components/compose.jsx:2119 +#: src/components/compose.jsx:2133 msgctxt "Submit button in composer" msgid "Post" msgstr "Publicar" -#: src/components/compose.jsx:2201 +#: src/components/compose.jsx:2215 msgid "Downloading GIF…" msgstr "Descargando GIF…" -#: src/components/compose.jsx:2225 +#: src/components/compose.jsx:2239 msgid "Failed to download GIF" msgstr "Fallou a descarga da GIF" @@ -1056,7 +1056,7 @@ msgid "No featured profiles." msgstr "Sen perfís destacados" #: src/components/follow-request-buttons.jsx:45 -#: src/pages/notifications.jsx:1169 +#: src/pages/notifications.jsx:1173 msgid "Accept" msgstr "Aceptar" @@ -1065,7 +1065,7 @@ msgid "Reject" msgstr "Rexeitar" #: src/components/follow-request-buttons.jsx:79 -#: src/pages/notifications.jsx:1455 +#: src/pages/notifications.jsx:1459 msgid "Accepted" msgstr "Aceptado" @@ -1086,7 +1086,7 @@ msgstr "Contas" #: src/components/timeline.jsx:628 #: src/pages/account-collections.jsx:234 #: src/pages/list.jsx:321 -#: src/pages/notifications.jsx:1093 +#: src/pages/notifications.jsx:1097 #: src/pages/search.jsx:550 #: src/pages/status.jsx:1717 msgid "Show more…" @@ -1277,7 +1277,7 @@ msgstr "<0>Ctrl + <1>Enter ou <2>⌘ + <3>Enter" #: src/components/keyboard-shortcuts-help.jsx:161 #: src/components/nav-menu.jsx:352 -#: src/components/search-form.jsx:208 +#: src/components/search-form.jsx:211 #: src/components/shortcuts-settings.jsx:54 #: src/components/shortcuts-settings.jsx:182 #: src/pages/search.jsx:55 @@ -1389,21 +1389,21 @@ msgstr "Non se puido eliminar a lista." msgid "Posts on this list are hidden from Home/Following" msgstr "As publicacións desta lista non aparecen en Inicio/Seguindo" -#: src/components/math-block.jsx:132 +#: src/components/math-block.jsx:141 msgid "Unable to format math" msgstr "Non se puido dar formato" -#: src/components/math-block.jsx:146 +#: src/components/math-block.jsx:155 msgid "Math expressions found." msgstr "Hai expresións matemáticas." #. Action to switch from rendered math back to raw (LaTeX) markup -#: src/components/math-block.jsx:149 +#: src/components/math-block.jsx:158 msgid "Show markup" msgstr "Mostrar marcado" #. Action to render math expressions from raw (LaTeX) markup -#: src/components/math-block.jsx:154 +#: src/components/math-block.jsx:163 msgid "Format math" msgstr "Dar formato matemático\n" @@ -1553,7 +1553,7 @@ msgstr "Filtrado: {filterTitleStr}" msgid "Filtered" msgstr "Filtrado" -#: src/components/media.jsx:533 +#: src/components/media.jsx:567 msgid "Open file" msgstr "Abrir ficheiro" @@ -2178,7 +2178,7 @@ msgid "Cleared recent searches" msgstr "Limpáronse as buscas recentes" #: src/components/recent-searches.jsx:49 -#: src/components/search-form.jsx:333 +#: src/components/search-form.jsx:336 msgid "Recent searches" msgstr "Buscas recentes" @@ -2547,11 +2547,11 @@ msgstr "Publicacións etiquetadas con <0>{hashtag}" msgid "{query} <0>‒ accounts, hashtags & posts" msgstr "{query} <0>‒ contas, cancelos e publicacións" -#: src/components/search-form.jsx:139 +#: src/components/search-form.jsx:142 msgid "Look up <0>{query}" msgstr "Busca de <0>{query}" -#: src/components/search-form.jsx:366 +#: src/components/search-form.jsx:369 #: src/pages/home.jsx:260 msgid "See all" msgstr "Ver todo" @@ -2943,7 +2943,7 @@ msgstr "Retirada a promoción da publicación de @{0}" #: src/components/status.jsx:1257 #: src/components/status.jsx:1850 msgid "Boosted @{0}'s post" -msgstr "Promoveu a publicación de @{0}" +msgstr "Promoviches a publicación de @{0}" #: src/components/status.jsx:1279 #: src/components/status.jsx:3076 @@ -4212,7 +4212,7 @@ msgid "Bot accounts" msgstr "Contas automatizadas" #: src/pages/notifications.jsx:764 -#: src/pages/notifications.jsx:1117 +#: src/pages/notifications.jsx:1121 msgid "Notifications settings" msgstr "Axustes das notificacións" @@ -4252,72 +4252,72 @@ msgstr "Hoxe" msgid "You're all caught up." msgstr "Xa estás ao día." -#: src/pages/notifications.jsx:1017 +#: src/pages/notifications.jsx:1021 msgid "Yesterday" msgstr "Onte" -#: src/pages/notifications.jsx:1065 +#: src/pages/notifications.jsx:1069 msgid "Unable to load notifications" msgstr "Non se cargaron as notificacións" -#: src/pages/notifications.jsx:1148 +#: src/pages/notifications.jsx:1152 msgid "Notifications settings updated" msgstr "Actualizáronse os axustes das notificacións" -#: src/pages/notifications.jsx:1156 +#: src/pages/notifications.jsx:1160 msgid "Filter notifications from:" msgstr "Filtrar as notificacións de:" -#: src/pages/notifications.jsx:1172 +#: src/pages/notifications.jsx:1176 msgid "Filter" msgstr "Filtrar" -#: src/pages/notifications.jsx:1175 +#: src/pages/notifications.jsx:1179 msgid "Ignore" msgstr "Ignorar" #. placeholder {0}: niceDateTime(updatedAtDate) -#: src/pages/notifications.jsx:1248 +#: src/pages/notifications.jsx:1252 msgid "Updated <0>{0}" msgstr "Acutalizado <0>{0}" #. placeholder {0}: account.username -#: src/pages/notifications.jsx:1316 +#: src/pages/notifications.jsx:1320 msgid "View notifications from <0>@{0}" msgstr "Ver notificacións de <0>@{0}" #. placeholder {0}: account.username -#: src/pages/notifications.jsx:1337 +#: src/pages/notifications.jsx:1341 msgid "Notifications from <0>@{0}" msgstr "Notificacións de <0>@{0}" #. placeholder {0}: request.account.username -#: src/pages/notifications.jsx:1406 +#: src/pages/notifications.jsx:1410 msgid "Notifications from @{0} will not be filtered from now on." msgstr "A partir de agora non se filtrarán as notificacións de @{0}." -#: src/pages/notifications.jsx:1411 +#: src/pages/notifications.jsx:1415 msgid "Unable to accept notification request" msgstr "Non se puido aceptar a solicitude de notificación" -#: src/pages/notifications.jsx:1416 +#: src/pages/notifications.jsx:1420 msgid "Allow" msgstr "Permitir" #. placeholder {0}: request.account.username -#: src/pages/notifications.jsx:1437 +#: src/pages/notifications.jsx:1441 msgid "Notifications from @{0} will not show up in Filtered notifications from now on." msgstr "A partir de agora non se mostrarán as notificacións de @{0} nas Notificacións filtradas." -#: src/pages/notifications.jsx:1442 +#: src/pages/notifications.jsx:1446 msgid "Unable to dismiss notification request" msgstr "Non se puido desbotar a solicitude de notificación" -#: src/pages/notifications.jsx:1447 +#: src/pages/notifications.jsx:1451 msgid "Dismiss" msgstr "Desbotar" -#: src/pages/notifications.jsx:1462 +#: src/pages/notifications.jsx:1466 msgid "Dismissed" msgstr "Desbotada" From ab9843d4458677b2a79fd33336e2886a1a64000d Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Fri, 4 Sep 2026 12:46:18 +0800 Subject: [PATCH 34/37] Let's try OpaqueRange API --- src/components/compose-textarea.jsx | 137 ++++++++++++++++++++++++---- src/components/compose.css | 84 ++++++++++------- 2 files changed, 169 insertions(+), 52 deletions(-) diff --git a/src/components/compose-textarea.jsx b/src/components/compose-textarea.jsx index 02b1d4b084..ccb0253b03 100644 --- a/src/components/compose-textarea.jsx +++ b/src/components/compose-textarea.jsx @@ -1,5 +1,5 @@ import { forwardRef } from 'preact/compat'; -import { useEffect, useRef, useState } from 'preact/hooks'; +import { useRef, useState } from 'preact/hooks'; import { useDebouncedCallback, useThrottledCallback } from 'use-debounce'; import { langDetector } from '../utils/browser-translator'; @@ -32,6 +32,82 @@ const SCAN_RE = new RegExp( const segmenter = new Intl.Segmenter(); +// OpaqueRange + Custom Highlight API, falls back .compose-highlight div +// https://olliewilliams.xyz/blog/opaquerange/ +const supportsNativeTextareaHighlight = + typeof HTMLTextAreaElement.prototype.createValueRange === 'function' && + typeof Highlight === 'function' && + !!CSS.highlights; + +const NATIVE_HIGHLIGHT_NAMES = { + url: 'compose-url', + mention: 'compose-mention', + hashtag: 'compose-hashtag', + 'emoji-shortcode': 'compose-emoji-shortcode', + exceeded: 'compose-exceeded', +}; + +const nativeHighlights = supportsNativeTextareaHighlight + ? Object.fromEntries( + Object.entries(NATIVE_HIGHLIGHT_NAMES).map(([type, name]) => { + const highlight = new Highlight(); + CSS.highlights.set(name, highlight); + return [type, highlight]; + }), + ) + : null; + +// Same highlights as highlightText(), but as [start, end] index ranges in raw text +function getNativeHighlightRanges(text, { maxCharacters = Infinity }) { + const ranges = { + url: [], + mention: [], + hashtag: [], + 'emoji-shortcode': [], + exceeded: [], + }; + + // Exceeded characters limit + const { composerCharacterCount } = states; + if (composerCharacterCount > maxCharacters) { + const segments = segmenter.segment(text); + for (const { index } of segments) { + if (index >= maxCharacters) { + ranges.exceeded.push([index, text.length]); + break; + } + } + return ranges; + } + + for (const match of text.matchAll(urlRegexObj)) { + const url = match[3]; + if (!url) continue; + const start = match.index + match[2].length; + ranges.url.push([start, start + url.length]); + } + for (const match of text.matchAll(MENTION_RE)) { + const mention = match[2]; + if (!mention) continue; + const start = match.index + match[1].length; + ranges.mention.push([start, start + mention.length]); + } + for (const match of text.matchAll(HASHTAG_RE)) { + const hashtag = match[2]; + if (!hashtag) continue; + const start = match.index + match[1].length; + ranges.hashtag.push([start, start + hashtag.length]); + } + for (const match of text.matchAll(SCAN_RE)) { + const shortcode = match[2]; + if (!shortcode) continue; + const start = match.index + match[1].length; + ranges['emoji-shortcode'].push([start, start + shortcode.length]); + } + + return ranges; +} + function highlightText(text, { maxCharacters = Infinity }) { // Exceeded characters limit const { composerCharacterCount } = states; @@ -117,7 +193,21 @@ const Textarea = forwardRef((props, ref) => { const slowHighlightPerf = useRef(0); // increment if slow const composeHighlightRef = useRef(); + const throttleHighlightText = useThrottledCallback((text) => { + if (nativeHighlights) { + const textarea = ref.current; + if (!textarea) return; + const ranges = getNativeHighlightRanges(text, { maxCharacters }); + for (const [type, highlight] of Object.entries(nativeHighlights)) { + highlight.clear(); + for (const [start, end] of ranges[type]) { + highlight.add(textarea.createValueRange(start, end)); + } + } + // Slow highlight detection not needed assuming native highlights are faster + return; + } if (!composeHighlightRef.current) return; if (slowHighlightPerf.current > 3) { // After 3 times of lag, disable highlighting @@ -142,19 +232,26 @@ const Textarea = forwardRef((props, ref) => { // Newline to prevent multiple line breaks at the end from being collapsed, no idea why }, 500); - const debouncedAutoDetectLanguage = useDebouncedCallback(() => { - // Make use of the highlightRef to get the DOM - // Clone the dom - const dom = composeHighlightRef.current?.cloneNode(true); - if (!dom) return; - // Remove mark - dom.querySelectorAll('mark').forEach((mark) => { - mark.remove(); - }); - const text = dom.innerText?.trim(); - if (!text) return; + const debouncedAutoDetectLanguage = useDebouncedCallback((text) => { + // Strip highlighted text (URLs, mentions, etc) to avoid confusing the detector + let cleanText = text; + if (composeHighlightRef.current) { + const dom = composeHighlightRef.current.cloneNode(true); + dom.querySelectorAll('mark').forEach((mark) => { + mark.remove(); + }); + cleanText = dom.innerText || text; + } else if (nativeHighlights) { + cleanText = text + .replace(urlRegexObj, '') + .replace(MENTION_RE, '') + .replace(HASHTAG_RE, '') + .replace(SCAN_RE, ''); + } + const trimmedText = cleanText.trim(); + if (!trimmedText) return; (async () => { - const langs = await detectLangs(text); + const langs = await detectLangs(trimmedText); if (langs?.length) { onTrigger?.({ name: 'auto-detect-language', @@ -236,7 +333,7 @@ const Textarea = forwardRef((props, ref) => { autoResizeTextarea(target); props.onInput?.(e); throttleHighlightText(text); - debouncedAutoDetectLanguage(); + debouncedAutoDetectLanguage(text); }} onScroll={(e) => { if (composeHighlightRef.current) { @@ -258,11 +355,13 @@ const Textarea = forwardRef((props, ref) => { } }} /> -