infureal/artisan-gui
Infureal Artisan GUI adds a browser-based interface to Laravel Artisan. Browse and search commands, fill in arguments and options, run them, and inspect output without leaving your app. A convenient way to expose common Artisan tasks to teammates or admins with less terminal friction.
This release is a small, additive feature: URL generation can now be forced to the HTTPS scheme. Nothing is removed, so upgrading from v2.0.0 is a drop-in change — but it is a beta, so pin the exact version ("vendor/package": "2.0.1-beta2") rather than a caret constraint.
Minimal steps:
composer require vendor/package:2.0.1-beta2php artisan vendor:publish --tag=package-config and open the published config file first — the HTTPS behaviour is almost certainly driven by a new key alongside the existing URL/scheme settings.url singleton, decorates UrlGenerator, or wraps it. That determines whether the new flag affects route(), url(), asset(), and action() uniformly or only the package's own builder.php artisan config:clear.First use case to validate: a queue worker or console command that renders absolute URLs into emails. Those run outside a request, so there is no incoming scheme to inherit — forcing HTTPS there is the canonical reason this feature exists.
// config/package.php (key name per the published file)
'force_https' => env('PACKAGE_FORCE_HTTPS', env('APP_ENV') === 'production'),
Environment-scoped forcing. Do not hardcode true. Drive it from APP_ENV or a dedicated env var so local Sail/Valet setups on http://localhost keep working while staging and production are pinned to HTTPS.
Per-call override over global config. Prefer the explicit argument/option where available so a single global setting doesn't leak into contexts that must stay scheme-relative (webhooks to internal services, health checks, mixed-content-tolerant iframes).
Pair it with TrustProxies. Forcing the scheme is only half the story behind a load balancer. Configure App\Http\Middleware\TrustProxies with Request::HEADER_X_FORWARDED_PROTO (or * if you control the edge) so $request->isSecure() agrees with what you generate. Mismatched detection is the usual source of "it redirected but the URL is still http".
Signed URLs are the highest-risk surface. If the package influences URL::signedRoute(), forcing the scheme changes the string that gets signed. Generate and validate in the same configuration, and audit any signature created before the deploy — in-flight email links or queued jobs holding pre-signed URLs will 403 after the switch. Roll out by forcing only for newly generated URLs, or re-issue long-lived signed links.
Testing hooks. In phpunit.xml, set the package's force flag explicitly per test suite rather than depending on APP_ENV. For assertions, URL::forceScheme('https') from Laravel core is a useful control to confirm the package's behaviour matches the framework's native one — divergence there is a bug, not a feature.
Integration points to sweep after enabling: pagination links (->links() emits absolute URLs), password reset and verification mailables, Storage::url() / CDN asset helpers, sitemap and canonical tag generation, and OAuth/SSO callback URLs registered with third parties (those must match exactly, scheme included).
2.0.1-beta2 means API churn is possible before 2.0.1 final. Read the diff between beta1 and beta2 rather than the changelog summary; "add forcing URL with HTTPS" is one line that may hide a changed default.bootstrap/cache/config.php will make the new key appear to do nothing. Always config:clear when debugging.ForceHttps middleware or a web-server rewrite, a misconfigured proxy can bounce requests between schemes. Keep exactly one layer authoritative.asset() alone because CDNs often serve over a different scheme or host. Verify rather than assume; forcing HTTPS on asset URLs pointing at an http:// CDN will produce mixed-content blocks rather than fixes.APP_URL disagreement. If APP_URL is http:// while the package forces https://, you get two sources of truth for host and scheme. Align them, then let the package handle only the scheme.force_https=false locally and test the enabled path in CI or staging instead.app('url') and check the class name — if it's still Laravel's UrlGenerator, the package's forcing logic is applied at call sites, not globally, and you need to trace the specific helper you are using.How can I help you explore Laravel packages today?