Compare commits

..

No commits in common. "main" and "3.5.3" have entirely different histories.
main ... 3.5.3

25 changed files with 707 additions and 985 deletions

View File

@ -1,9 +1,11 @@
module.exports = { module.exports = {
extends: [ extends: [
'@nextcloud/eslint-config/vue3', '@nextcloud',
'@vue/eslint-config-typescript/recommended',
'plugin:pinia/recommended', 'plugin:pinia/recommended',
'plugin:prettier/recommended', 'plugin:prettier/recommended',
], ],
parser: 'vue-eslint-parser',
rules: { rules: {
'jsdoc/require-jsdoc': 'off', 'jsdoc/require-jsdoc': 'off',
'vue/first-attribute-linebreak': 'off', 'vue/first-attribute-linebreak': 'off',

View File

@ -1,9 +1,3 @@
## 3.5.4 - Under the spotlight - 2025-01-03
### Added
- 🧑‍🎤 Added the episode author on the list and modal
- ✨ Added cover image and episode infos on desktop and mobile notifications
## 3.5.3 - Hangover - 2025-01-03 ## 3.5.3 - Hangover - 2025-01-03
### Fixed ### Fixed

View File

@ -14,7 +14,7 @@
## Requirements ## Requirements
You need to have [GPodderSync](https://apps.nextcloud.com/apps/gpoddersync) installed to use this app!]]></description> You need to have [GPodderSync](https://apps.nextcloud.com/apps/gpoddersync) installed to use this app!]]></description>
<version>3.5.4</version> <version>3.5.3</version>
<licence>agpl</licence> <licence>agpl</licence>
<author mail="xefir@crystalyx.net" homepage="https://crystalyx.net">Michel Roux</author> <author mail="xefir@crystalyx.net" homepage="https://crystalyx.net">Michel Roux</author>
<namespace>RePod</namespace> <namespace>RePod</namespace>
@ -29,7 +29,7 @@ You need to have [GPodderSync](https://apps.nextcloud.com/apps/gpoddersync) inst
<screenshot>https://git.crystalyx.net/Xefir/repod/raw/branch/main/screens/modal.png</screenshot> <screenshot>https://git.crystalyx.net/Xefir/repod/raw/branch/main/screens/modal.png</screenshot>
<dependencies> <dependencies>
<php min-version="8.1"/> <php min-version="8.1"/>
<nextcloud min-version="29" max-version="31"/> <nextcloud min-version="29" max-version="30"/>
</dependencies> </dependencies>
<navigations> <navigations>
<navigation> <navigation>

View File

@ -19,7 +19,7 @@
"php": "^8.1" "php": "^8.1"
}, },
"require-dev": { "require-dev": {
"nextcloud/ocp": "^30.0.5", "nextcloud/ocp": "^30.0.4",
"roave/security-advisories": "dev-latest", "roave/security-advisories": "dev-latest",
"nextcloud/coding-standard": "^1.3.2", "nextcloud/coding-standard": "^1.3.2",
"nextcloud/rector": "^0.2.1", "nextcloud/rector": "^0.2.1",

72
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "413d85cb041646dc7aa0da4bcdf8f65c", "content-hash": "8985893a48af49654e50784bda34fb89",
"packages": [], "packages": [],
"packages-dev": [ "packages-dev": [
{ {
@ -778,16 +778,16 @@
}, },
{ {
"name": "nextcloud/ocp", "name": "nextcloud/ocp",
"version": "v30.0.5", "version": "v30.0.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git", "url": "https://github.com/nextcloud-deps/ocp.git",
"reference": "8f9f1452b564a514938d0e7361479bb9afacab27" "reference": "6f98dac2ddd6c42e605bc453e5328c0a61f75b8d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/8f9f1452b564a514938d0e7361479bb9afacab27", "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/6f98dac2ddd6c42e605bc453e5328c0a61f75b8d",
"reference": "8f9f1452b564a514938d0e7361479bb9afacab27", "reference": "6f98dac2ddd6c42e605bc453e5328c0a61f75b8d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -816,9 +816,9 @@
"description": "Composer package containing Nextcloud's public API (classes, interfaces)", "description": "Composer package containing Nextcloud's public API (classes, interfaces)",
"support": { "support": {
"issues": "https://github.com/nextcloud-deps/ocp/issues", "issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/v30.0.5" "source": "https://github.com/nextcloud-deps/ocp/tree/v30.0.4"
}, },
"time": "2025-01-08T10:49:45+00:00" "time": "2024-11-29T00:46:59+00:00"
}, },
{ {
"name": "nextcloud/rector", "name": "nextcloud/rector",
@ -940,16 +940,16 @@
}, },
{ {
"name": "php-cs-fixer/shim", "name": "php-cs-fixer/shim",
"version": "v3.68.1", "version": "v3.66.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHP-CS-Fixer/shim.git", "url": "https://github.com/PHP-CS-Fixer/shim.git",
"reference": "eca7a809b6b5d35d0a033c63a14881107e22a7b6" "reference": "6824b91b16d2e123afed9bf9c96ec283882346c9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/eca7a809b6b5d35d0a033c63a14881107e22a7b6", "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/6824b91b16d2e123afed9bf9c96ec283882346c9",
"reference": "eca7a809b6b5d35d0a033c63a14881107e22a7b6", "reference": "6824b91b16d2e123afed9bf9c96ec283882346c9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -986,9 +986,9 @@
"description": "A tool to automatically fix PHP code style", "description": "A tool to automatically fix PHP code style",
"support": { "support": {
"issues": "https://github.com/PHP-CS-Fixer/shim/issues", "issues": "https://github.com/PHP-CS-Fixer/shim/issues",
"source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.68.1" "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.66.0"
}, },
"time": "2025-01-17T09:21:08+00:00" "time": "2024-12-29T13:46:48+00:00"
}, },
{ {
"name": "phpdocumentor/reflection-common", "name": "phpdocumentor/reflection-common",
@ -1214,16 +1214,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.12.15", "version": "1.12.14",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "c91d4e8bc056f46cf653656e6f71004b254574d1" "reference": "e73868f809e68fff33be961ad4946e2e43ec9e38"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/c91d4e8bc056f46cf653656e6f71004b254574d1", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e73868f809e68fff33be961ad4946e2e43ec9e38",
"reference": "c91d4e8bc056f46cf653656e6f71004b254574d1", "reference": "e73868f809e68fff33be961ad4946e2e43ec9e38",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1268,7 +1268,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-01-05T16:40:22+00:00" "time": "2024-12-31T07:26:13+00:00"
}, },
{ {
"name": "psr/clock", "name": "psr/clock",
@ -1536,12 +1536,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git", "url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "e7a38fcc13e4ddfe9a28d5c7bf50aa9a9da758ec" "reference": "43628df4c324d77a9e4e6e5b7d0479586b5ee2b6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/e7a38fcc13e4ddfe9a28d5c7bf50aa9a9da758ec", "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/43628df4c324d77a9e4e6e5b7d0479586b5ee2b6",
"reference": "e7a38fcc13e4ddfe9a28d5c7bf50aa9a9da758ec", "reference": "43628df4c324d77a9e4e6e5b7d0479586b5ee2b6",
"shasum": "" "shasum": ""
}, },
"conflict": { "conflict": {
@ -1777,7 +1777,6 @@
"gilacms/gila": "<=1.15.4", "gilacms/gila": "<=1.15.4",
"gleez/cms": "<=1.3|==2", "gleez/cms": "<=1.3|==2",
"globalpayments/php-sdk": "<2", "globalpayments/php-sdk": "<2",
"goalgorilla/open_social": "<12.3.8|>=12.4,<12.4.5|>=13.0.0.0-alpha1,<13.0.0.0-alpha11",
"gogentooss/samlbase": "<1.2.7", "gogentooss/samlbase": "<1.2.7",
"google/protobuf": "<3.15", "google/protobuf": "<3.15",
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
@ -1786,7 +1785,6 @@
"grumpydictator/firefly-iii": "<6.1.17", "grumpydictator/firefly-iii": "<6.1.17",
"gugoan/economizzer": "<=0.9.0.0-beta1", "gugoan/economizzer": "<=0.9.0.0-beta1",
"guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
"guzzlehttp/oauth-subscriber": "<0.8.1",
"guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
"haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
"harvesthq/chosen": "<1.8.7", "harvesthq/chosen": "<1.8.7",
@ -1825,7 +1823,6 @@
"intelliants/subrion": "<4.2.2", "intelliants/subrion": "<4.2.2",
"inter-mediator/inter-mediator": "==5.5", "inter-mediator/inter-mediator": "==5.5",
"ipl/web": "<0.10.1", "ipl/web": "<0.10.1",
"islandora/crayfish": "<4.1",
"islandora/islandora": ">=2,<2.4.1", "islandora/islandora": ">=2,<2.4.1",
"ivankristianto/phpwhois": "<=4.3", "ivankristianto/phpwhois": "<=4.3",
"jackalope/jackalope-doctrine-dbal": "<1.7.4", "jackalope/jackalope-doctrine-dbal": "<1.7.4",
@ -1908,7 +1905,6 @@
"mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2",
"mediawiki/cargo": "<3.6.1", "mediawiki/cargo": "<3.6.1",
"mediawiki/core": "<1.39.5|==1.40", "mediawiki/core": "<1.39.5|==1.40",
"mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2",
"mediawiki/matomo": "<2.4.3", "mediawiki/matomo": "<2.4.3",
"mediawiki/semantic-media-wiki": "<4.0.2", "mediawiki/semantic-media-wiki": "<4.0.2",
"melisplatform/melis-asset-manager": "<5.0.1", "melisplatform/melis-asset-manager": "<5.0.1",
@ -1949,8 +1945,6 @@
"neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9",
"neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
"neos/swiftmailer": "<5.4.5", "neos/swiftmailer": "<5.4.5",
"nesbot/carbon": "<2.72.6|>=3,<3.8.4",
"netcarver/textile": "<=4.1.2",
"netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
@ -2018,7 +2012,7 @@
"phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1", "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1",
"phpoffice/common": "<0.2.9", "phpoffice/common": "<0.2.9",
"phpoffice/phpexcel": "<1.8.1", "phpoffice/phpexcel": "<1.8.1",
"phpoffice/phpspreadsheet": "<=1.29.6|>=2,<=2.1.5|>=2.2,<=2.3.4|>=3,<3.7", "phpoffice/phpspreadsheet": "<1.29.4|>=2,<2.1.3|>=2.2,<2.3.2|>=3.3,<3.4",
"phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
"phpservermon/phpservermon": "<3.6", "phpservermon/phpservermon": "<3.6",
"phpsysinfo/phpsysinfo": "<3.4.3", "phpsysinfo/phpsysinfo": "<3.4.3",
@ -2104,7 +2098,7 @@
"silverstripe/cms": "<4.11.3", "silverstripe/cms": "<4.11.3",
"silverstripe/comments": ">=1.3,<3.1.1", "silverstripe/comments": ">=1.3,<3.1.1",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
"silverstripe/framework": "<5.3.8", "silverstripe/framework": "<5.2.16",
"silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
"silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
"silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/recipe-cms": ">=4.5,<4.5.3",
@ -2144,7 +2138,6 @@
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
"ssddanbrown/bookstack": "<24.05.1", "ssddanbrown/bookstack": "<24.05.1",
"starcitizentools/citizen-skin": ">=2.6.3,<2.31", "starcitizentools/citizen-skin": ">=2.6.3,<2.31",
"starcitizentools/tabber-neue": ">=1.9.1,<2.7.2",
"statamic/cms": "<=5.16", "statamic/cms": "<=5.16",
"stormpath/sdk": "<9.9.99", "stormpath/sdk": "<9.9.99",
"studio-42/elfinder": "<=2.1.64", "studio-42/elfinder": "<=2.1.64",
@ -2236,20 +2229,13 @@
"twig/twig": "<3.11.2|>=3.12,<3.14.1", "twig/twig": "<3.11.2|>=3.12,<3.14.1",
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
"typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1", "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1",
"typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1",
"typo3/cms-beuser": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
"typo3/cms-core": "<=8.7.56|>=9,<=9.5.48|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
"typo3/cms-dashboard": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
"typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
"typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
"typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
"typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
"typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8",
"typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2",
"typo3/cms-lowlevel": ">=11,<=11.5.41",
"typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
"typo3/cms-scheduler": ">=11,<=11.5.41",
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
"typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
@ -2307,7 +2293,7 @@
"xpressengine/xpressengine": "<3.0.15", "xpressengine/xpressengine": "<3.0.15",
"yab/quarx": "<2.4.5", "yab/quarx": "<2.4.5",
"yeswiki/yeswiki": "<=4.4.4", "yeswiki/yeswiki": "<=4.4.4",
"yetiforce/yetiforce-crm": "<6.5", "yetiforce/yetiforce-crm": "<=6.4",
"yidashi/yii2cmf": "<=2", "yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2", "yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": "<1.1.29", "yiisoft/yii": "<1.1.29",
@ -2397,7 +2383,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-01-15T23:05:13+00:00" "time": "2025-01-02T23:04:41+00:00"
}, },
{ {
"name": "sebastian/diff", "name": "sebastian/diff",
@ -3427,7 +3413,7 @@
"platform": { "platform": {
"php": "^8.1" "php": "^8.1"
}, },
"platform-dev": [], "platform-dev": {},
"platform-overrides": { "platform-overrides": {
"php": "8.1" "php": "8.1"
}, },

View File

@ -19,9 +19,9 @@ OC.L10N.register(
"Link copied to the clipboard" : "Link in die Zwischenablage kopiert", "Link copied to the clipboard" : "Link in die Zwischenablage kopiert",
"Play" : "Abspielen", "Play" : "Abspielen",
"Stop" : "Stopp", "Stop" : "Stopp",
"Read" : "gehört", "Read" : "Gelesen",
"Open website" : "Webseite aufrufen", "Open website" : "Webseite aufrufen",
"Select" : "Auswählen", "Select" : "Wählen",
"Could not change the status of the episode" : "Kann den Status der Folge nicht ändern", "Could not change the status of the episode" : "Kann den Status der Folge nicht ändern",
"Read all" : "Alles lesen", "Read all" : "Alles lesen",
"Unread all" : "Ungelesen", "Unread all" : "Ungelesen",
@ -58,7 +58,7 @@ OC.L10N.register(
"Error loading feed" : "Fehler beim Laden des Feeds", "Error loading feed" : "Fehler beim Laden des Feeds",
"Missing required app" : "Benötigte App fehlt", "Missing required app" : "Benötigte App fehlt",
"Install GPodder Sync" : "Installiere GPodder Sync", "Install GPodder Sync" : "Installiere GPodder Sync",
"Pin some subscriptions to see their latest updates" : "Markiere Abonnements, um die neuesten Updates zu sehen", "Pin some subscriptions to see their latest updates" : "Pinne einige Abonnements, um ihre neuesten Updates zu sehen",
"No favorites" : "Keine Favoriten", "No favorites" : "Keine Favoriten",
"A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod" "A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod"
}, },

View File

@ -17,9 +17,9 @@
"Link copied to the clipboard" : "Link in die Zwischenablage kopiert", "Link copied to the clipboard" : "Link in die Zwischenablage kopiert",
"Play" : "Abspielen", "Play" : "Abspielen",
"Stop" : "Stopp", "Stop" : "Stopp",
"Read" : "gehört", "Read" : "Gelesen",
"Open website" : "Webseite aufrufen", "Open website" : "Webseite aufrufen",
"Select" : "Auswählen", "Select" : "Wählen",
"Could not change the status of the episode" : "Kann den Status der Folge nicht ändern", "Could not change the status of the episode" : "Kann den Status der Folge nicht ändern",
"Read all" : "Alles lesen", "Read all" : "Alles lesen",
"Unread all" : "Ungelesen", "Unread all" : "Ungelesen",
@ -56,7 +56,7 @@
"Error loading feed" : "Fehler beim Laden des Feeds", "Error loading feed" : "Fehler beim Laden des Feeds",
"Missing required app" : "Benötigte App fehlt", "Missing required app" : "Benötigte App fehlt",
"Install GPodder Sync" : "Installiere GPodder Sync", "Install GPodder Sync" : "Installiere GPodder Sync",
"Pin some subscriptions to see their latest updates" : "Markiere Abonnements, um die neuesten Updates zu sehen", "Pin some subscriptions to see their latest updates" : "Pinne einige Abonnements, um ihre neuesten Updates zu sehen",
"No favorites" : "Keine Favoriten", "No favorites" : "Keine Favoriten",
"A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod" "A browser extension conflict with RePod" : "Ein Browser-Plugin Problem mit RePod"
},"pluralForm" :"nplurals=2; plural=n != 1;" },"pluralForm" :"nplurals=2; plural=n != 1;"

View File

@ -40,10 +40,7 @@ class EpisodesController extends Controller
usort($episodes, fn (EpisodeActionExtraData $a, EpisodeActionExtraData $b): int => $b->getPubDate() <=> $a->getPubDate()); usort($episodes, fn (EpisodeActionExtraData $a, EpisodeActionExtraData $b): int => $b->getPubDate() <=> $a->getPubDate());
$episodes = array_values(array_intersect_key($episodes, array_unique(array_map(fn (EpisodeActionExtraData $episode): string => $episode->getGuid(), $episodes)))); $episodes = array_values(array_intersect_key($episodes, array_unique(array_map(fn (EpisodeActionExtraData $episode): string => $episode->getGuid(), $episodes))));
/** @var Http::STATUS_* $returnStatusCode */ return new JSONResponse($episodes, $feed->getStatusCode());
$returnStatusCode = $feed->getStatusCode();
return new JSONResponse($episodes, $returnStatusCode);
} }
#[NoAdminRequired] #[NoAdminRequired]

View File

@ -12,6 +12,7 @@ use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Http\TemplateResponse;
use OCP\IRequest; use OCP\IRequest;
use OCP\Util;
class PageController extends Controller class PageController extends Controller
{ {
@ -25,6 +26,9 @@ class PageController extends Controller
#[NoCSRFRequired] #[NoCSRFRequired]
#[FrontpageRoute(verb: 'GET', url: '/')] #[FrontpageRoute(verb: 'GET', url: '/')]
public function index(): TemplateResponse { public function index(): TemplateResponse {
Util::addScript(Application::APP_ID, Application::APP_ID.'-main');
Util::addStyle(Application::APP_ID, Application::APP_ID.'-main');
$csp = new ContentSecurityPolicy(); $csp = new ContentSecurityPolicy();
$csp->addAllowedImageDomain('*'); $csp->addAllowedImageDomain('*');
$csp->addAllowedMediaDomain('*'); $csp->addAllowedMediaDomain('*');

View File

@ -8,7 +8,6 @@ use OCA\GPodderSync\Core\PodcastData\PodcastData;
use OCA\GPodderSync\Core\PodcastData\PodcastDataReader; use OCA\GPodderSync\Core\PodcastData\PodcastDataReader;
use OCA\RePod\AppInfo\Application; use OCA\RePod\AppInfo\Application;
use OCP\AppFramework\Controller; use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\FrontpageRoute; use OCP\AppFramework\Http\Attribute\FrontpageRoute;
use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\Attribute\NoAdminRequired;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
@ -56,9 +55,6 @@ class PodcastController extends Controller
} }
} }
/** @var Http::STATUS_* $returnStatusCode */ return new JSONResponse($podcast, $feed->getStatusCode());
$returnStatusCode = $feed->getStatusCode();
return new JSONResponse($podcast, $returnStatusCode);
} }
} }

View File

@ -18,7 +18,6 @@ use OCA\GPodderSync\Core\EpisodeAction\EpisodeAction;
* name: string, * name: string,
* link: ?string, * link: ?string,
* image: ?string, * image: ?string,
* author: ?string,
* description: ?string, * description: ?string,
* fetchedAtUnix: int, * fetchedAtUnix: int,
* guid: string, * guid: string,
@ -37,7 +36,6 @@ class EpisodeActionExtraData implements \JsonSerializable, \Stringable
private readonly string $name, private readonly string $name,
private readonly ?string $link, private readonly ?string $link,
private readonly ?string $image, private readonly ?string $image,
private readonly ?string $author,
private readonly ?string $description, private readonly ?string $description,
private readonly int $fetchedAtUnix, private readonly int $fetchedAtUnix,
private readonly string $guid, private readonly string $guid,
@ -72,10 +70,6 @@ class EpisodeActionExtraData implements \JsonSerializable, \Stringable
return $this->image; return $this->image;
} }
public function getAuthor(): ?string {
return $this->author;
}
public function getDescription(): ?string { public function getDescription(): ?string {
return $this->description; return $this->description;
} }
@ -119,7 +113,6 @@ class EpisodeActionExtraData implements \JsonSerializable, \Stringable
'name' => $this->name, 'name' => $this->name,
'link' => $this->link, 'link' => $this->link,
'image' => $this->image, 'image' => $this->image,
'author' => $this->author,
'description' => $this->description, 'description' => $this->description,
'fetchedAtUnix' => $this->fetchedAtUnix, 'fetchedAtUnix' => $this->fetchedAtUnix,
'guid' => $this->guid, 'guid' => $this->guid,

