Skip to content

release/v0.1.10: Phase 10 — Real Image Conversion Drivers#141

Merged
menvil merged 37 commits into
mainfrom
release/v0.1.10-phase10-real-image-conversion-drivers
Jun 1, 2026
Merged

release/v0.1.10: Phase 10 — Real Image Conversion Drivers#141
menvil merged 37 commits into
mainfrom
release/v0.1.10-phase10-real-image-conversion-drivers

Conversation

@menvil

@menvil menvil commented Jun 1, 2026

Copy link
Copy Markdown
Owner

Phase 10 — Real Image Conversion Drivers

Задачи CONV-130–CONV-146.

What's included

Packages installed:

  • intervention/image ^4.1 — PNG/JPG/WEBP image processing via GD
  • barryvdh/laravel-dompdf ^3.1 — single-image PDF generation

New drivers (app/Conversion/Drivers/Image/):

Driver Key Notes
PngToJpgDriver png_to_jpg Fills transparent areas with configurable background
JpgToPngDriver jpg_to_png Lossless PNG output
PngToWebpDriver png_to_webp Lossy WEBP via GD (WebP support confirmed)
JpgToWebpDriver jpg_to_webp Lossy WEBP with quality option
PngToPdfDriver png_to_pdf Single-page PDF, configurable page/margin/fit
JpgToPdfDriver jpg_to_pdf Shared PDF logic via RendersSingleImagePdf trait

Test infrastructure:

  • Tests\Support\ImageFixture — programmatic PNG/JPG fixture generation (no committed binaries)
  • Tests\Support\ConversionContextFactory — lightweight ConversionContext builder for driver unit tests

Registry: All 6 drivers registered in ConverterServiceProvider

Integration smoke tests: ProcessConversionJobRealDriverTest — PNG→JPG, JPG→WEBP, PNG→PDF through the full queue pipeline

Test plan

  • 268 tests pass (composer test)
  • composer lint passes
  • npm run build passes
  • No UI/billing/API changes

🤖 Generated with Claude Code


Summary by cubic

Adds six real image conversion drivers and registers them for end-to-end queue processing. Also adds source file guards, a shared quality resolver, and a refined PDF template. Covers CONV-130–CONV-146.

  • New Features

    • Drivers added and registered: png_to_jpg, jpg_to_png, png_to_webp, jpg_to_webp, png_to_pdf, jpg_to_pdf (with source file existence guards).
    • Image conversions via GD with quality presets; png_to_jpg fills transparency with a configurable background; shared quality resolver trait.
    • PDF generation with page size, auto/explicit orientation, margin presets, and contain/cover fit; shared trait and refined resources/views/pdf/single-image.blade.php.
    • Test infra for generated fixtures, driver unit tests, and queue smoke tests covering PNG→JPG, JPG→WEBP, PNG→PDF.
  • Dependencies

    • Added intervention/image ^4.1 for GD-based image processing.
    • Added barryvdh/laravel-dompdf ^3.1 for single-image PDF generation.

Written for commit c217f16. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added image format conversions: JPG↔PNG, JPG→WebP, PNG→JPG, PNG→WebP
    • Added single-image PDF export for JPG and PNG with configurable page size, orientation, margins and fit modes
    • Added image quality resolution utility and a PDF HTML template for single-image rendering
  • Tests

    • Added comprehensive feature and end-to-end tests plus test helpers/fixtures for all new drivers
  • Chores

    • Added image and PDF processing packages to dependencies

menvil and others added 30 commits May 31, 2026 23:16
Phase 9: Conversion Job Core (CONV-112–CONV-129)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ocessing-packages

CONV-130: Install image processing packages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-test-fixtures

CONV-131: Add image driver test fixtures
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-jpg-driver

CONV-133: Implement PNG to JPG driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-png-driver

CONV-135: Implement JPG to PNG driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-driver

CONV-136: Test PNG to WEBP driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-webp-driver

CONV-137: Implement PNG to WEBP driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-driver

CONV-138: Test JPG to WEBP driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-webp-driver

CONV-139: Implement JPG to WEBP driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ration-package

CONV-140: Install PDF generation package
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-pdf-driver

