Complete rebranding from jellypig to jellyflood including:
- Renamed all jellypig references to jellyflood
- Updated store implementations (jellypigstore -> jellyfloodstore)
- Moved jellypig tvOS to Swiftfin tvOS structure
- Updated service configurations and defaults
- Preserved all Xtream plugin support and EPG functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* WIP
* Remove Divider
* self deprecation message
* `OrderedDictionary<BaseItemKind, [BaseItemDto]>`
* Localization fun
* cleanup
* Remove play button items & order by BaseItemKind.
* Fix AttributesHStack on iPad and make sure they align to the correct side. Looks jarring on Collections since Collections are often more limited on AttributesHStack items.
* Localization fix
* cleanup
* cleanup
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* first string
* add a bunch of localization
* more hardcode to localization
* small changes for two strings
* fix space formatting
* Update Localizable.strings
Put the localizations back in. Don't know why this changes anything but 🤷♂️
* Fix encoding
Why???
Also, missing ;
* implement requested changes
---------
Co-authored-by: Joe Kribs <jpkribs@outlook.com>
* Added add user button to select user bottom bar
* Replaced AddUserButton with NoUserView
This commit removes the AddUserButton as it is no longer required.
Also when no user is logged in the GridView shows a new NoUserView
* Added multi server support
- When no user is logged in. Grid view shows the original AddUserButton.
- When there is a logged in user AddUserButton is replaced with AddUserBottomButton
- AddUserBottomButton will show a menu when in all server mode (just like AddUserbutton)
- Removed NoUserView as it isn't required anymore
- changed bottom bar layout to allow for a larger service selection button
* cleaned up AddUserBottomButton
* cleaned up AddUserBottomButton
fixed formatting
* cleanup
* fix conflict
* cleaned up unused localisation
* cleanup
* removed debug background
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* `VideoRangeType` "Extension" for now it's an enum until 10.10. Otherwise, done.
* Limit lines to 1 and variable width as needed.
* CodeFactor issue resolution
* AttributeViewModifier -> AttributeBadge
* change API
* `WrappingHStack`
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Filter Changes
* Use `viewModel.modifiedFilters` for tracking if the filter has been modified. Update the init and update. Hold only the modified filters in `modifiedFilters` instead of `(modifiedFilters, bool)` since that's just clunky and unnecessary.
* Reset button should be disabled when only THAT filter is non-default.
* ...
* PagingLIbraryViewModel.filterQueryTask is no longer in use since that should now be handled on the FilterViewModel
* fix merge
* cleanup
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Add pin prompt to sign-in screen
* Bring over security views from iOS
* silence tvOS 17 warnings
* Add user profile and security views to routing
* Changes
* revert and remove commented code
* cleanup
* CodeFactor fixes
* Joe's Suggestions:
- Move UserProfileSettings to their own Coordinator
- Make Views Modal to better reflect existing items
- Fix CustomizeSettingsCoordinator (This is on me!)
- Change PINs to use SecureField
- Move all Settings View to use SplitFormWindowView to mirror existing Settings
- Use user profile image for SplitFormWindowView Icon
- Change Profile Security to use LearnMoreModal
- Use suggestion from https://forums.developer.apple.com/forums/thread/739545
- Tag Alert > TextFields with TODO so we can check this on tvOS 18
* Fix PIN for https://forums.developer.apple.com/forums/thread/739545 on SelectUserView
* Fix Build Issue.
* use user
---------
Co-authored-by: chickdan <=>
Co-authored-by: Joe <jpkribs@outlook.com>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Make user profile more generic. Still need to make it work for the reset image / other stuff like delete & username.
* Username Changing and PFP deletion.
* Functional, refreshing, and good to go!
* Clean up localizations
* Migrate [UserDto] -> IdentifiedArrayOf<UserDto>
* Solve "Username should probably be at the top of this section."
* allow notification filter
* WIP:
Created `UserProfileHeroImage` but I haven't used it anywhere.
* Centralize UserProfileHeroImages
* Rename UserProfileImages
* Fix Merge Issue?
* Move to UserProfileImage
* Merge with Main
* Fix Merge?
* Clear the cache on update.
* Delete duplicate `UserProfileImage`
* wip
* wip
* Update ImagePipeline.swift
* fix tvOS build issue and update comment to be more accurate
* clean up
* fix string
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* WIP
* WIP
* Localization and better planning. Remove the Username as this will end up in another section. Updated planning here: https://github.com/jellyfin/Swiftfin/discussions/1283 | 5 more views required!
* Initializing an optional variable with nil is redundant line
* Remove Live TV since that will go in another section
* Cleanup Coordinator / Merge with Main
* Remove all 'Allows' from strings
* Fix Merge Issues
* Use CaseIterablePicker, Binding.map
* BackgroundState == updating, change all of the buttons to visible when custom by process of elimination opposed to the default custom value. Make all of the input fields use temp values to make it less jarring.
* Update SessionsSection.swift
* Learn more!
* Validate > 0, don't allow inputs to be less than 1 and reset tempValues when the enum is updated.
* use new binding extensions
* String fixes
* Don't test against adminDefault for users or userDefault for admins.
* Linting indentation
* Default vs UserDefault + no more reason to have temporary variables.
* cleanup
* format
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Split out Devices Logic - Ready to go!
* Review Items + Reworking the deleteDevices logic to all use the same deleteDevice core + deleteDevices. Delete All Devices now just uses the more generic deleteDevices
* Allow Filtering on UserID for later usage on UserDetailView.
* Fully remove DeleteAll action in favor of Delete Devices. Change view to pass in the viewModel.devices as a 'Delete All' function
* DeviceDetailsView
* Section Split out, Localization, and cleanup.
* I guess I missed there on first upload.
* Initial Select All / Delete Devices logic. Checkbox options on the list. Hopefully this is good.
* Initial Review Item!
* Custom Device Name is now a field. Change DevicesViewModel to Eventful to capture updates
* Revised Device Interaction Buttons
* Remove unused Label.
* Make DeviceRow mirror UserRow. UpdateDevicesView to have DeleteButton when in EditMode. Also, it's EDITMODE not SELECTMODE... Finally, make sure the SelectedDevice and SelectedDevices are both empty if the user tries to delete themselves and fails. Change how the single device delete works to confirm deleting from an array still works as needed.
* wip
* Review Changes: 61b3716239
* Merge issues + testing again to make sure. Checks out.
* wip
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Creation of an Alert Input Button based on the Chevron Button.
* Only one button required for both iOS and tvOS
* wip
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Settings Cleanup. Replace strings with labels. Enforce the same font. Ensure Forms don't get clipped by their boundries. Create consistent, reusable button sizing/coloring. Apply to all Settings Pages.
* Remove custom Button/Form styling in exchange for just using .scrollClipDisabled()
* Swap back to Jellyfin Purple from Purple.
* Remove Check Button. Check all Section Inits where possible. Make Server Details Server non-focusable.
Create a new menu for Server Details selection. This is a WIP awaiting feedback from https://github.com/jellyfin/Swiftfin/pull/1163#discussion_r1705957885
---------
Co-authored-by: Joseph Kribs <joseph@kribs.net>