From 23a5a7e185499a069060cdfcae28770bef7b2f70 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 17 Nov 2025 15:13:57 +0100 Subject: [PATCH 01/24] feat(TextToImage): Add watermark and metadata to announce that the iamges are created by AI Signed-off-by: Marcel Klehr --- composer.json | 3 +- composer.lock | 66 +++++++++++++++- lib/Service/WatermarkingService.php | 89 ++++++++++++++++++++++ lib/TaskProcessing/TextToImageProvider.php | 9 ++- 4 files changed, 163 insertions(+), 4 deletions(-) create mode 100644 lib/Service/WatermarkingService.php diff --git a/composer.json b/composer.json index 9df770e2..81f9879f 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,8 @@ ], "require": { "php": "^8.1 || ^8.2 || ^8.3 || ^8.4", - "bamarni/composer-bin-plugin": "^1.8" + "bamarni/composer-bin-plugin": "^1.8", + "fileeye/pel": "^0.12.0" }, "scripts": { "lint": "find . -name \\*.php -not -path './vendor*' -print0 | xargs -0 -n1 php -l", diff --git a/composer.lock b/composer.lock index 344eb521..d679a80c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "07061e3136c5529b9068d7edeaf17248", + "content-hash": "5b85829d956b39254579f623e399f5fa", "packages": [ { "name": "bamarni/composer-bin-plugin", @@ -62,6 +62,70 @@ "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2" }, "time": "2022-10-31T08:38:03+00:00" + }, + { + "name": "fileeye/pel", + "version": "0.12.0", + "source": { + "type": "git", + "url": "https://github.com/FileEye/pel.git", + "reference": "fc531bce31c675ceefbd05b1eeed877915ecde30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FileEye/pel/zipball/fc531bce31c675ceefbd05b1eeed877915ecde30", + "reference": "fc531bce31c675ceefbd05b1eeed877915ecde30", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-exif": "*", + "ext-gd": "*", + "nunomaduro/phpinsights": "^1 || ^2", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^1 || ^2", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpunit/phpunit": "^10 || ^11 ", + "rector/rector": "^1 || ^2", + "squizlabs/php_codesniffer": ">=3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "lsolesen\\pel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "Lars Olesen", + "email": "lars@intraface.dk", + "homepage": "http://intraface.dk", + "role": "Developer" + }, + { + "name": "Martin Geisler", + "email": "martin@geisler.net", + "homepage": "http://geisler.net", + "role": "Developer" + } + ], + "description": "PHP Exif Library. A library for reading and writing Exif headers in JPEG and TIFF images using PHP.", + "homepage": "https://github.com/FileEye/pel", + "keywords": [ + "exif", + "image" + ], + "support": { + "issues": "https://github.com/FileEye/pel/issues", + "source": "https://github.com/FileEye/pel/tree/0.12.0" + }, + "time": "2025-01-17T21:19:20+00:00" } ], "packages-dev": [ diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php new file mode 100644 index 00000000..ea904f1a --- /dev/null +++ b/lib/Service/WatermarkingService.php @@ -0,0 +1,89 @@ +tempManager->getTemporaryFile('.jpg'); + imagejpeg($img, $tempFile); + imagedestroy($img); + + $newImage = $this->addImageExifComment($text, $tempFile); + + return $newImage; + } + + private function addImageExifComment(string $text, string $filename): string { + require_once(__DIR__ . '/../../vendor/fileeye/pel/autoload.php'); + $peljpeg = new PelJpeg($filename); + $exif = $peljpeg->getExif(); + if (!$exif) { + $exif = new PelExif(); + $peljpeg->setExif($exif); + } + $peltiff = $exif->getTiff(); + if (!$peltiff) { + $peltiff = new PelTiff(); + $exif->setTiff($peltiff); + } + $ifd = $peltiff->getIfd(); + if (!$ifd) { + $peltiff->setIfd(new PelIfd(PelIfd::IFD0)); + $ifd = $peltiff->getIfd(); + } + + $exifIfd = $ifd->getSubIfd(PelIfd::EXIF); + if (!$exifIfd) { + $exifIfd = new PelIfd(PelIfd::EXIF); + $ifd->addSubIfd($exifIfd); + } + + $comment = $exifIfd->getEntry(PelTag::USER_COMMENT); + if (!$comment) { + $comment = new PelEntryUndefined(PelTag::USER_COMMENT, $text); + $exifIfd->addEntry($comment); + } else { + $comment->setValue($text); + } + + return $peljpeg->getBytes(); + } + + public function markAudio():void { + + } +} \ No newline at end of file diff --git a/lib/TaskProcessing/TextToImageProvider.php b/lib/TaskProcessing/TextToImageProvider.php index eb80f454..0a9e4647 100644 --- a/lib/TaskProcessing/TextToImageProvider.php +++ b/lib/TaskProcessing/TextToImageProvider.php @@ -11,6 +11,7 @@ use OCA\OpenAi\AppInfo\Application; use OCA\OpenAi\Service\OpenAiAPIService; +use OCA\OpenAi\Service\WatermarkingService; use OCP\Http\Client\IClientService; use OCP\IAppConfig; use OCP\IL10N; @@ -30,6 +31,7 @@ public function __construct( private IClientService $clientService, private IAppConfig $appConfig, private ?string $userId, + private WatermarkingService $watermarkingService, ) { } @@ -155,11 +157,14 @@ public function process(?string $userId, array $input, callable $reportProgress) $output = ['images' => []]; foreach ($urls as $url) { $imageResponse = $client->get($url, $requestOptions); - $output['images'][] = $imageResponse->getBody(); + $image = $imageResponse->getBody(); + $image = $this->watermarkingService->markImage($image); + $output['images'][] = $image; } foreach ($b64s as $b64) { $imagePayload = base64_decode($b64); - $output['images'][] = $imagePayload; + $image = $this->watermarkingService->markImage($imagePayload); + $output['images'][] = $image; } $endTime = time(); $this->openAiAPIService->updateExpImgProcessingTime($endTime - $startTime); From b17bc26d593217024f7dd9f0be44064ad331c971 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 18 Nov 2025 10:57:24 +0100 Subject: [PATCH 02/24] feat(TextToSpeech): Add watermark and metadata to announce that the audio was created by AI Signed-off-by: Marcel Klehr --- composer.json | 3 +- composer.lock | 69 ++++++++++++++++++++- lib/Service/WatermarkingService.php | 21 ++++++- lib/TaskProcessing/TextToSpeechProvider.php | 6 +- 4 files changed, 94 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 81f9879f..9e55efeb 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,8 @@ "require": { "php": "^8.1 || ^8.2 || ^8.3 || ^8.4", "bamarni/composer-bin-plugin": "^1.8", - "fileeye/pel": "^0.12.0" + "fileeye/pel": "^0.12.0", + "james-heinrich/getid3": "^1.9" }, "scripts": { "lint": "find . -name \\*.php -not -path './vendor*' -print0 | xargs -0 -n1 php -l", diff --git a/composer.lock b/composer.lock index d679a80c..85c4776e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5b85829d956b39254579f623e399f5fa", + "content-hash": "308c54e036fe8e0c1d0325b34c462822", "packages": [ { "name": "bamarni/composer-bin-plugin", @@ -126,6 +126,73 @@ "source": "https://github.com/FileEye/pel/tree/0.12.0" }, "time": "2025-01-17T21:19:20+00:00" + }, + { + "name": "james-heinrich/getid3", + "version": "v1.9.24", + "source": { + "type": "git", + "url": "https://github.com/JamesHeinrich/getID3.git", + "reference": "1e11b9b6eb468b522fe604a42a9fdc8ee759bf8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JamesHeinrich/getID3/zipball/1e11b9b6eb468b522fe604a42a9fdc8ee759bf8a", + "reference": "1e11b9b6eb468b522fe604a42a9fdc8ee759bf8a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.0" + }, + "suggest": { + "ext-SimpleXML": "SimpleXML extension is required to analyze RIFF/WAV/BWF audio files (also requires `ext-libxml`).", + "ext-com_dotnet": "COM extension is required when loading files larger than 2GB on Windows.", + "ext-ctype": "ctype extension is required when loading files larger than 2GB on 32-bit PHP (also on 64-bit PHP on Windows) or executing `getid3_lib::CopyTagsToComments`.", + "ext-dba": "DBA extension is required to use the DBA database as a cache storage.", + "ext-exif": "EXIF extension is required for graphic modules.", + "ext-iconv": "iconv extension is required to work with different character sets (when `ext-mbstring` is not available).", + "ext-json": "JSON extension is required to analyze Apple Quicktime videos.", + "ext-libxml": "libxml extension is required to analyze RIFF/WAV/BWF audio files.", + "ext-mbstring": "mbstring extension is required to work with different character sets.", + "ext-mysql": "MySQL extension is required to use the MySQL database as a cache storage (deprecated in PHP 5.5, removed in PHP >= 7.0, use `ext-mysqli` instead).", + "ext-mysqli": "MySQLi extension is required to use the MySQL database as a cache storage.", + "ext-rar": "RAR extension is required for RAR archive module.", + "ext-sqlite3": "SQLite3 extension is required to use the SQLite3 database as a cache storage.", + "ext-xml": "XML extension is required for graphic modules to analyze the XML metadata.", + "ext-zlib": "Zlib extension is required for archive modules and compressed metadata." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9.x-dev" + } + }, + "autoload": { + "classmap": [ + "getid3/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-1.0-or-later", + "LGPL-3.0-only", + "MPL-2.0" + ], + "description": "PHP script that extracts useful information from popular multimedia file formats", + "homepage": "https://www.getid3.org/", + "keywords": [ + "codecs", + "php", + "tags" + ], + "support": { + "issues": "https://github.com/JamesHeinrich/getID3/issues", + "source": "https://github.com/JamesHeinrich/getID3/tree/v1.9.24" + }, + "time": "2025-10-09T17:48:17+00:00" } ], "packages-dev": [ diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php index ea904f1a..ba1f3103 100644 --- a/lib/Service/WatermarkingService.php +++ b/lib/Service/WatermarkingService.php @@ -48,7 +48,6 @@ public function markImage(string $image): string { } private function addImageExifComment(string $text, string $filename): string { - require_once(__DIR__ . '/../../vendor/fileeye/pel/autoload.php'); $peljpeg = new PelJpeg($filename); $exif = $peljpeg->getExif(); if (!$exif) { @@ -83,7 +82,25 @@ private function addImageExifComment(string $text, string $filename): string { return $peljpeg->getBytes(); } - public function markAudio():void { + public function markAudio(string $audio): string { + $tempFile = $this->tempManager->getTemporaryFile('.mp3'); + file_put_contents($tempFile, $audio); + + $getID3 = new \getID3; + $getID3->setOption(array('encoding'=>'UTF-8')); + \getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.php', __FILE__, true); + $tagwriter = new \getid3_writetags(); + $tagwriter->filename = $tempFile; + $tagwriter->tagformats = ['id3v2.4']; + $tagwriter->tag_encoding = 'UTF-8'; + $tagwriter->tag_data = ['comment' => [self::COMMENT]]; + $tagwriter->WriteTags(); + + $newAudio = file_get_contents($tempFile); + if (!$newAudio) { + throw new \Exception('Unable to read audio file'); + } + return $newAudio; } } \ No newline at end of file diff --git a/lib/TaskProcessing/TextToSpeechProvider.php b/lib/TaskProcessing/TextToSpeechProvider.php index 2849d524..56186f95 100644 --- a/lib/TaskProcessing/TextToSpeechProvider.php +++ b/lib/TaskProcessing/TextToSpeechProvider.php @@ -11,6 +11,7 @@ use OCA\OpenAi\AppInfo\Application; use OCA\OpenAi\Service\OpenAiAPIService; +use OCA\OpenAi\Service\WatermarkingService; use OCP\IAppConfig; use OCP\IL10N; use OCP\TaskProcessing\EShapeType; @@ -28,6 +29,7 @@ public function __construct( private LoggerInterface $logger, private IAppConfig $appConfig, private ?string $userId, + private WatermarkingService $watermarkingService, ) { } @@ -153,7 +155,9 @@ public function process(?string $userId, array $input, callable $reportProgress) $this->logger->warning('OpenAI/LocalAI\'s text to speech generation failed: no speech returned'); throw new RuntimeException('OpenAI/LocalAI\'s text to speech generation failed: no speech returned'); } - return ['speech' => $apiResponse['body']]; + $audio = $this->watermarkingService->markAudio($apiResponse['body']); + + return ['speech' => $audio]; } catch (\Exception $e) { $this->logger->warning('OpenAI/LocalAI\'s text to image generation failed with: ' . $e->getMessage(), ['exception' => $e]); throw new RuntimeException('OpenAI/LocalAI\'s text to image generation failed with: ' . $e->getMessage()); From edcc72f6184fd4bb626a88a7a62e1a5a6b51208f Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 18 Nov 2025 10:57:43 +0100 Subject: [PATCH 03/24] fix: Load libraries in Application#boot() Signed-off-by: Marcel Klehr --- lib/AppInfo/Application.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 593b165b..3f70915d 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -161,5 +161,9 @@ public function register(IRegistrationContext $context): void { } public function boot(IBootContext $context): void { + // Load PHP Exif Library for adding image metadata + require_once(__DIR__ . '/../../vendor/fileeye/pel/autoload.php'); + // Load getID3 library for adding audio metadata + require_once(__DIR__ . '/../../vendor/james-heinrich/getid3/getid3/getid3.php'); } } From b76bed2bb993a848e391b3ae01e73917e5c9ff49 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 18 Nov 2025 11:25:33 +0100 Subject: [PATCH 04/24] fix: Run cs:fix and suppress psalm false positive Signed-off-by: Marcel Klehr --- lib/Service/WatermarkingService.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php index ba1f3103..b84219a6 100644 --- a/lib/Service/WatermarkingService.php +++ b/lib/Service/WatermarkingService.php @@ -1,5 +1,10 @@ setOption(array('encoding'=>'UTF-8')); - \getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'write.php', __FILE__, true); + $getID3->setOption(['encoding' => 'UTF-8']); + /** + * @psalm-suppress UndefinedConstant + */ + \getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); $tagwriter = new \getid3_writetags(); $tagwriter->filename = $tempFile; $tagwriter->tagformats = ['id3v2.4']; @@ -103,4 +113,4 @@ public function markAudio(string $audio): string { return $newAudio; } -} \ No newline at end of file +} From ba585215fb1f97e1dfccdaac977391d1f092e157 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 18 Nov 2025 13:34:55 +0100 Subject: [PATCH 05/24] fix: Add error handlers and fallback to non-watermarked output Signed-off-by: Marcel Klehr --- lib/Service/WatermarkingService.php | 103 +++++++++++++++------------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php index b84219a6..87c1d0e2 100644 --- a/lib/Service/WatermarkingService.php +++ b/lib/Service/WatermarkingService.php @@ -14,44 +14,50 @@ use lsolesen\pel\PelTag; use lsolesen\pel\PelTiff; use OCP\ITempManager; +use Psr\Log\LoggerInterface; class WatermarkingService { public const COMMENT = 'Generated with Artificial Intelligence'; public function __construct( private ITempManager $tempManager, + private LoggerInterface $logger, ) { } public function markImage(string $image): string { - $text = self::COMMENT; - - $img = imagecreatefromstring($image); - $font = 5;// built-in font 1-5 - $white = imagecolorallocate($img, 255, 255, 255); - $black = imagecolorallocate($img, 0, 0, 0); - - $w = imagefontwidth($font) * strlen($text); - $h = imagefontheight($font); - $px = imagesx($img) - $w - 10; - $py = imagesy($img) - $h - 10; - - // draw 1-pixel black outline by offsetting in 4 directions - for ($dx = -1; $dx <= 1; $dx++) { - for ($dy = -1; $dy <= 1; $dy++) { - if ($dx || $dy) { - imagestring($img, $font, $px + $dx, $py + $dy, $text, $black); + try { + $text = self::COMMENT; + + $img = imagecreatefromstring($image); + $font = 5;// built-in font 1-5 + $white = imagecolorallocate($img, 255, 255, 255); + $black = imagecolorallocate($img, 0, 0, 0); + + $w = imagefontwidth($font) * strlen($text); + $h = imagefontheight($font); + $px = imagesx($img) - $w - 10; + $py = imagesy($img) - $h - 10; + + // draw 1-pixel black outline by offsetting in 4 directions + for ($dx = -1; $dx <= 1; $dx++) { + for ($dy = -1; $dy <= 1; $dy++) { + if ($dx || $dy) { + imagestring($img, $font, $px + $dx, $py + $dy, $text, $black); + } } } - } - imagestring($img, $font, $px, $py, $text, $white); - - $tempFile = $this->tempManager->getTemporaryFile('.jpg'); - imagejpeg($img, $tempFile); - imagedestroy($img); + imagestring($img, $font, $px, $py, $text, $white); - $newImage = $this->addImageExifComment($text, $tempFile); + $tempFile = $this->tempManager->getTemporaryFile('.jpg'); + imagejpeg($img, $tempFile); + imagedestroy($img); - return $newImage; + $newImage = $this->addImageExifComment($text, $tempFile); + return $newImage; + } catch (\Throwable $e) { + $this->logger->warning('Could not add AI watermark to AI generated image', ['exception' => $e]); + return $image; + } } private function addImageExifComment(string $text, string $filename): string { @@ -90,27 +96,32 @@ private function addImageExifComment(string $text, string $filename): string { } public function markAudio(string $audio): string { - $tempFile = $this->tempManager->getTemporaryFile('.mp3'); - file_put_contents($tempFile, $audio); - - $getID3 = new \getID3; - $getID3->setOption(['encoding' => 'UTF-8']); - /** - * @psalm-suppress UndefinedConstant - */ - \getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); - $tagwriter = new \getid3_writetags(); - $tagwriter->filename = $tempFile; - $tagwriter->tagformats = ['id3v2.4']; - $tagwriter->tag_encoding = 'UTF-8'; - $tagwriter->tag_data = ['comment' => [self::COMMENT]]; - $tagwriter->WriteTags(); - - $newAudio = file_get_contents($tempFile); - if (!$newAudio) { - throw new \Exception('Unable to read audio file'); - } + try { + $tempFile = $this->tempManager->getTemporaryFile('.mp3'); + file_put_contents($tempFile, $audio); + + $getID3 = new \getID3; + $getID3->setOption(['encoding' => 'UTF-8']); + /** + * @psalm-suppress UndefinedConstant + */ + \getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); + $tagwriter = new \getid3_writetags(); + $tagwriter->filename = $tempFile; + $tagwriter->tagformats = ['id3v2.4']; + $tagwriter->tag_encoding = 'UTF-8'; + $tagwriter->tag_data = ['comment' => [self::COMMENT]]; + $tagwriter->WriteTags(); + + $newAudio = file_get_contents($tempFile); + if (!$newAudio) { + throw new \RuntimeException('Could not read temporary audio file'); + } - return $newAudio; + return $newAudio; + } catch (\Throwable $e) { + $this->logger->warning('Could not add AI watermark to AI generated image', ['exception' => $e]); + return $audio; + } } } From 1aeb0a4cb4af4a64944b64245d9f8cabe604e429 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 18 Nov 2025 13:35:17 +0100 Subject: [PATCH 06/24] test: Test AI watermarking + add TextToImage test Signed-off-by: Marcel Klehr --- tests/res/speech.mp3 | Bin 0 -> 28320 bytes tests/res/trees.jpg | Bin 0 -> 288584 bytes tests/unit/Providers/OpenAiProviderTest.php | 66 +++++++++++++++++++- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 tests/res/speech.mp3 create mode 100644 tests/res/trees.jpg diff --git a/tests/res/speech.mp3 b/tests/res/speech.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..bc47f500f1c4f340852cba01d87e0b4863fbed0d GIT binary patch literal 28320 zcmaIcc~nyE+bI6cC?FalDmaCRil(+fG&Cz5GE_9@w6wrkD|0BDdjJt9EN9WI2glU3 zwCT}C6mvu~HJj{7GtFk3=Q{QN*7~0Jx6V25{%fzrTAR)Ka9#IxU)TNX-Qyl0QtCJX z|MyHdLTUwmVdT>u-wE_F+IeS;TN2)TT}6efjP0&t{gl>@vI;A;8s1v~Vj8O&7b20~ z&_);)7`WyzJ>XRp)eC2V$!r*5kBMlj%ngY{HxMA2a5mJ{@G_P+dV^J?5rf=)^gF}brlENcCMc{k=9eDYHpa zYc$SZFu(nv@6DZ5BMI@gQRbbC4?iEe|LXRG&xagdtvT$*`u*@X62`#SSNH!sXo&y9 zr_51{J8xEqY$U7gebL!X?Ywj#jxr^Z$r;!8cBcdpv$5MW790EhX%~K(Zcvt z@vq;$oHT;td+2;ci}+A{>Oc?*sVzk-y3gYB6((+M88`N{LkH@X;$39BYSNh%gL_#z z8_CqfggUg{>8m!i!DE{bLJ-Ala%v3TQnI$e++J;^hEoK6MmnFq_=3eFt4^euL8UE; zjPK`=-gfQhZdGgBsY#PG=q7TVrHtv({nv zHzUryk#w#hh{dFz*%Je=q{nXTT9l_n9R1i}*yiL?>=4Z!EPQzsaFt5vf;^Ul=7AzO zyQ_+~N;r$CoYsAsI}>C`OS{{WNx!=Sg!f+;t#2 zdruUgmyZ}NyC7hzzY>{JIicvoa5N^A7>hzdE6&bxRH6)bias(w$gdz)rf(LW|2|fB zo?^2WU5QtUe#Ec#miEPNF^$#?Y~SJ>s~N@-=%&)m5?w6Ov_r zhn~syImr!Np7XuCsQ9oyBU(c6^Id+tXa8Y~=ekxVe$jE`CZ*lIn@NS*DvklziOr7x zhyZT%6XP=lI8@4L5Q^t&S$4kxql;eY1I@786W!m%))G5zj*Prn2J_HbBg1*{{Wgw5 zk^a_ye0_ISF^JIl5B`ejU58_e28s$L6e@{T7RN{#)9&S9Dw+=LIT&^-JJ#Kmc*`BI zu7FNUn>0N}D4J@F;99IPjzOZd2Q7@=@VP4=7z3#5#2ZnD_OnqmSFkgxyoPC-!GIfQ zK`B76M!fTNv6RrE7Y;;@P^!9m)(33ATgTP!z*_9DISb_hyL>jft+jsFPCJ}7 zSm9osEHM$t$8k^BX;o#od=3p}Zp$IMdn7=vG*CGF{EYPwxk)1#q_JFPIk-MUT@ZqQ zpWDE6RYO+*mJ7GlVH*CUDLgW{uZK%?-P1B3dsQdDDxhzut+wfSd4VcF;Y9fAp{0G0 z?|bg26Tkb6_RjpX{bAn6q`IUDUFD?n8sEv;8!JPFme0K@$-h>t-w{;t@#U{?|2&IJ zZFq6;=l#<=tS#r#o2;F8O!bJKFAI9P8j#)yIDh`mqs@c#D7FqH$F(a3UA)A@H}CIj z4T&=UCygG-y0Wl>)WxQ2C)XKo*T)qlIV1>7*KLa+1@DVZ=^VQEw{ebqnZ93FmYysj zOqx*v+&rOGDg5K>m15{*4WEDC+@1rGg|$~KBRZq6i8A*aKSAE4Kj!Q?U_6FK?O4#i zYZ6lfn7g2>Q7Cg&MllYcg<$brA+n%Il4dT*lM0K&>l|HpK|$lP7oRN^v1eYe-=HCr`L>AS9^K^sp8ttL7% z<>x2>uZ!&h%=Y3~#b=td{7l)Kb&U2w*!OFje_YKaAhb2L+&~BxFwv|UST}R3|0wYl zp2n)g8r`H_pL>E0f*W?reYyS_s!@gGNElbuPduU8m-)Vn6(XILz8|snl7_gk_vlG= z1XF#ZEm#AXOu^KG{_zdn9qvR0KE5L$35F@XA&?GU2;O6fNn|wFrNO>-F-a^EH^i?- zn>d?l`xw$k-AQ&9?{Hqo9Cd9AQZAu9$4tErG>?Rh+{_RI0>3JvtD)_qc0M2zgmPT4 z?mQ2IZ4|}aT$2fnbTjE$dlpZ?rhpE~a({uW#KfdWoDB-PTu`|x0%0hlw4{qIQs;76 zLEK?cS6A!=(Quv*o^WC@1w&cc>F~I5Z-ozKm+5w%S{8%0>NsnKNS7Cx%@~}p*D}QB2pC>YaB78k zb)duHGsTtg)QC+J?{yktRqjw_d@8wM{C-mhaEU$k54AHW-? z8B8>lmbDl{qKRJx4))9NHq9-MM?!boJlq&!q;@EmShluqP3fx6+$$p!!{2TS zXSCI3)yG&XtPUdal!9Y5NhLb*O+!hk(l-2B?_)7vCm)^ZyZfzdP0-F;C?pT79?kCO z;dIQk;jD!9Qy!Oks`wP`1|(Y)jloK;+-i>0BzkB8<`8u^(~xZYT@gwQP^hmK1)Gim zk7>f#i?v`TkO5_5D1Ur?b~-yzu^&I+pc&fWUWOH%H~j=G#LjBY6f@44qycSk5Cgy< zqiP^eP5Xr-_k@WVHp0)TbW(%-Y+{^5mh3QRE6vB)?2$<6Y3LnGBI3M{Psf(o~;Cu@VzD8GJUXfK@T$69bRCvxy8SY}f*MQ#=F{oI!i(V_8I zH3oYBe%yL$CjEUw@TXH7uaxbd{BmUV@%d!an_*2C)|u@(xet18G?X41W?7=2j&MWl3*&bVCNN^@<%=)eVO zOAk3jvgt0V#84FapXlNQD;@#@RX-I$u!f6ay=P8PfWX}sSp_|UM~XM)tp;3oF~>MW z!9~HZ16+drF(QB}xOsk{l0_2cp35L3?A!%*&?6F+Jb&p?zD`cFPyja zihkLL9gXc4^194mJ6!Bi+HkyVNHGlRZxhZE$!X3Qb$<_8RsJLB-7`c2)T4Xa)a4P7 zfoFj{c1NcON-Urk;(!Jhz=KOvVjHP@;*}X50x5v&76>!ZK&A(Di5YiSj4nK3JL_zo z|E7E2n^zJtBEEfGcJEb0pW!d#nYVd_GTX`e%zK4v<}enHOjh}Y>4K52&cKHbt^`(0`5@dUqPI_vHG)G%Uu z|Mq{5?yi8hH`Tkh0{NuBK|-MW+&rJ3RG2s&_sU_+VDL<*^Us}UKVc!D21E%Vn}JIJ zQ@FgEzUjz#BKtI$205$d;talqrcpwD?V}-4YHcWx32}oI;+WHv4FAQepf5BES^xnx z0c}nH25=hECeYIY90AfFU;o`qCnoUm1A!P`DwKR?5#d0GKtqLbnO0@rkXpN9Z6Vo! zr`^rH(SFXW`DSrQ{E5d*Qy9`!_xAk-I9{K6buKso3Rw%3t(^dSFgp7m0`*_Yp<1xE z?kOVJUbmXsd0^;O+>LdexI}WSK4ud+9$nX#r#VtLkX2M!;p!}>IPhE$WHT3-krubu zsTWxy6mD?SWEu|3f|C*w#8%c&OQTK9%w`-l841ng5CtX*wkWqwOde4`(@%`_$V~WP zjB$;hth|X7l8RIPIAFqQXjHbKL!=H}MzCMk4>l|JA|HY5F3(M4lwF=Ie!8A9pLkOU$n+nFFMeAQX`?mbuXp8OcePJ&E!A}n zi<4kmWfp@LwkZP2x<{}4q!mXssg7KoYE2Y}V}IiUkc&sfw4OT8jKP^LPx<@BDLCJo z@-&;xQuyhq2vO3$Y5N|*cLmd4iV*D?&QDPNg0*xWT%0A>@{z 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 UjA6;gYyVz<|NA-f|4(oJ56&Dr)Bpeg literal 0 HcmV?d00001 diff --git a/tests/res/trees.jpg b/tests/res/trees.jpg new file mode 100644 index 0000000000000000000000000000000000000000..300699c48b6684640cc4cf2345d936672481da9d GIT binary patch literal 288584 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�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%0DdaG~Cmp>{ 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 literal 0 HcmV?d00001 diff --git a/tests/unit/Providers/OpenAiProviderTest.php b/tests/unit/Providers/OpenAiProviderTest.php index 87d76fd0..b9fecbb3 100644 --- a/tests/unit/Providers/OpenAiProviderTest.php +++ b/tests/unit/Providers/OpenAiProviderTest.php @@ -18,11 +18,13 @@ use OCA\OpenAi\Service\OpenAiAPIService; use OCA\OpenAi\Service\OpenAiSettingsService; use OCA\OpenAi\Service\QuotaRuleService; +use OCA\OpenAi\Service\WatermarkingService; use OCA\OpenAi\TaskProcessing\ChangeToneProvider; use OCA\OpenAi\TaskProcessing\EmojiProvider; use OCA\OpenAi\TaskProcessing\HeadlineProvider; use OCA\OpenAi\TaskProcessing\ProofreadProvider; use OCA\OpenAi\TaskProcessing\SummaryProvider; +use OCA\OpenAi\TaskProcessing\TextToImageProvider; use OCA\OpenAi\TaskProcessing\TextToSpeechProvider; use OCA\OpenAi\TaskProcessing\TextToTextProvider; use OCA\OpenAi\TaskProcessing\TranslateProvider; @@ -581,11 +583,16 @@ public function testTextToSpeechProvider(): void { $this->createMock(\Psr\Log\LoggerInterface::class), \OCP\Server::get(IAppConfig::class), self::TEST_USER1, + \OCP\Server::get(WatermarkingService::class), ); $inputText = 'This is a test prompt'; - $response = 'BINARYDATA'; + $response = file_get_contents(__DIR__ . '/../../res/speech.mp3'); + + if (!$response) { + throw new \RuntimeException('Could not read test resourcce `speech.mp3`'); + } $url = self::OPENAI_API_BASE . 'audio/speech'; @@ -605,7 +612,7 @@ public function testTextToSpeechProvider(): void { $this->iClient->expects($this->once())->method('post')->with($url, $options)->willReturn($iResponse); $result = $TTSProvider->process(self::TEST_USER1, ['input' => $inputText], fn () => null); - $this->assertEquals(['speech' => 'BINARYDATA'], $result); + $this->assertArrayHasKey('speech', $result); // Check that token usage is logged properly (should be 21 characters) $usage = $this->quotaUsageMapper->getQuotaUnitsOfUser(self::TEST_USER1, Application::QUOTA_TYPE_SPEECH); @@ -614,4 +621,59 @@ public function testTextToSpeechProvider(): void { $this->quotaUsageMapper->deleteUserQuotaUsages(self::TEST_USER1); } + public function testTextToImageProvider(): void { + $TTSProvider = new TextToImageProvider( + $this->openAiApiService, + $this->createMock(\OCP\IL10N::class), + $this->createMock(\Psr\Log\LoggerInterface::class), + \OCP\Server::get(IClientService::class), + \OCP\Server::get(IAppConfig::class), + self::TEST_USER1, + \OCP\Server::get(WatermarkingService::class), + ); + + $inputText = 'This is a test prompt'; + + $responseImage = file_get_contents(__DIR__ . '/../../res/trees.jpg'); + + if (!$responseImage) { + throw new \RuntimeException('Could not read test resourcce `trees.jpg`'); + } + + $response = json_encode([ + 'data' => [ + [ + 'b64_json' => base64_encode($responseImage), + ] + ] + ]); + + $url = self::OPENAI_API_BASE . 'images/generations'; + + $options = ['timeout' => Application::OPENAI_DEFAULT_REQUEST_TIMEOUT, 'headers' => ['User-Agent' => Application::USER_AGENT, 'Authorization' => self::AUTHORIZATION_HEADER, 'Content-Type' => 'application/json']]; + $options['body'] = json_encode([ + 'prompt' => $inputText, + 'size' => '1024x1024', + 'n' => 1, + 'model' => Application::DEFAULT_IMAGE_MODEL_ID, + ]); + + $iResponse = $this->createMock(\OCP\Http\Client\IResponse::class); + $iResponse->method('getHeader')->with('Content-Type')->willReturn('application/json'); + $iResponse->method('getBody')->willReturn($response); + $iResponse->method('getStatusCode')->willReturn(200); + + $this->iClient->expects($this->once())->method('post')->with($url, $options)->willReturn($iResponse); + + $result = $TTSProvider->process(self::TEST_USER1, ['input' => $inputText], fn () => null); + $this->assertArrayHasKey('images', $result); + $this->assertArrayHasKey(0, $result['images']); + + // Check that token usage is logged properly (should be 21 characters) + $usage = $this->quotaUsageMapper->getQuotaUnitsOfUser(self::TEST_USER1, Application::QUOTA_TYPE_IMAGE); + $this->assertEquals(1, $usage); + // Clear quota usage + $this->quotaUsageMapper->deleteUserQuotaUsages(self::TEST_USER1); + } + } From eadcf475358fb073b3b65e5e8fff37c62d9c54d7 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 18 Nov 2025 13:50:19 +0100 Subject: [PATCH 07/24] fix: Add missing reuse annotation Signed-off-by: Marcel Klehr --- REUSE.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/REUSE.toml b/REUSE.toml index 3bc51460..43b2d63f 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -28,3 +28,9 @@ path = ["img/app.svg", "img/app-dark.svg"] precedence = "aggregate" SPDX-FileCopyrightText = "2025 OpenAI LLC" SPDX-License-Identifier = "LicenseRef-OpenAITrademarks" + +[[annotations]] +path = ["tests/res/trees.jpg", "tests/res/speech.mp3"] +precedence = "aggregate" +SPDX-FileCopyrightText = "2025 Nextcloud GmbH and Nextcloud contributors" +SPDX-License-Identifier = "AGPL-3.0-or-later" From cf5cbefc43387c0c9abc06337944b3017c700412 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 19 Nov 2025 13:03:26 +0100 Subject: [PATCH 08/24] fix: Load deps only in Watermarking methods Signed-off-by: Marcel Klehr --- lib/AppInfo/Application.php | 4 ---- lib/Service/WatermarkingService.php | 8 ++++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 3f70915d..593b165b 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -161,9 +161,5 @@ public function register(IRegistrationContext $context): void { } public function boot(IBootContext $context): void { - // Load PHP Exif Library for adding image metadata - require_once(__DIR__ . '/../../vendor/fileeye/pel/autoload.php'); - // Load getID3 library for adding audio metadata - require_once(__DIR__ . '/../../vendor/james-heinrich/getid3/getid3/getid3.php'); } } diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php index 87c1d0e2..c985159a 100644 --- a/lib/Service/WatermarkingService.php +++ b/lib/Service/WatermarkingService.php @@ -61,6 +61,10 @@ public function markImage(string $image): string { } private function addImageExifComment(string $text, string $filename): string { + // Load PHP Exif Library for adding image metadata + // We hope that it's not loaded yet. PHPScoper was a nightmare with this dep + require_once(__DIR__ . '/../../vendor/fileeye/pel/autoload.php'); + $peljpeg = new PelJpeg($filename); $exif = $peljpeg->getExif(); if (!$exif) { @@ -97,6 +101,10 @@ private function addImageExifComment(string $text, string $filename): string { public function markAudio(string $audio): string { try { + // Load getID3 library for adding audio metadata + // We hope that it's not loaded yet. PHPScoper was a nightmare with this dep + require_once(__DIR__ . '/../../vendor/james-heinrich/getid3/getid3/getid3.php'); + $tempFile = $this->tempManager->getTemporaryFile('.mp3'); file_put_contents($tempFile, $audio); From 560787cce863439cba71f95adcc068771216011c Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 19 Nov 2025 13:09:42 +0100 Subject: [PATCH 09/24] fix: Run cs:fix Signed-off-by: Marcel Klehr --- lib/Service/WatermarkingService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php index c985159a..476adaae 100644 --- a/lib/Service/WatermarkingService.php +++ b/lib/Service/WatermarkingService.php @@ -64,7 +64,7 @@ private function addImageExifComment(string $text, string $filename): string { // Load PHP Exif Library for adding image metadata // We hope that it's not loaded yet. PHPScoper was a nightmare with this dep require_once(__DIR__ . '/../../vendor/fileeye/pel/autoload.php'); - + $peljpeg = new PelJpeg($filename); $exif = $peljpeg->getExif(); if (!$exif) { From 608be8ab340954783dbb49a3c67c02c083bdce71 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 24 Nov 2025 09:15:43 +0100 Subject: [PATCH 10/24] fix: Address review comments Signed-off-by: Marcel Klehr --- lib/Service/WatermarkingService.php | 2 +- tests/unit/Providers/OpenAiProviderTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php index 476adaae..f8cb6c9d 100644 --- a/lib/Service/WatermarkingService.php +++ b/lib/Service/WatermarkingService.php @@ -29,7 +29,7 @@ public function markImage(string $image): string { $text = self::COMMENT; $img = imagecreatefromstring($image); - $font = 5;// built-in font 1-5 + $font = 2;// built-in font 1-5 $white = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); diff --git a/tests/unit/Providers/OpenAiProviderTest.php b/tests/unit/Providers/OpenAiProviderTest.php index b9fecbb3..19720acb 100644 --- a/tests/unit/Providers/OpenAiProviderTest.php +++ b/tests/unit/Providers/OpenAiProviderTest.php @@ -622,7 +622,7 @@ public function testTextToSpeechProvider(): void { } public function testTextToImageProvider(): void { - $TTSProvider = new TextToImageProvider( + $TextToImageProvider = new TextToImageProvider( $this->openAiApiService, $this->createMock(\OCP\IL10N::class), $this->createMock(\Psr\Log\LoggerInterface::class), @@ -665,7 +665,7 @@ public function testTextToImageProvider(): void { $this->iClient->expects($this->once())->method('post')->with($url, $options)->willReturn($iResponse); - $result = $TTSProvider->process(self::TEST_USER1, ['input' => $inputText], fn () => null); + $result = $TextToImageProvider->process(self::TEST_USER1, ['input' => $inputText], fn () => null); $this->assertArrayHasKey('images', $result); $this->assertArrayHasKey(0, $result['images']); From 7b0b1e368ad72580f18f2b4a89ae912a0b189098 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 24 Nov 2025 11:32:13 +0100 Subject: [PATCH 11/24] fix: Make php-scoper work Signed-off-by: Marcel Klehr --- .github/workflows/phpunit-mariadb.yml | 1 + .github/workflows/phpunit-pgsql.yml | 1 + .github/workflows/psalm-matrix.yml | 1 + composer.json | 2 + lib/AppInfo/Application.php | 12 + lib/Service/WatermarkingService.php | 29 +- scoper.inc.php | 49 + tests/unit/Providers/OpenAiProviderTest.php | 2 +- vendor-bin/php-scoper/composer.json | 23 + vendor-bin/php-scoper/composer.lock | 1597 +++++++++++++++++++ 10 files changed, 1699 insertions(+), 18 deletions(-) create mode 100644 scoper.inc.php create mode 100644 vendor-bin/php-scoper/composer.json create mode 100644 vendor-bin/php-scoper/composer.lock diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index 0a079eee..f8c5dec2 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -134,6 +134,7 @@ jobs: working-directory: apps/${{ env.APP_NAME }} run: | composer remove nextcloud/ocp --dev --no-scripts + composer i # twice because of php-scoper composer i - name: Set up Nextcloud diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index 96a32c3e..20415ecf 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -130,6 +130,7 @@ jobs: working-directory: apps/${{ env.APP_NAME }} run: | composer remove nextcloud/ocp --dev --no-scripts + composer i # twice because of php-scoper composer i - name: Set up Nextcloud diff --git a/.github/workflows/psalm-matrix.yml b/.github/workflows/psalm-matrix.yml index 8163ac98..46bb8353 100644 --- a/.github/workflows/psalm-matrix.yml +++ b/.github/workflows/psalm-matrix.yml @@ -65,6 +65,7 @@ jobs: - name: Install dependencies run: | composer remove nextcloud/ocp --dev + composer i # twice because of php-scoper composer i diff --git a/composer.json b/composer.json index 9e55efeb..85263cf7 100644 --- a/composer.json +++ b/composer.json @@ -25,9 +25,11 @@ "psalm:update-baseline": "psalm --threads=1 --update-baseline", "psalm:update-baseline:force": "psalm --threads=1 --update-baseline --set-baseline=tests/psalm-baseline.xml", "post-install-cmd": [ + "grep -r 'OCA\\\\OpenAi\\\\Vendor' ./vendor || vendor/bin/php-scoper add-prefix --prefix='OCA\\OpenAi\\Vendor' --output-dir=\".\" --working-dir=\"./vendor/\" -f --config=\"../scoper.inc.php\"", "composer dump-autoload" ], "post-update-cmd": [ + "grep -r 'OCA\\\\OpenAi\\\\Vendor' ./vendor || vendor/bin/php-scoper add-prefix --prefix='OCA\\OpenAi\\Vendor' --output-dir=\".\" --working-dir=\"./vendor/\" -f --config=\"../scoper.inc.php\"", "composer dump-autoload" ] }, diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 593b165b..f1731cc8 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -161,5 +161,17 @@ public function register(IRegistrationContext $context): void { } public function boot(IBootContext $context): void { + // Load PHP Exif Library for adding image metadata + \spl_autoload_register(function ($class) { + if (\substr_compare($class, 'OCA\OpenAi\Vendor\lsolesen\\pel\\', 0, 13) === 0) { + $classname = \str_replace('OCA\\OpenAi\\Vendor\\lsolesen\\pel\\', '', $class); + $load = \realpath(__DIR__ . '/../../vendor/fileeye/pel/src/' . $classname . '.php'); + if ($load !== \false) { + include_once \realpath($load); + } + } + }); + // Load getID3 library for adding audio metadata + require_once(__DIR__ . '/../../vendor/james-heinrich/getid3/getid3/getid3.php'); } } diff --git a/lib/Service/WatermarkingService.php b/lib/Service/WatermarkingService.php index f8cb6c9d..b5a1756c 100644 --- a/lib/Service/WatermarkingService.php +++ b/lib/Service/WatermarkingService.php @@ -7,14 +7,17 @@ namespace OCA\OpenAi\Service; -use lsolesen\pel\PelEntryUndefined; -use lsolesen\pel\PelExif; -use lsolesen\pel\PelIfd; -use lsolesen\pel\PelJpeg; -use lsolesen\pel\PelTag; -use lsolesen\pel\PelTiff; +use OCA\OpenAi\Vendor\getid3_lib; +use OCA\OpenAi\Vendor\getid3_writetags; +use OCA\OpenAi\Vendor\lsolesen\pel\PelEntryUndefined; +use OCA\OpenAi\Vendor\lsolesen\pel\PelExif; +use OCA\OpenAi\Vendor\lsolesen\pel\PelIfd; +use OCA\OpenAi\Vendor\lsolesen\pel\PelJpeg; +use OCA\OpenAi\Vendor\lsolesen\pel\PelTag; +use OCA\OpenAi\Vendor\lsolesen\pel\PelTiff; use OCP\ITempManager; use Psr\Log\LoggerInterface; +use const OCA\OpenAi\Vendor\GETID3_INCLUDEPATH; class WatermarkingService { public const COMMENT = 'Generated with Artificial Intelligence'; @@ -61,10 +64,6 @@ public function markImage(string $image): string { } private function addImageExifComment(string $text, string $filename): string { - // Load PHP Exif Library for adding image metadata - // We hope that it's not loaded yet. PHPScoper was a nightmare with this dep - require_once(__DIR__ . '/../../vendor/fileeye/pel/autoload.php'); - $peljpeg = new PelJpeg($filename); $exif = $peljpeg->getExif(); if (!$exif) { @@ -101,20 +100,16 @@ private function addImageExifComment(string $text, string $filename): string { public function markAudio(string $audio): string { try { - // Load getID3 library for adding audio metadata - // We hope that it's not loaded yet. PHPScoper was a nightmare with this dep - require_once(__DIR__ . '/../../vendor/james-heinrich/getid3/getid3/getid3.php'); - $tempFile = $this->tempManager->getTemporaryFile('.mp3'); file_put_contents($tempFile, $audio); - $getID3 = new \getID3; + $getID3 = new \OCA\OpenAi\Vendor\getID3; $getID3->setOption(['encoding' => 'UTF-8']); /** * @psalm-suppress UndefinedConstant */ - \getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); - $tagwriter = new \getid3_writetags(); + getid3_lib::IncludeDependency(GETID3_INCLUDEPATH . 'write.php', __FILE__, true); + $tagwriter = new getid3_writetags(); $tagwriter->filename = $tempFile; $tagwriter->tagformats = ['id3v2.4']; $tagwriter->tag_encoding = 'UTF-8'; diff --git a/scoper.inc.php b/scoper.inc.php new file mode 100644 index 00000000..a98013c8 --- /dev/null +++ b/scoper.inc.php @@ -0,0 +1,49 @@ + [ + Finder::create() + ->files() + ->exclude([ + 'bin', + 'bamarni', + 'nextcloud', + 'symfony', + 'psr' + ]) + ->in('.'), + ], + 'patchers' => [ + static function (string $filePath, string $prefix, string $content): string { + // + // PHP-Parser patch conditions for file targets + // + if (str_contains($filePath, '/pel/')) { + return preg_replace( + '%([ |<{:,\'](\\\\)?)lsolesen\\\\pel%', + '$1OCA\\\\OpenAi\\\\Vendor\\\\lsolesen\\\\pel', + $content + ); + } + + if (str_contains($filePath, '/getid3/')) { + return preg_replace( + '%\'getid3_\' .%', + '\'OCA\\\\OpenAi\\\\Vendor\\\\getid3_\' .', + $content + ); + } + + return $content; + }, + ], + 'expose-global-functions' => false, + 'expose-global-classes' => false, + 'expose-global-constants' => false, +]; diff --git a/tests/unit/Providers/OpenAiProviderTest.php b/tests/unit/Providers/OpenAiProviderTest.php index 19720acb..1d65f333 100644 --- a/tests/unit/Providers/OpenAiProviderTest.php +++ b/tests/unit/Providers/OpenAiProviderTest.php @@ -665,7 +665,7 @@ public function testTextToImageProvider(): void { $this->iClient->expects($this->once())->method('post')->with($url, $options)->willReturn($iResponse); - $result = $TextToImageProvider->process(self::TEST_USER1, ['input' => $inputText], fn () => null); + $result = $TextToImageProvider->process(self::TEST_USER1, ['input' => $inputText, 'numberOfImages' => 1], fn () => null); $this->assertArrayHasKey('images', $result); $this->assertArrayHasKey(0, $result['images']); diff --git a/vendor-bin/php-scoper/composer.json b/vendor-bin/php-scoper/composer.json new file mode 100644 index 00000000..84babd30 --- /dev/null +++ b/vendor-bin/php-scoper/composer.json @@ -0,0 +1,23 @@ +{ + "require": { + "humbug/php-scoper": "^0.18", + "cweagans/composer-patches": "^1.7" + }, + "config": { + "platform": { + "php": "8.1" + }, + "allow-plugins": { + "cweagans/composer-patches": true + } + }, + "extra": { + "patches": { + "thecodingmachine/safe": { + "PHP 8.4 compatibility, patch 1": "https://patch-diff.githubusercontent.com/raw/thecodingmachine/safe/pull/464.patch", + "PHP 8.4 compatibility, patch 2": "https://patch-diff.githubusercontent.com/raw/thecodingmachine/safe/pull/466.patch", + "PHP 8.4 compatibility, patch 3": "https://github.com/blizzz/safe/commit/6eeee2a20ffb2be3456ae8615b227c78e1ca8a20.patch" + } + } + } +} \ No newline at end of file diff --git a/vendor-bin/php-scoper/composer.lock b/vendor-bin/php-scoper/composer.lock new file mode 100644 index 00000000..07628b03 --- /dev/null +++ b/vendor-bin/php-scoper/composer.lock @@ -0,0 +1,1597 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "d3fc98d5174d04efc06f00c0c31bc0a7", + "packages": [ + { + "name": "cweagans/composer-patches", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages.", + "support": { + "issues": "https://github.com/cweagans/composer-patches/issues", + "source": "https://github.com/cweagans/composer-patches/tree/1.7.3" + }, + "time": "2022-12-20T22:53:13+00:00" + }, + { + "name": "fidry/console", + "version": "0.5.5", + "source": { + "type": "git", + "url": "https://github.com/theofidry/console.git", + "reference": "bc1fe03f600c63f12ec0a39c6b746c1a1fb77bf7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/console/zipball/bc1fe03f600c63f12ec0a39c6b746c1a1fb77bf7", + "reference": "bc1fe03f600c63f12ec0a39c6b746c1a1fb77bf7", + "shasum": "" + }, + "require": { + "php": "^7.4.0 || ^8.0.0", + "symfony/console": "^4.4 || ^5.4 || ^6.1", + "symfony/event-dispatcher-contracts": "^1.0 || ^2.5 || ^3.0", + "symfony/service-contracts": "^1.0 || ^2.5 || ^3.0", + "thecodingmachine/safe": "^1.3 || ^2.0", + "webmozart/assert": "^1.11" + }, + "conflict": { + "symfony/dependency-injection": "<5.3.0", + "symfony/framework-bundle": "<5.3.0", + "symfony/http-kernel": "<5.3.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4", + "composer/semver": "^3.3", + "ergebnis/composer-normalize": "^2.28", + "infection/infection": "^0.26", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.4.3", + "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.1", + "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.1", + "symfony/http-kernel": "^4.4 || ^5.4 || ^6.1", + "symfony/phpunit-bridge": "^4.4.47 || ^5.4 || ^6.0", + "symfony/yaml": "^4.4 || ^5.4 || ^6.1", + "webmozarts/strict-phpunit": "^7.3" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fidry\\Console\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo Fidry", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Library to create CLI applications", + "keywords": [ + "cli", + "console", + "symfony" + ], + "support": { + "issues": "https://github.com/theofidry/console/issues", + "source": "https://github.com/theofidry/console/tree/0.5.5" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2022-12-18T10:49:34+00:00" + }, + { + "name": "fidry/filesystem", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theofidry/filesystem.git", + "reference": "3e1f9cac40f807b7c4196013ab77cc1b9416e3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/filesystem/zipball/3e1f9cac40f807b7c4196013ab77cc1b9416e3e5", + "reference": "3e1f9cac40f807b7c4196013ab77cc1b9416e3e5", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/filesystem": "^6.4 || ^7.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4", + "ergebnis/composer-normalize": "^2.28", + "infection/infection": ">=0.26", + "phpunit/phpunit": "^10.3", + "symfony/finder": "^6.4 || ^7.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fidry\\FileSystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Théo Fidry", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Symfony Filesystem with a few more utilities.", + "keywords": [ + "filesystem" + ], + "support": { + "issues": "https://github.com/theofidry/filesystem/issues", + "source": "https://github.com/theofidry/filesystem/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2025-02-13T22:58:51+00:00" + }, + { + "name": "humbug/php-scoper", + "version": "0.18.7", + "source": { + "type": "git", + "url": "https://github.com/humbug/php-scoper.git", + "reference": "9386a0af946f175d7a1ebfb68851bc2bb8ad7858" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/humbug/php-scoper/zipball/9386a0af946f175d7a1ebfb68851bc2bb8ad7858", + "reference": "9386a0af946f175d7a1ebfb68851bc2bb8ad7858", + "shasum": "" + }, + "require": { + "fidry/console": "^0.5.0", + "fidry/filesystem": "^1.1", + "jetbrains/phpstorm-stubs": "^v2022.2", + "nikic/php-parser": "^4.12", + "php": "^8.1", + "symfony/console": "^5.2 || ^6.0", + "symfony/filesystem": "^5.2 || ^6.0", + "symfony/finder": "^5.2 || ^6.0", + "thecodingmachine/safe": "^2.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.1", + "ergebnis/composer-normalize": "^2.28", + "fidry/makefile": "^1.0", + "humbug/box": "^4.5.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.0", + "symfony/yaml": "^6.1" + }, + "bin": [ + "bin/php-scoper" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Humbug\\PhpScoper\\": "src/" + }, + "classmap": [ + "vendor-hotfix/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Théo Fidry", + "email": "theo.fidry@gmail.com" + }, + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com" + } + ], + "description": "Prefixes all PHP namespaces in a file or directory.", + "support": { + "issues": "https://github.com/humbug/php-scoper/issues", + "source": "https://github.com/humbug/php-scoper/tree/0.18.7" + }, + "time": "2023-11-04T18:01:12+00:00" + }, + { + "name": "jetbrains/phpstorm-stubs", + "version": "v2022.3", + "source": { + "type": "git", + "url": "https://github.com/JetBrains/phpstorm-stubs.git", + "reference": "6b568c153cea002dc6fad96285c3063d07cab18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/6b568c153cea002dc6fad96285c3063d07cab18d", + "reference": "6b568c153cea002dc6fad96285c3063d07cab18d", + "shasum": "" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "@stable", + "nikic/php-parser": "@stable", + "php": "^8.0", + "phpdocumentor/reflection-docblock": "@stable", + "phpunit/phpunit": "@stable" + }, + "type": "library", + "autoload": { + "files": [ + "PhpStormStubsMap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "PHP runtime & extensions header files for PhpStorm", + "homepage": "https://www.jetbrains.com/phpstorm", + "keywords": [ + "autocomplete", + "code", + "inference", + "inspection", + "jetbrains", + "phpstorm", + "stubs", + "type" + ], + "support": { + "source": "https://github.com/JetBrains/phpstorm-stubs/tree/v2022.3" + }, + "time": "2022-10-17T09:21:37+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.19.4", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" + }, + "time": "2024-09-29T15:01:53+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.27", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/13d3176cf8ad8ced24202844e9f95af11e2959fc", + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.27" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-06T10:25:16+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v6.4.24", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v6.4.24" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:14:14+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.27", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b6aa435d2fba50793b994a839c32b6064f063b", + "reference": "a1b6aa435d2fba50793b994a839c32b6064f063b", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.27" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-15T18:32:00+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T09:58:17+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:30:57+00:00" + }, + { + "name": "symfony/string", + "version": "v6.4.26", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/5621f039a71a11c87c106c1c598bdcd04a19aeea", + "reference": "5621f039a71a11c87c106c1c598bdcd04a19aeea", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-11T14:32:46+00:00" + }, + { + "name": "thecodingmachine/safe", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "^3.2", + "thecodingmachine/phpstan-strict-rules": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "files": [ + "deprecated/apc.php", + "deprecated/array.php", + "deprecated/datetime.php", + "deprecated/libevent.php", + "deprecated/misc.php", + "deprecated/password.php", + "deprecated/mssql.php", + "deprecated/stats.php", + "deprecated/strings.php", + "lib/special_cases.php", + "deprecated/mysqli.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gettext.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/mysql.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ], + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "deprecated/Exceptions/", + "generated/Exceptions/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" + }, + "time": "2023-04-05T11:54:14+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", + "php": "^7.2 || ^8.0" + }, + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.12.1" + }, + "time": "2025-10-29T15:56:20+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": {}, + "platform-dev": {}, + "platform-overrides": { + "php": "8.1" + }, + "plugin-api-version": "2.6.0" +} From 8d7439b8153c2bfa3bec4b671e76f6f0305d88bf Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 24 Nov 2025 11:47:19 +0100 Subject: [PATCH 12/24] fix: Make sure barmarni-bin runs Signed-off-by: Marcel Klehr --- composer.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/composer.json b/composer.json index 85263cf7..c98e185d 100644 --- a/composer.json +++ b/composer.json @@ -25,10 +25,12 @@ "psalm:update-baseline": "psalm --threads=1 --update-baseline", "psalm:update-baseline:force": "psalm --threads=1 --update-baseline --set-baseline=tests/psalm-baseline.xml", "post-install-cmd": [ + "@composer bin all install --ansi", "grep -r 'OCA\\\\OpenAi\\\\Vendor' ./vendor || vendor/bin/php-scoper add-prefix --prefix='OCA\\OpenAi\\Vendor' --output-dir=\".\" --working-dir=\"./vendor/\" -f --config=\"../scoper.inc.php\"", "composer dump-autoload" ], "post-update-cmd": [ + "@composer bin all install --ansi", "grep -r 'OCA\\\\OpenAi\\\\Vendor' ./vendor || vendor/bin/php-scoper add-prefix --prefix='OCA\\OpenAi\\Vendor' --output-dir=\".\" --working-dir=\"./vendor/\" -f --config=\"../scoper.inc.php\"", "composer dump-autoload" ] From 13fa61041b699b2899e840af5800e8b23a715423 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 24 Nov 2025 12:47:06 +0100 Subject: [PATCH 13/24] chore(REUSE): Fix REUSE annotations Signed-off-by: Marcel Klehr --- REUSE.toml | 2 +- scoper.inc.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/REUSE.toml b/REUSE.toml index 43b2d63f..9e3ae07a 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -30,7 +30,7 @@ SPDX-FileCopyrightText = "2025 OpenAI LLC" SPDX-License-Identifier = "LicenseRef-OpenAITrademarks" [[annotations]] -path = ["tests/res/trees.jpg", "tests/res/speech.mp3"] +path = ["tests/res/trees.jpg", "tests/res/speech.mp3", "vendor-bin/php-scoper/composer.json", "vendor-bin/php-scoper/composer.lock"] precedence = "aggregate" SPDX-FileCopyrightText = "2025 Nextcloud GmbH and Nextcloud contributors" SPDX-License-Identifier = "AGPL-3.0-or-later" diff --git a/scoper.inc.php b/scoper.inc.php index a98013c8..252d5675 100644 --- a/scoper.inc.php +++ b/scoper.inc.php @@ -1,5 +1,11 @@ Date: Mon, 24 Nov 2025 12:53:33 +0100 Subject: [PATCH 14/24] fix(build): Fix build script for php-scoper Signed-off-by: Marcel Klehr --- .github/workflows/appstore-build-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/appstore-build-publish.yml b/.github/workflows/appstore-build-publish.yml index 9a065b51..ab67e75c 100644 --- a/.github/workflows/appstore-build-publish.yml +++ b/.github/workflows/appstore-build-publish.yml @@ -104,6 +104,7 @@ jobs: if: steps.check_composer.outputs.files_exists == 'true' run: | cd ${{ env.APP_NAME }} + composer install --no-dev # twice because of php-scoper composer install --no-dev - name: Build ${{ env.APP_NAME }} From 2c18b5ba39a061921bdff0363c5c56ad255537e1 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 27 Nov 2025 11:47:03 +0100 Subject: [PATCH 15/24] refactor: Use new OCP interface for watermarking providers BREAKING: Drops support for nc < 33 BREAKING: Drops support for php < 8.2 Signed-off-by: Marcel Klehr --- appinfo/info.xml | 4 ++-- composer.json | 4 ++-- lib/TaskProcessing/TextToImageProvider.php | 10 +++++----- lib/TaskProcessing/TextToSpeechProvider.php | 12 ++++++++---- psalm.xml | 2 +- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 17654990..00c7c957 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -101,7 +101,7 @@ Negative: Learn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/). ]]> - 3.9.1 + 4.0.0-dev agpl Julien Veyssier OpenAi @@ -117,7 +117,7 @@ Learn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud https://github.com/nextcloud/integration_openai/raw/main/img/screenshot3.jpg https://github.com/nextcloud/integration_openai/raw/main/img/screenshot4.jpg - + OCA\OpenAi\Cron\CleanupQuotaDb diff --git a/composer.json b/composer.json index c98e185d..29db6237 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ } ], "require": { - "php": "^8.1 || ^8.2 || ^8.3 || ^8.4", + "php": "^8.2 || ^8.3 || ^8.4", "bamarni/composer-bin-plugin": "^1.8", "fileeye/pel": "^0.12.0", "james-heinrich/getid3": "^1.9" @@ -46,7 +46,7 @@ "optimize-autoloader": true, "classmap-authoritative": false, "platform": { - "php": "8.1" + "php": "8.2" } }, "extra": { diff --git a/lib/TaskProcessing/TextToImageProvider.php b/lib/TaskProcessing/TextToImageProvider.php index 0a9e4647..dd4c7011 100644 --- a/lib/TaskProcessing/TextToImageProvider.php +++ b/lib/TaskProcessing/TextToImageProvider.php @@ -16,13 +16,13 @@ use OCP\IAppConfig; use OCP\IL10N; use OCP\TaskProcessing\EShapeType; -use OCP\TaskProcessing\ISynchronousProvider; +use OCP\TaskProcessing\ISynchronousWatermarkingProvider; use OCP\TaskProcessing\ShapeDescriptor; use OCP\TaskProcessing\TaskTypes\TextToImage; use Psr\Log\LoggerInterface; use RuntimeException; -class TextToImageProvider implements ISynchronousProvider { +class TextToImageProvider implements ISynchronousWatermarkingProvider { public function __construct( private OpenAiAPIService $openAiAPIService, @@ -106,7 +106,7 @@ public function getOptionalOutputShapeEnumValues(): array { return []; } - public function process(?string $userId, array $input, callable $reportProgress): array { + public function process(?string $userId, array $input, callable $reportProgress, bool $includeWatermark = true): array { $startTime = time(); if (!isset($input['input']) || !is_string($input['input'])) { @@ -158,12 +158,12 @@ public function process(?string $userId, array $input, callable $reportProgress) foreach ($urls as $url) { $imageResponse = $client->get($url, $requestOptions); $image = $imageResponse->getBody(); - $image = $this->watermarkingService->markImage($image); + $image = $includeWatermark ? $this->watermarkingService->markImage($image) : $image; $output['images'][] = $image; } foreach ($b64s as $b64) { $imagePayload = base64_decode($b64); - $image = $this->watermarkingService->markImage($imagePayload); + $image = $includeWatermark ? $this->watermarkingService->markImage($imagePayload) : $imagePayload; $output['images'][] = $image; } $endTime = time(); diff --git a/lib/TaskProcessing/TextToSpeechProvider.php b/lib/TaskProcessing/TextToSpeechProvider.php index 56186f95..b02d2e69 100644 --- a/lib/TaskProcessing/TextToSpeechProvider.php +++ b/lib/TaskProcessing/TextToSpeechProvider.php @@ -15,13 +15,13 @@ use OCP\IAppConfig; use OCP\IL10N; use OCP\TaskProcessing\EShapeType; -use OCP\TaskProcessing\ISynchronousProvider; +use OCP\TaskProcessing\ISynchronousWatermarkingProvider; use OCP\TaskProcessing\ShapeDescriptor; use OCP\TaskProcessing\ShapeEnumValue; use Psr\Log\LoggerInterface; use RuntimeException; -class TextToSpeechProvider implements ISynchronousProvider { +class TextToSpeechProvider implements ISynchronousWatermarkingProvider { public function __construct( private OpenAiAPIService $openAiAPIService, @@ -115,7 +115,7 @@ public function getOptionalOutputShapeEnumValues(): array { return []; } - public function process(?string $userId, array $input, callable $reportProgress): array { + public function process(?string $userId, array $input, callable $reportProgress, bool $includeWatermark = true): array { if (!isset($input['input']) || !is_string($input['input'])) { throw new RuntimeException('Invalid prompt'); @@ -123,6 +123,10 @@ public function process(?string $userId, array $input, callable $reportProgress) // For OpenAI the text input limit is 4096 characters (https://platform.openai.com/docs/api-reference/audio/createSpeech#audio-createspeech-input) $prompt = $input['input']; + if ($includeWatermark) { + $prompt .= "\n\n" . $this->l->t('This was generated using Artificial Intelligence.'); + } + if (isset($input['model']) && is_string($input['model'])) { $model = $input['model']; } else { @@ -155,7 +159,7 @@ public function process(?string $userId, array $input, callable $reportProgress) $this->logger->warning('OpenAI/LocalAI\'s text to speech generation failed: no speech returned'); throw new RuntimeException('OpenAI/LocalAI\'s text to speech generation failed: no speech returned'); } - $audio = $this->watermarkingService->markAudio($apiResponse['body']); + $audio = $includeWatermark ? $this->watermarkingService->markAudio($apiResponse['body']) : $apiResponse['body']; return ['speech' => $audio]; } catch (\Exception $e) { diff --git a/psalm.xml b/psalm.xml index 128fcc86..891905b2 100644 --- a/psalm.xml +++ b/psalm.xml @@ -10,7 +10,7 @@ findUnusedCode="false" resolveFromConfigFile="true" ensureOverrideAttribute="false" - phpVersion="8.1" + phpVersion="8.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor-bin/psalm/vendor/vimeo/psalm/config.xsd" From 0ab94a04944c51aa848a0825bb294fbbaa1b5ca0 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 27 Nov 2025 13:30:02 +0100 Subject: [PATCH 16/24] chore: Update ci workflows Signed-off-by: Marcel Klehr --- .github/workflows/appstore-build-publish.yml | 40 ++++++++++++-------- .github/workflows/lint-eslint.yml | 8 ++-- .github/workflows/lint-php-cs.yml | 6 +-- .github/workflows/lint-php.yml | 6 +-- .github/workflows/node.yml | 14 +++++-- .github/workflows/phpunit-mariadb.yml | 8 ++-- .github/workflows/phpunit-pgsql.yml | 8 ++-- .github/workflows/pr-feedback.yml | 4 +- .github/workflows/psalm-matrix.yml | 10 +++-- .github/workflows/reuse.yml | 4 +- 10 files changed, 62 insertions(+), 46 deletions(-) diff --git a/.github/workflows/appstore-build-publish.yml b/.github/workflows/appstore-build-publish.yml index ab67e75c..62dc0f8d 100644 --- a/.github/workflows/appstore-build-publish.yml +++ b/.github/workflows/appstore-build-publish.yml @@ -35,14 +35,14 @@ jobs: echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false path: ${{ env.APP_NAME }} - name: Get app version number id: app-version - uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # master + uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # v1.0.0 with: filename: ${{ env.APP_NAME }}/appinfo/info.xml expression: "//info//version/text()" @@ -53,7 +53,7 @@ jobs: - name: Get appinfo data id: appinfo - uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # master + uses: skjnldsv/xpath-action@f5b036e9d973f42c86324833fd00be90665fbf77 # v1.0.0 with: filename: ${{ env.APP_NAME }}/appinfo/info.xml expression: "//info//dependencies//nextcloud/@min-version" @@ -65,13 +65,13 @@ jobs: continue-on-error: true with: path: ${{ env.APP_NAME }} - fallbackNode: '^20' - fallbackNpm: '^10' + fallbackNode: '^24' + fallbackNpm: '^11.3' - name: Set up node ${{ steps.versions.outputs.nodeVersion }} # Skip if no package.json if: ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: ${{ steps.versions.outputs.nodeVersion }} @@ -87,7 +87,7 @@ jobs: filename: ${{ env.APP_NAME }}/appinfo/info.xml - name: Set up php ${{ steps.php-versions.outputs.php-min }} - uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0 with: php-version: ${{ steps.php-versions.outputs.php-min }} coverage: none @@ -141,23 +141,31 @@ jobs: cd ${{ env.APP_NAME }} make appstore - - name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }} - continue-on-error: true - id: server-checkout + - name: Check server download link for ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }} run: | NCVERSION='${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}' - wget --quiet https://download.nextcloud.com/server/releases/latest-$NCVERSION.zip - unzip latest-$NCVERSION.zip + DOWNLOAD_URL=$(curl -s "https://updates.nextcloud.com/updater_server/latest?channel=beta&version=$NCVERSION" | jq -r '.downloads.zip[0]') + echo "DOWNLOAD_URL=$DOWNLOAD_URL" >> $GITHUB_ENV + + - name: Download server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }} + continue-on-error: true + id: server-download + if: ${{ env.DOWNLOAD_URL != 'null' }} + run: | + echo "Downloading release tarball from $DOWNLOAD_URL" + wget $DOWNLOAD_URL -O nextcloud.zip + unzip nextcloud.zip - name: Checkout server master fallback - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - if: ${{ steps.server-checkout.outcome != 'success' }} + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + if: ${{ steps.server-download.outcome != 'success' }} with: persist-credentials: false submodules: true repository: nextcloud/server path: nextcloud + - name: Sign app run: | # Extracting release @@ -174,7 +182,7 @@ jobs: tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }} - name: Attach tarball to github release - uses: svenstaro/upload-release-action@ebd922b779f285dafcac6410a0710daee9c12b82 # v2 + uses: svenstaro/upload-release-action@6b7fa9f267e90b50a19fef07b3596790bb941741 # v2.11.3 id: attach_to_release with: repo_token: ${{ secrets.GITHUB_TOKEN }} @@ -184,7 +192,7 @@ jobs: overwrite: true - name: Upload app to Nextcloud appstore - uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1 + uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1.0.3 with: app_name: ${{ env.APP_NAME }} appstore_token: ${{ secrets.APPSTORE_TOKEN }} diff --git a/.github/workflows/lint-eslint.yml b/.github/workflows/lint-eslint.yml index 1b1d5328..cdb2b9e7 100644 --- a/.github/workflows/lint-eslint.yml +++ b/.github/workflows/lint-eslint.yml @@ -56,7 +56,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false @@ -64,11 +64,11 @@ jobs: uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 id: versions with: - fallbackNode: '^20' - fallbackNpm: '^10' + fallbackNode: '^24' + fallbackNpm: '^11.3' - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: ${{ steps.versions.outputs.nodeVersion }} diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml index 14e40186..47bcd2df 100644 --- a/.github/workflows/lint-php-cs.yml +++ b/.github/workflows/lint-php-cs.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false @@ -34,7 +34,7 @@ jobs: uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - name: Set up php${{ steps.versions.outputs.php-min }} - uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0 with: php-version: ${{ steps.versions.outputs.php-min }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite @@ -45,7 +45,7 @@ jobs: - name: Install dependencies run: | - composer remove nextcloud/ocp --dev + composer remove nextcloud/ocp --dev --no-scripts composer i - name: Lint diff --git a/.github/workflows/lint-php.yml b/.github/workflows/lint-php.yml index 9e2de303..b53d7b5e 100644 --- a/.github/workflows/lint-php.yml +++ b/.github/workflows/lint-php.yml @@ -24,7 +24,7 @@ jobs: php-versions: ${{ steps.versions.outputs.php-versions }} steps: - name: Checkout app - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false @@ -43,12 +43,12 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0 with: php-version: ${{ matrix.php-versions }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml index bbeec5f0..0d7c372d 100644 --- a/.github/workflows/node.yml +++ b/.github/workflows/node.yml @@ -53,7 +53,7 @@ jobs: name: NPM build steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false @@ -61,17 +61,23 @@ jobs: uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 id: versions with: - fallbackNode: '^20' - fallbackNpm: '^10' + fallbackNode: '^24' + fallbackNpm: '^11.3' - name: Set up node ${{ steps.versions.outputs.nodeVersion }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: ${{ steps.versions.outputs.nodeVersion }} - name: Set up npm ${{ steps.versions.outputs.npmVersion }} run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}' + - name: Validate package-lock.json # See https://github.com/npm/cli/issues/4460 + run: | + npm i -g npm-package-lock-add-resolved@1.1.4 + npm-package-lock-add-resolved + git --no-pager diff --exit-code + - name: Install dependencies & build env: CYPRESS_INSTALL_BINARY: 0 diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index f8c5dec2..f1459bd3 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -25,7 +25,7 @@ jobs: server-max: ${{ steps.versions.outputs.branches-max-list }} steps: - name: Checkout app - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false @@ -91,7 +91,7 @@ jobs: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Checkout server - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false submodules: true @@ -99,13 +99,13 @@ jobs: ref: ${{ matrix.server-versions }} - name: Checkout app - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index 20415ecf..4ba5e160 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -25,7 +25,7 @@ jobs: server-max: ${{ steps.versions.outputs.branches-max-list }} steps: - name: Checkout app - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false @@ -92,7 +92,7 @@ jobs: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV - name: Checkout server - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false submodules: true @@ -100,13 +100,13 @@ jobs: ref: ${{ matrix.server-versions }} - name: Checkout app - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false path: apps/${{ env.APP_NAME }} - name: Set up php ${{ matrix.php-versions }} - uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0 with: php-version: ${{ matrix.php-versions }} # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation diff --git a/.github/workflows/pr-feedback.yml b/.github/workflows/pr-feedback.yml index e371ca97..f4c0477c 100644 --- a/.github/workflows/pr-feedback.yml +++ b/.github/workflows/pr-feedback.yml @@ -36,7 +36,7 @@ jobs: blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -) echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT" - - uses: nextcloud/pr-feedback-action@d7257d0e6298aace6a627c796390c5490f6be33b # main + - uses: nextcloud/pr-feedback-action@f0cab224dea8e1f282f9451de322f323c78fc7a5 # main with: feedback-message: | Hello there, @@ -50,6 +50,6 @@ jobs: (If you believe you should not receive this message, you can add yourself to the [blocklist](https://github.com/nextcloud/.github/blob/master/non-community-usernames.txt).) days-before-feedback: 14 - start-date: '2024-04-30' + start-date: '2025-06-12' exempt-authors: '${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }}' exempt-bots: true diff --git a/.github/workflows/psalm-matrix.yml b/.github/workflows/psalm-matrix.yml index 46bb8353..224c11e5 100644 --- a/.github/workflows/psalm-matrix.yml +++ b/.github/workflows/psalm-matrix.yml @@ -24,7 +24,7 @@ jobs: ocp-matrix: ${{ steps.versions.outputs.ocp-matrix }} steps: - name: Checkout app - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false @@ -46,12 +46,12 @@ jobs: name: static-psalm-analysis ${{ matrix.ocp-version }} steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Set up php${{ matrix.php-min }} - uses: shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e # v2.34.1 + uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # v2.36.0 with: php-version: ${{ matrix.php-min }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite @@ -64,10 +64,12 @@ jobs: - name: Install dependencies run: | - composer remove nextcloud/ocp --dev + composer remove nextcloud/ocp --dev --no-scripts composer i # twice because of php-scoper composer i + - name: Check for vulnerable PHP dependencies + run: composer require --dev roave/security-advisories:dev-latest - name: Install dependencies # zizmor: ignore[template-injection] run: composer require --dev 'nextcloud/ocp:${{ matrix.ocp-version }}' --ignore-platform-reqs --with-dependencies diff --git a/.github/workflows/reuse.yml b/.github/workflows/reuse.yml index 95a8626a..d65f3b0c 100644 --- a/.github/workflows/reuse.yml +++ b/.github/workflows/reuse.yml @@ -19,9 +19,9 @@ jobs: runs-on: ubuntu-latest-low steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: REUSE Compliance Check - uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0 + uses: fsfe/reuse-action@676e2d560c9a403aa252096d99fcab3e1132b0f5 # v6.0.0 From 691a75f05a566b89b69902b306fcd57bca83101b Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 27 Nov 2025 13:32:49 +0100 Subject: [PATCH 17/24] fix(ci): fix php-cs workflow Signed-off-by: Marcel Klehr --- .github/workflows/lint-php-cs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml index 47bcd2df..cf49eec8 100644 --- a/.github/workflows/lint-php-cs.yml +++ b/.github/workflows/lint-php-cs.yml @@ -46,6 +46,7 @@ jobs: - name: Install dependencies run: | composer remove nextcloud/ocp --dev --no-scripts + composer i # twice because of php-scoper composer i - name: Lint From 34e4f97ff97eef0575d271b04fe251408376cca8 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Thu, 27 Nov 2025 13:40:17 +0100 Subject: [PATCH 18/24] fix: Update copmposer.lock fixes psalm matrix Signed-off-by: Marcel Klehr --- composer.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/composer.lock b/composer.lock index 85c4776e..722e65f1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "308c54e036fe8e0c1d0325b34c462822", + "content-hash": "7ccd91568a2cb120d5788be1bfe2af07", "packages": [ { "name": "bamarni/composer-bin-plugin", - "version": "1.8.2", + "version": "1.8.3", "source": { "type": "git", "url": "https://github.com/bamarni/composer-bin-plugin.git", - "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880" + "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", - "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880", + "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/e7ef9e012667327516c24e5fad9903a3bc91389d", + "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d", "shasum": "" }, "require": { @@ -30,7 +30,7 @@ "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.5", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.0", "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" @@ -59,9 +59,9 @@ ], "support": { "issues": "https://github.com/bamarni/composer-bin-plugin/issues", - "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2" + "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.3" }, - "time": "2022-10-31T08:38:03+00:00" + "time": "2025-11-24T19:20:55+00:00" }, { "name": "fileeye/pel", @@ -202,12 +202,12 @@ "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "9a98e90424373c05673e2b5bc1182f8bdb0262c5" + "reference": "2ce5bef7efc76907b708860d472ccaf401d3bf0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/9a98e90424373c05673e2b5bc1182f8bdb0262c5", - "reference": "9a98e90424373c05673e2b5bc1182f8bdb0262c5", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/2ce5bef7efc76907b708860d472ccaf401d3bf0c", + "reference": "2ce5bef7efc76907b708860d472ccaf401d3bf0c", "shasum": "" }, "require": { @@ -221,7 +221,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "32.0.0-dev" + "dev-master": "33.0.0-dev" } }, "notification-url": "https://packagist.org/downloads/", @@ -243,7 +243,7 @@ "issues": "https://github.com/nextcloud-deps/ocp/issues", "source": "https://github.com/nextcloud-deps/ocp/tree/master" }, - "time": "2025-07-09T00:55:07+00:00" + "time": "2025-11-25T00:51:14+00:00" }, { "name": "psr/clock", @@ -455,11 +455,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.1 || ^8.2 || ^8.3 || ^8.4" + "php": "^8.2 || ^8.3 || ^8.4" }, "platform-dev": {}, "platform-overrides": { - "php": "8.1" + "php": "8.2" }, "plugin-api-version": "2.6.0" } From 8376c9fe60b625ffd92233465eb793551194b527 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 1 Dec 2025 14:09:21 +0100 Subject: [PATCH 19/24] fix(composer): Don't require composer install to be run twice Signed-off-by: Marcel Klehr --- .github/workflows/appstore-build-publish.yml | 1 - .github/workflows/lint-php-cs.yml | 1 - .github/workflows/phpunit-mariadb.yml | 1 - .github/workflows/phpunit-pgsql.yml | 1 - .github/workflows/psalm-matrix.yml | 1 - composer.json | 6 ++++-- 6 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/appstore-build-publish.yml b/.github/workflows/appstore-build-publish.yml index 62dc0f8d..47fd92eb 100644 --- a/.github/workflows/appstore-build-publish.yml +++ b/.github/workflows/appstore-build-publish.yml @@ -104,7 +104,6 @@ jobs: if: steps.check_composer.outputs.files_exists == 'true' run: | cd ${{ env.APP_NAME }} - composer install --no-dev # twice because of php-scoper composer install --no-dev - name: Build ${{ env.APP_NAME }} diff --git a/.github/workflows/lint-php-cs.yml b/.github/workflows/lint-php-cs.yml index cf49eec8..47bcd2df 100644 --- a/.github/workflows/lint-php-cs.yml +++ b/.github/workflows/lint-php-cs.yml @@ -46,7 +46,6 @@ jobs: - name: Install dependencies run: | composer remove nextcloud/ocp --dev --no-scripts - composer i # twice because of php-scoper composer i - name: Lint diff --git a/.github/workflows/phpunit-mariadb.yml b/.github/workflows/phpunit-mariadb.yml index f1459bd3..36aae81f 100644 --- a/.github/workflows/phpunit-mariadb.yml +++ b/.github/workflows/phpunit-mariadb.yml @@ -134,7 +134,6 @@ jobs: working-directory: apps/${{ env.APP_NAME }} run: | composer remove nextcloud/ocp --dev --no-scripts - composer i # twice because of php-scoper composer i - name: Set up Nextcloud diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml index 4ba5e160..a39e0bf7 100644 --- a/.github/workflows/phpunit-pgsql.yml +++ b/.github/workflows/phpunit-pgsql.yml @@ -130,7 +130,6 @@ jobs: working-directory: apps/${{ env.APP_NAME }} run: | composer remove nextcloud/ocp --dev --no-scripts - composer i # twice because of php-scoper composer i - name: Set up Nextcloud diff --git a/.github/workflows/psalm-matrix.yml b/.github/workflows/psalm-matrix.yml index 224c11e5..37f51fbb 100644 --- a/.github/workflows/psalm-matrix.yml +++ b/.github/workflows/psalm-matrix.yml @@ -65,7 +65,6 @@ jobs: - name: Install dependencies run: | composer remove nextcloud/ocp --dev --no-scripts - composer i # twice because of php-scoper composer i - name: Check for vulnerable PHP dependencies diff --git a/composer.json b/composer.json index 29db6237..003bf18a 100644 --- a/composer.json +++ b/composer.json @@ -27,12 +27,14 @@ "post-install-cmd": [ "@composer bin all install --ansi", "grep -r 'OCA\\\\OpenAi\\\\Vendor' ./vendor || vendor/bin/php-scoper add-prefix --prefix='OCA\\OpenAi\\Vendor' --output-dir=\".\" --working-dir=\"./vendor/\" -f --config=\"../scoper.inc.php\"", - "composer dump-autoload" + "composer dump-autoload", + "composer install --no-scripts" ], "post-update-cmd": [ "@composer bin all install --ansi", "grep -r 'OCA\\\\OpenAi\\\\Vendor' ./vendor || vendor/bin/php-scoper add-prefix --prefix='OCA\\OpenAi\\Vendor' --output-dir=\".\" --working-dir=\"./vendor/\" -f --config=\"../scoper.inc.php\"", - "composer dump-autoload" + "composer dump-autoload", + "composer update --no-scripts" ] }, "require-dev": { From 5e54920ef3dd174d56195d5b5ce90305bff2048a Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 1 Dec 2025 14:17:00 +0100 Subject: [PATCH 20/24] Fix: Fix TextToSpeech test Signed-off-by: Marcel Klehr --- tests/unit/Providers/OpenAiProviderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/Providers/OpenAiProviderTest.php b/tests/unit/Providers/OpenAiProviderTest.php index 1d65f333..278a1ece 100644 --- a/tests/unit/Providers/OpenAiProviderTest.php +++ b/tests/unit/Providers/OpenAiProviderTest.php @@ -598,7 +598,7 @@ public function testTextToSpeechProvider(): void { $options = ['timeout' => Application::OPENAI_DEFAULT_REQUEST_TIMEOUT, 'headers' => ['User-Agent' => Application::USER_AGENT, 'Authorization' => self::AUTHORIZATION_HEADER, 'Content-Type' => 'application/json']]; $options['body'] = json_encode([ - 'input' => $inputText, + 'input' => $inputText . "\n\n" . 'This was generated using Artificial Intelligence.', 'voice' => Application::DEFAULT_SPEECH_VOICE, 'model' => Application::DEFAULT_SPEECH_MODEL_ID, 'response_format' => 'mp3', From e73f631c1bab70dd40d755c339606dc636623677 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 1 Dec 2025 15:04:10 +0100 Subject: [PATCH 21/24] Fix: Update phpunit Signed-off-by: Marcel Klehr --- vendor-bin/phpunit/composer.json | 2 +- vendor-bin/phpunit/composer.lock | 1653 ------------------------------ 2 files changed, 1 insertion(+), 1654 deletions(-) delete mode 100644 vendor-bin/phpunit/composer.lock diff --git a/vendor-bin/phpunit/composer.json b/vendor-bin/phpunit/composer.json index 47e7dc7b..a437f458 100644 --- a/vendor-bin/phpunit/composer.json +++ b/vendor-bin/phpunit/composer.json @@ -3,6 +3,6 @@ "php": "^8.1 || ^8.2 || ^8.3 || ^8.4" }, "require-dev": { - "phpunit/phpunit": "^10.5.45" + "phpunit/phpunit": "10.x" } } diff --git a/vendor-bin/phpunit/composer.lock b/vendor-bin/phpunit/composer.lock deleted file mode 100644 index 7c91cdf2..00000000 --- a/vendor-bin/phpunit/composer.lock +++ /dev/null @@ -1,1653 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8e82d18cbfa5d9918199e7a449241b1b", - "packages": [], - "packages-dev": [ - { - "name": "myclabs/deep-copy", - "version": "1.13.3", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "faed855a7b5f4d4637717c2b3863e277116beb36" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36", - "reference": "faed855a7b5f4d4637717c2b3863e277116beb36", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.3" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2025-07-05T12:25:42+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.5.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" - }, - "time": "2025-05-31T08:24:38+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "10.1.16", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" - }, - "require-dev": { - "phpunit/phpunit": "^10.1" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-08-22T04:31:57+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "4.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T06:24:48+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:56:09+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T14:07:24+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:57:52+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "10.5.47", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3637b3e50d32ab3a0d1a33b3b6177169ec3d95a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3637b3e50d32ab3a0d1a33b3b6177169ec3d95a3", - "reference": "3637b3e50d32ab3a0d1a33b3b6177169ec3d95a3", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.1", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", - "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", - "sebastian/diff": "^5.1.1", - "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.5-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.47" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2025-06-20T11:29:11+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:12:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:58:43+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:59:15+00:00" - }, - { - "name": "sebastian/comparator", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-10-18T14:56:07+00:00" - }, - { - "name": "sebastian/complexity", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-21T08:37:17+00:00" - }, - { - "name": "sebastian/diff", - "version": "5.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:15:17+00:00" - }, - { - "name": "sebastian/environment", - "version": "6.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-23T08:47:14+00:00" - }, - { - "name": "sebastian/exporter", - "version": "5.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:17:12+00:00" - }, - { - "name": "sebastian/global-state", - "version": "6.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:19:19+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-21T08:38:20+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:08:32+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:06:18+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:05:40+00:00" - }, - { - "name": "sebastian/type", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T07:10:45+00:00" - }, - { - "name": "sebastian/version", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-07T11:34:05+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:36:25+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": {}, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.1 || ^8.2 || ^8.3 || ^8.4" - }, - "platform-dev": {}, - "plugin-api-version": "2.6.0" -} From 44d5ce2bb1705aaaeb2e9d3c76b28794307f6633 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 1 Dec 2025 15:29:24 +0100 Subject: [PATCH 22/24] Fix: Downgrade phpunit Signed-off-by: Marcel Klehr --- vendor-bin/phpunit/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor-bin/phpunit/composer.json b/vendor-bin/phpunit/composer.json index a437f458..c3e1e9c4 100644 --- a/vendor-bin/phpunit/composer.json +++ b/vendor-bin/phpunit/composer.json @@ -3,6 +3,6 @@ "php": "^8.1 || ^8.2 || ^8.3 || ^8.4" }, "require-dev": { - "phpunit/phpunit": "10.x" + "phpunit/phpunit": "9.x" } } From cd0a8c2317b946a4f490e3ffe1ecf7f3021f9426 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 1 Dec 2025 15:39:54 +0100 Subject: [PATCH 23/24] Fix: Fix tests Signed-off-by: Marcel Klehr --- lib/TaskProcessing/TextToSpeechProvider.php | 2 +- tests/unit/Providers/OpenAiProviderTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/TaskProcessing/TextToSpeechProvider.php b/lib/TaskProcessing/TextToSpeechProvider.php index b02d2e69..0afb930e 100644 --- a/lib/TaskProcessing/TextToSpeechProvider.php +++ b/lib/TaskProcessing/TextToSpeechProvider.php @@ -124,7 +124,7 @@ public function process(?string $userId, array $input, callable $reportProgress, $prompt = $input['input']; if ($includeWatermark) { - $prompt .= "\n\n" . $this->l->t('This was generated using Artificial Intelligence.'); + $prompt .= "\n\n" . 'This was generated using Artificial Intelligence.'; } if (isset($input['model']) && is_string($input['model'])) { diff --git a/tests/unit/Providers/OpenAiProviderTest.php b/tests/unit/Providers/OpenAiProviderTest.php index 278a1ece..7c9d9fba 100644 --- a/tests/unit/Providers/OpenAiProviderTest.php +++ b/tests/unit/Providers/OpenAiProviderTest.php @@ -598,7 +598,7 @@ public function testTextToSpeechProvider(): void { $options = ['timeout' => Application::OPENAI_DEFAULT_REQUEST_TIMEOUT, 'headers' => ['User-Agent' => Application::USER_AGENT, 'Authorization' => self::AUTHORIZATION_HEADER, 'Content-Type' => 'application/json']]; $options['body'] = json_encode([ - 'input' => $inputText . "\n\n" . 'This was generated using Artificial Intelligence.', + 'input' => $inputText . "\n\n" . 'This was generated using Artificial Intelligence.', 'voice' => Application::DEFAULT_SPEECH_VOICE, 'model' => Application::DEFAULT_SPEECH_MODEL_ID, 'response_format' => 'mp3', @@ -616,7 +616,7 @@ public function testTextToSpeechProvider(): void { // Check that token usage is logged properly (should be 21 characters) $usage = $this->quotaUsageMapper->getQuotaUnitsOfUser(self::TEST_USER1, Application::QUOTA_TYPE_SPEECH); - $this->assertEquals(21, $usage); + $this->assertEquals(72, $usage); // Clear quota usage $this->quotaUsageMapper->deleteUserQuotaUsages(self::TEST_USER1); } From 88d271cfd8e67b560c15bd88a3a8d0805a2e529c Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 1 Dec 2025 15:48:53 +0100 Subject: [PATCH 24/24] Fix: Properly fix tests Signed-off-by: Marcel Klehr --- lib/TaskProcessing/TextToSpeechProvider.php | 2 +- tests/unit/Providers/OpenAiProviderTest.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/TaskProcessing/TextToSpeechProvider.php b/lib/TaskProcessing/TextToSpeechProvider.php index 0afb930e..b02d2e69 100644 --- a/lib/TaskProcessing/TextToSpeechProvider.php +++ b/lib/TaskProcessing/TextToSpeechProvider.php @@ -124,7 +124,7 @@ public function process(?string $userId, array $input, callable $reportProgress, $prompt = $input['input']; if ($includeWatermark) { - $prompt .= "\n\n" . 'This was generated using Artificial Intelligence.'; + $prompt .= "\n\n" . $this->l->t('This was generated using Artificial Intelligence.'); } if (isset($input['model']) && is_string($input['model'])) { diff --git a/tests/unit/Providers/OpenAiProviderTest.php b/tests/unit/Providers/OpenAiProviderTest.php index 7c9d9fba..0bae2710 100644 --- a/tests/unit/Providers/OpenAiProviderTest.php +++ b/tests/unit/Providers/OpenAiProviderTest.php @@ -579,13 +579,15 @@ public function testTranslationProvider(): void { public function testTextToSpeechProvider(): void { $TTSProvider = new TextToSpeechProvider( $this->openAiApiService, - $this->createMock(\OCP\IL10N::class), + $l10n = $this->createMock(\OCP\IL10N::class), $this->createMock(\Psr\Log\LoggerInterface::class), \OCP\Server::get(IAppConfig::class), self::TEST_USER1, \OCP\Server::get(WatermarkingService::class), ); + $l10n->method('t')->willReturn('This was generated using Artificial Intelligence.'); + $inputText = 'This is a test prompt'; $response = file_get_contents(__DIR__ . '/../../res/speech.mp3');