aldhi88/starterkit-larawire-agentic
A Laravel starter kit for building Livewire-powered applications with agentic AI scaffolding. It provides a base project structure to quickly bootstrap Laravel apps with ready-to-extend UI and AI workflow components.
This is a Laravel starter kit package (aldhi88/starterkit-larawire-agentic) that ships prebuilt theme assets (DashCode, Tabler, Vuexy), host-owned view overrides, and artisan tooling to keep them synchronized. v1.9.0 is a backward-compatible minor, so the first job is simply to pull it in and see what changed in your host overrides.
composer update aldhi88/starterkit-larawire-agentic
php artisan starter:sync
php artisan starter:views-status
php artisan starter:views-replace --dry-run
The crop workflow touches the profile/logo markup, so any host-owned override of the avatar, logo, or branding partial will show up as drifted here.contain vs cover toggle for transparent sources, confirm, and observe that only the approved 800×200 PNG is handed to Livewire. Repeat with a favicon (256×256).Where to look first: the published override directory (per theme), the starter kit config file for upload/validation limits, and the Livewire profile component that consumes the cropped export. The cropper is dependency-free vanilla Canvas, so there is no npm/Vite build step to configure and no third-party JS to audit — a genuine plus for day-to-day maintenance.
Export-then-upload, not file-input-then-upload. The pattern this release enforces is: the browser holds the source image, the Canvas produces an approved PNG blob, and only that blob is attached to the Livewire property. Treat the cropper as a pre-processor. Your Livewire component should expect a properly sized PNG and should not attempt to re-crop server-side.
Wire it into Livewire with an explicit commit step. Typical shape:
wire:model a temporary upload or use a plain <input type="file"> read via FileReader into the canvas,canvas.toBlob() and push the blob into the Livewire upload property, then dispatch the save action.Because the release guards submission during decode/crop/upload, disable your own submit button on the same lifecycle events rather than relying solely on the package guard — belt and braces, and it keeps your custom buttons consistent.
Respect the Cancel contract. Cancel must preserve both the previously saved asset and any pending asset, and a failed upload must remain retryable. In practice: never destroy the current media record until the new upload's ->store() succeeds, and keep the retry path open by not clearing the source image on error. If you add custom UI around the modal, mirror those semantics.
Theme-specific overrides, one workflow. You have three theme families. Keep a single documented customization path per theme and re-run starter:views-status in CI so override drift is visible on every dependency bump, not discovered in production. The --dry-run diff is your review artefact — merge business customizations into the new view before running starter:views-replace for real.
Production deploys are a different command. Locally and in CI: starter:sync, commit the lockfile plus synchronized assets. In production: composer install --no-dev --optimize-autoloader then php artisan starter:deploy. Never run starter:sync in production — encode that as a rule in your deploy docs and, ideally, a guard in your pipeline.
Rollback is a pin, not a revert. If the cropper misbehaves in a specific browser, pin 1.8.0, reinstall dependencies, re-run the normal sync workflow, and redeploy. Keep the previous tag deployable.
Testing. Assert on the exported dimensions (800×200 / 256×256) and MIME type in a browser test or a JS unit test around the canvas module; server-side, keep your existing validation tests since authoritative validation is unchanged by this release.
memory_limit for that request path and verify mobile Safari, which is the tightest on canvas memory.image/mimes/dimensions rules because the client "guarantees" a PNG.contain vs cover changes the visual result, not the canvas size. Both export 800×200. contain letterboxes transparently (good for wide wordmarks); cover fills and crops (good for square-ish marks). Pick per asset type and document it, or support staff will file bugs about "cut off" logos.starter:views-status + starter:views-replace --dry-run before any real replacement, every time. Merging blindly will drop your business customizations.starter:sync output is part of your repo; forgetting it produces a production build whose views and assets disagree. Cache-busting on published theme assets is another reason to keep them in the lockstep commit.background-color/box-shadow in your override.How can I help you explore Laravel packages today?