diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c0ec58ee..dbc9da5c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -254,7 +254,7 @@ jobs: name: windows-msix-installer path: ${{ github.workspace }}/output - - name: Upload to S3 Bucket + - name: Upload to S3 Bucket (Build Title) uses: jakejarvis/s3-sync-action@v0.5.1 with: args: --acl public-read --follow-symlinks @@ -267,6 +267,19 @@ jobs: SOURCE_DIR: ${{ github.workspace }}/output DEST_DIR: ${{ inputs.build-title }} + - name: Upload to S3 Bucket (Latest) + uses: jakejarvis/s3-sync-action@v0.5.1 + with: + args: --acl public-read --follow-symlinks + env: + AWS_ACCESS_KEY_ID: ${{ secrets.S3_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} + AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }} + AWS_S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }} + AWS_REGION: ${{ secrets.S3_REGION }} + SOURCE_DIR: ${{ github.workspace }}/output + DEST_DIR: latest/${{ inputs.flavor }} + - name: Determine Webhook Channel id: webhook uses: actions/github-script@v6 diff --git a/README.md b/README.md index 277dc310..723acc3f 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ All releases for every build channel can be downloaded from the [build bucket](h - [Web](https://web.lunasea.app) - [Windows](https://builds.lunasea.app/#latest/stable/) -> Interested in using prerelease build channels of LunaSea? Learn the differences between all the channels and how to join one [here](https://www.lunasea.app/testflight)! +> Interested in using prerelease build channels of LunaSea? Learn the differences between all the channels and how to join one [here](https://www.lunasea.app/build-channels)! ## Getting Started diff --git a/assets/changelog.json b/assets/changelog.json index 9e26dfee..c3952be4 100644 --- a/assets/changelog.json +++ b/assets/changelog.json @@ -1 +1,34 @@ -{} \ No newline at end of file +{ + "motd": "This release introduces an exciting new feature, support for additional platforms!\n\nVisit the subreddit or Discord server to learn more. Links to both and the page containing builds are available within the resources page in the settings!", + "new": [ + { + "module": "LunaSea", + "changes": [ + "(account) Ability to update your email address", + "(account) Ability to update your password", + "(platform) Support and build LunaSea for web", + "(platform) Support and build LunaSea for Linux", + "(platform) Support and build LunaSea for Windows" + ] + } + ], + "tweaks": [ + { + "module": "Settings", + "changes": [ + "(resources) Add link to LunaSea builds", + "(system) Hide build number on version tile" + ] + } + ], + "fixes": [ + { + "module": "UI/UX", + "changes": [ + "(desktop) Prevent flickering by waiting for window settings to apply", + "(desktop) Set the initial and minimum window sizes", + "(text) Remove usages of tab indentations" + ] + } + ] +} \ No newline at end of file diff --git a/assets/changelog_example.json b/assets/changelog_example.json index 6f77fd88..c41acf83 100644 --- a/assets/changelog_example.json +++ b/assets/changelog_example.json @@ -23,13 +23,5 @@ "" ] } - ], - "platform": [ - { - "module": "", - "changes": [ - "" - ] - } ] } \ No newline at end of file diff --git a/assets/localization/en.json b/assets/localization/en.json index 73f30313..93bd2d7a 100644 --- a/assets/localization/en.json +++ b/assets/localization/en.json @@ -309,6 +309,8 @@ "settings.BroadcastAddressHint2": "Typically this is the IP address of your machine with the last octet set to 255", "settings.BroadcastAddressHint3": "Given an example machine IP address of 192.168.1.111, the resulting broadcast IP address is 192.168.1.255", "settings.BroadcastAddressValidation": "Invalid Broadcast Address", + "settings.Builds": "Builds", + "settings.BuildsDescription": "View and Download All Builds of LunaSea", "settings.CalendarSettings": "Calendar Settings", "settings.ClearConfiguration": "Clear Configuration", "settings.ClearConfigurationHint1": "Are you sure you want to clear your configuration?", diff --git a/assets/localization/fr.json b/assets/localization/fr.json index 09867959..98f884ca 100644 --- a/assets/localization/fr.json +++ b/assets/localization/fr.json @@ -23,28 +23,30 @@ "lunasea.Add": "Ajouter", "lunasea.Alpha": "Alpha", "lunasea.AnErrorHasOccurred": "Une erreur s'est produite", - "lunasea.Ascending": "Ascendant", + "lunasea.Ascending": "Croissant", "lunasea.BackUp": "Sauvegarde", "lunasea.Beta": "Bêta", - "lunasea.BlockView": "Masquer", + "lunasea.BlockView": "Affichage en blocs", "lunasea.BuyMeABeer": "M'acheter une bière", "lunasea.BuyMeABurger": "M'acheter un hamburger", "lunasea.BuyMeACoffee": "M'acheter un café", "lunasea.BuyMeASoda": "M'acheter un soda", "lunasea.Cancel": "Annuler", + "lunasea.Candidate": "Candidat", "lunasea.ChangeProfiles": "Changer de profil", "lunasea.CheckLogsMessage": "Vérifier les journaux pour plus de détails", - "lunasea.Clear": "Effacer", + "lunasea.Clear": "Nettoyer", "lunasea.Close": "Fermer", "lunasea.ComingSoon": "Prochainement", "lunasea.Dashboard": "Tableau de bord", "lunasea.DaysAgo": "Il y a {} jours", "lunasea.Delete": "Supprimer", - "lunasea.Descending": "Descendant", - "lunasea.Develop": "Développement", + "lunasea.Descending": "Décroissant", + "lunasea.Develop": "Développer", "lunasea.Disable": "Désactiver", "lunasea.Disabled": "Désactivé", "lunasea.Dismiss": "Rejeter", + "lunasea.Edge": "Limite", "lunasea.ExternalModules": "Modules externe", "lunasea.Fixes": "Corrections", "lunasea.FullChangelog": "Liste complète des changements", @@ -55,6 +57,7 @@ "lunasea.HoursAgo": "Il y a {} heures", "lunasea.IncorrectEncryptionKey": "Clé de chiffrement incorrecte", "lunasea.Internal": "Interne", + "lunasea.InvalidFileTypeSelected": "Type de fichier sélectionné invalide", "lunasea.JustNow": "À l'instant", "lunasea.Module": "Module", "lunasea.ModuleIsNotEnabled": "{} n'est pas activé", @@ -65,16 +68,19 @@ "lunasea.Options": "Options", "lunasea.Page": "Page", "lunasea.PlatformSpecific": "Spécifique à la plateforme", + "lunasea.PleaseTryAgain": "Veuillez réessayer", "lunasea.Production": "En production", - "lunasea.Refresh": "Rafraichir", + "lunasea.Refresh": "Actualiser", "lunasea.Refreshing": "Actualisation…", "lunasea.Remove": "Retirer", "lunasea.Rename": "Renommer", "lunasea.Restore": "Restorer", + "lunasea.Retry": "Réessayer", "lunasea.ReturnToDashboard": "Retour au tableau de bord", "lunasea.SearchTextBar": "Rechercher…", "lunasea.Set": "Définir", "lunasea.Settings": "Réglages", + "lunasea.Stable": "Stable", "lunasea.StartingView": "Page d'accueil", "lunasea.TryAgain": "Réessayer", "lunasea.Tweaks": "Ajustements", @@ -88,11 +94,29 @@ "overseerr.Users": "Utilisateurs", "overseerr.UnknownUser": "Utilisateur inconnu", "overseerr.NoUsersFound": "Aucun utilisateur trouvé", - "overseerr.Requests": "Requêtes", + "overseerr.Requests": "Demandes", "overseerr.NoRequestsFound": "Aucune demande trouvée", "overseerr.NoRequests": "Aucune demande", "overseerr.OneRequest": "1 demande", - "overseerr.SomeRequests": "{} demandes", + "overseerr.SomeRequests": "{} Demandes", + "overseerr.Audio": "Audio", + "overseerr.Approved": "Approuvé", + "overseerr.Issues": "Problèmes", + "overseerr.NoIssues": "Pas de problème", + "overseerr.NoIssuesFound": "Pas de problème trouvé", + "overseerr.Open": "Ouvrir", + "overseerr.OpenedBy": "Ouvert par {}", + "overseerr.Other": "Autre", + "overseerr.Resolved": "Résolu", + "overseerr.Subtitle": "Sous-titre", + "overseerr.Video": "Vidéo", + "overseerr.Available": "Disponible", + "overseerr.Declined": "Refusé", + "overseerr.PartiallyAvailable": "Partiellement disponible", + "overseerr.Pending": "En attente", + "overseerr.Processing": "En traitement", + "overseerr.Requested": "Demandé", + "overseerr.RequestedBy": "Demandé par {}", "radarr.AddMovie": "Ajouter un film", "radarr.AddMovieAndSearch": "Ajouter + Rechercher", "radarr.AddedTag": "Étiquette ajoutée", @@ -100,23 +124,30 @@ "radarr.All": "Tout", "radarr.Alphabetical": "Alphabétique", "radarr.Approved": "Approuvé", + "radarr.Audio": "Audio", "radarr.Automatic": "Automatique", "radarr.AvailabilityUnknown": "Disponibilité inconnue", "radarr.AvailableIn": "Disponible dans {}", "radarr.AvailableToday": "Disponible aujourd'hui", "radarr.BackupDatabase": "Sauvegarder la base de donnée", + "radarr.BitDepth": "Profondeur de couleur", + "radarr.Channels": "Canaux", "radarr.CinemaDateUnknown": "Date de sortie au cinéma inconnue", + "radarr.Codec": "Codec", "radarr.Configure": "Configurer", "radarr.Copy": "Copier", - "radarr.CopyFull": "Fichiers Hardlink/Copier", - "radarr.CutoffUnmet": "Qualité préférée non atteinte", + "radarr.CopyFull": "Lien physique/Copier les fichiers", + "radarr.CutoffUnmet": "Prérequis non atteints", "radarr.DateAdded": "Date ajoutée", "radarr.DigitalRelease": "Sortie numérique", "radarr.DirectoryNotFound": "Répertoire non trouvé", "radarr.Discover": "Découvrir", + "radarr.Disks": "Disques", "radarr.DownloadFailed": "Échec du téléchargement", "radarr.DownloadIgnored": "Téléchargement ignoré", + "radarr.DynamicRange": "Plage dynamique", "radarr.EditMovie": "Modifier le film", + "radarr.FPS": "IPS", "radarr.FailedToAddTag": "Échec de l'ajout d'une étiquette", "radarr.FileBrowser": "Navigateur de fichier…", "radarr.FilterCatalogue": "Catalogue des filtres", @@ -125,8 +156,8 @@ "radarr.HistoryDescription": "Voir les activités récentes", "radarr.Import": "Importer", "radarr.ImportMode": "Mode d'importation", - "radarr.InCinemas": "Dans les cinémas", - "radarr.InCinemasIn": "Dans les cinémas en {}", + "radarr.InCinemas": "Au cinéma", + "radarr.InCinemasIn": "Au cinéma dans {}", "radarr.InCinemasToday": "Au cinéma aujourd'hui", "radarr.Interactive": "Interactive", "radarr.Language": "Langue", @@ -149,13 +180,16 @@ "radarr.MovieNotFound": "Film non trouvé", "radarr.MoviePath": "Chemin du film", "radarr.Movies": "Films", + "radarr.NoDisksFound": "Aucun disque trouvé", "radarr.NoFilesFound": "Aucun fichier trouvé", "radarr.NoHistoryFound": "Pas d'historique trouvé", "radarr.NoMoviesFound": "Aucun film trouvé", "radarr.NoResultsFound": "Aucun résultat", + "radarr.NoRootFoldersFound": "Aucun dossier racine trouvé", "radarr.NoSubdirectoriesFound": "Aucun sous-répertoire trouvé", "radarr.NoSummaryIsAvailable": "Aucun résumé n'est disponible.", "radarr.NoTagsFound": "Aucune étiquette trouvée", + "radarr.Other": "Autre", "radarr.ParentDirectory": "Répertoire parent", "radarr.PhysicalRelease": "Sortie sur support physique", "radarr.Quality": "Qualité", @@ -169,9 +203,12 @@ "radarr.ReleasedToday": "Sortie aujourd'hui", "radarr.Releases": "Versions", "radarr.RemoveMovie": "Supprimer le film", + "radarr.Resolution": "Définition", "radarr.RootFolder": "Dossier racine", + "radarr.RootFolders": "Dossiers racines", "radarr.RunRSSSync": "Synchroniser le flux RSS", "radarr.Runtime": "Durée", + "radarr.ScanType": "Type d'analyse", "radarr.Search": "Rechercher", "radarr.SearchAllMissing": "Rechercher tous les manquants", "radarr.SearchFor": "Rechercher {}", @@ -183,17 +220,22 @@ "radarr.SortCatalogue": "Trier le catalogue", "radarr.StartSearchFor": "Lancer la recherche de…", "radarr.StartSearchForMissingMovie": "Lancer la recherche du film manquant", + "radarr.Streams": "Diffusions", "radarr.Studio": "Studio", + "radarr.Subtitles": "Sous-titres", "radarr.SystemStatus": "État du système", "radarr.SystemStatusDescription": "État du système et espace disque", "radarr.Tags": "Étiquettes", "radarr.TagsDescription": "Gérer vos étiquettes", "radarr.Type": "Type", + "radarr.UnmappedFolder": "1 dossier non cartographié", + "radarr.UnmappedFolders": "{} dossiers non cartographiés", "radarr.UnmonitorMovie": "Ne plus surveiller le film", "radarr.Unmonitored": "Non surveillé", "radarr.Upcoming": "À venir", "radarr.UpdateLibrary": "Mettre à jour la bibliothèque", "radarr.UpdateMovie": "Mettre à jour le film", + "radarr.Video": "Vidéo", "radarr.ViewWebGUI": "Voir l'interface web", "radarr.Wanted": "Recherché", "radarr.Weight": "Poids", @@ -434,7 +476,7 @@ "settings.Website": "Site web", "settings.GitHubDescription": "Afficher le code source", "settings.WebsiteDescription": "Visitez le site web de LunaSea", - "settings.PastDaysInScheduleView": "Les jours précédents dans l'aperçu", + "settings.PastDaysInScheduleView": "Jours précédents dans le planning", "settings.ProfilesBannerLine1": "Les profils vous permettent d'ajouter plusieurs instances de modules dans LunaSea. Vous pouvez changer de profil depuis le tiroir de la navigation principale.", "settings.QuickActionsBannerLine2": "Un nombre limité d'actions rapides peuvent être spécifiées à la fois, et une fois cette limite atteinte, les nouvelles actions ajoutées n'apparaitront pas.", "settings.CalendarSettings": "Préférences du calendrier", @@ -444,11 +486,15 @@ "settings.FutureDays": "Prochains jours", "settings.Home": "Accueil", "settings.PastDays": "Précédents jours", - "settings.PasswordHint1": "Si votre mot de passe utilise des caractères spéciaux, vous devriez ajouter un en-tête authentification basique avec votre nom d'utilisateur et votre mot de passe", + "settings.PasswordHint1": "Si votre mot de passe utilise des caractères spéciaux, vous devriez ajouter une en-tête d'authentification basique avec votre nom d'utilisateur et votre mot de passe", "settings.Use24HourTime": "Utiliser le format 24h", "settings.Use24HourTimeDescription": "Affiche l'horodatage au format 24h", "settings.ProfilesBannerLine2": "L'index de recherche Newznab et les modules externes sont activés et partagés entre tous les profils.", "settings.QuickActionsBannerLine1": "Les actions rapides vous permettent d'accéder directement au modules depuis l'écran d'accueil de votre appareil grâce à un appui long sur l'icône de LunaSea.", + "settings.BackupToDevice": "Sauvegarder vers l'appareil", + "settings.BackupToDeviceDescription": "Sauvegarder les données de configuration", + "settings.RestoreFromDevice": "Restaurer depuis l'appareil", + "settings.RestoreFromDeviceDescription": "Restaurer les données de configuration", "sonarr.AddedOn": "Ajouté le", "sonarr.AddedSeries": "Série ajoutée", "sonarr.AddedTag": "Étiquette ajoutée", @@ -566,7 +612,7 @@ "sonarr.GrabbedFrom": "Récupéré depuis {}", "sonarr.HistoryDescription": "Afficher les activités récentes", "sonarr.InfoURL": "Infos de l'URL", - "sonarr.Interactive": "Interactif", + "sonarr.Interactive": "Interactive", "sonarr.InteractiveSearch": "Recherche interactive", "sonarr.ManualImport": "Importation manuelle", "sonarr.ManualImportDescription": "Importer le contenu depuis le disque", @@ -605,7 +651,7 @@ "sonarr.SeasonFoldersDescription": "Trier les épisodes dans les dossiers de saisons", "sonarr.Series": "Séries", "sonarr.SeriesDetails": "Détails des séries", - "sonarr.SeriesEnded": "Séries terminées", + "sonarr.SeriesEnded": "Série terminée", "sonarr.SeriesNotFound": "Séries non trouvées", "sonarr.SeriesFolderImported": "Épisodes importés depuis le dossier de séries", "sonarr.SeriesType": "Type de séries", @@ -656,7 +702,7 @@ "sonarr.Leechers": "Receveurs", "sonarr.Seeders": "Envoyeurs", "sonarr.NoLongerMonitoring": "Plus de suivi", - "sonarr.StartSearchForCutoffUnmetEpisodes": "Démarrer la recherche d'épisodes ne correspondant pas", + "sonarr.StartSearchForCutoffUnmetEpisodes": "Rechercher des prérequis d'épisodes non atteints", "sonarr.SearchingForMonitoredEpisodes": "Recherche d'épisodes suivis…", "sonarr.SearchMonitored": "Rechercher des suivis", "sonarr.FailedToSearchForMonitoredEpisodes": "Échec de la recherche des épisodes suivis", @@ -727,5 +773,8 @@ "tautulli.BackingUpConfiguration": "Sauvegarde de la configuration…", "tautulli.Audio": "Audio", "tautulli.ActivityDetails": "Détails de l'activité", - "tautulli.Activity": "Activité" + "tautulli.Activity": "Activité", + "wake_on_lan.MagicPacketSent": "Paquet magique envoyé", + "wake_on_lan.MagicPacketSentMessage": "Votre machine devrait se réveiller !", + "wake_on_lan.MagicPacketFailedToSend": "Échec de l'envoi du paquet magique" } \ No newline at end of file diff --git a/lib/core/models/types/links.dart b/lib/core/models/types/links.dart index 9980bec5..383b261f 100644 --- a/lib/core/models/types/links.dart +++ b/lib/core/models/types/links.dart @@ -9,7 +9,7 @@ enum LunaLinks { GITHUB, NOTIFICATIONS_GETTING_STARTED, REDDIT, - TEST_BUILDS, + BUILD_CHANNELS, WEBLATE, WEBSITE, } @@ -31,8 +31,8 @@ extension LunaLinksExtension on LunaLinks { return 'https://www.lunasea.app/github'; case LunaLinks.REDDIT: return 'https://www.lunasea.app/reddit'; - case LunaLinks.TEST_BUILDS: - return 'https://docs.lunasea.app/getting-started/test-builds'; + case LunaLinks.BUILD_CHANNELS: + return 'https://www.lunasea.app/build-channels'; case LunaLinks.WEBLATE: return 'https:/www.lunasea.app/translate'; case LunaLinks.WEBSITE: diff --git a/lib/modules/settings/routes/resources/route.dart b/lib/modules/settings/routes/resources/route.dart index 0da38685..5fdd09c7 100644 --- a/lib/modules/settings/routes/resources/route.dart +++ b/lib/modules/settings/routes/resources/route.dart @@ -81,7 +81,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin { title: 'settings.TestBuilds'.tr(), body: [TextSpan(text: 'settings.TestBuildsDescription'.tr())], trailing: const LunaIconButton(icon: Icons.developer_board_rounded), - onTap: LunaLinks.TEST_BUILDS.launch, + onTap: LunaLinks.BUILD_CHANNELS.launch, ), LunaBlock( title: 'Weblate', diff --git a/localization/settings/en.json b/localization/settings/en.json index bc81cd61..3e9ce972 100644 --- a/localization/settings/en.json +++ b/localization/settings/en.json @@ -47,6 +47,8 @@ "settings.BroadcastAddressHint2": "Typically this is the IP address of your machine with the last octet set to 255", "settings.BroadcastAddressHint3": "Given an example machine IP address of 192.168.1.111, the resulting broadcast IP address is 192.168.1.255", "settings.BroadcastAddressValidation": "Invalid Broadcast Address", + "settings.Builds": "Builds", + "settings.BuildsDescription": "View and Download All Builds of LunaSea", "settings.CalendarSettings": "Calendar Settings", "settings.ClearConfiguration": "Clear Configuration", "settings.ClearConfigurationHint1": "Are you sure you want to clear your configuration?", diff --git a/package.json b/package.json index ed724cbf..5b19cd03 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "prepare:keychain:macos": "cd macos && bundle exec fastlane keychain_create && bundle exec fastlane keychain_setup", "profile": "flutter run --profile --cache-sksl --purge-persistent-cache", "release": "HUSKY=0 standard-version --no-verify --commit-all", - "release:changelog": "npm run release:changelog -- --dry-run", + "release:changelog": "npm run release -- --dry-run", "release:flavor:beta": "HUSKY=0 git commit --no-verify --allow-empty -m \"chore(release): beta release [skip ci]\"", "release:flavor:candidate": "HUSKY=0 git commit --no-verify --allow-empty -m \"chore(release): candidate release [skip ci]\"", "release:prepare": "npm run cocoapods:nuke && npm run generate && npm run fastlane:update"