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>
* Move permissions to centralized spot
* Move `identifiableTypes` to `BaseItemKind`. Use `showEditMenu`
* Cleanup showMenu options for iOS and tvOS. Metadata allows Subtitle, Lyrics, and Collection edits as well.
* Comment out Lyrics and Subtitles with a TODO for when they are available.
* Update BaseItemKind.swift
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Review Revisions
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Buildable!
* Update file names.
* Default sort to sort name NOT name.
* SessionInfoDto vs SessionInfo
* Targetting
* Fix many invalid `ItemSortBy` existing. Will need to revisit later to see which can still be used!
* ExtraTypes Patch.
* Move from Binding to OnChange. Tested and Working.
* Update README.md
Update README to use 10.10.6. Bumped up from 10.8.13
* Update to Main on https://github.com/jellyfin/jellyfin-sdk-swift.git
* Now using https://github.com/jellyfin/jellyfin-sdk-swift.git again!
* Paths.getUserViews() userId moved to parameters
* Fix ViewModels where -Dto suffixes were removed by https://github.com/jellyfin/Swiftfin/pull/1465 auto-merge.
* SupportedCaseIterable
* tvOS supportedCases fixes for build issue.
* cleanup
* update API to 0.5.1 and correct VideoRangeTypes.
* Remove deviceProfile.responseProfiles = videoPlayer.responseProfiles
* Second to last adjustment:
Resolved: // TODO: 10.10 - Filter to only valid SortBy's for each BaseItemKind.
Last outstanding item: // TODO: 10.10 - What should authenticationProviderID & passwordResetProviderID be?
* Trailers itemID must precede userID
* Force User Policy to exist.
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Good start but some missing items:
- Upload image isn't working
- Only a single image is shown per section. Need to make this the HCollection of all images for the group
* Upload still failing but now update and set are 2 different processes because I think that's better. Spacing on the add screen is still all wrong but we're getting closer
* ~70% Complete
TODO:
- Spacing for remote portrait images is wrong & cramped
- Upload image from file browser never works & produces 400 error
- Show all images for an item.imageType opposed to just the first
- Setting image works but produces a 400 error
- Error alert looks bad
* Merge with Main
* URL Changes
* Updating logic and confirmation screen
* Lots of changes:
Selecting a Remote image is now working without error and works consistently!
Upload a local file is still broken
Item types with multiple images is working as intended now!
Overriding an image on index doesn't seem to work but it doesn't work for Web either so........
UI is way more jank but the hard parts are getting solved!
* Breaking this even more with the hopes of a better tomorrow.
* Getting better?
* Refreshing is working but I might need to make this work mroe effiently...
* 90% There!
* Ability to cancel the update
* Still no luck uploading images?
* Stop reordering on deletion/addition
* 2025 disclaimers
* Uploading finally works!
* Functional but messy.
TODO:
- Figure out better resizing if too big?
- Upload from Photos
- Move upload logic to imageViewModel and make RemtoeImageViewModel PagingLibraryViewModel conformant
- Create a ImageInfoView for Selection & Deletion.
* Now conforms to PagingLIbraryViewModel but everything else is a mess
* Close!
* First no all appears
* Fix double pop/routerdismiss
* Uploading from Photos is (Finally) Ready!
* wip
* Reuse PhotoPicker and Crop code.
* 4/6 of the codefactor changes
* Pass around the URL NOT the UIImage
* Clean up ItemImageDetails types.
* Make sure the ImageView mirrors the real shape of the image. Posters should be uniform but this is the selection for the image so the dimensions are important to demonstrate.
* Rating Type label.
* Delete confirmation dialog.
* Remove double sizing. Remove Unused ViewModel. Change PhotoPicker to a checkmark instead a 1. Since there is only ever one picture selected, no need to count the images.
* Get the image URL as needed. No more Truples. Localize ImageTypes.
* Remove attempt at ImageInfo Poster Comformance.
* Even more cleanup
* Delete vs Save flip
* Hide delete button
* Even more cleanup
* Fix tvOS build issues.
* Reduce delay & remove unused comment. Should finally be ready again.
* wip
* Update ItemImagesView.swift
* Event Only on upload failures.
* Remove unnecessary ViewModel's from tvOS.
* Add dismiss action to RemoteSearchResultView. While I am doing this here, fix it there.
* Move From Coordinator -> .Sheet. This fixes the popping issue / delay requirement!
* wip
* wip
* wip
* wip
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Mirror tvOS to iOS
* Fix router dismiss. Remove redundent viewModel.refresh from itemView
* reset dev team info
* View Modifier and ViewModel cleanup
* Remove testing comments / events
* Cleanup `.errorMessage($error)`
* Cleanup all viewModel.states for item editing, add errorViews if the data fails to load, and add errorMessage on failed events.
MARK sections: Var/Func always unless only Body and Var/Lets only if there are several of varying types / functions.
* Cleanup / Genre & Tag Management
* Move searching to a backgroundState. Fix the font Color when bulk editing tags / genres should be secondary when editing & not selected
* Cleanup
* Now that cancelling is handled better this should prevent the issue where the suggestions fails to update on a letter entry
* Change from using an event for searchResults to using a published searchResults var
* Moved all logic to a local list where all genres/tags are populated on refresh then filterd locally instead of calling the server for changes.
* Inheritance
* Split metadata from components then alphabetize. Also, fix but where you can't add a people
* People & Permissions
* Functional but dirty. TODO: Cleanup + Trie? Trei?
* nil coalescing operator is only evaluated if the lhs is nil, coalescing operator with nil as rhs is redundant
* TODO: Search improvements & Delay search on name change
* Cleanup & reordering
* Debouncing
* Trie implementation
* Permissions Cleanup Squeezing in: https://github.com/jellyfin/jellyfin-web/issues/6361
* enhance Trie
* cleanup
* cleanup
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Playback Quality - Learn More
* TODO: Fix leading not working on second line.
* Remove layoutDirection.
* Implement for tvOS. Slightly different spacing.
* VStack
* WIP - tvOS Implementaiton. SUBJECT TO CHANGE / ELIMINATION.
* Background Icon & formatting
* wip
* Review Changes. Remove unused Strings, clean up comments.
* Remove duplicate items used for testing
* Remove tvOS scrollIfLargerThanContainer for now.
* Edit Text-based Metadata
* ViewModel Cleanup
* use binding extensions
* Huge overhaul:
- Fix the notification when metadata was updated to work with 100% consistency
- Flip the locking to be true -> lock like server
- Redo the whole itemEditorViewModel to be more in-line with other viewModels | also fixes iPad weirdness
- Use itemViewModel for the edit view so I can just reuse those existing notifications instead of recreating the wheel
- More human dates for people - Date of death instead of "End date" (yikes)
* String fixes & overview size
* Fix build issues & String cleanup
* fix overview sizing, cleanup
* itemMetadataWasEdited -> temMetadataDidChange
* Creation of the NavigationBarMenuButtonModifier for an "ellipsis.circle" menu object in the toolbar. Makes it easier to ensure that this format looks the same throughout.
* Custom vs Official Rating + Menu Button Label change
* Menu button spacing and groundwork for other menu items (canDownload) since we already have the bool available. Currently disabled.
* Linting
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* [iOS] Creation of the enableItemEditor & enableItemDeletion settings. Creation of the ItemEditorView. Creation of Refresh/Deletion Logic and Buttons. Wrap buttons in permissions.
* You can make delete permissions without edit (admin) permissions. So, flip this so you can get to the edit page but editing is disabled if you're not an admin. The Delete option requires that the delete toggle is enabled and the user has permissions.
* Move deletion from the editView to the ItemView
* Delete from PagingLibraryView on Deletion
* Only enable delete if the user can delete something. Check deletion permission on Item level. Only allow editing for admins.
* Review Changes: ec33a6b63c
* wip
* Update RefreshMetadataButton.swift
* Update Shared/ViewModels/ItemEditorViewModel/RefreshMetadataViewModel.swift
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Update Shared/Coordinators/ItemEditorCoordinator.swift
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
* Reviews minus a learn more button
* LearnMoreAttempt v1
* Learn more v2 - Much better
* Learn More v3
* Learn More comments cleanup
* Learn More: https://github.com/jellyfin/Swiftfin/pull/1310#discussion_r1843149572
* clean up
* Remove Replace since it's already covered. Localize.
* clean up
---------
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>