Apps that support both mobile and desktop had no way to be filtered
for on the public showcase page - only "Mobile" or "Desktop" existed
as tabs, even though has_mobile/has_desktop were already independent
flags on the model. Adds a third "Cross-Platform" filter tab backed
by the existing withMobile()/withDesktop() scopes.
Also lets a submitter differentiate screenshots by platform once both
are selected, so the showcase card can show the Mobile set on the
Mobile filter and the Desktop set on the Desktop filter. This is
opt-in and additive: the existing screenshots field keeps working
exactly as before for single-platform apps, and is used as the
fallback for both-platform apps that never split their screenshots.
Summary
alongside the existing All Apps / Mobile / Desktop, for apps where both
has_mobile and has_desktop are true. The data already supported this
(independent booleans, and the submission form already lets you check
both) - only the public filtering UI was missing it.
sets once both platforms are selected, via two new nullable
mobile_screenshots / desktop_screenshots columns. The showcase card
now shows whichever set matches the visitor's current filter, falling
back to the original shared screenshots field when no override exists.
touch the new columns, and the existing screenshots field/behavior is
completely unchanged. The Filament admin's existing screenshots field is
also untouched - the new per-platform fields are separate, only shown
when both platform toggles are on.
Test plan
correctness for mobile/desktop/both, incl. per-platform screenshots)
- platform-specific screenshot storage, and cleanup when a platform
is unchecked)
fallback/override logic)
I wasn't able to run these myself in this environment - composer install
needs a licensed Flux UI Pro token I don't have access to here.