-
-
Notifications
You must be signed in to change notification settings - Fork 362
Open keygen in a new page #3924
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
📝 WalkthroughWalkthroughUpdated 21 language translation files to add Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
Pre-merge checks✅ Passed checks (1 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (5)
lang/el/dialogs.php (1)
74-74: Security attributes correctly added.The
target="_blank"andrel="noopener noreferrer"attributes are properly implemented, ensuring the link opens securely in a new tab and preventing potential security issues like tabnapping.Optional: Consider translating the message to Greek.
The
expired_licensemessage is currently in English. While this doesn't block the PR, translating it to Greek would improve consistency with the rest of the file.lang/nl/dialogs.php (1)
74-74: Security attributes correctly added.The
target="_blank"andrel="noopener noreferrer"attributes are properly implemented, ensuring the link opens securely in a new tab.Optional: Consider translating the message to Dutch.
The
expired_licensemessage is currently in English. While this doesn't block the PR, translating it to Dutch would improve consistency with other translated messages in this file (e.g.,enter_license,license_key,invalid_license).lang/it/dialogs.php (1)
74-74: Security attributes correctly added.The
target="_blank"andrel="noopener noreferrer"attributes are properly implemented, ensuring the link opens securely in a new tab.Optional: Consider translating the message to Italian.
The
expired_licensemessage is currently in English. While this doesn't block the PR, translating it to Italian would improve consistency with other translated messages in this file.lang/es/dialogs.php (1)
74-74: Security attributes correctly added.The
target="_blank"andrel="noopener noreferrer"attributes are properly implemented, ensuring the link opens securely in a new tab.Optional: Consider translating the message to Spanish.
The
expired_licensemessage is currently in English. While this doesn't block the PR, translating it to Spanish would improve consistency with other translated messages in this file (e.g., lines 71-73, 75).lang/fr/dialogs.php (1)
74-74: Good security practice withrel="noopener noreferrer".The addition of
target="_blank"andrel="noopener noreferrer"correctly prevents potential security issues (tabnabbing,window.openeraccess) when opening the external keygen link. This improves both security and user experience.Note: The message text appears to be in English rather than French. This seems to be a pre-existing condition and outside the scope of this PR, but consider translating this string in a future update for consistency with the rest of the French locale.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (21)
lang/ar/dialogs.phplang/cz/dialogs.phplang/de/dialogs.phplang/el/dialogs.phplang/en/dialogs.phplang/es/dialogs.phplang/fa/dialogs.phplang/fr/dialogs.phplang/hu/dialogs.phplang/it/dialogs.phplang/ja/dialogs.phplang/nl/dialogs.phplang/no/dialogs.phplang/pl/dialogs.phplang/pt/dialogs.phplang/ru/dialogs.phplang/sk/dialogs.phplang/sv/dialogs.phplang/vi/dialogs.phplang/zh_CN/dialogs.phplang/zh_TW/dialogs.php
🧰 Additional context used
📓 Path-based instructions (1)
**/*.php
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
**/*.php: Any new PHP file should contain the license header and have a single blank line after the opening PHP tag
Variable names should be in snake_case in PHP
Apply the PSR-4 coding standard in PHP
Use in_array() with true as the third parameter in PHP
Only use booleans in if statements, not integers or strings
Use strict comparison (===) instead of loose comparison (==)
Avoid code duplication in both if and else statements
Do not use empty() in PHP
Use the moneyphp/money library for handling monetary values in PHP
Never use floats or doubles to represent monetary values; use integers representing the smallest currency unit (e.g., cents for USD)
**/*.php: Write or extend executable specifications (unit, behaviour, or scenario tests) ahead of implementation, confirm they fail, and then drive code to green before refactoring. List the expected success, validation, and failure branches and add thin failing tests for each path.
For PHP code, adhere to conventions: license headers in new files, strict comparison (===), no empty(), in_array() with third parameter true, snake_case variables, PSR-4 standard, test base classes (AbstractTestCase for Unit, BaseApiWithDataTest for Feature_v2).
Always run phpunit tests. If a test remains red, disable it with a TODO, note the reason, and capture the follow-up in the relevant plan.
Spotless now uses Palantir Java Format 2.78.0 with a 120-character wrap; configure IDE formatters to match before pushing code changes.
Keep each increment's control flow flat by delegating validation/normalisation into tiny pure helpers that return simple enums or result records, then compose them instead of introducing inline branching that inflates the branch count per change.
When introducing new helpers/utilities or editing files prone to style violations (records, DTOs, generated adapters), run the narrowest applicable lint target (for example phpstan) before the full pipeline. Note the command in the related plan/task.
For PHP changes, ru...
Files:
lang/ja/dialogs.phplang/sv/dialogs.phplang/el/dialogs.phplang/en/dialogs.phplang/it/dialogs.phplang/vi/dialogs.phplang/pl/dialogs.phplang/pt/dialogs.phplang/es/dialogs.phplang/zh_CN/dialogs.phplang/de/dialogs.phplang/hu/dialogs.phplang/no/dialogs.phplang/cz/dialogs.phplang/sk/dialogs.phplang/fa/dialogs.phplang/ru/dialogs.phplang/fr/dialogs.phplang/zh_TW/dialogs.phplang/ar/dialogs.phplang/nl/dialogs.php
🧠 Learnings (3)
📚 Learning: 2025-12-19T21:01:32.168Z
Learnt from: ildyria
Repo: LycheeOrg/Lychee PR: 3838
File: lang/pl/webshop.php:1-2
Timestamp: 2025-12-19T21:01:32.168Z
Learning: In the Lychee repository, PHP files under the lang/ directory (and its subdirectories) do not require the standard license header. This is an exception to the general PHP license header rule. Ensure all non-lang PHP files continue to include the license header.
Applied to files:
lang/ja/dialogs.phplang/sv/dialogs.phplang/el/dialogs.phplang/en/dialogs.phplang/it/dialogs.phplang/vi/dialogs.phplang/pl/dialogs.phplang/pt/dialogs.phplang/es/dialogs.phplang/zh_CN/dialogs.phplang/de/dialogs.phplang/hu/dialogs.phplang/no/dialogs.phplang/cz/dialogs.phplang/sk/dialogs.phplang/fa/dialogs.phplang/ru/dialogs.phplang/fr/dialogs.phplang/zh_TW/dialogs.phplang/ar/dialogs.phplang/nl/dialogs.php
📚 Learning: 2025-12-19T21:01:45.910Z
Learnt from: ildyria
Repo: LycheeOrg/Lychee PR: 3838
File: lang/ar/webshop.php:1-2
Timestamp: 2025-12-19T21:01:45.910Z
Learning: Do not require license headers for language translation files under the lang/ directory (e.g., lang/ar/webshop.php). These resource files are exempt from header checks; apply header enforcement to other PHP source files in the repo.
Applied to files:
lang/ja/dialogs.phplang/sv/dialogs.phplang/el/dialogs.phplang/en/dialogs.phplang/it/dialogs.phplang/vi/dialogs.phplang/pl/dialogs.phplang/pt/dialogs.phplang/es/dialogs.phplang/zh_CN/dialogs.phplang/de/dialogs.phplang/hu/dialogs.phplang/no/dialogs.phplang/cz/dialogs.phplang/sk/dialogs.phplang/fa/dialogs.phplang/ru/dialogs.phplang/fr/dialogs.phplang/zh_TW/dialogs.phplang/ar/dialogs.phplang/nl/dialogs.php
📚 Learning: 2025-12-28T18:12:55.752Z
Learnt from: ildyria
Repo: LycheeOrg/Lychee PR: 3901
File: app/Providers/AppServiceProvider.php:0-0
Timestamp: 2025-12-28T18:12:55.752Z
Learning: When using Laravel Octane's tick API, Octane::tick(...) returns an InvokeTickCallable that only has ->seconds(int) and ->immediate() methods. There is no ->every(N) method. Use the correct usage: Octane::tick('name', fn() => ...)->seconds(N) or Octane::tick('name', fn() => ..., N). Apply this guideline to PHP files across the project (not just AppServiceProvider.php).
Applied to files:
lang/ja/dialogs.phplang/sv/dialogs.phplang/el/dialogs.phplang/en/dialogs.phplang/it/dialogs.phplang/vi/dialogs.phplang/pl/dialogs.phplang/pt/dialogs.phplang/es/dialogs.phplang/zh_CN/dialogs.phplang/de/dialogs.phplang/hu/dialogs.phplang/no/dialogs.phplang/cz/dialogs.phplang/sk/dialogs.phplang/fa/dialogs.phplang/ru/dialogs.phplang/fr/dialogs.phplang/zh_TW/dialogs.phplang/ar/dialogs.phplang/nl/dialogs.php
⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (19)
- GitHub Check: 2️⃣ PHP dist / 8.5 - postgresql
- GitHub Check: 2️⃣ PHP dist / 8.5 - mariadb
- GitHub Check: 2️⃣ PHP dist / 8.5 - sqlite
- GitHub Check: 2️⃣ PHP dist / 8.4 - sqlite
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- Webshop
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- Precomputing
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- Webshop
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- Unit
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- ImageProcessing
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- Webshop
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- Unit
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- ImageProcessing
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- Precomputing
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- ImageProcessing
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- Feature_v2
- GitHub Check: 1️⃣ PHP tests / 8.5 - sqlite -- Precomputing
- GitHub Check: 1️⃣ PHP tests / 8.5 - postgresql -- Feature_v2
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- Unit
- GitHub Check: 1️⃣ PHP tests / 8.5 - mariadb -- Feature_v2
🔇 Additional comments (13)
lang/hu/dialogs.php (1)
74-74: Missing Hungarian translation for expired license message.The technical implementation of
target="_blank" rel="noopener noreferrer"is correct. However, this Hungarian language file should contain Hungarian translations for better localization coverage.⛔ Skipped due to learnings
Learnt from: ildyria Repo: LycheeOrg/Lychee PR: 3641 File: lang/no/settings.php:9-9 Timestamp: 2025-08-22T06:11:18.329Z Learning: For lang/* translation files in the Lychee project: only review PHP-related issues (syntax, structure, etc.), not translation content, grammar, or language-related nitpicks. The maintainer ildyria has explicitly requested this approach.lang/de/dialogs.php (1)
74-74: Missing German translation for expired license message.The technical implementation is correct (
target="_blank" rel="noopener noreferrer"properly secures the external link), but the message text remains in English instead of German. This is inconsistent with the surrounding translations and affects UX for German-speaking users.🔎 Consider translating to German
- 'expired_license' => 'Your license key has expired. Empty the field or get a new one at <a href="https://keygen.lycheeorg.dev" class="text-primary-500 underline" target="_blank" rel="noopener noreferrer">keygen.lycheeorg.dev</a>.', + 'expired_license' => 'Ihr Lizenzschlüssel ist abgelaufen. Leeren Sie das Feld oder erhalten Sie einen neuen unter <a href="https://keygen.lycheeorg.dev" class="text-primary-500 underline" target="_blank" rel="noopener noreferrer">keygen.lycheeorg.dev</a>.',⛔ Skipped due to learnings
Learnt from: ildyria Repo: LycheeOrg/Lychee PR: 3641 File: lang/no/settings.php:9-9 Timestamp: 2025-08-22T06:11:18.329Z Learning: For lang/* translation files in the Lychee project: only review PHP-related issues (syntax, structure, etc.), not translation content, grammar, or language-related nitpicks. The maintainer ildyria has explicitly requested this approach.Learnt from: ildyria Repo: LycheeOrg/Lychee PR: 3637 File: lang/nl/renamer.php:10-94 Timestamp: 2025-08-20T20:35:04.474Z Learning: In Lychee, translation files are initially created with English strings as placeholders, and actual translations are handled through Weblate (a web-based translation management system). This means finding English text in non-English locale files (like lang/nl/, lang/de/, etc.) is expected and part of their translation workflow, not an issue to flag.lang/cz/dialogs.php (1)
74-74: LGTM! Security best practice applied.The addition of
target="_blank"opens the link in a new tab, andrel="noopener noreferrer"prevents the new page from accessing the opener window and leaking referrer information.lang/ja/dialogs.php (1)
74-74: LGTM! Security best practice applied.The addition of
target="_blank"opens the link in a new tab, andrel="noopener noreferrer"prevents the new page from accessing the opener window and leaking referrer information.lang/vi/dialogs.php (1)
74-74: LGTM! Security best practice applied.The addition of
target="_blank"opens the link in a new tab, andrel="noopener noreferrer"prevents the new page from accessing the opener window and leaking referrer information.lang/no/dialogs.php (1)
74-74: LGTM! Security best practice applied.The addition of
target="_blank"opens the link in a new tab, andrel="noopener noreferrer"prevents the new page from accessing the opener window and leaking referrer information.lang/sv/dialogs.php (1)
74-74: LGTM! Security best practice applied.The addition of
target="_blank"opens the link in a new tab, andrel="noopener noreferrer"prevents the new page from accessing the opener window and leaking referrer information.lang/en/dialogs.php (1)
75-75: LGTM! Security attributes correctly implemented.The addition of
target="_blank"andrel="noopener noreferrer"follows security best practices by opening the link in a new tab while preventing the new page from accessingwindow.openerand avoiding referrer leakage.lang/ar/dialogs.php (1)
74-74: Consistent security improvement across locales.The same security attributes have been correctly applied here as in other locale files. As with
lang/fr/dialogs.php, the English message text appears to be pre-existing and could be translated to Arabic in a future localization pass.lang/sk/dialogs.php (1)
74-74: LGTM!Security attributes correctly applied, consistent with the other locale files in this PR.
lang/fa/dialogs.php (1)
74-74: LGTM!The security improvement is correctly implemented here as well.
lang/pl/dialogs.php (1)
74-74: LGTM!The change is correctly applied, matching the security improvements across all other locale files in this PR.
lang/pt/dialogs.php (1)
74-74: LGTM! Secure external link implementation.The addition of
target="_blank"opens the link in a new tab as intended, andrel="noopener noreferrer"correctly prevents security vulnerabilities (window.opener exploitation and referrer leakage). This follows web security best practices for external links.
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.