mitydigital/fuse-utilities
Utility helpers for the Mity Digital Fuse package, providing convenient functions and integrations that simplify common development tasks. A lightweight companion for Laravel projects built with Fuse, helping streamline setup and extend functionality.
Architecture fit
mitydigital/fuse-utilities is a Laravel companion package for the Fuse CMS family — a helper/utility layer that plugs in via package auto-discovery, published config, and Blade/helper surfaces. Historically its scope has been presentational and convenience-oriented (public asset handling, formatting utilities). Release 6.2.0 (Add support for private assets, PR #23) is the first signal of a scope expansion into access-controlled asset delivery, which is a materially different architectural concern: it implies filesystem disk abstraction, route/controller involvement, and some authorization or URL-signing model. For a TPM this matters because the package stops being purely "render helper" and becomes security-adjacent surface area that belongs in the threat model and the access-control review, not just the front-end toolkit.
Integration feasibility
Low-to-moderate. The version delta is 6.1.0 → 6.2.0, a semver minor bump, so on conventional semver reading this is additive and non-breaking. A composer update mitydigital/fuse-utilities should be the only mandatory step; the real work is configuration (a private disk in config/filesystems.php, likely a publishable config stub) and a decision about which content models are allowed to hold private assets. Feasibility is high for teams already running Fuse with a standard Laravel filesystem setup, and lower where assets are currently assumed to be public-by-default throughout templates and content.
Technical risk
public/, or a cached/signed URL outliving its authorization.Key questions
Stack fit
Fits cleanly into a standard Laravel application: Composer install, service provider auto-discovery, optional config publish, and a private disk declared in config/filesystems.php (local storage/app/private or an S3-compatible bucket). S3 with pre-signed URLs is the cleanest fit because it moves byte-serving off the PHP fleet and gives us native expiry semantics. Local-disk delivery is fine for lower traffic but routes file bytes through PHP-FPM.
Migration path
6.1.0 → 6.2.0 with no behavior change. This is a safe, reversible step that validates compatibility across the existing test suite.Compatibility Validate against: our Laravel/PHP version matrix, the Fuse core version in use, other Fuse add-ons that touch the asset pipeline, our image-conversion/queue tooling, and CDN cache rules. The main compatibility unknowns are Fuse core version coupling and any overlap with packages that already wrap asset URL generation.
Sequencing Dev → automated test suite (including negative authorization cases we write ourselves) → staging with a production-like disk (S3, not local) → auth-matrix manual QA across roles and guest → single content type in production behind a config flag → wider rollout. Keep the Composer bump in its own PR, separate from any config or content changes, so rollback is a one-line revert.
Maintenance Low ongoing effort for the version bump itself. The elevated ongoing cost is patch vigilance: once a package participates in access control, we should track it in our dependency advisory process and be prepared to take security patches quickly rather than on a routine quarterly cadence. Budget roughly a day for the upgrade and a few days for enablement, evaluation, and QA on the first content type.
Support Expect a new class of support ticket: "asset won't load" / "file is missing." First-line triage becomes a short checklist — is the user authorized, has the signed URL expired, is the disk configured and mounted, did the deployment create the storage link. This needs a written runbook before rollout, plus a documented permission matrix so support can answer "who should be able to see this file" without escalation.
Scaling Private delivery is inherently less cacheable than public delivery. Prefer S3 pre-signed URLs over app-mediated streaming so the PHP fleet is not in the byte path. Watch: signed-URL expiry tuned against real session lengths, image-conversion queues for private derivatives, opcache and worker sizing if streaming locally, and egress cost if assets are large or frequently accessed. Public assets remain on the CDN; only the private subset moves.
Failure modes
Ramp-up Developers familiar with Laravel's filesystem and Flysystem need little more than a walkthrough of the new config and the authorization path — call it half a day. Content editors and support staff need real training, because "this asset is private" is a content-authoring decision with confidentiality consequences; that is where the ramp-up cost and the incident risk actually sit. Deliverables before production enablement: an internal one-pager on the feature contract, a runbook for the failure modes above, and a named owner for the package.
Assessment basis: release notes for 6.2.0 only (single PR, one-line description). Confidence is low on feature semantics and moderate on integration mechanics. Re-rate after reviewing the PR diff, README changes, and test coverage.
How can I help you explore Laravel packages today?