diff --git a/Procfile b/Procfile deleted file mode 100644 index fdab9a4c81..0000000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: NODE_ENV=production npm start diff --git a/cliff.toml b/cliff.toml deleted file mode 100644 index 8a1e7b1002..0000000000 --- a/cliff.toml +++ /dev/null @@ -1,98 +0,0 @@ -# configuration file for git-cliff (0.1.0) - -[changelog] -# changelog header -header = """ -# Changelog\n -""" -# template for the changelog body -# https://tera.netlify.app/docs/#introduction -body = """ -{% if version %}\ - ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} -{% else %}\ - ## [unreleased] -{% endif %}\ -{% for group, commits in commits | group_by(attribute="group") %} - ### {{ group | upper_first }} - {% for commit in commits %} - - {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\ - {% endfor %} -{% endfor %}\n -""" -# remove the leading and trailing whitespace from the template -trim = true -# changelog footer -footer = """ - -""" - -[git] -# parse the commits based on https://www.conventionalcommits.org -conventional_commits = false -# filter out the commits that are not conventional -filter_unconventional = true -# process each line of a commit as an individual commit -split_commits = false -# regex for parsing and grouping commits -commit_parsers = [ - { message = "^feat", group = "Features"}, - { message = "^add", group = "Features"}, - { message = "^fix", group = "Bug Fixes"}, - { message = "^prevent", group = "Bug Fixes"}, - { message = "^doc", group = "Documentation"}, - { message = "^perf", group = "Performance"}, - { message = "^🎨", group = "Refactor"}, - { message = "^enhance", group = "Refactor"}, - { message = "^⚡️", group = "Refactor"}, - { message = "^🔥", group = "Features"}, - { message = "^🐛", group = "Bug Fixes"}, - { message = "^🚑️", group = "Bug Fixes"}, - { message = "^block", group = "Bug Fixes"}, - { message = "^✨", group = "Features"}, - { message = "^📝", group = "Documentation"}, - { message = "^🚀", group = "Features"}, - { message = "^💄", group = "Styling"}, - { message = "^✅", group = "Testing"}, - { message = "^🔒️", group = "Security"}, - { message = "^🚨", group = "Testing"}, - { message = "^💚", group = "CI"}, - { message = "^👷", group = "CI"}, - { message = "^⬇️", group = "Miscellaneous Tasks"}, - { message = "^⬆️", group = "Miscellaneous Tasks"}, - { message = "^📌", group = "Miscellaneous Tasks"}, - { message = "^➕", group = "Miscellaneous Tasks"}, - { message = "^➖", group = "Miscellaneous Tasks"}, - { message = "^♻️", group = "Refactor"}, - { message = "^🔧", group = "CI"}, - { message = "^🔨", group = "CI"}, - { message = "^🌐", group = "Localization"}, - { message = "^✏️", group = "Localization"}, - { message = "^👽️", group = "Bug Fixes"}, - { message = "^🍱", group = "Styling"}, - { message = "^♿️", group = "Styling"}, - { message = "^🩹", group = "Bug Fixes"}, - { message = "^refactor", group = "Refactor"}, - { message = "^style", group = "Styling"}, - { message = "^test", group = "Testing"}, - { message = "^chore\\(release\\): prepare for", skip = true}, - { message = "^chore", group = "Miscellaneous Tasks"}, - { message = "^update", group = "Miscellaneous Tasks"}, - { body = ".*security", group = "Security"}, -] -# protect breaking changes from being skipped due to matching a skipping commit_parser -protect_breaking_commits = false -# filter out the commits that are not matched by commit parsers -filter_commits = false -# glob pattern for matching git tags -tag_pattern = "v[0-9]*" -# regex for skipping tags -skip_tags = "v0.1.0-beta.1" -# regex for ignoring tags -ignore_tags = "" -# sort the tags chronologically -date_order = false -# sort the commits inside sections by oldest/newest order -sort_commits = "oldest" -# limit the number of commits included in the changelog. -# limit_commits = 42 diff --git a/docs/changelog.md b/docs/changelog.md index 3db5bc422f..cb89213839 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -9,6 +9,9 @@ Critical security updates are indicated by the :warning: icon. - Ported Mastodon API support from Iceshrimp, with added Firefish extensions including push notifications, post languages, schedule post support, and more. - The old Mastodon API has been replaced with a new implementation based on Iceshrimp’s. +- Add ability to automatically append #Alt4Me hashtag when posting a file without an alt text ([What is #Alt4Me?](https://social.growyourown.services/@FediTips/112055775451305236)) +- Fix a build issue on some aarch64 environments +- Fix bugs **Breaking changes:** diff --git a/firefish.nginx.conf b/docs/firefish.nginx.conf similarity index 100% rename from firefish.nginx.conf rename to docs/firefish.nginx.conf diff --git a/docs/install.md b/docs/install.md index 9e701e72b4..2170b00b19 100644 --- a/docs/install.md +++ b/docs/install.md @@ -20,20 +20,23 @@ Firefish depends on the following software. ## Build dependencies - At least [Rust](https://www.rust-lang.org/) v1.74 -- C/C++ compiler & build tools +- C/C++ compiler & build tools (like [GNU Make](https://www.gnu.org/software/make/)) - `build-essential` on Debian/Ubuntu Linux - `base-devel` on Arch Linux + - `"Development Tools"` on Fedora/Red Hat Linux - [Python 3](https://www.python.org/) - [Perl](https://www.perl.org/) This document shows an example procedure for installing these dependencies and Firefish on Debian 12. Note that there is much room for customizing the server setup; this document merely demonstrates a simple installation. +### Use Docker/Podman containers + If you want to use the pre-built container image, please refer to [`install-container.md`](./install-container.md). -Make sure that you can use the `sudo` command before proceeding. - ## 1. Install dependencies +Make sure that you can use the `sudo` command before proceeding. + ### Utilities ```sh @@ -213,7 +216,7 @@ sudo ufw status ### 2. Set up a reverse proxy -In this instruction, we use [Caddy](https://caddyserver.com/) to make the Firefish server accesible from internet. However, you can also use [Nginx](https://nginx.org/en/) if you want ([example Nginx config file](../firefish.nginx.conf)). +In this instruction, we use [Caddy](https://caddyserver.com/) to make the Firefish server accesible from internet. However, you can also use [Nginx](https://nginx.org/en/) if you want ([example Nginx config file](./firefish.nginx.conf)). 1. Install Caddy ```sh diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 622074056c..6329fbb8b6 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -446,7 +446,7 @@ tooShort: "قصير جدًا" tooLong: "طويل جدًا" weakPassword: "الكلمة السرية ضعيفة" normalPassword: "الكلمة السرية جيدة" -strongPassword: "الكلمة السرية قوية" +veryStrongPassword: "الكلمة السرية قوية" passwordMatched: "التطابق صحيح!" passwordNotMatched: "غير متطابقتان" signinWith: "الولوج عبر {x}" diff --git a/locales/bg-BG.yml b/locales/bg-BG.yml index 86eeb6691c..03009bf588 100644 --- a/locales/bg-BG.yml +++ b/locales/bg-BG.yml @@ -586,7 +586,7 @@ unavailable: Не е свободно tooShort: Твърде кратко tooLong: Твърде дълго weakPassword: Слаба парола -strongPassword: Силна парола +veryStrongPassword: Силна парола passwordMatched: Съвпада passwordNotMatched: Не съвпада signinWith: Вход с {x} diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml index d17766b499..db3874ceb9 100644 --- a/locales/bn-BD.yml +++ b/locales/bn-BD.yml @@ -462,7 +462,7 @@ tooShort: "খুব ছোট" tooLong: "খুব বড়" weakPassword: "দুর্বল পাসওয়ার্ড" normalPassword: "সাধারণ পাসওয়ার্ড" -strongPassword: "শক্তিশালী পাসওয়ার্ড" +veryStrongPassword: "শক্তিশালী পাসওয়ার্ড" passwordMatched: "মিলেছে" passwordNotMatched: "মিলেনি" signinWith: "{x} এর সাহায্যে সাইন ইন করুন" diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index de991069ca..a2cae81241 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1091,7 +1091,7 @@ usernameInvalidFormat: Pots fer servir lletres en majúscules o minúscules, nom tooShort: Massa curt tooLong: Massa llarg weakPassword: Contrasenya amb seguretat feble -strongPassword: Contrasenya amb seguretat forta +veryStrongPassword: Contrasenya amb seguretat forta passwordMatched: Coincidències signinWith: Inicia sessió com {x} signinFailed: No es pot iniciar sessió. El nom d'usuari o la contrasenya són incorrectes. diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml index 96107996cf..8a08c784c8 100644 --- a/locales/cs-CZ.yml +++ b/locales/cs-CZ.yml @@ -401,7 +401,7 @@ tooShort: "Příliš krátké" tooLong: "Příliš dlouhé" weakPassword: "Slabé heslo" normalPassword: "Dobré heslo" -strongPassword: "Silné heslo" +veryStrongPassword: "Silné heslo" passwordMatched: "Hesla se schodují" passwordNotMatched: "Hesla se neschodují" signinWith: "Přihlásit se s {x}" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 70a861692a..4fdfce0a54 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -480,7 +480,7 @@ tooShort: "Zu kurz" tooLong: "Zu lang" weakPassword: "Schwaches Passwort" normalPassword: "Durchschnittliches Passwort" -strongPassword: "Starkes Passwort" +veryStrongPassword: "Starkes Passwort" passwordMatched: "Stimmt überein" passwordNotMatched: "Stimmt nicht überein" signinWith: "Mit {x} anmelden" diff --git a/locales/el-GR.yml b/locales/el-GR.yml index 2d2b657e01..f5fcc86755 100644 --- a/locales/el-GR.yml +++ b/locales/el-GR.yml @@ -677,7 +677,7 @@ checking: Έλεγχος... invitationCode: Κωδικός πρόσκλησης normalPassword: Μέτριος κωδικός weakPassword: Αδύναμος κωδικός -strongPassword: Δυνατός κωδικός +veryStrongPassword: Δυνατός κωδικός signinWith: Συνδεθείτε με {x} tapSecurityKey: Βάλτε το κλειδί ασφάλειας signinFailed: Αδυναμία σύνδεσης. Το όνομα μέλους ή ο κωδικός είναι λάθος. diff --git a/locales/en-US.yml b/locales/en-US.yml index 830a6905df..68fc659499 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -515,8 +515,9 @@ usernameInvalidFormat: "You can use upper- and lowercase letters, numbers, and u tooShort: "Too short" tooLong: "Too long" weakPassword: "Weak password" -normalPassword: "Average password" -strongPassword: "Strong password" +normalPassword: "Medium password" +strongPassword: "Good password" +veryStrongPassword: "Great password" passwordMatched: "Matches" passwordNotMatched: "Does not match" signinWith: "Sign in with {x}" @@ -1239,6 +1240,7 @@ noAltTextWarning: "Some attached file(s) have no description. Did you forget to showNoAltTextWarning: "Show a warning if you attempt to post files without a description" showAddFileDescriptionAtFirstPost: "Automatically open a form to write a description when you attempt to post files without a description" +addAlt4MeTag: "Automatically append #Alt4Me hashtag to your post if attached file has no description" _emojiModPerm: unauthorized: "None" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 6222044863..2b45b41ff7 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -465,7 +465,7 @@ tooShort: "Demasiado corto" tooLong: "Demasiado largo" weakPassword: "Contraseña débil" normalPassword: "Buena contraseña" -strongPassword: "Muy buena contraseña" +veryStrongPassword: "Muy buena contraseña" passwordMatched: "Correcto" passwordNotMatched: "Las contraseñas no son las mismas" signinWith: "Inicie sesión con {x}" diff --git a/locales/fi.yml b/locales/fi.yml index 123498d6da..c333452f88 100644 --- a/locales/fi.yml +++ b/locales/fi.yml @@ -569,7 +569,7 @@ tooShort: Liian lyhyt tooLong: Liian pitkä weakPassword: Heikko salasana normalPassword: Kohtalainen salasana -strongPassword: Vahva salasana +veryStrongPassword: Vahva salasana passwordMatched: Vastaa signinWith: Kirjaudu sisään {x} signinFailed: Ei voitu kirjautua sisään. Annettu käyttäjänimi tai salasana virheellinen. diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 3780db91fc..44cec380ca 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -468,7 +468,7 @@ tooShort: "Trop court" tooLong: "Trop long" weakPassword: "Mot de passe faible" normalPassword: "Mot de passe acceptable" -strongPassword: "Mot de passe fort" +veryStrongPassword: "Mot de passe fort" passwordMatched: "Les mots de passe correspondent" passwordNotMatched: "Les mots de passe ne correspondent pas" signinWith: "Se connecter avec {x}" diff --git a/locales/id-ID.yml b/locales/id-ID.yml index b06f906000..325941779d 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -464,7 +464,7 @@ tooShort: "Terlalu pendek" tooLong: "Terlalu panjang" weakPassword: "Kata sandi lemah" normalPassword: "Kata sandi baik" -strongPassword: "Kata sandi kuat" +veryStrongPassword: "Kata sandi kuat" passwordMatched: "Kata sandi sama" passwordNotMatched: "Kata sandi tidak sama" signinWith: "Masuk dengan {x}" diff --git a/locales/it-IT.yml b/locales/it-IT.yml index e686df5890..8ecfd09bdc 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -454,7 +454,7 @@ tooShort: "Troppo breve" tooLong: "Troppo lungo" weakPassword: "Password debole" normalPassword: "Password buona" -strongPassword: "Password forte" +veryStrongPassword: "Password forte" passwordMatched: "Corretta" passwordNotMatched: "Le password non corrispondono" signinWith: "Accedi con {x}" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 94b3d32ba2..4a657c1c2c 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -466,7 +466,7 @@ tooShort: "短すぎます" tooLong: "長すぎます" weakPassword: "弱いパスワード" normalPassword: "普通のパスワード" -strongPassword: "強いパスワード" +veryStrongPassword: "強いパスワード" passwordMatched: "一致しました" passwordNotMatched: "一致していません" signinWith: "{x}でログイン" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 970a27d0ed..941135e8cf 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -435,7 +435,7 @@ tooShort: "短すぎやろ!" tooLong: "長すぎやろ!" weakPassword: "へぼいパスワード" normalPassword: "普通のパスワード" -strongPassword: "ええ感じのパスワード" +veryStrongPassword: "ええ感じのパスワード" passwordMatched: "よし!一致や!" passwordNotMatched: "一致しとらんで?" signinWith: "{x}でログイン" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index d67e37d4cf..bad1f8ee80 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -442,7 +442,7 @@ tooShort: "너무 짧습니다" tooLong: "너무 깁니다" weakPassword: "약한 비밀번호" normalPassword: "좋은 비밀번호" -strongPassword: "강한 비밀번호" +veryStrongPassword: "강한 비밀번호" passwordMatched: "일치합니다" passwordNotMatched: "일치하지 않습니다" signinWith: "{x}로 로그인" diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index 9d120ccf79..6079d7624b 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -576,7 +576,7 @@ quoteAttached: Quote noMessagesYet: Nog geen berichten weakPassword: Zwak wachtwoord normalPassword: Middelmatig wachtwoord -strongPassword: Sterk wachtwoord +veryStrongPassword: Sterk wachtwoord onlyOneFileCanBeAttached: Je kan maar één bestand toevoegen aan je bericht invitationCode: Uitnodigingscode checking: Controleren... diff --git a/locales/no-NO.yml b/locales/no-NO.yml index b446ff4359..adafb8face 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -571,7 +571,7 @@ youHaveNoGroups: Du har ingen grupper noHistory: Ingen historikk er tilgjengelig aboutX: Om {x} signinHistory: Innloggings-historikk -strongPassword: Sterkt passord +veryStrongPassword: Sterkt passord noFollowRequests: Du har ingen utestående følgeforespørsler openImageInNewTab: Åpne bilder i ny fane dashboard: Dashbord diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 43eeb3c8f0..ec27ccbe24 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -454,7 +454,7 @@ tooShort: "Zbyt krótka" tooLong: "Zbyt długa" weakPassword: "Słabe hasło" normalPassword: "Dobre hasło" -strongPassword: "Silne hasło" +veryStrongPassword: "Silne hasło" passwordMatched: "Pasuje" passwordNotMatched: "Hasła nie pasują do siebie" signinWith: "Zaloguj się z {x}" diff --git a/locales/ro-RO.yml b/locales/ro-RO.yml index a0392abc98..acf4084403 100644 --- a/locales/ro-RO.yml +++ b/locales/ro-RO.yml @@ -464,7 +464,7 @@ tooShort: "Prea scurt" tooLong: "Prea lung" weakPassword: "Parolă slabă" normalPassword: "Parolă medie" -strongPassword: "Parolă puternică" +veryStrongPassword: "Parolă puternică" passwordMatched: "Se potrivește!" passwordNotMatched: "Nu se potrivește" signinWith: "Autentifică-te cu {x}" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 5c81e19a04..551db955d4 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -460,7 +460,7 @@ tooShort: "Слишком короткий" tooLong: "Слишком длинный" weakPassword: "Слабый пароль" normalPassword: "Годный пароль" -strongPassword: "Надёжный пароль" +veryStrongPassword: "Надёжный пароль" passwordMatched: "Совпали" passwordNotMatched: "Не совпадают" signinWith: "Использовать {x} для входа" diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml index e1ed198e4e..5d9e535491 100644 --- a/locales/sk-SK.yml +++ b/locales/sk-SK.yml @@ -461,7 +461,7 @@ tooShort: "Príliš krátke" tooLong: "Príliš dlhé" weakPassword: "Slabé heslo" normalPassword: "Dobré heslo" -strongPassword: "Silné heslo" +veryStrongPassword: "Silné heslo" passwordMatched: "Heslá sú rovnaké" passwordNotMatched: "Heslá nie sú rovnaké" signinWith: "Prihlásiť sa použitím {x}" diff --git a/locales/sv-SE.yml b/locales/sv-SE.yml index 5e7ed1d768..13cb3c66ec 100644 --- a/locales/sv-SE.yml +++ b/locales/sv-SE.yml @@ -381,7 +381,7 @@ noMessagesYet: Inga meddelande ännu newMessageExists: Det finns inga nya meddelanden weakPassword: Svagt lösenord normalPassword: Dugligt lösenord -strongPassword: Starkt lösenord +veryStrongPassword: Starkt lösenord passwordMatched: Matchar passwordNotMatched: Matchar inte signinWith: Logga in med {x} diff --git a/locales/th-TH.yml b/locales/th-TH.yml index 4a668f910a..93904a1125 100644 --- a/locales/th-TH.yml +++ b/locales/th-TH.yml @@ -452,7 +452,7 @@ tooShort: "สั้นเกินไปนะ" tooLong: "ยาวเกินไปนะ" weakPassword: "รหัสผ่าน แย่มาก" normalPassword: "รหัสผ่านปกติ" -strongPassword: "รหัสผ่านรัดกุมมาก" +veryStrongPassword: "รหัสผ่านรัดกุมมาก" passwordMatched: "ถูกต้อง!" passwordNotMatched: "ไม่ถูกต้อง" signinWith: "ลงชื่อเข้าใช้ด้วย {x}" diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml index cb36a6a07c..66bfe28133 100644 --- a/locales/tr-TR.yml +++ b/locales/tr-TR.yml @@ -521,7 +521,7 @@ newMessageExists: Yeni mesaj yok invitations: Davetler invitationCode: Davet kodu signinWith: '{x} ile giriş yap' -strongPassword: Güçlü şifre +veryStrongPassword: Güçlü şifre passwordNotMatched: Uyuşmuyor signinFailed: Giriş yapılamadı. Şifre ve ya kullanıcı adı yanlış. tapSecurityKey: Güvenlik anahtarınıza dokunun diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index aa669f596f..206a52ce95 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -460,7 +460,7 @@ tooShort: "Занадто короткий" tooLong: "Занадто довгий" weakPassword: "Слабкий пароль" normalPassword: "Достатній пароль" -strongPassword: "Міцний пароль" +veryStrongPassword: "Міцний пароль" passwordMatched: "Все вірно" passwordNotMatched: "Паролі не співпадають" signinWith: "Увійти за допомогою {x}" diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml index 4c6a01f1ae..f24ef9a864 100644 --- a/locales/vi-VN.yml +++ b/locales/vi-VN.yml @@ -462,7 +462,7 @@ tooShort: "Quá ngắn" tooLong: "Quá dài" weakPassword: "Mật khẩu yếu" normalPassword: "Mật khẩu tạm được" -strongPassword: "Mật khẩu mạnh" +veryStrongPassword: "Mật khẩu mạnh" passwordMatched: "Trùng khớp" passwordNotMatched: "Không trùng khớp" signinWith: "Đăng nhập bằng {x}" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index e75f7a6493..8e7923670d 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -451,7 +451,7 @@ tooShort: "太短" tooLong: "太长" weakPassword: "密码强度:弱" normalPassword: "密码强度:中等" -strongPassword: "密码强度:强" +veryStrongPassword: "密码强度:强" passwordMatched: "密码一致" passwordNotMatched: "密码不一致" signinWith: "以 {x} 登录" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 8284ca87cb..d9916dca19 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -449,7 +449,7 @@ tooShort: "過短" tooLong: "過長" weakPassword: "密碼強度過弱" normalPassword: "密碼強度普通" -strongPassword: "密碼強度高" +veryStrongPassword: "密碼強度高" passwordMatched: "密碼一致" passwordNotMatched: "密碼不一致" signinWith: "以{x}登錄" diff --git a/packages/backend-rs/Makefile b/packages/backend-rs/Makefile index 57d5c66b1c..7e1555f9ec 100644 --- a/packages/backend-rs/Makefile +++ b/packages/backend-rs/Makefile @@ -26,7 +26,7 @@ regenerate-entities: .PHONY: update-index update-index: index.js index.d.ts -index.js index.d.ts: $(SRC) +index.js index.d.ts: $(SRC) package.json NODE_OPTIONS='--max_old_space_size=3072' pnpm run build:debug [ -f built/index.js ] && [ -f built/index.d.ts ] rm --force index.js index.d.ts diff --git a/packages/backend/src/server/api/endpoints/notes/renotes.ts b/packages/backend/src/server/api/endpoints/notes/renotes.ts index 16304dd269..1f9a55588d 100644 --- a/packages/backend/src/server/api/endpoints/notes/renotes.ts +++ b/packages/backend/src/server/api/endpoints/notes/renotes.ts @@ -46,7 +46,7 @@ export const paramDef = { type: "string", enum: ["all", "renote", "quote"], nullable: true, - default: null, + default: "all", }, }, required: ["noteId"], diff --git a/packages/client/package.json b/packages/client/package.json index a7d4876ac3..6c7013d4e1 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -34,7 +34,7 @@ "@types/tinycolor2": "1.4.6", "@types/uuid": "10.0.0", "@vitejs/plugin-vue": "5.0.5", - "@vue/runtime-core": "3.4.30", + "@vue/runtime-core": "3.4.31", "autobind-decorator": "2.4.0", "autosize": "6.0.1", "broadcast-channel": "7.0.0", @@ -43,6 +43,7 @@ "chartjs-chart-matrix": "2.0.1", "chartjs-plugin-gradient": "0.6.1", "chartjs-plugin-zoom": "2.0.1", + "check-password-strength": "2.0.10", "city-timezones": "1.2.1", "compare-versions": "6.1.0", "cropperjs": "2.0.0-rc.0", @@ -76,7 +77,6 @@ "seedrandom": "3.0.5", "stringz": "2.1.0", "swiper": "11.1.4", - "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", "throttle-debounce": "5.0.2", "tinycolor2": "1.6.0", @@ -86,7 +86,7 @@ "uuid": "10.0.0", "vite": "5.3.2", "vite-plugin-compression": "0.5.1", - "vue": "3.4.30", + "vue": "3.4.31", "vue-draggable-plus": "0.5.0", "vue-plyr": "7.0.0", "vue-prism-editor": "2.0.0-alpha.2", diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index 1d38b2798f..c4830f1210 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -7,7 +7,7 @@ import { alert, api, popup, popupMenu, waiting } from "@/os"; import icon from "@/scripts/icon"; import { del, get, set } from "@/scripts/idb-proxy"; import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; -import type { MenuButton, MenuUser } from "./types/menu"; +import type { MenuUser } from "./types/menu"; // TODO: 他のタブと永続化されたstateを同期 diff --git a/packages/client/src/components/MkPostForm.vue b/packages/client/src/components/MkPostForm.vue index 85da6ac55a..ce1119ed82 100644 --- a/packages/client/src/components/MkPostForm.vue +++ b/packages/client/src/components/MkPostForm.vue @@ -1195,6 +1195,13 @@ async function post() { } } + if ( + defaultStore.state.addAlt4MeTag && + files.value.some((f) => f.comment == null || f.comment.length === 0) + ) { + text.value = `${text.value.trimEnd()}\n#Alt4Me`; + } + const processedText = preprocess(text.value); let postData: ApiTypes.NoteSubmitReq = { diff --git a/packages/client/src/components/MkRenoteButton.vue b/packages/client/src/components/MkRenoteButton.vue index 53c1994e65..e4cdddc1ca 100644 --- a/packages/client/src/components/MkRenoteButton.vue +++ b/packages/client/src/components/MkRenoteButton.vue @@ -52,7 +52,8 @@ const canRenote = computed( useTooltip(buttonRef, async (showing) => { const renotes = await os.api("notes/renotes", { noteId: props.note.id, - limit: 11, + limit: 10, + filter: "renote", }); const users = renotes.map((x) => x.user); diff --git a/packages/client/src/components/MkSignup.vue b/packages/client/src/components/MkSignup.vue index 05119809d4..c23bea58a2 100644 --- a/packages/client/src/components/MkSignup.vue +++ b/packages/client/src/components/MkSignup.vue @@ -179,23 +179,29 @@ import { computed, ref } from "vue"; -import getPasswordStrength from "syuilo-password-strength"; +import { passwordStrength as checkPasswordStrength } from "check-password-strength"; import { toUnicode } from "punycode/"; import MkButton from "./MkButton.vue"; import MkInput from "./form/input.vue"; @@ -333,7 +339,7 @@ const emailState = ref< | "unavailable" | "error" >(null); -const passwordStrength = ref<"" | "low" | "medium" | "high">(""); +const passwordStrength = ref<"" | "Weak" | "Medium" | "Good" | "Great">(""); const passwordRetypeState = ref(null); const submitting = ref(false); const ToSAgreement = ref(false); @@ -423,15 +429,42 @@ function onChangeEmail(): void { }); } +const passwordStrengthOptions = [ + { + id: 0, + value: "Weak", + minDiversity: 0, + minLength: 0, + }, + { + id: 1, + value: "Medium", + minDiversity: 2, + minLength: 8, + }, + { + id: 2, + value: "Good", + minDiversity: 3, + minLength: 16, + }, + { + id: 3, + value: "Great", + minDiversity: 4, + minLength: 32, + }, +]; + function onChangePassword(): void { if (password.value === "") { passwordStrength.value = ""; return; } - - const strength = getPasswordStrength(password.value); - passwordStrength.value = - strength > 0.7 ? "high" : strength > 0.3 ? "medium" : "low"; + passwordStrength.value = checkPasswordStrength( + password.value, + passwordStrengthOptions, + ).value; } function onChangePasswordRetype(): void { diff --git a/packages/client/src/pages/settings/general.vue b/packages/client/src/pages/settings/general.vue index 5f9d252253..54b9f4aa62 100644 --- a/packages/client/src/pages/settings/general.vue +++ b/packages/client/src/pages/settings/general.vue @@ -127,12 +127,6 @@ {{ i18n.ts.openServerInfo }} - {{ - i18n.ts.showNoAltTextWarning - }} - {{ - i18n.ts.showAddFileDescriptionAtFirstPost - }} {{ i18n.ts.autocorrectNoteLanguage }} @@ -191,6 +185,15 @@ + {{ + i18n.ts.showNoAltTextWarning + }} + {{ + i18n.ts.showAddFileDescriptionAtFirstPost + }} + {{ + i18n.ts.addAlt4MeTag + }} {{ i18n.ts.expandOnNoteClick }}