CONV-142: Implement PNG to PDF driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
menvil and others added 5 commits June 1, 2026 20:30
…-pdf-driver

CONV-144: Implement JPG to PDF driver
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…age-drivers

CONV-145: Register real image drivers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…integration-smoke-tests

CONV-146: Add real driver integration smoke tests
@github-actions github-actions Bot added the release Triggers AI code review (CodeRabbit, Cubic) label Jun 1, 2026
@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 707dd613-1ea8-4faf-bec3-c85b9b00526a

📥 Commits

Reviewing files that changed from the base of the PR and between 3349387 and c217f16.

📒 Files selected for processing (14)
  • app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php
  • app/Conversion/Drivers/Image/Concerns/ResolvesImageQuality.php
  • app/Conversion/Drivers/Image/JpgToPngDriver.php
  • app/Conversion/Drivers/Image/JpgToWebpDriver.php
  • app/Conversion/Drivers/Image/PngToJpgDriver.php
  • app/Conversion/Drivers/Image/PngToWebpDriver.php
  • resources/views/pdf/single-image.blade.php
  • tests/Feature/Conversion/Drivers/JpgToPdfDriverTest.php
  • tests/Feature/Conversion/Drivers/JpgToPngDriverTest.php
  • tests/Feature/Conversion/Drivers/JpgToWebpDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToJpgDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToPdfDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToWebpDriverTest.php
  • tests/Support/ConversionContextFactory.php
💤 Files with no reviewable changes (7)
  • tests/Feature/Conversion/Drivers/JpgToPdfDriverTest.php
  • tests/Feature/Conversion/Drivers/JpgToPngDriverTest.php
  • tests/Feature/Conversion/Drivers/JpgToWebpDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToPdfDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToJpgDriverTest.php
  • tests/Support/ConversionContextFactory.php
  • tests/Feature/Conversion/Drivers/PngToWebpDriverTest.php
✅ Files skipped from review due to trivial changes (1)
  • app/Conversion/Drivers/Image/Concerns/ResolvesImageQuality.php
🚧 Files skipped from review as they are similar to previous changes (4)
  • app/Conversion/Drivers/Image/JpgToWebpDriver.php
  • app/Conversion/Drivers/Image/PngToWebpDriver.php
  • app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php
  • app/Conversion/Drivers/Image/JpgToPngDriver.php

📝 Walkthrough

Walkthrough

This PR adds six image conversion drivers (JPG↔PNG, JPG/PNG↔WebP, JPG/PNG→PDF) with a shared trait for single-image PDF rendering, test fixtures and factories, and service provider registration to integrate drivers into the converter registry.

Changes

Image Conversion Drivers & PDF Rendering Pipeline