View File

@ -81,13 +81,6 @@ class EpisodeActionReader extends CoreEpisodeActionReader
} }
} }
// Get episode author
if (isset($iTunesItemChildren)) {
$author = $this->stringOrNull($iTunesItemChildren->author);
} else {
$author = $this->stringOrNull($item->author);
}
// Get episode description // Get episode description
$itemContent = $item->children('content', true); $itemContent = $item->children('content', true);
if (isset($itemContent)) { if (isset($itemContent)) {
@ -123,7 +116,6 @@ class EpisodeActionReader extends CoreEpisodeActionReader
$name, $name,
$link, $link,
$image, $image,
$author,
$description, $description,
$fetchedAtUnix ?? (new \DateTime())->getTimestamp(), $fetchedAtUnix ?? (new \DateTime())->getTimestamp(),
$guid, $guid,

1356
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -21,13 +21,13 @@
"@nextcloud/initial-state": "^2.2.0", "@nextcloud/initial-state": "^2.2.0",
"@nextcloud/l10n": "^3.1.0", "@nextcloud/l10n": "^3.1.0",
"@nextcloud/router": "^3.0.1", "@nextcloud/router": "^3.0.1",
"@nextcloud/vite-config": "^2.3.0", "@nextcloud/vite-config": "^2.2.2",
"@nextcloud/vue": "9.0.0-alpha.6", "@nextcloud/vue": "9.0.0-alpha.5",
"dompurify": "^3.2.3", "dompurify": "^3.2.3",
"linkify-html": "^4.2.0", "linkify-html": "^4.2.0",
"pinia": "^2.3.1", "pinia": "^2.3.0",
"toastify-js": "^1.12.0", "toastify-js": "^1.12.0",
"vite": "~5.4.13", "vite": "~5.4.11",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-material-design-icons": "^5.3.1", "vue-material-design-icons": "^5.3.1",
"vue-router": "^4.5.0" "vue-router": "^4.5.0"
@ -38,10 +38,11 @@
"@nextcloud/prettier-config": "^1.1.0", "@nextcloud/prettier-config": "^1.1.0",
"@nextcloud/stylelint-config": "^3.0.1", "@nextcloud/stylelint-config": "^3.0.1",
"@types/toastify-js": "^1.12.3", "@types/toastify-js": "^1.12.3",
"@vue/eslint-config-typescript": "~13.0.0",
"@vue/tsconfig": "^0.7.0", "@vue/tsconfig": "^0.7.0",
"eslint-config-prettier": "^10.0.1", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-pinia": "^0.4.1", "eslint-plugin-pinia": "^0.4.1",
"eslint-plugin-prettier": "^5.2.3", "eslint-plugin-prettier": "^5.2.1",
"typescript": "~5.5.4", "typescript": "~5.5.4",
"vue-tsc": "^2.2.0" "vue-tsc": "^2.2.0"
} }

