Releases: oxhq/canio
v1.0.6
v1.0.6
This release refreshes the public project surface for the Canio launch story.
The Laravel rendering API and Stagehand runtime contract are unchanged. The release keeps the package tag, Stagehand version, README, changelogs, static site, and release notes aligned for the current v1.0 line.
Highlights
- Added a root
preview.gifdemo asset for the README. - Rewrote the root README around browser-grade Laravel PDFs, explicit readiness, and render evidence.
- Kept artifact examples aligned with the implemented
debug(),artifact(), andreplay()APIs. - Removed the stale
v1.0.1roadmap document now superseded by release notes.
Runtime
No render-contract behavior changes are included in this release.
Stagehand is published as v1.0.6 so install defaults, release assets, and the Laravel package tag stay aligned.
For Laravel Users
Use the normal upgrade flow:
composer require oxhq/canio:^1.0
php artisan canio:install
php artisan canio:doctorRelease Assets
This release publishes Stagehand binaries for Linux, macOS, and Windows on amd64 and arm64, plus checksums.txt.
v1.0.5
v1.0.5
This patch release hardens the v1.0.4 Rod-backed runtime line before the next public distribution.
Canio still defaults to the native Go rod-cdp local renderer, installs a managed Chrome for Testing bundle for local rendering, keeps local-cdp as the explicit local fallback, and supports remote-cdp for production hosts that should not install or supervise Chrome directly.
Fixed
php artisan canio:installis now repeatable. When the managed Stagehand binary and browser bundle already exist, the command reuses them unless--forceis passed.canio:installnow returns a failing exit code when config publish, runtime install, browser install, or doctor fails.php artisan canio:doctornow fails in embedded auto-start mode when Stagehand cannot be reached after startup readiness checks instead of reporting success with only a warning.- Doctor output now includes a Redis-specific diagnostic when the embedded runtime cannot start while
CANIO_RUNTIME_JOB_BACKEND=redis. - Embedded runtime startup now cleans stale Chromium singleton lock files from both legacy
browser-*profile directories and the current Rodstagehand-*/browser-*layout. - The clean-install launch smoke now derives its default runtime release from
PackageVersion::TAGinstead of carrying a stale hard-coded tag. - The launch smoke now uses Windows-safe default Composer version constraints, avoiding
composer.batcaret escaping issues under Git Bash.
Why This Matters
This release closes the main gaps found during the packageability review: repeat installs should not fail because assets are already present, doctor should fail when embedded runtime startup is actually broken, Rod profile cleanup should match Stagehand's current per-process profile layout, and release smoke tests should follow the current package/runtime version automatically.
For Laravel Users
Use the normal upgrade flow:
composer require oxhq/canio:^1.0
php artisan canio:install
php artisan canio:doctorUse --force when you intentionally want to replace the installed Stagehand binary or browser bundle:
php artisan canio:install --forceFor production hosts using embedded mode with Redis-backed runtime jobs, a failing doctor now means the runtime could not be reached after startup. Check Redis connectivity, CANIO_RUNTIME_REDIS_*, and the configured Stagehand runtime log path.
Release Assets
This release publishes Stagehand binaries for Linux, macOS, and Windows on amd64 and arm64, plus checksums.txt.
v1.0.4
v1.0.4
This patch release keeps the v1.0.3 renderer shape and fixes a Windows consumer-path issue found while validating the published package plus published Stagehand assets.
Canio still defaults to the Rod-backed rod-cdp local renderer, installs a managed Chrome for Testing bundle for local rendering, keeps local-cdp as the explicit local fallback, and supports remote-cdp for production hosts that should not install or supervise Chrome directly.
Fixed
- Absolute filesystem saves on Windows, such as
C:\path\invoice.pdf, now write directly to that local path when no Laravel disk is provided. - The stored render result for direct filesystem saves records the path without a disk name.
Why This Matters
The public clean-install smoke renders to an absolute temporary path. On Windows, v1.0.3 rendered successfully but handed the absolute C:/... output path to Laravel's default disk. Flysystem then treated that path as a relative storage key under storage/app/private, which failed before the PDF could be written.
For Laravel Users
Use the normal upgrade flow:
composer require oxhq/canio:^1.0
php artisan canio:install
php artisan canio:doctorIf you save to a Laravel disk, keep passing the disk explicitly:
Canio::html($html)->save('documents/invoice.pdf', 'local');If you save to an absolute local filesystem path, omit the disk:
Canio::html($html)->save($absolutePath);Release Assets
This release publishes Stagehand binaries for Linux, macOS, and Windows on amd64 and arm64, plus checksums.txt.
v1.0.3
v1.0.3
This release makes Canio's local browser runtime more packageable and moves the default local renderer to the Rod-backed Stagehand driver.
The Laravel package now installs and repairs a managed Chrome for Testing bundle, reports that bundle through canio:doctor, and passes the installed browser path into Stagehand automatically. Stagehand now defaults to rod-cdp, where Rod owns local browser launch, document preparation, readiness waiting, PDF output, and core debug artifact capture behind the same RenderSpec -> RenderResult contract.
Changed
rod-cdpis now the default local Stagehand renderer.local-cdpremains available as an explicit local fallback.remote-cdpremains the recommended path when production hosts should not install or supervise Chrome directly.- The default browser product remains full Chrome for Testing
chromefor fidelity;chrome-headless-shellis still available for controlled lighter-runtime environments.
Added
php artisan canio:browser:installphp artisan canio:browser:repair- browser bundle manifest resolution for installed Chrome for Testing executables
- doctor output for installed browser product, version, platform, and executable path
- Rod-native tests for HTML-to-PDF parity, debug screenshot/DOM/console artifacts, and failed URL status handling
Fixed
- Stagehand Go tests now run from the live Windows checkout after normalizing cloud placeholder files into ordinary files.
- App-level Stagehand tests now pass the detected Chrome path into the default Rod renderer instead of relying on implicit browser discovery.
For Laravel Users
After upgrading, run:
php artisan canio:installThat command installs the matching Stagehand runtime and, unless disabled, installs a managed Chrome for Testing browser bundle for local renderers.
To force the direct CDP fallback:
CANIO_RENDERER_DRIVER=local-cdpTo use a remote browser endpoint:
CANIO_RENDERER_DRIVER=remote-cdp
CANIO_REMOTE_CDP_ENDPOINT=ws://chrome-renderer.internal:9222/devtools/browser/<id>Release Assets
This release publishes Stagehand binaries for Linux, macOS, and Windows on amd64 and arm64, plus checksums.txt.
v1.0.2
v1.0.2
This release fixes a runtime/package drift that could make local Stagehand startup fail after installing the Laravel package.
The Laravel package had learned to launch Stagehand with newer navigation and request-limit flags, but the default installer could still fetch the older v1.0.1 Stagehand binary. That binary did not know those flags, so it exited before serving. v1.0.2 aligns the package and runtime surfaces and adds a compatibility guard so this class of mismatch fails early with a clear installer error instead of reaching end users as a broken local runtime.
Fixed
- The Laravel installer now validates downloaded Stagehand binaries before accepting them.
- Stale Stagehand binaries that do not expose required serve flags are rejected and removed.
- The default Stagehand runtime release now points at
v1.0.2, matching the package command surface. - Windows binary resolution now handles absolute drive-letter paths and runnable
.exe,.cmd, and.batfiles correctly. - Stagehand Chromium profiles are namespaced per runtime process, so stale browser children from a crashed or force-stopped runtime cannot lock the next process out of local PDF rendering.
- Browser-pool startup no longer returns a fresh lease with a cancelled browser context after acquire-timeout cleanup races.
For Laravel Users
If you use embedded local rendering, run the installer again after upgrading:
php artisan canio:runtime:installThe installer will fetch the v1.0.2 Stagehand binary for your platform and verify that it supports the flags required by this package.
Release Assets
This release publishes Stagehand binaries for Linux, macOS, and Windows on amd64 and arm64, plus checksums.txt.
v1.0.1
Canio v1.0.1
What This Release Is
v1.0.1 is the first post-launch patch release for the public Laravel package.
This release hardens the public distribution surface after v1.0.0: workflows move onto Node 24-compatible actions, the package gains a public docs site, deployment guidance becomes production-oriented, and release verification now covers tag, split repository, release assets, and Packagist distribution together.
Highlights
- refreshed GitHub Actions workflows to Node 24-compatible action versions
- published public docs at
https://oxhq.github.io/canio/ - added a production deployment guide for embedded versus remote runtime modes
- aligned Packagist metadata with the public docs surface
- added a release verification lane for future tag-to-distribution launches
Recommended Install
composer require oxhq/canio
php artisan canio:installCanio v1.0.0
Canio v1.0.0
What This Release Is
v1.0.0 is the first public GA release of the Laravel package.
This release establishes Canio as the Laravel package for browser-grade PDFs: real Chromium rendering, JavaScript execution, explicit readiness, debug artifacts, async job workflows, and an embedded runtime flow that stays Laravel-native.
Highlights
- public install path:
composer require oxhq/canio - embedded runtime bootstrap with release-based Stagehand installation
- explicit readiness through
window.__CANIO_READY__ - render artifacts including DOM snapshot, screenshot, console log, and network log
- async job operations, retries, dead letters, and replay
- reproducible benchmark suite covering fidelity, fair comparison, and JS capability
What Canio Is Not Claiming
- not the fastest option for every static HTML-to-PDF workload
- not a replacement for Dompdf or mPDF in the minimum-latency lane
Recommended Install
composer require oxhq/canio
php artisan canio:installv0.1.3
v0.1.3