Merged
Conversation
This PR looks to add extending functionality to the Dashboard page so that developers can add to the existing widgets on the Dashboard, or, completely override them and build a custom dashboard to their needs.
…hp#2317) This PR adds the missing getNavigationLabel() method to EditShippingZone to maintain consistency with other pages in the module (ManageShippingRates and ManageShippingExclusions). Fixes issue lunarphp#2316 --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
I added the Romanian translations to the package. --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
I added Hungarian translations to the package. --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
I added Brazilian Portuguese translations to the package. --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Add missing translation files related to *taxes*. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added Tax resource translations for German, Spanish, French, Dutch, Polish, and Vietnamese (singular and plural labels). * Added German translations for the Tax Rate resource, including table columns (Name, Tax Zone, Priority) and form fields (Name, Priority, Tax Zone). * Improves multilingual support across the admin interface for tax-related sections. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
…unarphp#2282) Added these translations while I investigated this issue: lunarphp#2263 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added “Values” section translations across multiple languages (de, en, es, fr, nl, pl, vi). * Introduced form label for the “Name” field in the Values section for all supported languages. * Enhanced German locale with a section title (“Werte”) and table column labels (“Name”, “Position”) for the Values list. * Improves multilingual consistency and clarity in the admin interface. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This PR adds Turkish translation files to the project. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Comprehensive Turkish (tr) locale added across the admin UI (resources, forms, tables, pages, widgets, relation managers) covering catalog, sales, settings and staff areas. * Turkish translations added for core exception messages. * Turkish locale support added for table‑rate shipping (navigation, shipping methods, zones, exclusion lists, relation managers). <!-- end of auto-generated comment: release notes by coderabbit.ai -->
…unarphp#2330) Add support for when postgres casts booleans to php bool, thereby casting `false` to an empty string for the match case Please describe your Pull Request as best as possible, explaining what it provides and why it is of value, referencing any related Issues. Try to include the following in your Pull Request, where applicable... - Documentation updates - Automated tests --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
) could be a breaking change Docs: lunarphp/docs#1
This will fix issue lunarphp#2265 I am not sure about the naming of the publish tag. I think lunar.pdf fits better as this will only target all pdfs currently (and in the future) in lunar. If accepted we need to edit the docs aswell. Docs: lunarphp/docs#3 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
Removes docs from monorepo in favour of our new Mintlify docs stored at https://github.com/lunarphp/docs
lunarphp#2278 Removed the `jsonb` changes from shipping tables but didn't reapply them via the shipping addon. This PR mimics the core migration but within the shipping addon. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - Chores - Migrated shipping method data storage to a more efficient format on PostgreSQL, improving query performance and scalability. - Backward-compatible and reversible; no action required for non-PostgreSQL setups. - Ensures more consistent behavior and prepares the system for future enhancements. - Seamless upgrade path with automatic migration during update; no user-facing changes expected. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk> Co-authored-by: Author <actions@github.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Permanently deleting a product now removes both direct and reverse product relationships, ensuring no lingering links appear on related products. * Improves data integrity by fully clearing associated relationships during force delete, preventing inconsistent or orphaned connections. * Soft-delete behavior is unchanged. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Alec Ritson <hello@itsalec.co.uk> Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
If we were to use a different status than `published | draft | deleted`, we get an exception in products table. This PR just adds `default` status color handling. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Product status badges now display a consistent default color when an unrecognized status appears, improving readability and visual consistency in the products table. * Previously, only certain statuses had defined colors, which could lead to unexpected or missing styling for others. * No other user-facing behavior changes. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Jakub Theimer <5587309+theimerj@users.noreply.github.com> Co-authored-by: Alec Ritson <hello@itsalec.co.uk> Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
components->line requires two arguments in Laravel 12, causing an ArgumentCountError with a single string. Using components->info preserves formatting and restores compatibility. The $this->line helper has a different API and is not interchangeable with components->line. --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
This pull requests intends to solve issue lunarphp#2324. Co-authored-by: Jérémy ARGOUD <jargoud@webqam.fr>
This PR improves support for custom models that implement the Purchasable interface but are not standard ProductVariants. Currently, using a custom purchasable can lead to two exceptions: 1. DiscountManager error: It assumes the purchasable always has a ->product->collections relationship, causing a null pointer exception if it doesn't. 2. Admin Panel error: The order details view assumes the purchasable has a getOptions() method, which is specific to ProductVariant. This PR resolves these issues with minimal impact: 1. The DiscountManager call chain is made null-safe to gracefully handle purchasables without product collections. 2. The Purchasable interface now includes getOptions(). This makes the Purchasable interface more robust and truly extensible as intended. Any feedback is welcome. --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
This PR fixes 2 issues when rendering the 'Activity Log' component on the order screen in the admin. The first issue is visible when using Filament Notifications. The z-index of the comment form in the activity log is set to 20 which brings it in front of the Filament notifications sidebar when it is opened. The second issue is when using dark mode. The date heading in the activity log is using the 'text-gray-300' Tailwind class, however this class isn't generated so the 'date' heading in the activity log is black and cannot be read. --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
Closes lunarphp#2284 (comment) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Improved customer selection when attaching to discounts: supports multi-word, space-separated searching that matches first name, last name, and company name to return more accurate results. * Faster narrowing of results when entering multiple terms, making it easier to find customers by partial names or company matches. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk> Co-authored-by: Author <actions@github.com>
…egardless of the coupon code on the cart (lunarphp#2300) Allow the discounts to be applied if no condition coupon exists regardless of cart coupon. This way discounts that doesn't have a coupon requirement can be added and not be removed because of another coupon discount that is applied. Current behaviour: if a discount that has a coupon requirement is applied. and other discounts that doesn't have a coupon requirements are applied as well. the coupon code discount causes the other discounts not to apply to the cart at all because of a wrong $validCoupon comparison logic. Expected behaviour: discounts should be applied if there is no coupon code requirement regardless of the coupon code set on the cart. this way coupon discounts doesn't simply override all other discounts. --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
The Meilisearch package was originally created to add functionality missing from Laravel Scout, but Scout now includes this functionality (`php artisan scout:sync-index-settings`) so it's redundant. This PR removes the package from the monorepo and the actual repo shall be marked as archived in GitHub.
We now have dedicated docs using Mintlify, so we don't want to be maintaining lots of README files, etc. Instead, we should highlight that the individual package repo's are read-only subtree splits similar to how Filament do it. E.g. <img width="594" height="356" alt="image" src="https://github.com/user-attachments/assets/aa107958-0a2a-45b6-b75c-2f084499d310" />
In the panel, AtrributeGroup and Attibute position is not used to when configuring product type attributes
This PR fixes a 500 error from being displayed when a PDF is generated for an order with no shipping address.
PR to revert lunarphp#2249 as this is seems to have broken breadcrumbs on collections. Suggest we have a look at performance in more depth as the collection tree will also stall if you have over 1k collections in a group, suggesting there is a bigger issue at player with that. Closes lunarphp#2360
Currently the `enabled` column on a Shipping Rate doesn't actually get taken into account during resolution. This PR looks to add the `enabled` check to the `ShippingRateResolver` whilst also providing an action in the panel to toggle this value. --------- Co-authored-by: Author <actions@github.com>
…ssionManager (lunarphp#2356) Replaced a typo in the `allowsMultipleOrdersPerCart` function in `packages/core/src/Managers/CartSessionManager.php` the function was trying to access the the `cart_session` config with a wrong key: `allowsMultipleOrdersPerCart`. I replaced it with the key that was actually in the config: `allow_multiple_orders_per_cart`
This PR prevents reward lines from producing a negative discounted subtotal. Currently, if a BuyXGetY discount grants multiple free items but the cart contains fewer qualifying products, the discount calculation can push the subtotal below zero. By wrapping the final discounted amount in max(0, ...), we ensure the subtotal never becomes negative. If the discount exceeds the cart line value, the subtotal is simply set to 0.00 until the customer adds enough qualifying items. --------- Co-authored-by: Author <actions@github.com>
This adds meta to Product Options & Product Option Values to support customisation, e.g. assigning hex colours. It also updates the model annotations and corrects the `name` cast on ProductOptionValue (this might be considered a breaking change...) ## TODO - [ ] Add docs PR, including upgrade guide entry
This reverts commit 54816a3.
…t deletion on user logout (lunarphp#2349) Added 'delete_on_logout' config option within cart_session.php config file to allow the prevention of the cart deletion when a user logs out --------- Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
PR to allow product association types to be customised. - Deprecates the use of constants like `UP_SELL` on the model - Introduces a new enum to handle association types - Allow the enum to be replaced in config by developers. Closes lunarphp#2337 --------- Co-authored-by: Author <actions@github.com> Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
…hp#2353) When extending a model multiple times (e.g., CustomProduct extends Product extends BaseModel), the table prefix was being applied multiple times, resulting in table names like "lunar_lunar_products" instead of "lunar_products". **Problem:** The `HasModelExtending::getTable()` method instantiated parent classes recursively with `(new $parentClass)->table`, causing the BaseModel constructor to apply the prefix at each inheritance level. **Solution:** - Added `resolveRootModelClass()` to find the root Lunar model in the inheritance chain - Added `resolveBaseTableName()` to get the base table name using reflection without triggering the constructor - Modified `getTable()` to resolve the root model and apply the prefix only once **Test Coverage:** Added test case for multi-level inheritance to ensure prefix is not duplicated across multiple levels of model extension.
This PR builds on the work done in lunarphp#2250 It: 1. Adds a brand check 2. Seperates collections into its own relation manager to allow it to continue to use collection_discount table It's breaking, but for v2 we should consolidate everything into the discountable table - I missed these when I did this initial piece of work. It would make the UI much more streamlined and from a data point of view reduce the redundancy of the tables. --------- Co-authored-by: fredmarmillod <fmarmillod@gmail.com> Co-authored-by: Author <actions@github.com> Co-authored-by: Frédéric Marmillod <9134609+fredmarmillod@users.noreply.github.com> Co-authored-by: Glenn Jacobs <glenn@neondigital.co.uk>
Currently the activity log feed overlaps the submit button, meaning in some cases users cannot submit comments. This PR prevents pointer events on that overlap, but not on the items themselves, so whatever happens you can click the submit button. --------- Co-authored-by: Author <actions@github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Please describe your Pull Request as best as possible, explaining what it provides and why it is of value, referencing any related Issues.
Try to include the following in your Pull Request, where applicable...