Layer / File(s) Summary
Shared PDF rendering infrastructure and dependencies
app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php, resources/views/pdf/single-image.blade.php, composer.json
RendersSingleImagePdf trait handles PDF generation: reads source image, constructs data URI, resolves page orientation/margins from options, renders HTML via Blade template, generates PDF with DomPDF, and writes result.pdf to storage. Blade template applies configurable margins and fit modes (contain/fill). Added barryvdh/laravel-dompdf v^3.1 and intervention/image v^4.1 dependencies.
Image format conversion drivers (JPG/PNG/WebP)
app/Conversion/Drivers/Image/JpgToPngDriver.php, app/Conversion/Drivers/Image/JpgToWebpDriver.php, app/Conversion/Drivers/Image/PngToJpgDriver.php, app/Conversion/Drivers/Image/PngToWebpDriver.php, app/Conversion/Drivers/Image/Concerns/ResolvesImageQuality.php
Drivers decode source images via Intervention Image and persist conversions: JpgToPngDriver (PNG output), JpgToWebpDriver/PngToWebpDriver (WebP output with quality resolution), and PngToJpgDriver (fills transparency background and resolves JPEG quality). ResolvesImageQuality maps quality labels to integers.
PDF conversion drivers
app/Conversion/Drivers/Image/JpgToPdfDriver.php, app/Conversion/Drivers/Image/PngToPdfDriver.php
Two drivers delegate to RendersSingleImagePdf, passing their respective MIME types (image/jpeg and image/png) to render single-image PDFs.
Driver registration in service provider
app/Providers/ConverterServiceProvider.php
Imports all image driver classes and updates ConverterDriverRegistry singleton to inject driver instances, replacing the previous empty registry.
Test support infrastructure
tests/Support/ImageFixture.php, tests/Support/ConversionContextFactory.php, tests/Feature/Conversion/ImageFixtureTest.php
ImageFixture provides png() and jpg() static helpers generating in-memory test images via Intervention Image/GD and persisting to local disk under randomized fixture directories. ConversionContextFactory builds ConversionContext objects with randomized output paths for test isolation. A test verifies fixture generation.
Individual driver feature tests
tests/Feature/Conversion/ConverterDriverRegistryRealDriversTest.php, tests/Feature/Conversion/Drivers/JpgToPdfDriverTest.php, tests/Feature/Conversion/Drivers/JpgToPngDriverTest.php, tests/Feature/Conversion/Drivers/JpgToWebpDriverTest.php, tests/Feature/Conversion/Drivers/PngToJpgDriverTest.php, tests/Feature/Conversion/Drivers/PngToPdfDriverTest.php, tests/Feature/Conversion/Drivers/PngToWebpDriverTest.php
Seven feature tests validate each driver in isolation using faked storage and fixtures: registry test verifies find() resolution; driver tests assert conversion output files exist on storage, validate metadata (extension/MIME/size), and for PDF verify %PDF header.
End-to-end conversion job integration test
tests/Feature/Conversion/ProcessConversionJobRealDriverTest.php
Three integration tests exercise complete workflows (PNG→JPG, JPG→WebP, PNG→PDF) by executing ProcessConversionJob with the real ConverterDriverRegistry, verifying job status transitions to Completed, result files persist, and PDF content is correct.

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly Related PRs

  • menvil/FileConverter#123: Introduces the ConverterDriver interface and ConverterDriverRegistry pipeline that these six concrete driver implementations extend and integrate with.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.76% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: implementing real image conversion drivers for Phase 10, which is the primary purpose of this PR.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v0.1.10-phase10-real-image-conversion-drivers

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (4)
tests/Support/ConversionContextFactory.php (1)

17-33: 💤 Low value

$outputExtension is never used.

The parameter is accepted but not referenced; ConversionContext has no output-extension field and drivers hardcode their own output filename/extension. It reads as if it influences the output, which it doesn't. Consider either documenting why it's retained for call-site readability or dropping it.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/Support/ConversionContextFactory.php` around lines 17 - 33, The
forSourcePath factory currently accepts an unused parameter $outputExtension;
remove this dead parameter from the method signature in
ConversionContextFactory::forSourcePath and from all places that call it, and
update any tests or call-sites to stop passing an output extension; leave the
function body as-is (it already constructs FileRecord, ConversionJob and returns
ConversionContext) and ensure ConversionContext::class or driver code is not
expecting an output extension field (no changes needed there).
app/Conversion/Drivers/Image/JpgToWebpDriver.php (1)

25-26: ⚡ Quick win

Consider adding error handling for image decoding.

If the source file is corrupted or not a valid JPEG, decodePath() may throw an exception. While Laravel's exception handler will catch it, adding explicit error handling would provide better context for debugging conversion failures.

🛡️ Suggested error handling
 $sourcePath = Storage::disk('local')->path($context->sourceFile->stored_path);
-$image = $manager->decodePath($sourcePath);
+try {
+    $image = $manager->decodePath($sourcePath);
+} catch (\Exception $e) {
+    throw new \RuntimeException("Failed to decode JPG image: {$e->getMessage()}", 0, $e);
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/Conversion/Drivers/Image/JpgToWebpDriver.php` around lines 25 - 26, Wrap
the call to $manager->decodePath($sourcePath) in a try/catch inside
JpgToWebpDriver (around where $sourcePath is built from
Storage::disk('local')->path($context->sourceFile->stored_path)) to catch
decoding exceptions, log or attach contextual details (e.g.,
$context->sourceFile->stored_path and any file id) and either rethrow a more
descriptive ConversionException or return a clear failure result so callers see
why decode failed; ensure the catch only handles decodePath errors and preserves
the original exception message for debugging.
app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php (1)