View File

@ -6,8 +6,6 @@
:size="256" :size="256"
:url="episode.image" /> :url="episode.image" />
<h2>{{ episode.name }}</h2> <h2>{{ episode.name }}</h2>
<i v-if="episode.author">{{ episode.author }}</i>
<br />
<SafeHtml :source="episode.description || ''" /> <SafeHtml :source="episode.description || ''" />
<div class="flex"> <div class="flex">
<NcButton v-if="episode.link" :href="episode.link" target="_blank"> <NcButton v-if="episode.link" :href="episode.link" target="_blank">

View File

@ -12,7 +12,7 @@
:one-line="oneLine" :one-line="oneLine"
:style="{ opacity: hasEnded(episode) ? 0.4 : 1 }" :style="{ opacity: hasEnded(episode) ? 0.4 : 1 }"
@click="modalEpisode = episode"> @click="modalEpisode = episode">
<template #extra-actions> <template #actions>
<NcActionButton <NcActionButton
v-if="!isCurrentEpisode(episode)" v-if="!isCurrentEpisode(episode)"
:aria-label="t('repod', 'Play')" :aria-label="t('repod', 'Play')"
@ -32,43 +32,43 @@
</template> </template>
</NcActionButton> </NcActionButton>
</template> </template>
<template #actions>
<NcActionButton
v-if="episode.duration"
:aria-label="t('repod', 'Read')"
:disabled="loading"
:model-value="hasEnded(episode)"
:name="t('repod', 'Read')"
:title="t('repod', 'Read')"
@click="read(episode, !hasEnded(episode))">
<template #icon>
<PlaylistPlayIcon v-if="!hasEnded(episode)" :size="20" />
<PlaylistRemoveIcon v-if="hasEnded(episode)" :size="20" />
</template>
</NcActionButton>
<NcActionLink
v-if="episode.link"
:href="episode.link"
:name="t('repod', 'Open website')"
target="_blank"
:title="t('repod', 'Open website')">
<template #icon>
<OpenInNewIcon :size="20" />
</template>
</NcActionLink>
<NcActionLink
v-if="episode.url"
:download="filenameFromUrl(episode.url)"
:href="episode.url"
:name="t('repod', 'Download')"
target="_blank"
:title="t('repod', 'Download')">
<template #icon>
<DownloadIcon :size="20" />
</template>
</NcActionLink>
</template>
<template #extra> <template #extra>
<NcActions v-if="displayActions">
<NcActionButton
v-if="episode.duration"
:aria-label="t('repod', 'Read')"
:disabled="loading"
:model-value="hasEnded(episode)"
:name="t('repod', 'Read')"
:title="t('repod', 'Read')"
@click="read(episode, !hasEnded(episode))">
<template #icon>
<PlaylistPlayIcon v-if="!hasEnded(episode)" :size="20" />
<PlaylistRemoveIcon v-if="hasEnded(episode)" :size="20" />
</template>
</NcActionButton>
<NcActionLink
v-if="episode.link"
:href="episode.link"
:name="t('repod', 'Open website')"
target="_blank"
:title="t('repod', 'Open website')">
<template #icon>
<OpenInNewIcon :size="20" />
</template>
</NcActionLink>
<NcActionLink
v-if="episode.url"
:download="filenameFromUrl(episode.url)"
:href="episode.url"
:name="t('repod', 'Download')"
target="_blank"
:title="t('repod', 'Download')">
<template #icon>
<DownloadIcon :size="20" />
</template>
</NcActionLink>
</NcActions>
<NcModal v-if="modalEpisode" @close="modalEpisode = null"> <NcModal v-if="modalEpisode" @close="modalEpisode = null">
<Modal :episode="episode" /> <Modal :episode="episode" />
</NcModal> </NcModal>
@ -86,18 +86,13 @@
</NcAvatar> </NcAvatar>
</template> </template>
<template #indicator> <template #indicator>
<div class="indicator"> <NcProgressBar
<NcProgressBar v-if="episode.action && isListening(episode) && !oneLine"
v-if="episode.action && isListening(episode) && !oneLine" class="progress"
class="progress" :value="(episode.action.position * 100) / episode.action.total" />
:value="
(episode.action.position * 100) / episode.action.total
" />
{{ episode.duration }}
</div>
</template> </template>
<template #subname> <template #subname>
{{ !oneLine ? episode.author : '' }} {{ episode.duration }}
</template> </template>
</NcListItem> </NcListItem>
</template> </template>
@ -106,6 +101,7 @@
import { import {
NcActionButton, NcActionButton,
NcActionLink, NcActionLink,
NcActions,
NcAvatar, NcAvatar,
NcListItem, NcListItem,
NcModal, NcModal,
@ -138,6 +134,7 @@ export default {
Modal, Modal,
NcActionButton, NcActionButton,
NcActionLink, NcActionLink,
NcActions,
NcAvatar, NcAvatar,
NcListItem, NcListItem,
NcModal, NcModal,
@ -149,6 +146,10 @@ export default {
StopIcon, StopIcon,
}, },
props: { props: {
displayActions: {
type: Boolean,
default: true,
},
episode: { episode: {
type: Object as () => EpisodeInterface, type: Object as () => EpisodeInterface,
required: true, required: true,
@ -206,14 +207,13 @@ export default {
.progress { .progress {
margin-top: 0.4rem; margin-top: 0.4rem;
} }
.indicator {
display: flex;
gap: 1rem;
}
</style> </style>
<style> <style>
.episode .list-item-content__name {
max-width: 100%;
}
.episode .list-item-content__subname { .episode .list-item-content__subname {
flex-basis: auto; flex-basis: auto;
flex-grow: 0; flex-grow: 0;

View File

@ -61,7 +61,6 @@
episodes.filter((e: EpisodeInterface) => e.selected) episodes.filter((e: EpisodeInterface) => e.selected)
.length < episodes.length .length < episodes.length
" "
class="avatar"
:display-name="t('repod', 'Select all')" :display-name="t('repod', 'Select all')"
:is-no-user="true"> :is-no-user="true">
<template #icon> <template #icon>
@ -76,7 +75,6 @@
episodes.filter((e: EpisodeInterface) => e.selected) episodes.filter((e: EpisodeInterface) => e.selected)
.length >= episodes.length .length >= episodes.length
" "
class="avatar"
:display-name="t('repod', 'Unselect all')" :display-name="t('repod', 'Unselect all')"
:is-no-user="true"> :is-no-user="true">
<template #icon> <template #icon>
@ -91,6 +89,9 @@
<Episode <Episode
v-for="episode in filteredEpisodes" v-for="episode in filteredEpisodes"
:key="episode.guid" :key="episode.guid"
:display-actions="
episodes.every((e: EpisodeInterface) => !e.selected)
"
:episode="episode" :episode="episode"
:url="url" :url="url"
@select="episode.selected = !episode.selected" /> @select="episode.selected = !episode.selected" />
@ -216,10 +217,6 @@ export default {
</script> </script>
<style scoped> <style scoped>
.avatar {
color: var(--color-main-text);
}
.progress { .progress {
margin-top: 0.4rem; margin-top: 0.4rem;
} }

View File

@ -3,10 +3,7 @@
<template #extra> <template #extra>
<div class="extra"> <div class="extra">
<MinusIcon class="pointer" :size="20" @click="changeRate(-0.1)" /> <MinusIcon class="pointer" :size="20" @click="changeRate(-0.1)" />
<NcCounterBubble <NcCounterBubble class="counter">x{{ rate }}</NcCounterBubble>
:active="rate !== 1"
class="counter"
:count="rate" />
<PlusIcon class="pointer" :size="20" @click="changeRate(0.1)" /> <PlusIcon class="pointer" :size="20" @click="changeRate(0.1)" />
</div> </div>
</template> </template>

View File

@ -9,7 +9,7 @@
:model-value="feed?.isFavorite" :model-value="feed?.isFavorite"
:name="t('repod', 'Favorite')" :name="t('repod', 'Favorite')"
:title="t('repod', 'Favorite')" :title="t('repod', 'Favorite')"
@update:model-value="switchFavorite($event)"> @update:modelValue="switchFavorite($event)">
<template #icon> <template #icon>
<StarPlusIcon v-if="!feed?.isFavorite" :size="20" /> <StarPlusIcon v-if="!feed?.isFavorite" :size="20" />
<StarRemoveIcon v-if="feed?.isFavorite" :size="20" /> <StarRemoveIcon v-if="feed?.isFavorite" :size="20" />
@ -29,10 +29,9 @@
<NcAvatar <NcAvatar
:display-name="feed?.data?.author || feed?.data?.title" :display-name="feed?.data?.author || feed?.data?.title"
:is-no-user="true" :is-no-user="true"
:size="20"
:title="feed?.data?.author" :title="feed?.data?.author"
:url="feed?.data?.imageUrl" /> :url="feed?.data?.imageUrl" />
<StarIcon v-if="feed?.isFavorite" class="star" :size="10" /> <StarIcon v-if="feed?.isFavorite" class="star" :size="20" />
<AlertIcon v-if="failed" /> <AlertIcon v-if="failed" />
</template> </template>
</NcAppNavigationItem> </NcAppNavigationItem>

View File

@ -48,34 +48,6 @@ export const usePlayer = defineStore('player', {
conflict() { conflict() {
this.playCount = 0 this.playCount = 0
}, },
metadatas(episode: EpisodeInterface) {
// https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API
navigator.mediaSession.metadata = new MediaMetadata({
title: episode.name,
artist: episode.author,
album: episode.title,
artwork: episode.image ? [{ src: episode.image }] : [],
})
navigator.mediaSession.setActionHandler('play', this.play)
navigator.mediaSession.setActionHandler('pause', this.pause)
navigator.mediaSession.setActionHandler('stop', this.stop)
navigator.mediaSession.setActionHandler(
'seekbackward',
(details: MediaSessionActionDetails) =>
this.seek(audio.currentTime - (details.seekOffset || 10)),
)
navigator.mediaSession.setActionHandler(
'seekforward',
(details: MediaSessionActionDetails) =>
this.seek(audio.currentTime + (details.seekOffset || 30)),
)
navigator.mediaSession.setActionHandler(
'seekto',
(details: MediaSessionActionDetails) =>
!details.fastSeek && this.seek(details.seekTime || 0),
)
},
async load(episode: EpisodeInterface | null, podcastUrl?: string) { async load(episode: EpisodeInterface | null, podcastUrl?: string) {
this.episode = episode this.episode = episode
this.podcastUrl = podcastUrl || null this.podcastUrl = podcastUrl || null
@ -103,7 +75,6 @@ export const usePlayer = defineStore('player', {
} }
audio.play() audio.play()
this.metadatas(this.episode)
} else { } else {
this.loaded = false this.loaded = false
this.podcastUrl = null this.podcastUrl = null

View File

@ -16,7 +16,6 @@ export interface EpisodeInterface {
name: string name: string
link?: string link?: string
image?: string image?: string
author?: string
description?: string description?: string
fetchedAtUnix: number fetchedAtUnix: number
guid: string guid: string

View File

@ -1,10 +1 @@
<?php
use OCA\RePod\AppInfo\Application;
use OCP\Util;
Util::addScript(Application::APP_ID, Application::APP_ID.'-main');
Util::addStyle(Application::APP_ID, Application::APP_ID.'-main');
?>
<div id="content"></div> <div id="content"></div>

View File

@ -3,13 +3,13 @@
# This file is distributed under the same license as the Nextcloud package. # This file is distributed under the same license as the Nextcloud package.
# OiledAmoeba <florian+crystalyx@ruhnke.cloud>, 2024. # OiledAmoeba <florian+crystalyx@ruhnke.cloud>, 2024.
# Michel Roux <xefir@crystalyx.net>, 2024. # Michel Roux <xefir@crystalyx.net>, 2024.
# markus phi <repodtranslate@solinetcafe.org>, 2024, 2025. # markus phi <repodtranslate@solinetcafe.org>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Nextcloud 3.14159\n" "Project-Id-Version: Nextcloud 3.14159\n"
"Report-Msgid-Bugs-To: translations\\@example.com\n" "Report-Msgid-Bugs-To: translations\\@example.com\n"
"POT-Creation-Date: 2025-01-10 22:55+0000\n" "POT-Creation-Date: 2024-12-11 20:03+0000\n"
"PO-Revision-Date: 2025-01-04 19:02+0000\n" "PO-Revision-Date: 2024-12-25 21:02+0000\n"
"Last-Translator: markus phi <repodtranslate@solinetcafe.org>\n" "Last-Translator: markus phi <repodtranslate@solinetcafe.org>\n"
"Language-Team: German <https://translate.crystalyx.net/projects/repod/gitea/" "Language-Team: German <https://translate.crystalyx.net/projects/repod/gitea/"
"de/>\n" "de/>\n"
@ -58,8 +58,8 @@ msgstr ""
"## Funktionen\n" "## Funktionen\n"
"- 🔍 Durchsuchen und abonnieren einer großen Sammlung von Podcasts\n" "- 🔍 Durchsuchen und abonnieren einer großen Sammlung von Podcasts\n"
"- 🔊 Episoden direkt in Nextcloud anhören\n" "- 🔊 Episoden direkt in Nextcloud anhören\n"
"- 🌐 Synchronisiere deine Aktivität mit [AntennaPod](https://antennapod." "- 🌐 Synchronisiere deine Aktivität mit [AntennaPod](https://antennapod.org/)"
"org/)\n" "\n"
"- 📱 Handy-freundliche Schnittstelle\n" "- 📱 Handy-freundliche Schnittstelle\n"
"- 📡 Importieren und Exportieren Ihrer Abonnements\n" "- 📡 Importieren und Exportieren Ihrer Abonnements\n"
"- ➡️ Vollständiger Funktionsvergleich [hier](https://git.crystalyx.net/Xefir/" "- ➡️ Vollständiger Funktionsvergleich [hier](https://git.crystalyx.net/Xefir/"
@ -133,8 +133,9 @@ msgstr "Stopp"
#: /app/specialVueFakeDummyForL10nScript.js:20 #: /app/specialVueFakeDummyForL10nScript.js:20
#: /app/specialVueFakeDummyForL10nScript.js:21 #: /app/specialVueFakeDummyForL10nScript.js:21
#: /app/specialVueFakeDummyForL10nScript.js:22 #: /app/specialVueFakeDummyForL10nScript.js:22
#, fuzzy
msgid "Read" msgid "Read"
msgstr "gehört" msgstr "Gelesen"
#: /app/specialVueFakeDummyForL10nScript.js:23 #: /app/specialVueFakeDummyForL10nScript.js:23
#: /app/specialVueFakeDummyForL10nScript.js:24 #: /app/specialVueFakeDummyForL10nScript.js:24
@ -142,8 +143,9 @@ msgid "Open website"
msgstr "Webseite aufrufen" msgstr "Webseite aufrufen"
#: /app/specialVueFakeDummyForL10nScript.js:27 #: /app/specialVueFakeDummyForL10nScript.js:27
#, fuzzy
msgid "Select" msgid "Select"
msgstr "Auswählen" msgstr "Wählen"
#: /app/specialVueFakeDummyForL10nScript.js:28 #: /app/specialVueFakeDummyForL10nScript.js:28
#: /app/specialVueFakeDummyForL10nScript.js:38 #: /app/specialVueFakeDummyForL10nScript.js:38
@ -307,13 +309,14 @@ msgid "Install GPodder Sync"
msgstr "Installiere GPodder Sync" msgstr "Installiere GPodder Sync"
#: /app/specialVueFakeDummyForL10nScript.js:75 #: /app/specialVueFakeDummyForL10nScript.js:75
#, fuzzy
msgid "Pin some subscriptions to see their latest updates" msgid "Pin some subscriptions to see their latest updates"
msgstr "Markiere Abonnements, um die neuesten Updates zu sehen" msgstr "Pinne einige Abonnements, um ihre neuesten Updates zu sehen"
#: /app/specialVueFakeDummyForL10nScript.js:76 #: /app/specialVueFakeDummyForL10nScript.js:76
msgid "No favorites" msgid "No favorites"
msgstr "Keine Favoriten" msgstr "Keine Favoriten"
#: /app/src/store/player.ts:122 #: /app/src/store/player.ts:93
msgid "A browser extension conflict with RePod" msgid "A browser extension conflict with RePod"
msgstr "Ein Browser-Plugin Problem mit RePod" msgstr "Ein Browser-Plugin Problem mit RePod"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Nextcloud 3.14159\n" "Project-Id-Version: Nextcloud 3.14159\n"
"Report-Msgid-Bugs-To: translations\\@example.com\n" "Report-Msgid-Bugs-To: translations\\@example.com\n"
"POT-Creation-Date: 2025-01-10 22:55+0000\n" "POT-Creation-Date: 2024-12-11 20:03+0000\n"
"PO-Revision-Date: 2024-12-11 20:06+0000\n" "PO-Revision-Date: 2024-12-11 20:06+0000\n"
"Last-Translator: Michel Roux <xefir@crystalyx.net>\n" "Last-Translator: Michel Roux <xefir@crystalyx.net>\n"
"Language-Team: French <https://translate.crystalyx.net/projects/repod/gitea/" "Language-Team: French <https://translate.crystalyx.net/projects/repod/gitea/"
@ -313,6 +313,6 @@ msgstr ""
msgid "No favorites" msgid "No favorites"
msgstr "Aucun favoris" msgstr "Aucun favoris"
#: /app/src/store/player.ts:122 #: /app/src/store/player.ts:93
msgid "A browser extension conflict with RePod" msgid "A browser extension conflict with RePod"
msgstr "Une extension de votre navigateur entre en conflit avec RePod" msgstr "Une extension de votre navigateur entre en conflit avec RePod"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Nextcloud 3.14159\n" "Project-Id-Version: Nextcloud 3.14159\n"
"Report-Msgid-Bugs-To: translations\\@example.com\n" "Report-Msgid-Bugs-To: translations\\@example.com\n"
"POT-Creation-Date: 2025-01-10 22:55+0000\n" "POT-Creation-Date: 2024-12-11 20:03+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -298,6 +298,6 @@ msgstr ""
msgid "No favorites" msgid "No favorites"
msgstr "" msgstr ""
#: /app/src/store/player.ts:122 #: /app/src/store/player.ts:93
msgid "A browser extension conflict with RePod" msgid "A browser extension conflict with RePod"
msgstr "" msgstr ""