40-56: ⚡ Quick win

Consider using Intervention Image instead of procedural GD functions.

The resolveOrientation method uses procedural GD functions (imagecreatefromstring, imagesx, imagesy, imagedestroy), while the rest of the codebase uses Intervention Image (as seen in JpgToWebpDriver). This creates an inconsistency in image handling approach. Additionally, the silent fallback to 'portrait' on line 48 when imagecreatefromstring fails could mask legitimate errors during development.

Using Intervention Image would provide better consistency, error reporting, and maintainability.

♻️ Proposed refactor using Intervention Image
+use Intervention\Image\Drivers\Gd\Driver;
+use Intervention\Image\ImageManager;
+
 private function resolveOrientation(string $orientation, string $imageContent): string
 {
     if ($orientation !== 'auto') {
         return $orientation;
     }

-    $image = imagecreatefromstring($imageContent);
-    if ($image === false) {
-        return 'portrait';
-    }
-
-    $width = imagesx($image);
-    $height = imagesy($image);
-    imagedestroy($image);
+    try {
+        $manager = new ImageManager(new Driver);
+        $image = $manager->read($imageContent);
+        $width = $image->width();
+        $height = $image->height();
+    } catch (\Exception $e) {
+        return 'portrait';
+    }

     return $width > $height ? 'landscape' : 'portrait';
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php` around lines
40 - 56, The resolveOrientation method currently uses procedural GD functions;
replace that logic with Intervention Image (use ImageManager or the app's Image
facade as used in JpgToWebpDriver) to open the image buffer, get width/height
via ->width() and ->height(), and determine 'landscape' vs 'portrait'; also
remove the silent fallback—catch any Exception from Intervention
Image::make(...) and either rethrow or return a clearly logged error (do not
silently return 'portrait') so failures are surfaced during development.
app/Conversion/Drivers/Image/PngToJpgDriver.php (1)

47-56: ⚡ Quick win

Extract the duplicated quality mapping into a shared concern.

resolveQuality() is byte-for-byte identical here, in PngToWebpDriver (and JpgToWebpDriver per the stack). Keeping three copies risks the mapping drifting between formats. Since a Concerns/ directory already exists, move this into a shared trait (e.g. ResolvesImageQuality) and use it in each driver.

♻️ Suggested extraction
// app/Conversion/Drivers/Image/Concerns/ResolvesImageQuality.php
<?php

declare(strict_types=1);

namespace App\Conversion\Drivers\Image\Concerns;

trait ResolvesImageQuality
{
    private function resolveQuality(mixed $quality): int
    {
        return match ($quality) {
            'low' => 60,
            'medium' => 75,
            'high' => 90,
            'max' => 100,
            default => 85,
        };
    }
}

Then drop the local resolveQuality() from each driver and add use ResolvesImageQuality; to the class.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/Conversion/Drivers/Image/PngToJpgDriver.php` around lines 47 - 56,
Extract the duplicate resolveQuality implementation into a shared trait named
ResolvesImageQuality inside the existing Concerns namespace and have each driver
(PngToJpgDriver, PngToWebpDriver, JpgToWebpDriver) use that trait; specifically,
create the trait with the existing resolveQuality(mixed $quality): int mapping,
remove the local resolveQuality methods from the three driver classes, and add
use ResolvesImageQuality; in each class so they share a single authoritative
implementation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php`:
- Line 16: The fetch of the source file using
Storage::disk('local')->get($context->sourceFile->stored_path) in
RendersSingleImagePdf lacks error handling; update the code to first validate
the file exists and is readable (e.g., Storage::disk('local')->exists(...) or
isReadable) and/or wrap the get() call in a try-catch, and when missing or
unreadable throw or return a clear, contextual error that includes
$context->sourceFile->stored_path (and class/method context) so callers can
understand which source file failed (reference the RendersSingleImagePdf concern
and the $sourceContent retrieval).

---

Nitpick comments:
In `@app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php`:
- Around line 40-56: The resolveOrientation method currently uses procedural GD
functions; replace that logic with Intervention Image (use ImageManager or the
app's Image facade as used in JpgToWebpDriver) to open the image buffer, get
width/height via ->width() and ->height(), and determine 'landscape' vs
'portrait'; also remove the silent fallback—catch any Exception from
Intervention Image::make(...) and either rethrow or return a clearly logged
error (do not silently return 'portrait') so failures are surfaced during
development.

In `@app/Conversion/Drivers/Image/JpgToWebpDriver.php`:
- Around line 25-26: Wrap the call to $manager->decodePath($sourcePath) in a
try/catch inside JpgToWebpDriver (around where $sourcePath is built from
Storage::disk('local')->path($context->sourceFile->stored_path)) to catch
decoding exceptions, log or attach contextual details (e.g.,
$context->sourceFile->stored_path and any file id) and either rethrow a more
descriptive ConversionException or return a clear failure result so callers see
why decode failed; ensure the catch only handles decodePath errors and preserves
the original exception message for debugging.

In `@app/Conversion/Drivers/Image/PngToJpgDriver.php`:
- Around line 47-56: Extract the duplicate resolveQuality implementation into a
shared trait named ResolvesImageQuality inside the existing Concerns namespace
and have each driver (PngToJpgDriver, PngToWebpDriver, JpgToWebpDriver) use that
trait; specifically, create the trait with the existing resolveQuality(mixed
$quality): int mapping, remove the local resolveQuality methods from the three
driver classes, and add use ResolvesImageQuality; in each class so they share a
single authoritative implementation.

In `@tests/Support/ConversionContextFactory.php`:
- Around line 17-33: The forSourcePath factory currently accepts an unused
parameter $outputExtension; remove this dead parameter from the method signature
in ConversionContextFactory::forSourcePath and from all places that call it, and
update any tests or call-sites to stop passing an output extension; leave the
function body as-is (it already constructs FileRecord, ConversionJob and returns
ConversionContext) and ensure ConversionContext::class or driver code is not
expecting an output extension field (no changes needed there).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ec155307-5f6a-454d-8c93-4b2bfe0718ac

📥 Commits

Reviewing files that changed from the base of the PR and between da76f7c and 3349387.

⛔ Files ignored due to path filters (1)
  • composer.lock is excluded by !**/*.lock
📒 Files selected for processing (21)
  • app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php
  • app/Conversion/Drivers/Image/JpgToPdfDriver.php
  • app/Conversion/Drivers/Image/JpgToPngDriver.php
  • app/Conversion/Drivers/Image/JpgToWebpDriver.php
  • app/Conversion/Drivers/Image/PngToJpgDriver.php
  • app/Conversion/Drivers/Image/PngToPdfDriver.php
  • app/Conversion/Drivers/Image/PngToWebpDriver.php
  • app/Providers/ConverterServiceProvider.php
  • composer.json
  • resources/views/pdf/single-image.blade.php
  • tests/Feature/Conversion/ConverterDriverRegistryRealDriversTest.php
  • tests/Feature/Conversion/Drivers/JpgToPdfDriverTest.php
  • tests/Feature/Conversion/Drivers/JpgToPngDriverTest.php
  • tests/Feature/Conversion/Drivers/JpgToWebpDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToJpgDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToPdfDriverTest.php
  • tests/Feature/Conversion/Drivers/PngToWebpDriverTest.php
  • tests/Feature/Conversion/ImageFixtureTest.php
  • tests/Feature/Conversion/ProcessConversionJobRealDriverTest.php
  • tests/Support/ConversionContextFactory.php
  • tests/Support/ImageFixture.php

Comment thread app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 issues found across 22 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread app/Conversion/Drivers/Image/JpgToWebpDriver.php Outdated
Comment thread resources/views/pdf/single-image.blade.php Outdated
Comment thread resources/views/pdf/single-image.blade.php Outdated
Comment thread app/Conversion/Drivers/Image/Concerns/RendersSingleImagePdf.php Outdated
menvil and others added 2 commits June 1, 2026 21:21
…de corrections

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 10 review fixes: source guards, shared quality trait, dompdf Blade corrections
@menvil menvil merged commit d5779df into main Jun 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Triggers AI code review (CodeRabbit, Cubic)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant